about summary refs log tree commit diff
path: root/configs
diff options
context:
space:
mode:
authorWilliam Carroll <wpcarro@gmail.com>2019-10-09T11·13+0100
committerWilliam Carroll <wpcarro@gmail.com>2019-12-24T15·21+0000
commit6b456c1b7a4f6899f063a6e65355af51901d9c7a (patch)
treecfc70d74818ae9fabdbbfb0cf16cce092e4c1a09 /configs
parenta7c72adb2ebec1e497fc040eaf3551d564d61a5b (diff)
Massive configuration overhaul
Currently paying the price of months of non-diligent git usage.

Here's what has changed.

- Theming support in Gvcci and wpgtk
- Dropping support for i3
- Supporting EXWM
- Many Elisp modules
- Collapsed redundant directories in ./configs
Diffstat (limited to 'configs')
-rw-r--r--configs/desktop/.Xresources.device (renamed from configs/desktop/x_server/.Xresources.device)0
-rw-r--r--configs/desktop/.gitkeep0
-rw-r--r--configs/desktop/.xsessionrc.device (renamed from configs/desktop/x_server/.xsessionrc.device)0
-rw-r--r--configs/desktop/misc/.config/i3/config.device14
-rwxr-xr-xconfigs/install13
-rw-r--r--configs/laptop/misc/.config/i3/config.device21
-rw-r--r--configs/laptop/x_server/.Xresources.device1
-rw-r--r--configs/personal_laptop/.Xresources.device1
-rw-r--r--configs/personal_laptop/.xsessionrc.device (renamed from configs/laptop/x_server/.xsessionrc.device)0
-rw-r--r--configs/shared/.Xmodmap (renamed from configs/shared/x_server/.Xmodmap)0
-rw-r--r--configs/shared/.Xresources (renamed from configs/shared/x_server/.Xresources)0
-rw-r--r--configs/shared/.Xresources.shared1
-rw-r--r--configs/shared/.config/compton.conf (renamed from configs/shared/misc/.config/compton.conf)15
-rw-r--r--configs/shared/.config/i3/config (renamed from configs/shared/misc/.config/i3/config.shared)232
-rw-r--r--configs/shared/.config/i3/config.bak330
-rwxr-xr-xconfigs/shared/.config/i3/dmenu_timer.sh (renamed from configs/shared/misc/.config/i3/dmenu_timer.sh)0
-rwxr-xr-xconfigs/shared/.config/i3/passmenu (renamed from configs/shared/misc/.config/i3/passmenu)0
-rw-r--r--configs/shared/.config/i3/workspace_1.json (renamed from configs/shared/misc/.config/i3/workspace_1.json)0
-rw-r--r--configs/shared/.config/i3status/config58
-rw-r--r--configs/shared/.config/lf/lfrc (renamed from configs/shared/misc/.config/lf/lfrc)52
-rw-r--r--configs/shared/.config/lf/marks7
-rw-r--r--configs/shared/.config/mpd/databasebin0 -> 247 bytes
-rw-r--r--configs/shared/.config/mpd/mpd.conf4
-rw-r--r--configs/shared/.config/nixpkgs/config.nix3
-rw-r--r--configs/shared/.config/nvim/init.vim (renamed from configs/shared/misc/.config/nvim/init.vim)106
-rw-r--r--configs/shared/.config/nvim/simple.vim98
-rw-r--r--configs/shared/.config/nvim/templates/boilerplate.c6
-rw-r--r--configs/shared/.config/nvim/templates/boilerplate.rs5
-rw-r--r--configs/shared/.config/rofi/config6
-rw-r--r--configs/shared/.config/rofi/config.bak6
-rw-r--r--configs/shared/.config/systemd/user/clipmenud.service18
l---------configs/shared/.config/systemd/user/default.target.wants/clipmenud.service1
-rw-r--r--configs/shared/.config/terminator/config34
-rw-r--r--configs/shared/.config/terminator/config.bak23
-rw-r--r--configs/shared/.config/terminator/plugins/terminator-themes.py250
-rw-r--r--configs/shared/.docker/.buildNodeID1
-rw-r--r--configs/shared/.docker/config.json (renamed from configs/shared/misc/.docker/config.json)0
-rw-r--r--configs/shared/.emacs.d/flycheck_init (wpcarro2's conflicted copy 2019-11-18).el51
-rw-r--r--configs/shared/.emacs.d/init.el51
-rw-r--r--configs/shared/.emacs.d/opam-user-setup.el145
-rw-r--r--configs/shared/.emacs.d/projectile-bookmarks (wpcarro2's conflicted copy 2019-11-17).eld1
-rw-r--r--configs/shared/.emacs.d/projectile-bookmarks (wpcarro2's conflicted copy 2019-12-06).eld1
-rw-r--r--configs/shared/.emacs.d/snippets/c-mode/.yas-parents1
-rw-r--r--configs/shared/.emacs.d/snippets/c-mode/stdio (renamed from configs/shared/emacs/.emacs.d/snippets/c-mode/stdio)0
-rw-r--r--configs/shared/.emacs.d/snippets/c-mode/stdlib (renamed from configs/shared/emacs/.emacs.d/snippets/c-mode/stdlib)0
-rw-r--r--configs/shared/.emacs.d/snippets/c-mode/struct (renamed from configs/shared/emacs/.emacs.d/snippets/c-mode/struct)0
-rw-r--r--configs/shared/.emacs.d/snippets/emacs-lisp-mode/.yas-parents1
-rw-r--r--configs/shared/.emacs.d/snippets/emacs-lisp-mode/elisp-module-docs (renamed from configs/shared/emacs/.emacs.d/snippets/emacs-lisp-mode/elisp-module-docs)0
-rw-r--r--configs/shared/.emacs.d/snippets/emacs-lisp-mode/function8
-rw-r--r--configs/shared/.emacs.d/snippets/emacs-lisp-mode/generic-header7
-rw-r--r--configs/shared/.emacs.d/snippets/emacs-lisp-mode/library-header7
-rw-r--r--configs/shared/.emacs.d/snippets/emacs-lisp-mode/provide-footer (renamed from configs/shared/emacs/.emacs.d/snippets/emacs-lisp-mode/provide-footer)0
-rw-r--r--configs/shared/.emacs.d/snippets/haskell-mode/.yas-parents1
-rw-r--r--configs/shared/.emacs.d/snippets/haskell-mode/derive-safe-copy (renamed from configs/shared/emacs/.emacs.d/snippets/haskell-mode/derive-safe-copy)0
-rw-r--r--configs/shared/.emacs.d/snippets/haskell-mode/import-qualified (renamed from configs/shared/emacs/.emacs.d/snippets/haskell-mode/import-qualified)0
-rw-r--r--configs/shared/.emacs.d/snippets/haskell-mode/instance-defn (renamed from configs/shared/emacs/.emacs.d/snippets/haskell-mode/instance-defn)0
-rw-r--r--configs/shared/.emacs.d/snippets/haskell-mode/language-extension (renamed from configs/shared/emacs/.emacs.d/snippets/haskell-mode/language-extension)0
-rw-r--r--configs/shared/.emacs.d/snippets/haskell-mode/separator (renamed from configs/shared/emacs/.emacs.d/snippets/haskell-mode/separator)0
-rw-r--r--configs/shared/.emacs.d/snippets/haskell-mode/undefined (renamed from configs/shared/emacs/.emacs.d/snippets/haskell-mode/undefined)0
-rw-r--r--configs/shared/.emacs.d/snippets/html-mode/.yas-parents1
-rw-r--r--configs/shared/.emacs.d/snippets/html-mode/index-boilerplate (renamed from configs/shared/emacs/.emacs.d/snippets/html-mode/index-boilerplate)0
-rw-r--r--configs/shared/.emacs.d/snippets/java-mode/.yas-parents1
-rw-r--r--configs/shared/.emacs.d/snippets/java-mode/public-static-void-main (renamed from configs/shared/emacs/.emacs.d/snippets/java-mode/public-static-void-main)0
-rw-r--r--configs/shared/.emacs.d/snippets/nix-mode/.yas-parents1
-rw-r--r--configs/shared/.emacs.d/snippets/nix-mode/shell-nix (renamed from configs/shared/emacs/.emacs.d/snippets/nix-mode/shell-nix)0
-rw-r--r--configs/shared/.emacs.d/snippets/org-mode/.yas-parents1
-rw-r--r--configs/shared/.emacs.d/snippets/org-mode/code-snippet (renamed from configs/shared/emacs/.emacs.d/snippets/org-mode/code-snippet)0
-rw-r--r--configs/shared/.emacs.d/snippets/org-mode/href (renamed from configs/shared/emacs/.emacs.d/snippets/org-mode/href)0
-rw-r--r--configs/shared/.emacs.d/snippets/python-mode/.yas-parents1
-rw-r--r--configs/shared/.emacs.d/snippets/python-mode/dunder-main (renamed from configs/shared/emacs/.emacs.d/snippets/python-mode/dunder-main)0
-rw-r--r--configs/shared/.emacs.d/snippets/python-mode/header7
-rw-r--r--configs/shared/.emacs.d/snippets/python-mode/init6
-rw-r--r--configs/shared/.emacs.d/snippets/python-mode/shebang (renamed from configs/shared/emacs/.emacs.d/snippets/python-mode/shebang)0
-rw-r--r--configs/shared/.emacs.d/snippets/python-mode/utf-8 (renamed from configs/shared/emacs/.emacs.d/snippets/python-mode/utf-8)0
-rw-r--r--configs/shared/.emacs.d/snippets/racket-mode/.yas-parents1
-rw-r--r--configs/shared/.emacs.d/snippets/racket-mode/function5
-rw-r--r--configs/shared/.emacs.d/snippets/racket-mode/lambda5
-rw-r--r--configs/shared/.emacs.d/snippets/racket-mode/lambda-symbol5
-rw-r--r--configs/shared/.emacs.d/snippets/reason-mode/.yas-parents1
-rw-r--r--configs/shared/.emacs.d/snippets/reason-mode/function7
-rw-r--r--configs/shared/.emacs.d/snippets/reason-mode/switch7
-rw-r--r--configs/shared/.emacs.d/snippets/rjsx-mode/.yas-parents1
-rw-r--r--configs/shared/.emacs.d/snippets/rjsx-mode/action-extractor (renamed from configs/shared/emacs/.emacs.d/snippets/rjsx-mode/action-extractor)0
-rw-r--r--configs/shared/.emacs.d/snippets/rjsx-mode/console-log (renamed from configs/shared/emacs/.emacs.d/snippets/rjsx-mode/console-log)0
-rw-r--r--configs/shared/.emacs.d/snippets/rjsx-mode/const-defn (renamed from configs/shared/emacs/.emacs.d/snippets/rjsx-mode/const-defn)0
-rw-r--r--configs/shared/.emacs.d/snippets/rjsx-mode/const-function (renamed from configs/shared/emacs/.emacs.d/snippets/rjsx-mode/const-function)0
-rw-r--r--configs/shared/.emacs.d/snippets/rjsx-mode/destructure-const (renamed from configs/shared/emacs/.emacs.d/snippets/rjsx-mode/destructure-const)0
-rw-r--r--configs/shared/.emacs.d/snippets/rjsx-mode/fat-arrow (renamed from configs/shared/emacs/.emacs.d/snippets/rjsx-mode/fat-arrow)0
-rw-r--r--configs/shared/.emacs.d/snippets/rjsx-mode/fat-arrow-function (renamed from configs/shared/emacs/.emacs.d/snippets/rjsx-mode/fat-arrow-function)0
-rw-r--r--configs/shared/.emacs.d/snippets/rjsx-mode/import-destructured (renamed from configs/shared/emacs/.emacs.d/snippets/rjsx-mode/import-destructured)0
-rw-r--r--configs/shared/.emacs.d/snippets/rjsx-mode/import-react (renamed from configs/shared/emacs/.emacs.d/snippets/rjsx-mode/import-react)0
-rw-r--r--configs/shared/.emacs.d/snippets/rjsx-mode/import-type (renamed from configs/shared/emacs/.emacs.d/snippets/rjsx-mode/import-type)0
-rw-r--r--configs/shared/.emacs.d/snippets/rjsx-mode/import-x-from-y (renamed from configs/shared/emacs/.emacs.d/snippets/rjsx-mode/import-x-from-y)0
-rw-r--r--configs/shared/.emacs.d/snippets/rjsx-mode/import-y (renamed from configs/shared/emacs/.emacs.d/snippets/rjsx-mode/import-y)0
-rw-r--r--configs/shared/.emacs.d/snippets/rjsx-mode/jest-describe-test (renamed from configs/shared/emacs/.emacs.d/snippets/rjsx-mode/jest-describe-test)0
-rw-r--r--configs/shared/.emacs.d/snippets/rjsx-mode/jest-test (renamed from configs/shared/emacs/.emacs.d/snippets/rjsx-mode/jest-test)0
-rw-r--r--configs/shared/.emacs.d/snippets/rjsx-mode/react-class-component (renamed from configs/shared/emacs/.emacs.d/snippets/rjsx-mode/react-class-component)0
-rw-r--r--configs/shared/.emacs.d/snippets/rjsx-mode/redux-action5
-rw-r--r--configs/shared/.emacs.d/snippets/rjsx-mode/typed-redux-action5
-rw-r--r--configs/shared/.emacs.d/snippets/rust-mode/.yas-parents1
-rw-r--r--configs/shared/.emacs.d/snippets/rust-mode/for-loop7
-rw-r--r--configs/shared/.emacs.d/snippets/rust-mode/match7
-rw-r--r--configs/shared/.emacs.d/snippets/sh-mode/.yas-parents1
-rw-r--r--configs/shared/.emacs.d/snippets/sh-mode/function7
-rw-r--r--configs/shared/.emacs.d/snippets/text-mode/.yas-parents1
-rw-r--r--configs/shared/.emacs.d/snippets/text-mode/check-mark5
-rw-r--r--configs/shared/.emacs.d/snippets/text-mode/x-mark5
-rw-r--r--configs/shared/.emacs.d/snippets/web-mode/.yas-parents1
-rw-r--r--configs/shared/.emacs.d/snippets/web-mode/index-boilerplate (renamed from configs/shared/emacs/.emacs.d/snippets/web-mode/index-boilerplate)0
-rw-r--r--configs/shared/.emacs.d/tramp8
-rw-r--r--configs/shared/.emacs.d/vendor/dired+.el13696
-rw-r--r--configs/shared/.emacs.d/vendor/org-clubhouse.el (renamed from configs/shared/emacs/.emacs.d/vendor/org-clubhouse.el)0
-rw-r--r--configs/shared/.emacs.d/vendor/reason-indent.el (renamed from configs/shared/emacs/.emacs.d/vendor/reason-indent.el)0
-rw-r--r--configs/shared/.emacs.d/vendor/reason-interaction.el (renamed from configs/shared/emacs/.emacs.d/vendor/reason-interaction.el)0
-rw-r--r--configs/shared/.emacs.d/vendor/reason-mode.el (renamed from configs/shared/emacs/.emacs.d/vendor/reason-mode.el)0
-rw-r--r--configs/shared/.emacs.d/vendor/refmt.el (renamed from configs/shared/emacs/.emacs.d/vendor/refmt.el)0
-rw-r--r--configs/shared/.emacs.d/vendor/slack-snippets.el (renamed from configs/shared/emacs/.emacs.d/vendor/slack-snippets.el)0
-rw-r--r--configs/shared/.emacs.d/vendor/wpgtk-theme.el536
-rw-r--r--configs/shared/.emacs.d/wpc/alist.el227
-rw-r--r--configs/shared/.emacs.d/wpc/bag.el66
-rw-r--r--configs/shared/.emacs.d/wpc/bills.el26
-rw-r--r--configs/shared/.emacs.d/wpc/bookmark.el108
-rw-r--r--configs/shared/.emacs.d/wpc/buffer.el51
-rw-r--r--configs/shared/.emacs.d/wpc/bytes.el109
-rw-r--r--configs/shared/.emacs.d/wpc/cache.el80
-rw-r--r--configs/shared/.emacs.d/wpc/chrome.el78
-rw-r--r--configs/shared/.emacs.d/wpc/clipboard.el74
-rw-r--r--configs/shared/.emacs.d/wpc/colorscheme.el91
-rw-r--r--configs/shared/.emacs.d/wpc/constants.el (renamed from configs/shared/emacs/.emacs.d/wpc/variables.el)22
-rw-r--r--configs/shared/.emacs.d/wpc/cycle.el105
-rw-r--r--configs/shared/.emacs.d/wpc/device.el38
-rw-r--r--configs/shared/.emacs.d/wpc/display.el47
-rw-r--r--configs/shared/.emacs.d/wpc/do.el54
-rw-r--r--configs/shared/.emacs.d/wpc/dotfiles.el45
-rw-r--r--configs/shared/.emacs.d/wpc/dotted.el49
-rw-r--r--configs/shared/.emacs.d/wpc/entr.el115
-rw-r--r--configs/shared/.emacs.d/wpc/enum.el98
-rw-r--r--configs/shared/.emacs.d/wpc/fonts.el148
-rw-r--r--configs/shared/.emacs.d/wpc/fs.el59
-rw-r--r--configs/shared/.emacs.d/wpc/functions.el (renamed from configs/shared/emacs/.emacs.d/wpc/functions.el)99
-rw-r--r--configs/shared/.emacs.d/wpc/google-stuff.el183
-rw-r--r--configs/shared/.emacs.d/wpc/google-tooling.el53
-rw-r--r--configs/shared/.emacs.d/wpc/graph.el91
-rw-r--r--configs/shared/.emacs.d/wpc/imdb.el128
-rw-r--r--configs/shared/.emacs.d/wpc/irc.el79
-rw-r--r--configs/shared/.emacs.d/wpc/iso.el95
-rw-r--r--configs/shared/.emacs.d/wpc/ivy-helpers.el31
-rw-r--r--configs/shared/.emacs.d/wpc/kaomoji.el45
-rw-r--r--configs/shared/.emacs.d/wpc/kbd.el90
-rw-r--r--configs/shared/.emacs.d/wpc/keyboard.el147
-rw-r--r--configs/shared/.emacs.d/wpc/keymap.el25
-rw-r--r--configs/shared/.emacs.d/wpc/laptop-battery.el60
-rw-r--r--configs/shared/.emacs.d/wpc/list.el197
-rw-r--r--configs/shared/.emacs.d/wpc/list.nix8
-rw-r--r--configs/shared/.emacs.d/wpc/macros.el95
-rw-r--r--configs/shared/.emacs.d/wpc/math.el59
-rw-r--r--configs/shared/.emacs.d/wpc/maybe.el102
-rw-r--r--configs/shared/.emacs.d/wpc/me-seconds.el245
-rw-r--r--configs/shared/.emacs.d/wpc/monoid.el30
-rw-r--r--configs/shared/.emacs.d/wpc/number.el151
-rw-r--r--configs/shared/.emacs.d/wpc/packages/wpc-clojure.el85
-rw-r--r--configs/shared/.emacs.d/wpc/packages/wpc-company.el (renamed from configs/shared/emacs/.emacs.d/wpc/packages/wpc-company.el)4
-rw-r--r--configs/shared/.emacs.d/wpc/packages/wpc-dired.el39
-rw-r--r--configs/shared/.emacs.d/wpc/packages/wpc-docker.el (renamed from configs/shared/emacs/.emacs.d/wpc/packages/wpc-docker.el)0
-rw-r--r--configs/shared/.emacs.d/wpc/packages/wpc-elixir.el (renamed from configs/shared/emacs/.emacs.d/wpc/packages/wpc-elixir.el)4
-rw-r--r--configs/shared/.emacs.d/wpc/packages/wpc-flycheck.el (renamed from configs/shared/emacs/.emacs.d/wpc/packages/wpc-flycheck.el)0
-rw-r--r--configs/shared/.emacs.d/wpc/packages/wpc-haskell.el (renamed from configs/shared/emacs/.emacs.d/wpc/packages/wpc-haskell.el)2
-rw-r--r--configs/shared/.emacs.d/wpc/packages/wpc-java.el42
-rw-r--r--configs/shared/.emacs.d/wpc/packages/wpc-javascript.el (renamed from configs/shared/emacs/.emacs.d/wpc/packages/wpc-javascript.el)33
-rw-r--r--configs/shared/.emacs.d/wpc/packages/wpc-keybindings.el206
-rw-r--r--configs/shared/.emacs.d/wpc/packages/wpc-lisp.el114
-rw-r--r--configs/shared/.emacs.d/wpc/packages/wpc-misc.el (renamed from configs/shared/emacs/.emacs.d/wpc/packages/wpc-misc.el)164
-rw-r--r--configs/shared/.emacs.d/wpc/packages/wpc-nix.el (renamed from configs/shared/emacs/.emacs.d/wpc/packages/wpc-nix.el)0
-rw-r--r--configs/shared/.emacs.d/wpc/packages/wpc-ocaml.el51
-rw-r--r--configs/shared/.emacs.d/wpc/packages/wpc-org.el (renamed from configs/shared/emacs/.emacs.d/wpc/packages/wpc-org.el)8
-rw-r--r--configs/shared/.emacs.d/wpc/packages/wpc-package.el (renamed from configs/shared/emacs/.emacs.d/wpc/packages/wpc-package.el)0
-rw-r--r--configs/shared/.emacs.d/wpc/packages/wpc-python.el17
-rw-r--r--configs/shared/.emacs.d/wpc/packages/wpc-reasonml.el29
-rw-r--r--configs/shared/.emacs.d/wpc/packages/wpc-rust.el34
-rw-r--r--configs/shared/.emacs.d/wpc/packages/wpc-shell.el15
-rw-r--r--configs/shared/.emacs.d/wpc/packages/wpc-terminal.el70
-rw-r--r--configs/shared/.emacs.d/wpc/packages/wpc-ui.el185
-rw-r--r--configs/shared/.emacs.d/wpc/playback.el25
-rw-r--r--configs/shared/.emacs.d/wpc/polymorphism.el37
-rw-r--r--configs/shared/.emacs.d/wpc/prelude.el122
-rw-r--r--configs/shared/.emacs.d/wpc/prelude.nix11
-rw-r--r--configs/shared/.emacs.d/wpc/productivity-timer.el22
-rw-r--r--configs/shared/.emacs.d/wpc/pulse-audio.el48
-rw-r--r--configs/shared/.emacs.d/wpc/pushover.el75
-rw-r--r--configs/shared/.emacs.d/wpc/random.el73
-rw-r--r--configs/shared/.emacs.d/wpc/scheduler.el22
-rw-r--r--configs/shared/.emacs.d/wpc/scope.el99
-rw-r--r--configs/shared/.emacs.d/wpc/screen-brightness.el57
-rw-r--r--configs/shared/.emacs.d/wpc/sequence.el105
-rw-r--r--configs/shared/.emacs.d/wpc/series.el81
-rw-r--r--configs/shared/.emacs.d/wpc/set.el92
-rw-r--r--configs/shared/.emacs.d/wpc/sre.el26
-rw-r--r--configs/shared/.emacs.d/wpc/ssh.el31
-rw-r--r--configs/shared/.emacs.d/wpc/stack.el93
-rw-r--r--configs/shared/.emacs.d/wpc/string.el126
-rw-r--r--configs/shared/.emacs.d/wpc/string.nix8
-rw-r--r--configs/shared/.emacs.d/wpc/struct.el71
-rw-r--r--configs/shared/.emacs.d/wpc/symbol.el43
-rw-r--r--configs/shared/.emacs.d/wpc/themes.el170
-rw-r--r--configs/shared/.emacs.d/wpc/todo.el297
-rw-r--r--configs/shared/.emacs.d/wpc/tree.el193
-rw-r--r--configs/shared/.emacs.d/wpc/tuple.el86
-rw-r--r--configs/shared/.emacs.d/wpc/vector.el59
-rw-r--r--configs/shared/.emacs.d/wpc/wallpaper.el84
-rw-r--r--configs/shared/.emacs.d/wpc/window-manager.el672
-rw-r--r--configs/shared/.emacs.d/wpc/window.el37
-rw-r--r--configs/shared/.emacs.d/wpc/wpgtk.el45
-rw-r--r--configs/shared/.emacs.d/wpc/zle.el90
-rw-r--r--configs/shared/.g4d (renamed from configs/shared/google/.g4d)7
-rw-r--r--configs/shared/.gitconfig (renamed from configs/shared/git/.gitconfig)1
-rw-r--r--configs/shared/.gitignore (renamed from configs/shared/git/.gitignore)0
-rw-r--r--configs/shared/.gnupg/crls.d/DIR.txt1
-rwxr-xr-xconfigs/shared/.gnupg/export.sh (renamed from configs/shared/gpg/.gnupg/export.sh)0
-rw-r--r--configs/shared/.gnupg/exported/ownertrust.txt3
-rw-r--r--configs/shared/.gnupg/exported/public.asc225
-rw-r--r--configs/shared/.gnupg/gpg-agent.conf (renamed from configs/shared/gpg/.gnupg/gpg-agent.conf)0
-rw-r--r--configs/shared/.gnupg/gpg.conf (renamed from configs/shared/gpg/.gnupg/gpg.conf)0
-rwxr-xr-xconfigs/shared/.gnupg/import.sh (renamed from configs/shared/gpg/.gnupg/import.sh)0
-rw-r--r--configs/shared/.gnupg/pubring.kbxbin0 -> 11397 bytes
-rw-r--r--configs/shared/.gnupg/trustdb.gpgbin0 -> 1280 bytes
-rw-r--r--configs/shared/.gvcci/themes/bike_tire_blue_4k/colors.sh23
-rw-r--r--configs/shared/.gvcci/themes/bike_tire_blue_4k/column.txt18
-rw-r--r--configs/shared/.gvcci/themes/bike_tire_blue_4k/columns-with-headers.txt25
-rw-r--r--configs/shared/.gvcci/themes/bike_tire_blue_4k/iterm.itermcolors344
-rw-r--r--configs/shared/.gvcci/themes/bike_tire_blue_4k/iterm.plist412
-rw-r--r--configs/shared/.gvcci/themes/bike_tire_blue_4k/json-scheme.json24
-rw-r--r--configs/shared/.gvcci/themes/bike_tire_blue_4k/nospace.txt1
-rw-r--r--configs/shared/.gvcci/themes/bike_tire_blue_4k/tilix.json33
-rw-r--r--configs/shared/.gvcci/themes/bike_tire_blue_4k/wallpaperbin0 -> 925993 bytes
-rw-r--r--configs/shared/.gvcci/themes/bike_tire_blue_4k/xresources-colors.txt37
-rw-r--r--configs/shared/.gvcci/themes/cartoon_outdoors/colors.sh23
-rw-r--r--configs/shared/.gvcci/themes/cartoon_outdoors/column.txt18
-rw-r--r--configs/shared/.gvcci/themes/cartoon_outdoors/columns-with-headers.txt25
-rw-r--r--configs/shared/.gvcci/themes/cartoon_outdoors/iterm.itermcolors344
-rw-r--r--configs/shared/.gvcci/themes/cartoon_outdoors/iterm.plist412
-rw-r--r--configs/shared/.gvcci/themes/cartoon_outdoors/json-scheme.json24
-rw-r--r--configs/shared/.gvcci/themes/cartoon_outdoors/nospace.txt1
-rw-r--r--configs/shared/.gvcci/themes/cartoon_outdoors/tilix.json33
-rw-r--r--configs/shared/.gvcci/themes/cartoon_outdoors/wallpaper (renamed from configs/shared/misc/.local/share/wallpaper/cartoon-outdoors.jpg)bin514286 -> 514286 bytes
-rw-r--r--configs/shared/.gvcci/themes/cartoon_outdoors/xresources-colors.txt37
-rw-r--r--configs/shared/.gvcci/themes/construction_paper_iceberg_4k/colors.sh23
-rw-r--r--configs/shared/.gvcci/themes/construction_paper_iceberg_4k/column.txt18
-rw-r--r--configs/shared/.gvcci/themes/construction_paper_iceberg_4k/columns-with-headers.txt25
-rw-r--r--configs/shared/.gvcci/themes/construction_paper_iceberg_4k/iterm.itermcolors344
-rw-r--r--configs/shared/.gvcci/themes/construction_paper_iceberg_4k/iterm.plist412
-rw-r--r--configs/shared/.gvcci/themes/construction_paper_iceberg_4k/json-scheme.json24
-rw-r--r--configs/shared/.gvcci/themes/construction_paper_iceberg_4k/nospace.txt1
-rw-r--r--configs/shared/.gvcci/themes/construction_paper_iceberg_4k/tilix.json33
-rw-r--r--configs/shared/.gvcci/themes/construction_paper_iceberg_4k/wallpaperbin0 -> 469513 bytes
-rw-r--r--configs/shared/.gvcci/themes/construction_paper_iceberg_4k/xresources-colors.txt37
-rw-r--r--configs/shared/.gvcci/themes/finding_nemo/colors.sh23
-rw-r--r--configs/shared/.gvcci/themes/finding_nemo/column.txt18
-rw-r--r--configs/shared/.gvcci/themes/finding_nemo/columns-with-headers.txt25
-rw-r--r--configs/shared/.gvcci/themes/finding_nemo/iterm.itermcolors344
-rw-r--r--configs/shared/.gvcci/themes/finding_nemo/iterm.plist412
-rw-r--r--configs/shared/.gvcci/themes/finding_nemo/json-scheme.json24
-rw-r--r--configs/shared/.gvcci/themes/finding_nemo/nospace.txt1
-rw-r--r--configs/shared/.gvcci/themes/finding_nemo/tilix.json33
-rw-r--r--configs/shared/.gvcci/themes/finding_nemo/wallpaperbin0 -> 1073400 bytes
-rw-r--r--configs/shared/.gvcci/themes/finding_nemo/xresources-colors.txt37
-rw-r--r--configs/shared/.gvcci/themes/forest_8k/colors.sh23
-rw-r--r--configs/shared/.gvcci/themes/forest_8k/column.txt18
-rw-r--r--configs/shared/.gvcci/themes/forest_8k/columns-with-headers.txt25
-rw-r--r--configs/shared/.gvcci/themes/forest_8k/iterm.itermcolors344
-rw-r--r--configs/shared/.gvcci/themes/forest_8k/iterm.plist412
-rw-r--r--configs/shared/.gvcci/themes/forest_8k/json-scheme.json24
-rw-r--r--configs/shared/.gvcci/themes/forest_8k/nospace.txt1
-rw-r--r--configs/shared/.gvcci/themes/forest_8k/tilix.json33
-rw-r--r--configs/shared/.gvcci/themes/forest_8k/wallpaperbin0 -> 12526539 bytes
-rw-r--r--configs/shared/.gvcci/themes/forest_8k/xresources-colors.txt37
-rw-r--r--configs/shared/.gvcci/themes/geometric_4k/colors.sh23
-rw-r--r--configs/shared/.gvcci/themes/geometric_4k/column.txt18
-rw-r--r--configs/shared/.gvcci/themes/geometric_4k/columns-with-headers.txt25
-rw-r--r--configs/shared/.gvcci/themes/geometric_4k/iterm.itermcolors344
-rw-r--r--configs/shared/.gvcci/themes/geometric_4k/iterm.plist412
-rw-r--r--configs/shared/.gvcci/themes/geometric_4k/json-scheme.json24
-rw-r--r--configs/shared/.gvcci/themes/geometric_4k/nospace.txt1
-rw-r--r--configs/shared/.gvcci/themes/geometric_4k/tilix.json33
-rw-r--r--configs/shared/.gvcci/themes/geometric_4k/wallpaperbin0 -> 4935207 bytes
-rw-r--r--configs/shared/.gvcci/themes/geometric_4k/xresources-colors.txt37
-rw-r--r--configs/shared/.gvcci/themes/geometric_dark_4k/colors.sh23
-rw-r--r--configs/shared/.gvcci/themes/geometric_dark_4k/column.txt18
-rw-r--r--configs/shared/.gvcci/themes/geometric_dark_4k/columns-with-headers.txt25
-rw-r--r--configs/shared/.gvcci/themes/geometric_dark_4k/iterm.itermcolors344
-rw-r--r--configs/shared/.gvcci/themes/geometric_dark_4k/iterm.plist412
-rw-r--r--configs/shared/.gvcci/themes/geometric_dark_4k/json-scheme.json24
-rw-r--r--configs/shared/.gvcci/themes/geometric_dark_4k/nospace.txt1
-rw-r--r--configs/shared/.gvcci/themes/geometric_dark_4k/tilix.json33
-rw-r--r--configs/shared/.gvcci/themes/geometric_dark_4k/wallpaperbin0 -> 484074 bytes
-rw-r--r--configs/shared/.gvcci/themes/geometric_dark_4k/xresources-colors.txt37
-rw-r--r--configs/shared/.gvcci/themes/japan_cherry_blossoms_4k/colors.sh23
-rw-r--r--configs/shared/.gvcci/themes/japan_cherry_blossoms_4k/column.txt18
-rw-r--r--configs/shared/.gvcci/themes/japan_cherry_blossoms_4k/columns-with-headers.txt25
-rw-r--r--configs/shared/.gvcci/themes/japan_cherry_blossoms_4k/iterm.itermcolors344
-rw-r--r--configs/shared/.gvcci/themes/japan_cherry_blossoms_4k/iterm.plist412
-rw-r--r--configs/shared/.gvcci/themes/japan_cherry_blossoms_4k/json-scheme.json24
-rw-r--r--configs/shared/.gvcci/themes/japan_cherry_blossoms_4k/nospace.txt1
-rw-r--r--configs/shared/.gvcci/themes/japan_cherry_blossoms_4k/tilix.json33
-rw-r--r--configs/shared/.gvcci/themes/japan_cherry_blossoms_4k/wallpaperbin0 -> 2198306 bytes
-rw-r--r--configs/shared/.gvcci/themes/japan_cherry_blossoms_4k/xresources-colors.txt37
-rw-r--r--configs/shared/.gvcci/themes/lego_manhattan/colors.sh23
-rw-r--r--configs/shared/.gvcci/themes/lego_manhattan/column.txt18
-rw-r--r--configs/shared/.gvcci/themes/lego_manhattan/columns-with-headers.txt25
-rw-r--r--configs/shared/.gvcci/themes/lego_manhattan/iterm.itermcolors344
-rw-r--r--configs/shared/.gvcci/themes/lego_manhattan/iterm.plist412
-rw-r--r--configs/shared/.gvcci/themes/lego_manhattan/json-scheme.json24
-rw-r--r--configs/shared/.gvcci/themes/lego_manhattan/nospace.txt1
-rw-r--r--configs/shared/.gvcci/themes/lego_manhattan/tilix.json33
-rw-r--r--configs/shared/.gvcci/themes/lego_manhattan/wallpaperbin0 -> 740829 bytes
-rw-r--r--configs/shared/.gvcci/themes/lego_manhattan/xresources-colors.txt37
-rw-r--r--configs/shared/.gvcci/themes/lightbulb_4k/colors.sh23
-rw-r--r--configs/shared/.gvcci/themes/lightbulb_4k/column.txt18
-rw-r--r--configs/shared/.gvcci/themes/lightbulb_4k/columns-with-headers.txt25
-rw-r--r--configs/shared/.gvcci/themes/lightbulb_4k/iterm.itermcolors344
-rw-r--r--configs/shared/.gvcci/themes/lightbulb_4k/iterm.plist412
-rw-r--r--configs/shared/.gvcci/themes/lightbulb_4k/json-scheme.json24
-rw-r--r--configs/shared/.gvcci/themes/lightbulb_4k/nospace.txt1
-rw-r--r--configs/shared/.gvcci/themes/lightbulb_4k/tilix.json33
-rw-r--r--configs/shared/.gvcci/themes/lightbulb_4k/wallpaperbin0 -> 2337284 bytes
-rw-r--r--configs/shared/.gvcci/themes/lightbulb_4k/xresources-colors.txt37
-rw-r--r--configs/shared/.gvcci/themes/mount_fuji_4k/colors.sh23
-rw-r--r--configs/shared/.gvcci/themes/mount_fuji_4k/column.txt18
-rw-r--r--configs/shared/.gvcci/themes/mount_fuji_4k/columns-with-headers.txt25
-rw-r--r--configs/shared/.gvcci/themes/mount_fuji_4k/iterm.itermcolors344
-rw-r--r--configs/shared/.gvcci/themes/mount_fuji_4k/iterm.plist412
-rw-r--r--configs/shared/.gvcci/themes/mount_fuji_4k/json-scheme.json24
-rw-r--r--configs/shared/.gvcci/themes/mount_fuji_4k/nospace.txt1
-rw-r--r--configs/shared/.gvcci/themes/mount_fuji_4k/tilix.json33
-rw-r--r--configs/shared/.gvcci/themes/mount_fuji_4k/wallpaperbin0 -> 724152 bytes
-rw-r--r--configs/shared/.gvcci/themes/mount_fuji_4k/xresources-colors.txt37
-rw-r--r--configs/shared/.gvcci/themes/mount_fuji_flowers_4k/colors.sh23
-rw-r--r--configs/shared/.gvcci/themes/mount_fuji_flowers_4k/column.txt18
-rw-r--r--configs/shared/.gvcci/themes/mount_fuji_flowers_4k/columns-with-headers.txt25
-rw-r--r--configs/shared/.gvcci/themes/mount_fuji_flowers_4k/iterm.itermcolors344
-rw-r--r--configs/shared/.gvcci/themes/mount_fuji_flowers_4k/iterm.plist412
-rw-r--r--configs/shared/.gvcci/themes/mount_fuji_flowers_4k/json-scheme.json24
-rw-r--r--configs/shared/.gvcci/themes/mount_fuji_flowers_4k/nospace.txt1
-rw-r--r--configs/shared/.gvcci/themes/mount_fuji_flowers_4k/tilix.json33
-rw-r--r--configs/shared/.gvcci/themes/mount_fuji_flowers_4k/wallpaperbin0 -> 1264972 bytes
-rw-r--r--configs/shared/.gvcci/themes/mount_fuji_flowers_4k/xresources-colors.txt37
-rw-r--r--configs/shared/.gvcci/themes/pixelated_china/colors.sh23
-rw-r--r--configs/shared/.gvcci/themes/pixelated_china/column.txt18
-rw-r--r--configs/shared/.gvcci/themes/pixelated_china/columns-with-headers.txt25
-rw-r--r--configs/shared/.gvcci/themes/pixelated_china/iterm.itermcolors344
-rw-r--r--configs/shared/.gvcci/themes/pixelated_china/iterm.plist412
-rw-r--r--configs/shared/.gvcci/themes/pixelated_china/json-scheme.json24
-rw-r--r--configs/shared/.gvcci/themes/pixelated_china/nospace.txt1
-rw-r--r--configs/shared/.gvcci/themes/pixelated_china/tilix.json33
-rw-r--r--configs/shared/.gvcci/themes/pixelated_china/wallpaperbin0 -> 581893 bytes
-rw-r--r--configs/shared/.gvcci/themes/pixelated_china/xresources-colors.txt37
-rw-r--r--configs/shared/.gvcci/themes/pixelated_landscape/colors.sh23
-rw-r--r--configs/shared/.gvcci/themes/pixelated_landscape/column.txt18
-rw-r--r--configs/shared/.gvcci/themes/pixelated_landscape/columns-with-headers.txt25
-rw-r--r--configs/shared/.gvcci/themes/pixelated_landscape/iterm.itermcolors344
-rw-r--r--configs/shared/.gvcci/themes/pixelated_landscape/iterm.plist412
-rw-r--r--configs/shared/.gvcci/themes/pixelated_landscape/json-scheme.json24
-rw-r--r--configs/shared/.gvcci/themes/pixelated_landscape/nospace.txt1
-rw-r--r--configs/shared/.gvcci/themes/pixelated_landscape/tilix.json33
-rw-r--r--configs/shared/.gvcci/themes/pixelated_landscape/wallpaperbin0 -> 108602 bytes
-rw-r--r--configs/shared/.gvcci/themes/pixelated_landscape/xresources-colors.txt37
-rw-r--r--configs/shared/.gvcci/themes/pixelated_outer_space/colors.sh23
-rw-r--r--configs/shared/.gvcci/themes/pixelated_outer_space/column.txt18
-rw-r--r--configs/shared/.gvcci/themes/pixelated_outer_space/columns-with-headers.txt25
-rw-r--r--configs/shared/.gvcci/themes/pixelated_outer_space/iterm.itermcolors344
-rw-r--r--configs/shared/.gvcci/themes/pixelated_outer_space/iterm.plist412
-rw-r--r--configs/shared/.gvcci/themes/pixelated_outer_space/json-scheme.json24
-rw-r--r--configs/shared/.gvcci/themes/pixelated_outer_space/nospace.txt1
-rw-r--r--configs/shared/.gvcci/themes/pixelated_outer_space/tilix.json33
-rw-r--r--configs/shared/.gvcci/themes/pixelated_outer_space/wallpaperbin0 -> 19596 bytes
-rw-r--r--configs/shared/.gvcci/themes/pixelated_outer_space/xresources-colors.txt37
-rw-r--r--configs/shared/.gvcci/themes/walle_4k/colors.sh23
-rw-r--r--configs/shared/.gvcci/themes/walle_4k/column.txt18
-rw-r--r--configs/shared/.gvcci/themes/walle_4k/columns-with-headers.txt25
-rw-r--r--configs/shared/.gvcci/themes/walle_4k/iterm.itermcolors344
-rw-r--r--configs/shared/.gvcci/themes/walle_4k/iterm.plist412
-rw-r--r--configs/shared/.gvcci/themes/walle_4k/json-scheme.json24
-rw-r--r--configs/shared/.gvcci/themes/walle_4k/nospace.txt1
-rw-r--r--configs/shared/.gvcci/themes/walle_4k/tilix.json33
-rw-r--r--configs/shared/.gvcci/themes/walle_4k/wallpaperbin0 -> 227342 bytes
-rw-r--r--configs/shared/.gvcci/themes/walle_4k/xresources-colors.txt37
-rw-r--r--configs/shared/.irssi/config (renamed from configs/shared/misc/.irssi/config)0
-rw-r--r--configs/shared/.local/share/fonts/.uuid (renamed from configs/shared/misc/.local/share/fonts/.uuid)0
-rw-r--r--configs/shared/.local/share/fonts/Apl385.ttfbin0 -> 212256 bytes
-rw-r--r--configs/shared/.local/share/fonts/FiraMono-Bold.ttf (renamed from configs/shared/misc/.local/share/fonts/FiraMono-Bold.ttf)bin200344 -> 200344 bytes
-rw-r--r--configs/shared/.local/share/fonts/FiraMono-Medium.ttf (renamed from configs/shared/misc/.local/share/fonts/FiraMono-Medium.ttf)bin167764 -> 167764 bytes
-rw-r--r--configs/shared/.local/share/fonts/FiraMono-Regular.ttf (renamed from configs/shared/misc/.local/share/fonts/FiraMono-Regular.ttf)bin168968 -> 168968 bytes
-rw-r--r--configs/shared/.local/share/fonts/Go-Bold-Italic.ttfbin0 -> 150732 bytes
-rw-r--r--configs/shared/.local/share/fonts/Go-Bold.ttfbin0 -> 144572 bytes
-rw-r--r--configs/shared/.local/share/fonts/Go-Italic.ttfbin0 -> 146980 bytes
-rw-r--r--configs/shared/.local/share/fonts/Go-Medium-Italic.ttfbin0 -> 155436 bytes
-rw-r--r--configs/shared/.local/share/fonts/Go-Medium.ttfbin0 -> 146888 bytes
-rw-r--r--configs/shared/.local/share/fonts/Go-Mono-Bold-Italic.ttfbin0 -> 176832 bytes
-rw-r--r--configs/shared/.local/share/fonts/Go-Mono-Bold.ttfbin0 -> 168340 bytes
-rw-r--r--configs/shared/.local/share/fonts/Go-Mono-Italic.ttfbin0 -> 173548 bytes
-rw-r--r--configs/shared/.local/share/fonts/Go-Mono.ttfbin0 -> 164200 bytes
-rw-r--r--configs/shared/.local/share/fonts/Go-Regular.ttfbin0 -> 140308 bytes
-rw-r--r--configs/shared/.local/share/fonts/Go-Smallcaps-Italic.ttfbin0 -> 140524 bytes
-rw-r--r--configs/shared/.local/share/fonts/Go-Smallcaps.ttfbin0 -> 133604 bytes
-rw-r--r--configs/shared/.local/share/fonts/Hack-Bold.ttf (renamed from configs/shared/misc/.local/share/fonts/Hack-Bold.ttf)bin317628 -> 317628 bytes
-rw-r--r--configs/shared/.local/share/fonts/Hack-BoldItalic.ttf (renamed from configs/shared/misc/.local/share/fonts/Hack-BoldItalic.ttf)bin322288 -> 322288 bytes
-rw-r--r--configs/shared/.local/share/fonts/Hack-Italic.ttf (renamed from configs/shared/misc/.local/share/fonts/Hack-Italic.ttf)bin316156 -> 316156 bytes
-rw-r--r--configs/shared/.local/share/fonts/Hack-Regular.ttf (renamed from configs/shared/misc/.local/share/fonts/Hack-Regular.ttf)bin309408 -> 309408 bytes
-rw-r--r--configs/shared/.local/share/fonts/Hasklig-Black.otf (renamed from configs/shared/misc/.local/share/fonts/Hasklig-Black.otf)bin145956 -> 145956 bytes
-rw-r--r--configs/shared/.local/share/fonts/Hasklig-BlackIt.otf (renamed from configs/shared/misc/.local/share/fonts/Hasklig-BlackIt.otf)bin122380 -> 122380 bytes
-rw-r--r--configs/shared/.local/share/fonts/Hasklig-Bold.otf (renamed from configs/shared/misc/.local/share/fonts/Hasklig-Bold.otf)bin145688 -> 145688 bytes
-rw-r--r--configs/shared/.local/share/fonts/Hasklig-BoldIt.otf (renamed from configs/shared/misc/.local/share/fonts/Hasklig-BoldIt.otf)bin121012 -> 121012 bytes
-rw-r--r--configs/shared/.local/share/fonts/Hasklig-ExtraLight.otf (renamed from configs/shared/misc/.local/share/fonts/Hasklig-ExtraLight.otf)bin137920 -> 137920 bytes
-rw-r--r--configs/shared/.local/share/fonts/Hasklig-ExtraLightIt.otf (renamed from configs/shared/misc/.local/share/fonts/Hasklig-ExtraLightIt.otf)bin117832 -> 117832 bytes
-rw-r--r--configs/shared/.local/share/fonts/Hasklig-It.otf (renamed from configs/shared/misc/.local/share/fonts/Hasklig-It.otf)bin120120 -> 120120 bytes
-rw-r--r--configs/shared/.local/share/fonts/Hasklig-Light.otf (renamed from configs/shared/misc/.local/share/fonts/Hasklig-Light.otf)bin140616 -> 140616 bytes
-rw-r--r--configs/shared/.local/share/fonts/Hasklig-LightIt.otf (renamed from configs/shared/misc/.local/share/fonts/Hasklig-LightIt.otf)bin120944 -> 120944 bytes
-rw-r--r--configs/shared/.local/share/fonts/Hasklig-Medium.otf (renamed from configs/shared/misc/.local/share/fonts/Hasklig-Medium.otf)bin142000 -> 142000 bytes
-rw-r--r--configs/shared/.local/share/fonts/Hasklig-MediumIt.otf (renamed from configs/shared/misc/.local/share/fonts/Hasklig-MediumIt.otf)bin120336 -> 120336 bytes
-rw-r--r--configs/shared/.local/share/fonts/Hasklig-Regular.otf (renamed from configs/shared/misc/.local/share/fonts/Hasklig-Regular.otf)bin141708 -> 141708 bytes
-rw-r--r--configs/shared/.local/share/fonts/Hasklig-Semibold.otf (renamed from configs/shared/misc/.local/share/fonts/Hasklig-Semibold.otf)bin142956 -> 142956 bytes
-rw-r--r--configs/shared/.local/share/fonts/Hasklig-SemiboldIt.otf (renamed from configs/shared/misc/.local/share/fonts/Hasklig-SemiboldIt.otf)bin120424 -> 120424 bytes
-rw-r--r--configs/shared/.local/share/fonts/InputMono-Black.ttfbin0 -> 136996 bytes
-rw-r--r--configs/shared/.local/share/fonts/InputMono-BlackItalic.ttfbin0 -> 138452 bytes
-rw-r--r--configs/shared/.local/share/fonts/InputMono-Bold.ttfbin0 -> 110016 bytes
-rw-r--r--configs/shared/.local/share/fonts/InputMono-BoldItalic.ttfbin0 -> 112608 bytes
-rw-r--r--configs/shared/.local/share/fonts/InputMono-ExtraLight.ttfbin0 -> 128552 bytes
-rw-r--r--configs/shared/.local/share/fonts/InputMono-ExtraLightItalic.ttfbin0 -> 130056 bytes
-rw-r--r--configs/shared/.local/share/fonts/InputMono-Italic.ttfbin0 -> 111732 bytes
-rw-r--r--configs/shared/.local/share/fonts/InputMono-Light.ttfbin0 -> 108884 bytes
-rw-r--r--configs/shared/.local/share/fonts/InputMono-LightItalic.ttfbin0 -> 111528 bytes
-rw-r--r--configs/shared/.local/share/fonts/InputMono-Medium.ttfbin0 -> 110032 bytes
-rw-r--r--configs/shared/.local/share/fonts/InputMono-MediumItalic.ttfbin0 -> 112672 bytes
-rw-r--r--configs/shared/.local/share/fonts/InputMono-Regular.ttfbin0 -> 109152 bytes
-rw-r--r--configs/shared/.local/share/fonts/InputMono-Thin.ttfbin0 -> 123524 bytes
-rw-r--r--configs/shared/.local/share/fonts/InputMono-ThinItalic.ttfbin0 -> 125432 bytes
-rw-r--r--configs/shared/.local/share/fonts/Monoid-Bold.ttfbin0 -> 73052 bytes
-rw-r--r--configs/shared/.local/share/fonts/Monoid-Italic.ttfbin0 -> 95128 bytes
-rw-r--r--configs/shared/.local/share/fonts/Monoid-Regular.ttfbin0 -> 79248 bytes
-rw-r--r--configs/shared/.local/share/fonts/Monoid-Retina.ttfbin0 -> 81928 bytes
-rw-r--r--configs/shared/.local/share/fonts/NotoColorEmoji.ttf (renamed from configs/shared/misc/.local/share/fonts/NotoColorEmoji.ttf)bin7297112 -> 7297112 bytes
-rw-r--r--configs/shared/.local/share/fonts/OperatorMono-Bold.otf (renamed from configs/shared/misc/.local/share/fonts/OperatorMono-Bold.otf)bin34392 -> 34392 bytes
-rw-r--r--configs/shared/.local/share/fonts/OperatorMono-BoldItalic.otf (renamed from configs/shared/misc/.local/share/fonts/OperatorMono-BoldItalic.otf)bin35224 -> 35224 bytes
-rw-r--r--configs/shared/.local/share/fonts/OperatorMono-Book.otf (renamed from configs/shared/misc/.local/share/fonts/OperatorMono-Book.otf)bin34256 -> 34256 bytes
-rw-r--r--configs/shared/.local/share/fonts/OperatorMono-BookItalic.otf (renamed from configs/shared/misc/.local/share/fonts/OperatorMono-BookItalic.otf)bin35388 -> 35388 bytes
-rw-r--r--configs/shared/.local/share/fonts/OperatorMono-Light.otf (renamed from configs/shared/misc/.local/share/fonts/OperatorMono-Light.otf)bin34124 -> 34124 bytes
-rw-r--r--configs/shared/.local/share/fonts/OperatorMono-LightItalic.otf (renamed from configs/shared/misc/.local/share/fonts/OperatorMono-LightItalic.otf)bin35772 -> 35772 bytes
-rw-r--r--configs/shared/.local/share/fonts/OperatorMono-Medium.otf (renamed from configs/shared/misc/.local/share/fonts/OperatorMono-Medium.otf)bin34488 -> 34488 bytes
-rw-r--r--configs/shared/.local/share/fonts/OperatorMono-MediumItalic.otf (renamed from configs/shared/misc/.local/share/fonts/OperatorMono-MediumItalic.otf)bin35748 -> 35748 bytes
-rw-r--r--configs/shared/.local/share/fonts/OperatorMono-XLight.otf (renamed from configs/shared/misc/.local/share/fonts/OperatorMono-XLight.otf)bin33692 -> 33692 bytes
-rw-r--r--configs/shared/.local/share/fonts/OperatorMono-XLightItalic.otf (renamed from configs/shared/misc/.local/share/fonts/OperatorMono-XLightItalic.otf)bin36408 -> 36408 bytes
-rw-r--r--configs/shared/.local/share/fonts/SourceCodePro-Black.ttf (renamed from configs/shared/misc/.local/share/fonts/SourceCodePro-Black.ttf)bin92724 -> 92724 bytes
-rw-r--r--configs/shared/.local/share/fonts/SourceCodePro-Bold.ttf (renamed from configs/shared/misc/.local/share/fonts/SourceCodePro-Bold.ttf)bin93008 -> 93008 bytes
-rw-r--r--configs/shared/.local/share/fonts/SourceCodePro-ExtraLight.ttf (renamed from configs/shared/misc/.local/share/fonts/SourceCodePro-ExtraLight.ttf)bin93968 -> 93968 bytes
-rw-r--r--configs/shared/.local/share/fonts/SourceCodePro-Light.ttf (renamed from configs/shared/misc/.local/share/fonts/SourceCodePro-Light.ttf)bin93712 -> 93712 bytes
-rw-r--r--configs/shared/.local/share/fonts/SourceCodePro-Medium.ttf (renamed from configs/shared/misc/.local/share/fonts/SourceCodePro-Medium.ttf)bin92660 -> 92660 bytes
-rw-r--r--configs/shared/.local/share/fonts/SourceCodePro-Regular.ttf (renamed from configs/shared/misc/.local/share/fonts/SourceCodePro-Regular.ttf)bin93088 -> 93088 bytes
-rw-r--r--configs/shared/.local/share/fonts/SourceCodePro-Semibold.ttf (renamed from configs/shared/misc/.local/share/fonts/SourceCodePro-Semibold.ttf)bin92644 -> 92644 bytes
-rw-r--r--configs/shared/.local/share/fonts/Sudo-Bold.ttfbin0 -> 101564 bytes
-rw-r--r--configs/shared/.local/share/fonts/Sudo-BoldItalic.ttfbin0 -> 109520 bytes
-rw-r--r--configs/shared/.local/share/fonts/Sudo-Italic.ttfbin0 -> 109428 bytes
-rw-r--r--configs/shared/.local/share/fonts/Sudo-Light.ttfbin0 -> 101828 bytes
-rw-r--r--configs/shared/.local/share/fonts/Sudo-LightItalic.ttfbin0 -> 109532 bytes
-rw-r--r--configs/shared/.local/share/fonts/Sudo-Medium.ttfbin0 -> 101688 bytes
-rw-r--r--configs/shared/.local/share/fonts/Sudo-MediumItalic.ttfbin0 -> 109628 bytes
-rw-r--r--configs/shared/.local/share/fonts/Sudo-Regular.ttfbin0 -> 101764 bytes
-rw-r--r--configs/shared/.local/share/fonts/Sudo-Thin.ttfbin0 -> 101528 bytes
-rw-r--r--configs/shared/.local/share/fonts/Sudo-ThinItalic.ttfbin0 -> 109240 bytes
-rw-r--r--configs/shared/.local/share/fonts/SudoVariable.ttfbin0 -> 185672 bytes
-rw-r--r--configs/shared/.local/share/fonts/all-the-icons.ttfbin0 -> 44732 bytes
-rw-r--r--configs/shared/.local/share/fonts/bitmap/.uuid1
-rw-r--r--configs/shared/.local/share/fonts/bitmap/gohufont-11.bdf2714
-rw-r--r--configs/shared/.local/share/fonts/bitmap/gohufont-11b.bdf2711
-rw-r--r--configs/shared/.local/share/fonts/bitmap/gohufont-uni-11.bdf21923
-rw-r--r--configs/shared/.local/share/fonts/bitmap/gohufont-uni-11b.bdf21920
-rw-r--r--configs/shared/.local/share/fonts/file-icons.ttfbin0 -> 173892 bytes
-rw-r--r--configs/shared/.local/share/fonts/fontawesome.ttfbin0 -> 152796 bytes
-rw-r--r--configs/shared/.local/share/fonts/material-design-icons.ttfbin0 -> 128180 bytes
-rw-r--r--configs/shared/.local/share/fonts/octicons.ttfbin0 -> 52544 bytes
-rw-r--r--configs/shared/.local/share/fonts/weathericons.ttfbin0 -> 99564 bytes
-rw-r--r--configs/shared/.local/share/sounds/gong.mp3 (renamed from configs/shared/misc/.local/share/sounds/gong.mp3)bin45168 -> 45168 bytes
-rw-r--r--configs/shared/.local/share/wallpaper/bike_tire_blue_4k.jpgbin0 -> 925993 bytes
-rw-r--r--configs/shared/.local/share/wallpaper/cartoon_outdoors.jpgbin0 -> 514286 bytes
-rw-r--r--configs/shared/.local/share/wallpaper/coffee_4k.jpgbin0 -> 2486036 bytes
-rw-r--r--configs/shared/.local/share/wallpaper/construction_paper_iceberg_4k.jpgbin0 -> 469513 bytes
-rw-r--r--configs/shared/.local/share/wallpaper/fantasy_tree_4k.jpgbin0 -> 3790910 bytes
-rw-r--r--configs/shared/.local/share/wallpaper/finding_nemo.jpgbin0 -> 1073400 bytes
-rw-r--r--configs/shared/.local/share/wallpaper/forest_8k.jpgbin0 -> 12526539 bytes
-rw-r--r--configs/shared/.local/share/wallpaper/galaxy_4k.jpgbin0 -> 2601814 bytes
-rw-r--r--configs/shared/.local/share/wallpaper/geometric_4k.jpgbin0 -> 4935207 bytes
-rw-r--r--configs/shared/.local/share/wallpaper/geometric_dark_4k.jpgbin0 -> 484074 bytes
-rw-r--r--configs/shared/.local/share/wallpaper/japan_cherry_blossoms_4k.jpgbin0 -> 2198306 bytes
-rw-r--r--configs/shared/.local/share/wallpaper/lego_manhattan.jpgbin0 -> 740829 bytes
-rw-r--r--configs/shared/.local/share/wallpaper/lightbulb_4k.jpgbin0 -> 2337284 bytes
-rw-r--r--configs/shared/.local/share/wallpaper/mount_fuji_4k.jpgbin0 -> 724152 bytes
-rw-r--r--configs/shared/.local/share/wallpaper/mount_fuji_flowers_4k.jpgbin0 -> 1264972 bytes
-rw-r--r--configs/shared/.local/share/wallpaper/pixel_art_bridge.jpgbin0 -> 226354 bytes
-rw-r--r--configs/shared/.local/share/wallpaper/pixelated_china.pngbin0 -> 581893 bytes
-rw-r--r--configs/shared/.local/share/wallpaper/pixelated_japanese.pngbin0 -> 129756 bytes
-rw-r--r--configs/shared/.local/share/wallpaper/pixelated_lakehouse.pngbin0 -> 259673 bytes
-rw-r--r--configs/shared/.local/share/wallpaper/pixelated_landscape.jpgbin0 -> 108602 bytes
-rw-r--r--configs/shared/.local/share/wallpaper/pixelated_new_york_city.jpgbin0 -> 571057 bytes
-rw-r--r--configs/shared/.local/share/wallpaper/pixelated_outdoors.pngbin0 -> 192198 bytes
-rw-r--r--configs/shared/.local/share/wallpaper/pixelated_outer_space.pngbin0 -> 19596 bytes
-rw-r--r--configs/shared/.local/share/wallpaper/psychadelic_mushroom_4k.jpgbin0 -> 925005 bytes
-rw-r--r--configs/shared/.local/share/wallpaper/walle_4k.jpgbin0 -> 227342 bytes
-rw-r--r--configs/shared/.ncmpcpp/config12
-rw-r--r--configs/shared/.profile68
-rw-r--r--configs/shared/.ssh/config21
-rw-r--r--configs/shared/.tmux.conf (renamed from configs/shared/tmux/.tmux.conf)0
-rw-r--r--configs/shared/.xsecurelockrc11
-rw-r--r--configs/shared/.xsessionrc4
-rw-r--r--configs/shared/.xsessionrc.shared (renamed from configs/shared/x_server/.xsessionrc.shared)42
-rw-r--r--configs/shared/.zprofile (renamed from configs/shared/zsh/.zprofile)2
-rw-r--r--configs/shared/.zshrc100
-rw-r--r--configs/shared/aliases.zsh (renamed from configs/shared/zsh/aliases.zsh)70
-rw-r--r--configs/shared/emacs/.emacs.d/init.el26
-rw-r--r--configs/shared/emacs/.emacs.d/snippets/rjsx-mode/redux-action5
-rw-r--r--configs/shared/emacs/.emacs.d/snippets/rjsx-mode/typed-redux-action5
-rw-r--r--configs/shared/emacs/.emacs.d/tramp42
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/casing.el46
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/fs-functions.el24
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/macros.el28
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/packages/wpc-clojure.el51
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/packages/wpc-dired.el22
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/packages/wpc-keybindings.el139
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/packages/wpc-lisp.el48
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/packages/wpc-terminal.el22
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/packages/wpc-ui.el162
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/string-functions.el48
-rw-r--r--configs/shared/functions.zsh (renamed from configs/shared/zsh/functions.zsh)625
-rw-r--r--configs/shared/misc/.config/lf/marks5
-rw-r--r--configs/shared/misc/.config/rofi/config1
-rw-r--r--configs/shared/misc/.config/terminator/config20
-rw-r--r--configs/shared/misc/.ssh/config8
-rw-r--r--configs/shared/misc/.unison/cloudtop7
-rw-r--r--configs/shared/shell/.profile34
-rw-r--r--configs/shared/variables.zsh (renamed from configs/shared/zsh/variables.zsh)10
-rw-r--r--configs/shared/x_server/.Xresources.shared1
-rw-r--r--configs/shared/x_server/.xsessionrc4
-rw-r--r--configs/shared/zle.zsh (renamed from configs/shared/zsh/zle.zsh)0
-rw-r--r--configs/shared/zsh/.zshrc55
-rwxr-xr-xconfigs/uninstall10
-rw-r--r--configs/work_laptop/.Xresources.device1
-rw-r--r--configs/work_laptop/.xsessionrc.device11
544 files changed, 88383 insertions, 1305 deletions
diff --git a/configs/desktop/x_server/.Xresources.device b/configs/desktop/.Xresources.device
index 5c1bb0c41f..5c1bb0c41f 100644
--- a/configs/desktop/x_server/.Xresources.device
+++ b/configs/desktop/.Xresources.device
diff --git a/configs/desktop/.gitkeep b/configs/desktop/.gitkeep
deleted file mode 100644
index e69de29bb2..0000000000
--- a/configs/desktop/.gitkeep
+++ /dev/null
diff --git a/configs/desktop/x_server/.xsessionrc.device b/configs/desktop/.xsessionrc.device
index 352dd4fb7d..352dd4fb7d 100644
--- a/configs/desktop/x_server/.xsessionrc.device
+++ b/configs/desktop/.xsessionrc.device
diff --git a/configs/desktop/misc/.config/i3/config.device b/configs/desktop/misc/.config/i3/config.device
deleted file mode 100644
index f46c5cf93c..0000000000
--- a/configs/desktop/misc/.config/i3/config.device
+++ /dev/null
@@ -1,14 +0,0 @@
-# Desktop-specific configuration
-
-# Since the keyboard for my desktop doesn't support XFree86 keysyms, prefer
-# alternative KBDs.
-
-# volume controls
-bindsym F1 exec --no-startup-id pactl set-sink-mute   @DEFAULT_SINK@ toggle # same Fn keys as laptop
-bindsym F2 exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10%   # same Fn keys as laptop
-bindsym F3 exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10%   # same Fn keys as laptop
-
-# playback controls
-bindsym F4 exec --no-startup-id playerctl previous   # same Fn keys as laptop
-bindsym F5 exec --no-startup-id playerctl play-pause # same Fn keys as laptop
-bindsym F6 exec --no-startup-id playerctl next       # same Fn keys as laptop
diff --git a/configs/install b/configs/install
index 6405df04e3..e33e32c1af 100755
--- a/configs/install
+++ b/configs/install
@@ -5,13 +5,16 @@ configs="$DOTFILES/configs"
 case $(hostname) in
   # desktop
   wpcarro.lon.corp.google.com)
-    (cd "$configs/desktop" && stow --target="$HOME" *);;
+    (cd "$configs/desktop" && stow --target="$HOME" .);;
   # laptop
-  wpcarro)
-    (cd "$configs/laptop" && stow --target="$HOME" *);;
+  wpcarro2)
+    (cd "$configs/work_laptop" && stow --target="$HOME" .);;
   # cloudtop
   wpcarro.c.googlers.com)
-    (cd "$configs/cloudtop" && stow --target="$HOME" *);;
+    (cd "$configs/cloudtop" && stow --target="$HOME" .);;
+  # Acer Manjaro laptop
+  acer-manjaro)
+    (cd "$configs/personal_laptop" && stow --target="$HOME" .);;
 esac
 
-(cd "$configs/shared" && stow --target="$HOME" *)
+(cd "$configs/shared" && stow --target="$HOME" .)
diff --git a/configs/laptop/misc/.config/i3/config.device b/configs/laptop/misc/.config/i3/config.device
deleted file mode 100644
index d96ffdb2b5..0000000000
--- a/configs/laptop/misc/.config/i3/config.device
+++ /dev/null
@@ -1,21 +0,0 @@
-# Laptop-specific configuration
-
-# My laptop has keys for XFree86 signals that my desktop keyboard currently
-# doesn't have.
-
-# volume controls
-bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10%   # MBP Volume Up
-bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10%   # MBP Volume Down
-bindsym XF86AudioMute        exec --no-startup-id pactl set-sink-mute   @DEFAULT_SINK@ toggle # MBP Mute
-
-# playback controls
-bindsym XF86AudioPrev exec --no-startup-id playerctl previous
-bindsym XF86AudioPlay exec --no-startup-id playerctl play-pause
-bindsym XF86AudioNext exec --no-startup-id playerctl next
-
-# screen brightness controls
-bindsym XF86MonBrightnessUp   exec xbacklight -inc 15
-bindsym XF86MonBrightnessDown exec xbacklight -dec 15
-
-# suspend laptop
-bindsym Ctrl+Escape exec systemctl suspend
\ No newline at end of file
diff --git a/configs/laptop/x_server/.Xresources.device b/configs/laptop/x_server/.Xresources.device
deleted file mode 100644
index 3f574b5502..0000000000
--- a/configs/laptop/x_server/.Xresources.device
+++ /dev/null
@@ -1 +0,0 @@
-Xft.dpi: 200
\ No newline at end of file
diff --git a/configs/personal_laptop/.Xresources.device b/configs/personal_laptop/.Xresources.device
new file mode 100644
index 0000000000..93a8d7e025
--- /dev/null
+++ b/configs/personal_laptop/.Xresources.device
@@ -0,0 +1 @@
+XTerm.vt100.faceName: GohuFont
diff --git a/configs/laptop/x_server/.xsessionrc.device b/configs/personal_laptop/.xsessionrc.device
index 97c19f2160..97c19f2160 100644
--- a/configs/laptop/x_server/.xsessionrc.device
+++ b/configs/personal_laptop/.xsessionrc.device
diff --git a/configs/shared/x_server/.Xmodmap b/configs/shared/.Xmodmap
index 518793b867..518793b867 100644
--- a/configs/shared/x_server/.Xmodmap
+++ b/configs/shared/.Xmodmap
diff --git a/configs/shared/x_server/.Xresources b/configs/shared/.Xresources
index 4e738e3d30..4e738e3d30 100644
--- a/configs/shared/x_server/.Xresources
+++ b/configs/shared/.Xresources
diff --git a/configs/shared/.Xresources.shared b/configs/shared/.Xresources.shared
new file mode 100644
index 0000000000..df8848bb78
--- /dev/null
+++ b/configs/shared/.Xresources.shared
@@ -0,0 +1 @@
+! Put shared configuration here
diff --git a/configs/shared/misc/.config/compton.conf b/configs/shared/.config/compton.conf
index ae06b19aba..a6b5f637e6 100644
--- a/configs/shared/misc/.config/compton.conf
+++ b/configs/shared/.config/compton.conf
@@ -1,12 +1,15 @@
 # shadow
-shadow = true;
+shadow = false;
 shadow-radius = 7;
 shadow-offset-x = -7;
 shadow-offset-y = -7;
 
+# TODO: Remove active opacity
+
 # opacity
 menu-opacity = 0.8;
-inactive-opacity = 0.8;
+inactive-opacity = 0.96;
+active-opacity = 0.96;
 
 # transitions
 fading = true;
@@ -21,4 +24,10 @@ fade-out-step = 0.07;
 #
 # NOTE: For some reason, `100:class_g` doesn't work, so settling for
 # `99:class_g` instead.
-opacity-rule = [ "99:class_g = 'xsecurelock'" ];
+opacity-rule = [
+  "99:class_g = 'xsecurelock'",
+  # TODO: Ensure this works.
+  "80:class_g = 'terminator'",
+  # TODO: Ensure this work.
+  "80:class_g = 'Google Emacs'"
+];
diff --git a/configs/shared/misc/.config/i3/config.shared b/configs/shared/.config/i3/config
index b39b634704..e52bf23b3d 100644
--- a/configs/shared/misc/.config/i3/config.shared
+++ b/configs/shared/.config/i3/config
@@ -13,24 +13,36 @@
 # KBDs my feeble memory needs to store.
 
 set $mod Mod1
+set $window Mod1+Ctrl
 set $super Mod4
+set $terminal terminator
+set $browser  google-chrome
 
 # Font for window titles. Will also be used by the bar unless a different font
-# is used in the bar {} block below.
-font pango:monospace 8
+# is used in the bar block below.
+font pango:Monospace 10px
 
 # Use Mouse+$mod to drag floating windows to their wanted position
 floating_modifier $mod
 
 # i3-gaps (depends on i3-gaps installation)
-gaps inner 20
-gaps outer 0
-smart_gaps on
-
-bindsym $mod+Ctrl+plus   gaps outer current plus  5
-bindsym $mod+Ctrl+minus  gaps outer current minus 5
-bindsym $mod+Shift+plus  gaps inner current plus  5
-bindsym $mod+Shift+minus gaps inner current minus 5
+# gaps inner 7
+# gaps outer 0
+# smart_gaps on
+#
+# bindsym $mod+Ctrl+plus   gaps outer current plus  5
+# bindsym $mod+Ctrl+minus  gaps outer current minus 5
+# bindsym $mod+Shift+plus  gaps inner current plus  5
+# bindsym $mod+Shift+minus gaps inner current minus 5
+
+# Support XF86 keys for audio playback and volume control
+bindsym XF86AudioMute        exec --no-startup-id pactl set-sink-mute   @DEFAULT_SINK@ toggle
+bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10%
+bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10%
+bindsym XF86AudioPrev        exec --no-startup-id playerctl previous
+bindsym XF86AudioNext        exec --no-startup-id playerctl next
+bindsym XF86AudioStop        exec --no-startup-id playerctl play-pause
+bindsym XF86AudioPlay        exec --no-startup-id playerctl play-pause
 
 # KBD Principles:
 # $mod+Ctrl+<app_char>       = starting an application
@@ -42,45 +54,65 @@ bindsym $mod+Shift+minus gaps inner current minus 5
 # chrome   = c
 # spotify  = s
 # intellij = i
-#
-# Vertical
-bindsym $mod+Ctrl+t      exec st
-bindsym $mod+Ctrl+Return exec st
-bindsym $mod+Ctrl+e      exec emacsclient --create-frame ~/programming
-bindsym $mod+Ctrl+c      exec google-chrome
-bindsym $mod+Ctrl+s      exec spotify
-bindsym $mod+Ctrl+i      exec zsh -i -c intellij
+bindsym $mod+Ctrl+t exec $terminal
+bindsym $mod+Return exec $terminal
+bindsym $mod+Ctrl+e exec emacsclient --create-frame
+bindsym $mod+Ctrl+c exec $browser
+bindsym $mod+Ctrl+s exec spotify
+bindsym $mod+Ctrl+i exec zsh -i -c intellij
 
 # support dmenu-based bookmarks
-bindsym $mod+Ctrl+b exec dmenu <$DOTFILES/bookmarks.txt | xargs $BROWSER
+# bindsym $mod+Ctrl+b exec rofi -dmenu <$DOTFILES/bookmarks.txt | xargs $browser
 
-bindsym $mod+Return exec st
+set $bookmarks_mode Bookmarks (a) add, (d) delete, (b) browse
+mode "$bookmarks_mode" {
+     bindsym a exec zsh -i -c add_bookmark,  mode "default"
+     bindsym d exec zsh -i -c rm_bookmark,   mode "default"
+     bindsym b exec zsh -i -c open_bookmark, mode "default"
+
+     bindsym Escape mode "default"
+     bindsym Ctrl+g mode "default"
+     bindsym Ctrl+c mode "default"
+}
+bindsym $mod+Ctrl+b mode "$bookmarks_mode"
 
 # pass integration
 bindsym $mod+Ctrl+backslash exec ~/.config/i3/passmenu # mirroring the 1password KBD
 
 # integrate with Emacs's org-mode
 bindsym $mod+o exec zsh -i -c org_capture
-for_window [class="GoogleEmacs" instance="org-protocol-capture"] floating enable
+# TODO: Support "coding size", "dialog-size" (for org_capture)
+# TODO: Support way to cycle through predefined sizes.
+for_window [class="GoogleEmacs" instance="floating"] floating enable, resize set height 1200px, resize set width 780px
+
+# Here is a sketch of the cycle sizes idea.
+# TODO: Support this.
+# mode "cycle_sizes_floating_mode" {
+#      # coding mode
+#      bindsym a for_window [mode="floating", class="actively-selected"] resize set height 1200px, resize set width 780px
+#      bindsym b for_window [mode="floating", class="actively-selected"] resize set height 500px, resize set width 500px
+#
+#      bindsym Escape mode "default"
+#      bindsym Ctrl+g mode "default"
+#      bindsym Ctrl+c mode "default"
+# }
 
 # ensure Spotify windows float
 for_window [class="Spotify"] floating enable
 
-# ensure `lf` instances float
-for_window [title="lf"] floating enable
-
-# ensure wallpaper
-exec --no-startup-id feh --bg-scale ~/.local/share/wallpaper/cartoon-outdoors.jpg
-
 # ensure system service that run through XDG start
-exec dex -ae i3
+exec --no-startup-id dex -ae i3
 
-# dmenu configuration
-bindsym $mod+space exec --no-startup-id dmenu_run
-bindsym $mod+t exec --no-startup-id ~/.config/i3/dmenu_timer.sh ~/.local/share/sounds/gong.mp3
+# rofi configuration
+bindsym $mod+space exec --no-startup-id rofi -show combi
+bindsym $mod+t     exec --no-startup-id ~/.config/i3/dmenu_timer.sh ~/.local/share/sounds/gong.mp3
+
+# switch workspaces
+bindsym $mod+Tab       workspace next
+bindsym $mod+Shift+Tab workspace prev
 
 # file manager
-bindsym $mod+n exec st -e lf ~/Dropbox
+bindsym $mod+n exec $terminal -x lf ~/Dropbox
 
 # clipboard manager
 # NOTE: Ctrl-c is already covered since `clipmenu` listens for X clipboard
@@ -93,23 +125,33 @@ bindsym $mod+n exec st -e lf ~/Dropbox
 bindsym Ctrl+$mod+v exec clipmenu && xdotool key --clearmodifiers ctrl+Shift+v
 
 # Screenshot
-# TODO: find a better KBD for this
-bindsym $mod+s exec zsh -i -c snipit # note that this eclipses Tmux's M-s KBD for switching b/w session
-bindsym Ctrl+Print   exec scrot ~/Pictures/screenshots/%b-%d-%Y_%T.png # Windows style
-# TODO: debug
-# bindsym $mod+Print   exec scrot --focused ~/Pictures/screenshots/%b-%d-%Y_%T.png # Windows style
+# TODO: Support variants: (a) App (r) Region (f) Fullscreen.
+# TODO: Support hosting to third-party image hosting.
+set $screenshot_mode Screenshot (g) googleplex (l) local
+mode "$screenshot_mode" {
+     bindsym g exec zsh -i -c snipit,     mode "default"
+     bindsym l exec zsh -i -c screenshot, mode "default"
+
+     bindsym Escape mode "default"
+     bindsym Ctrl+g mode "default"
+     bindsym Ctrl+c mode "default"
+}
+bindsym $mod+s mode "$screenshot_mode"
 
 # online documentation
-bindsym $mod+Shift+slash exec google-chrome https://i3wm.org/docs/userguide.html
+bindsym $mod+Shift+slash exec $browser https://i3wm.org/docs/userguide.html
 
 # no title bars
-for_window [class="^.*"] border pixel 2
+for_window [class="^.*"] border pixel 1
 
 # disable mouse hover focus
 focus_follows_mouse no
 
 # kill focused window
-bindsym $mod+q kill
+bindsym $window+q kill
+
+# Toggle focus
+bindsym $window+f floating toggle
 
 # GTK Themes
 exec --no-startup-id gnome-settings-daemon
@@ -122,18 +164,14 @@ bindsym $mod+v split vertical
 # cannot bind $mod+h because of movement commands
 bindsym $mod+Shift+v split horizontal
 
-# lock the screen (Window's famous Ctrl-Alt-Delete)
-bindsym $mod+Ctrl+Delete exec xsecurelock
-bindsym $mod+Shift+q     exec xsecurelock
-
 # sound applet
 exec --no-startup-id gnome-sound-applet
 
 # change focus
-bindsym $mod+h focus left
-bindsym $mod+j focus down
-bindsym $mod+k focus up
-bindsym $mod+l focus right
+bindsym $window+h focus left
+bindsym $window+j focus down
+bindsym $window+k focus up
+bindsym $window+l focus right
 
 # move focused window
 bindsym $mod+Shift+h move left  100
@@ -141,12 +179,8 @@ bindsym $mod+Shift+j move down  100
 bindsym $mod+Shift+k move up    100
 bindsym $mod+Shift+l move right 100
 
-# enable duplicating the current window vertically or horizontally
-# bindsym $mod+- split v exec terminator
-# bindsym $mod+\ split h exec terminator
-
 # enter fullscreen mode for the focused container
-bindsym $mod+z fullscreen toggle
+bindsym $window+z fullscreen toggle
 
 # change container layout (stacked, tabbed, toggle split)
 bindsym $super+e layout toggle split
@@ -159,11 +193,8 @@ bindsym $mod+Shift+f floating toggle
 # toggle stickiness
 bindsym $mod+Shift+s sticky toggle
 
-# change focus between tiling / floating windows
-bindsym $mod+f focus mode_toggle
-
 # focus the parent container
-bindsym $mod+a focus parent
+# bindsym $mod+a focus parent
 bindsym $mod+Shift+a focus child
 
 # Define names for default workspaces for which we configure key bindings later on.
@@ -191,6 +222,19 @@ bindsym $mod+8 workspace $ws8
 bindsym $mod+9 workspace $ws9
 bindsym $mod+0 workspace $ws10
 
+# edit configuration files
+# TODO: Standardize KBDs for C,R,U,D operations.
+# TODO: Move shell script to /usr/local/bin
+# Create
+# TODO: Choose another KBD. This is temporary.
+bindsym $mod+a       exec zsh -i -c add_config
+# Read
+bindsym $mod+c       exec zsh -i -c edit_config
+# Update
+# TODO: Support operation to update_config label and path
+# Delete
+bindsym $mod+Shift+c exec zsh -i -c rm_config
+
 # move and follow focused container to workspace
 bindsym $mod+Shift+1 move container to workspace $ws1;  workspace $ws1
 bindsym $mod+Shift+2 move container to workspace $ws2;  workspace $ws2
@@ -219,6 +263,22 @@ bindsym $mod+Ctrl+0 move container to workspace $ws10
 bindsym $super+r       exec cat ~/.config/i3/config.shared ~/.config/i3/config.device >~/.config/i3/config; reload
 bindsym $super+Shift+r exec cat ~/.config/i3/config.shared ~/.config/i3/config.device >~/.config/i3/config; restart
 
+# logout dialog
+set $mode_system System (l) lock, (e) logout, (s) suspend, (h) hibernate, (r) reboot, (Shift+s) shutdown
+mode "$mode_system" {
+    bindsym l       exec --no-startup-id xsecurelock,                        mode "default"
+    bindsym e       exit,                                                    mode "default"
+    bindsym s       exec --no-startup-id xsecurelock && systemctl suspend,   mode "default"
+    bindsym h       exec --no-startup-id xsecurelock && systemctl hibernate, mode "default"
+    bindsym r       exec --no-startup-id systemctl reboot,                   mode "default"
+    bindsym Shift+s exec --no-startup-id systemctl poweroff,                 mode "default"
+
+    # back to normal: Enter or Escape
+    bindsym Escape mode "default"
+    bindsym Ctrl+g mode "default"
+    bindsym Ctrl+c mode "default"
+}
+bindsym Ctrl+Mod1+Delete mode "$mode_system"
 
 # resize window (you can also use the mouse for that)
 mode "resize" {
@@ -226,9 +286,10 @@ mode "resize" {
         bindsym j resize shrink height 10 px or 10 ppt
         bindsym k resize grow   height 10 px or 10 ppt
         bindsym l resize grow   width  10 px or 10 ppt
-        bindsym Return       mode "default"
-        bindsym Caps_Lock    mode "default"
-        bindsym $mod+Shift+r mode "default"
+
+        bindsym Escape mode "default"
+        bindsym Ctrl+g mode "default"
+        bindsym Ctrl+c mode "default"
 }
 bindsym $mod+Shift+r mode "resize"
 
@@ -238,42 +299,31 @@ mode "passthrough" {
 }
 bindsym $mod+Escape mode "passthrough"
 
-# Atom One Dark colors
-set $black          #1e2127
-set $red            #e06c75
-set $green          #98c379
-set $yellow         #d19a66
-set $blue           #61afef
-set $magenta        #c678dd
-set $cyan           #56b6c2
-set $white          #abb2bf
-set $bright_black   #5c6370
-set $bright_red     #e06c75
-set $bright_green   #98c379
-set $bright_yellow  #d19a66
-set $bright_white   #ffffff
-set $bright_blue    #61afef
-set $bright_magenta #c678dd
-set $bright_cyan    #56b6c2
-set $selection      #3a3f4b
-
-# class                 # border    # bg # text #indicator #child_border
-client.focused          $red        $red $red   $magenta   $bright_cyan
-client.focused_inactive $red        $red $red   $magenta   $black
-client.unfocused        $red        $red $red   $magenta   $black
+# class                 border     backgr     text      indicator child_border
+client.focused          #83526a   #83526a   #8de0e1 #E8C35F  #83526a
+client.focused_inactive #83526a   #83526a   #8de0e1 #E8C35F  #5a3849
+client.unfocused        #5a3849 #5a3849 #8de0e1 #E8C35F  #5a3849
+client.urgent           #E8C35F   #E8C35F   #8de0e1 #E8C35F  #E8C35F
+client.placeholder      #31213f   #629c9d   #8de0e1 #31213f  #629c9d
+client.background       #31213f
 
 bar {
     status_command i3status
+    font pango:Monospace 10px
     position top
     # disable system tray icons
     tray_output none
     colors {
-           background $black
-           statusline $white
-           separator  $yellow
-           focused_workspace  $black $black $bright_cyan
-           active_workspace   $red $bright_blue $blue
-           inactive_workspace $black $black $bright_black
-           urgent_workspace   $magenta $black $magenta
+           background #31213f
+           statusline #83526a # text color in status line
+           separator  #83526a
+           # class            border     text       indicator
+           focused_workspace  #83526a   #8de0e1  #31213f
+           active_workspace   #83526a   #5a3849 #83526a
+           inactive_workspace #5a3849 #83526a   #5a3849
+           urgent_workspace   #5a3849 #83526a   #5a3849
     }
-}
\ No newline at end of file
+}
+
+# wpg integration
+exec --no-startup-id ~/.config/wpg/wp_init.sh
\ No newline at end of file
diff --git a/configs/shared/.config/i3/config.bak b/configs/shared/.config/i3/config.bak
new file mode 100644
index 0000000000..ccfae1d453
--- /dev/null
+++ b/configs/shared/.config/i3/config.bak
@@ -0,0 +1,330 @@
+# Keymapping philosophy:
+# When I feel it's appropriate, I try to borrow existing KBDs from OSX or
+# Windows. For example, I use Ctrl+Alt+Del to start the screen lock, since this
+# is a really well-known KBD. One notable difference is that when I'm borrowing
+# OSX KBDs, I prefer using Alt instead of Super since the keyboard that I'm
+# using has the Alt key in the same location as the Super key on my mac
+# keyboard. I could rebind this, and I just may. But for now, that's worth
+# pointing out.
+# The reason behind borrowing from Windows and OSX is that some of these
+# keybindings are hardwired into my muscle memory. I also tend to work between
+# Linux and OSX quite often. Since OSX is much more difficult to remap KBDs
+# than it is in Linux, I prefer to support the OSX KBDs to reduce the number of
+# KBDs my feeble memory needs to store.
+
+set $mod Mod1
+set $window Mod1+Ctrl
+set $super Mod4
+# TODO: Support alacritty or another fast terminal.
+set $terminal terminator
+set $browser  google-chrome
+
+# Font for window titles. Will also be used by the bar unless a different font
+# is used in the bar block below.
+font pango:Monospace 10px
+
+# Use Mouse+$mod to drag floating windows to their wanted position
+floating_modifier $mod
+
+# i3-gaps (depends on i3-gaps installation)
+# gaps inner 7
+# gaps outer 0
+# smart_gaps on
+#
+# bindsym $mod+Ctrl+plus   gaps outer current plus  5
+# bindsym $mod+Ctrl+minus  gaps outer current minus 5
+# bindsym $mod+Shift+plus  gaps inner current plus  5
+# bindsym $mod+Shift+minus gaps inner current minus 5
+
+# Support XF86 keys for audio playback and volume control
+bindsym XF86AudioMute        exec --no-startup-id pactl set-sink-mute   @DEFAULT_SINK@ toggle
+bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10%
+bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10%
+bindsym XF86AudioPrev        exec --no-startup-id playerctl previous
+bindsym XF86AudioNext        exec --no-startup-id playerctl next
+bindsym XF86AudioStop        exec --no-startup-id playerctl play-pause
+bindsym XF86AudioPlay        exec --no-startup-id playerctl play-pause
+
+# KBD Principles:
+# $mod+Ctrl+<app_char>       = starting an application
+# where <app_char> is a reserved character for a commonly used application.
+#
+# <app_char> definitions:
+# terminal = t, Return
+# emacs    = e
+# chrome   = c
+# spotify  = s
+# intellij = i
+bindsym $mod+Ctrl+t exec $terminal
+bindsym $mod+Return exec $terminal
+bindsym $mod+Ctrl+e exec emacsclient --create-frame
+bindsym $mod+Ctrl+c exec $browser
+bindsym $mod+Ctrl+s exec spotify
+bindsym $mod+Ctrl+i exec zsh -i -c intellij
+
+# support dmenu-based bookmarks
+# bindsym $mod+Ctrl+b exec rofi -dmenu <$DOTFILES/bookmarks.txt | xargs $browser
+
+set $bookmarks_mode Bookmarks (a) add, (d) delete, (b) browse
+mode "$bookmarks_mode" {
+     bindsym a exec zsh -i -c add_bookmark,  mode "default"
+     bindsym d exec zsh -i -c rm_bookmark,   mode "default"
+     bindsym b exec zsh -i -c open_bookmark, mode "default"
+
+     bindsym Escape mode "default"
+     bindsym Ctrl+g mode "default"
+     bindsym Ctrl+c mode "default"
+}
+bindsym $mod+Ctrl+b mode "$bookmarks_mode"
+
+# pass integration
+bindsym $mod+Ctrl+backslash exec ~/.config/i3/passmenu # mirroring the 1password KBD
+
+# integrate with Emacs's org-mode
+bindsym $mod+o exec zsh -i -c org_capture
+# TODO: Support "coding size", "dialog-size" (for org_capture)
+# TODO: Support way to cycle through predefined sizes.
+for_window [class="GoogleEmacs" instance="floating"] floating enable, resize set height 1200px, resize set width 780px
+
+# Here is a sketch of the cycle sizes idea.
+# TODO: Support this.
+# mode "cycle_sizes_floating_mode" {
+#      # coding mode
+#      bindsym a for_window [mode="floating", class="actively-selected"] resize set height 1200px, resize set width 780px
+#      bindsym b for_window [mode="floating", class="actively-selected"] resize set height 500px, resize set width 500px
+#
+#      bindsym Escape mode "default"
+#      bindsym Ctrl+g mode "default"
+#      bindsym Ctrl+c mode "default"
+# }
+
+# ensure Spotify windows float
+for_window [class="Spotify"] floating enable
+
+# ensure system service that run through XDG start
+exec --no-startup-id dex -ae i3
+
+# rofi configuration
+bindsym $mod+space exec --no-startup-id rofi -show combi
+bindsym $mod+t     exec --no-startup-id ~/.config/i3/dmenu_timer.sh ~/.local/share/sounds/gong.mp3
+
+# switch workspaces
+bindsym $mod+Tab       workspace next
+bindsym $mod+Shift+Tab workspace prev
+
+# file manager
+bindsym $mod+n exec $terminal -x lf ~/Dropbox
+
+# clipboard manager
+# NOTE: Ctrl-c is already covered since `clipmenu` listens for X clipboard
+# events using `clipnotify`.
+# NOTE: `clipmenud` is started in `.xsessionrc.shared`
+# NOTE: This is a bit of a hack intended to support pasting in both the terminal
+# and in GUI applications. `st` expects `ctrl+Shift+v` while GUIs expect
+# `ctrl+v`. In the instances where GUIs don't support `ctrl+Shift+v` already, it
+# acts like `ctrl+v`, so it should "just work".
+bindsym Ctrl+$mod+v exec clipmenu && xdotool key --clearmodifiers ctrl+Shift+v
+
+# Screenshot
+# TODO: Support variants: (a) App (r) Region (f) Fullscreen.
+# TODO: Support hosting to third-party image hosting.
+set $screenshot_mode Screenshot (g) googleplex (l) local
+mode "$screenshot_mode" {
+     bindsym g exec zsh -i -c snipit,     mode "default"
+     bindsym l exec zsh -i -c screenshot, mode "default"
+
+     bindsym Escape mode "default"
+     bindsym Ctrl+g mode "default"
+     bindsym Ctrl+c mode "default"
+}
+bindsym $mod+s mode "$screenshot_mode"
+
+# online documentation
+bindsym $mod+Shift+slash exec $browser https://i3wm.org/docs/userguide.html
+
+# no title bars
+for_window [class="^.*"] border pixel 1
+
+# disable mouse hover focus
+focus_follows_mouse no
+
+# kill focused window
+bindsym $window+q kill
+
+# Toggle focus
+bindsym $window+f floating toggle
+
+# GTK Themes
+exec --no-startup-id gnome-settings-daemon
+
+# wireless selection mechanism
+exec --no-startup-id nm-applet
+
+# set the split direction
+bindsym $mod+v split vertical
+# cannot bind $mod+h because of movement commands
+bindsym $mod+Shift+v split horizontal
+
+# sound applet
+exec --no-startup-id gnome-sound-applet
+
+# change focus
+bindsym $window+h focus left
+bindsym $window+j focus down
+bindsym $window+k focus up
+bindsym $window+l focus right
+
+# move focused window
+bindsym $mod+Shift+h move left  100
+bindsym $mod+Shift+j move down  100
+bindsym $mod+Shift+k move up    100
+bindsym $mod+Shift+l move right 100
+
+# enter fullscreen mode for the focused container
+bindsym $window+z fullscreen toggle
+
+# change container layout (stacked, tabbed, toggle split)
+bindsym $super+e layout toggle split
+bindsym $super+s layout stacking
+bindsym $super+t layout tabbed
+
+# toggle tiling / floating
+bindsym $mod+Shift+f floating toggle
+
+# toggle stickiness
+bindsym $mod+Shift+s sticky toggle
+
+# focus the parent container
+# bindsym $mod+a focus parent
+bindsym $mod+Shift+a focus child
+
+# Define names for default workspaces for which we configure key bindings later on.
+# We use variables to avoid repeating the names in multiple places.
+set $ws1  "1"
+set $ws2  "2"
+set $ws3  "3"
+set $ws4  "4"
+set $ws5  "5"
+set $ws6  "6"
+set $ws7  "7"
+set $ws8  "8"
+set $ws9  "9"
+set $ws10 "10"
+
+# jump to workspace
+bindsym $mod+1 workspace $ws1
+bindsym $mod+2 workspace $ws2
+bindsym $mod+3 workspace $ws3
+bindsym $mod+4 workspace $ws4
+bindsym $mod+5 workspace $ws5
+bindsym $mod+6 workspace $ws6
+bindsym $mod+7 workspace $ws7
+bindsym $mod+8 workspace $ws8
+bindsym $mod+9 workspace $ws9
+bindsym $mod+0 workspace $ws10
+
+# edit configuration files
+# TODO: Standardize KBDs for C,R,U,D operations.
+# TODO: Move shell script to /usr/local/bin
+# Create
+# TODO: Choose another KBD. This is temporary.
+bindsym $mod+a       exec zsh -i -c add_config
+# Read
+bindsym $mod+c       exec zsh -i -c edit_config
+# Update
+# TODO: Support operation to update_config label and path
+# Delete
+bindsym $mod+Shift+c exec zsh -i -c rm_config
+
+# move and follow focused container to workspace
+bindsym $mod+Shift+1 move container to workspace $ws1;  workspace $ws1
+bindsym $mod+Shift+2 move container to workspace $ws2;  workspace $ws2
+bindsym $mod+Shift+3 move container to workspace $ws3;  workspace $ws3
+bindsym $mod+Shift+4 move container to workspace $ws4;  workspace $ws4
+bindsym $mod+Shift+5 move container to workspace $ws5;  workspace $ws5
+bindsym $mod+Shift+6 move container to workspace $ws6;  workspace $ws6
+bindsym $mod+Shift+7 move container to workspace $ws7;  workspace $ws7
+bindsym $mod+Shift+8 move container to workspace $ws8;  workspace $ws8
+bindsym $mod+Shift+9 move container to workspace $ws9;  workspace $ws9
+bindsym $mod+Shift+0 move container to workspace $ws10; workspace $ws10
+
+# move focused container to workspace
+bindsym $mod+Ctrl+1 move container to workspace $ws1
+bindsym $mod+Ctrl+2 move container to workspace $ws2
+bindsym $mod+Ctrl+3 move container to workspace $ws3
+bindsym $mod+Ctrl+4 move container to workspace $ws4
+bindsym $mod+Ctrl+5 move container to workspace $ws5
+bindsym $mod+Ctrl+6 move container to workspace $ws6
+bindsym $mod+Ctrl+7 move container to workspace $ws7
+bindsym $mod+Ctrl+8 move container to workspace $ws8
+bindsym $mod+Ctrl+9 move container to workspace $ws9
+bindsym $mod+Ctrl+0 move container to workspace $ws10
+
+# reload, restart i3
+bindsym $super+r       exec cat ~/.config/i3/config.shared ~/.config/i3/config.device >~/.config/i3/config; reload
+bindsym $super+Shift+r exec cat ~/.config/i3/config.shared ~/.config/i3/config.device >~/.config/i3/config; restart
+
+# logout dialog
+set $mode_system System (l) lock, (e) logout, (s) suspend, (h) hibernate, (r) reboot, (Shift+s) shutdown
+mode "$mode_system" {
+    bindsym l       exec --no-startup-id xsecurelock,                        mode "default"
+    bindsym e       exit,                                                    mode "default"
+    bindsym s       exec --no-startup-id xsecurelock && systemctl suspend,   mode "default"
+    bindsym h       exec --no-startup-id xsecurelock && systemctl hibernate, mode "default"
+    bindsym r       exec --no-startup-id systemctl reboot,                   mode "default"
+    bindsym Shift+s exec --no-startup-id systemctl poweroff,                 mode "default"
+
+    # back to normal: Enter or Escape
+    bindsym Escape mode "default"
+    bindsym Ctrl+g mode "default"
+    bindsym Ctrl+c mode "default"
+}
+bindsym Ctrl+Mod1+Delete mode "$mode_system"
+
+# resize window (you can also use the mouse for that)
+mode "resize" {
+        bindsym h resize shrink width  10 px or 10 ppt
+        bindsym j resize shrink height 10 px or 10 ppt
+        bindsym k resize grow   height 10 px or 10 ppt
+        bindsym l resize grow   width  10 px or 10 ppt
+
+        bindsym Escape mode "default"
+        bindsym Ctrl+g mode "default"
+        bindsym Ctrl+c mode "default"
+}
+bindsym $mod+Shift+r mode "resize"
+
+# passthrough mode to support Emacs, Tmux, Vim KBDs for window and pane management
+mode "passthrough" {
+     bindsym $mod+Escape mode "default"
+}
+bindsym $mod+Escape mode "passthrough"
+
+# class                 border     backgr     text      indicator child_border
+# client.focused          {active}   {active}   {color15} {color2}  {active}
+# client.focused_inactive {active}   {active}   {color15} {color2}  {inactive}
+# client.unfocused        {inactive} {inactive} {color15} {color2}  {inactive}
+# client.urgent           {color2}   {color2}   {color15} {color2}  {color2}
+# client.placeholder      {color0}   {color8}   {color15} {color0}  {color8}
+# client.background       {color0}
+
+bar {
+    status_command i3status
+    font pango:Monospace 10px
+    position top
+    # disable system tray icons
+    tray_output none
+    colors {
+           # background {color0}
+           # statusline {inactive}
+           # separator  {active}
+           # class            border     text       indicator
+           # focused_workspace  {active}   {color15}  {color0}
+           # active_workspace   {active}   {inactive} {active}
+           # inactive_workspace {inactive} {active}   {inactive}
+           # urgent_workspace   {inactive} {active}   {inactive}
+    }
+}
+
+# wpg integration
+exec --no-startup-id ~/.config/wpg/wp_init.sh
\ No newline at end of file
diff --git a/configs/shared/misc/.config/i3/dmenu_timer.sh b/configs/shared/.config/i3/dmenu_timer.sh
index 9d62ead730..9d62ead730 100755
--- a/configs/shared/misc/.config/i3/dmenu_timer.sh
+++ b/configs/shared/.config/i3/dmenu_timer.sh
diff --git a/configs/shared/misc/.config/i3/passmenu b/configs/shared/.config/i3/passmenu
index 71c4538fa6..71c4538fa6 100755
--- a/configs/shared/misc/.config/i3/passmenu
+++ b/configs/shared/.config/i3/passmenu
diff --git a/configs/shared/misc/.config/i3/workspace_1.json b/configs/shared/.config/i3/workspace_1.json
index b5d3f9d8c5..b5d3f9d8c5 100644
--- a/configs/shared/misc/.config/i3/workspace_1.json
+++ b/configs/shared/.config/i3/workspace_1.json
diff --git a/configs/shared/.config/i3status/config b/configs/shared/.config/i3status/config
new file mode 100644
index 0000000000..d276046d97
--- /dev/null
+++ b/configs/shared/.config/i3status/config
@@ -0,0 +1,58 @@
+general {
+  markup = pango
+  separator = " "
+  colors = true
+}
+
+/* order += "battery 0" # TODO: remove this if "battery 1" works for Dell */
+order += "battery 1" # trying to support two different laptops
+order += "tztime local"
+order += "tztime lon"
+order += "tztime est"
+order += "tztime pst"
+order += "disk /"
+
+disk "/" {
+  prefix_type = "decimal"
+  format = "%used/%total"
+}
+
+# Useful commands for dealing with timezones:
+# - cat /etc/timezone
+# - man date
+# - timedatectl
+tztime local {
+  format = "%d/%m/%Y"
+}
+
+tztime lon {
+  format = "LON %H:%M"
+  timezone = "Europe/London"
+}
+
+tztime est {
+  format = "NYC %H:%M"
+  timezone = "US/Eastern"
+}
+
+tztime pst {
+  format = "MTV %H:%M"
+  timezone = "US/Pacific"
+}
+
+# TODO: remove this if "battery 1" works for Dell laptop
+/* battery 0 { */
+/*   format = "Battery %percentage" */
+/*   format_down = "" # This hides the battery when there isn't any (e.g. on a Desktop) */
+/*   low_threshold = 30 */
+/*   threshold_type = time */
+/*   integer_battery_capacity = true */
+/* } */
+
+battery 1 {
+  format = "Battery %percentage"
+  format_down = "" # This hides the battery when there isn't any (e.g. on a Desktop)
+  low_threshold = 30
+  threshold_type = time
+  integer_battery_capacity = true
+}
diff --git a/configs/shared/misc/.config/lf/lfrc b/configs/shared/.config/lf/lfrc
index 196856759b..f6045d2973 100644
--- a/configs/shared/misc/.config/lf/lfrc
+++ b/configs/shared/.config/lf/lfrc
@@ -48,6 +48,9 @@
 
 # Basic configuration
 set hidden on
+set info size:time
+set sortby time
+set period 1 # auto-refreshes the view
 
 # Arguably the most import function herein
 cmd help $lf -doc | less
@@ -55,18 +58,15 @@ cmd help $lf -doc | less
 # delete a file, dir
 map D delete
 
-cmd rename %{{
-    # Renames files, dirs.
-    set -f
-    if [ -e "$1" ]; then
-      printf 'file exists'
-    else
-      mv "$f" "$1"
-    fi
-}}
+# reload the view
+map r load
+
+# rename files
+cmd rename %[ -e $1 ] && printf 'file exists' || mv $f $1
 map R push :rename<space>
 
 cmd mkdir %{{
+    # mkdir and cd into that dir
     mkdir -p "$1"
 }}
 map + push :mkdir<space>
@@ -75,31 +75,19 @@ cmd touch %{{
     # Create a file
     touch "$1"
 }}
-map c push :touch<space>
-
-cmd encrypt_file %{{
-  # Encrypts the file and deletes the cleartext version.
-  # Run `decrypt_file` to return the file to its cleartext version.
-  printf "recipient: "
-  read recipient
-  gpg --encrypt --recipient "$recipient" "$f" && rm "$f"
+map c push :touch<space> # this interferes with `clear` command
+
+cmd encrypt %{{
+  # depends on my shell function, encrypt
+  zsh -i -c "encrypt $f"
 }}
-map xe :encrypt_file
-
-cmd decrypt_file %{{
-  # Decrypts a file that was encrypted with `encrypt_file`.
-  # Assumes encrypted files have the .gpg extension and decrypted files omit the
-  # .gpg extension.
-  # Deletes the original .gpg file when finished.
-
-  # check if file exists without .gpg extension
-  if [ -e "${f%.gpg}" ]; then
-    printf "${f%.gpg} exists. Consider deleting or renaming it. Aborting..."
-  else
-    gpg --decrypt "$f" >"${f%.gpg}" 2>/dev/null && rm "$f"
-  fi
+map xe :encrypt
+
+cmd decrypt %{{
+  # depends on my shell function, decrypt
+  zsh -i -c "decrypt $f"
 }}
-map xE :decrypt_file
+map xE :decrypt
 
 cmd archive %{{
     # Generic function for archiving directories.
diff --git a/configs/shared/.config/lf/marks b/configs/shared/.config/lf/marks
new file mode 100644
index 0000000000..aee01d1aa6
--- /dev/null
+++ b/configs/shared/.config/lf/marks
@@ -0,0 +1,7 @@
+':/usr/local/google/home/wpcarro/Dropbox/programming/i3-quickterm
+D:~/Dropbox
+G:/usr/local/google/home/wpcarro/Downloads
+M:/usr/local/google/home/wpcarro/Downloads
+c:~/Dropbox/dotfiles/configs
+d:~/Dropbox/dotfiles
+s:~/Pictures/screenshots
diff --git a/configs/shared/.config/mpd/database b/configs/shared/.config/mpd/database
new file mode 100644
index 0000000000..b39f769e68
--- /dev/null
+++ b/configs/shared/.config/mpd/database
Binary files differdiff --git a/configs/shared/.config/mpd/mpd.conf b/configs/shared/.config/mpd/mpd.conf
new file mode 100644
index 0000000000..fbb3858f3d
--- /dev/null
+++ b/configs/shared/.config/mpd/mpd.conf
@@ -0,0 +1,4 @@
+db_file "~/.config/mpd/database"
+log_file "syslog"
+# music_directory "~/.local/share/sounds"
+auto_update "yes"
\ No newline at end of file
diff --git a/configs/shared/.config/nixpkgs/config.nix b/configs/shared/.config/nixpkgs/config.nix
new file mode 100644
index 0000000000..1dd1750ae0
--- /dev/null
+++ b/configs/shared/.config/nixpkgs/config.nix
@@ -0,0 +1,3 @@
+{
+  allowUnfree = true;
+}
diff --git a/configs/shared/misc/.config/nvim/init.vim b/configs/shared/.config/nvim/init.vim
index 6e4122b40d..eb7dbf3b53 100644
--- a/configs/shared/misc/.config/nvim/init.vim
+++ b/configs/shared/.config/nvim/init.vim
@@ -13,6 +13,18 @@ call vundle#begin()
 " let Vundle manage Vundle, required
 Plugin 'VundleVim/Vundle.vim'
 
+" Rust IDE features
+Plugin 'racer-rust/vim-racer'
+
+set hidden
+let g:racer_experimental_completer = 1
+autocmd FileType rust nmap         gd <Plug>(rust-def)
+autocmd FileType rust nmap         gs <Plug>(rust-def-split)
+autocmd FileType rust nmap         gx <Plug>(rust-def-vertical)
+autocmd FileType rust nmap <leader>gd <Plug>(rust-doc)
+
+Plugin 'xolox/vim-misc'
+
 " The following are examples of different formats supported.
 " Keep Plugin commands between vundle#begin/end.
 
@@ -31,27 +43,13 @@ Plugin 'kien/ctrlp.vim'
 " Grep file contents
 Plugin 'mileszs/ack.vim'
 
-" JS support
-Plugin 'pangloss/vim-javascript'
-
-" JSX support
-Plugin 'mxw/vim-jsx'
-
-" Syntax Highlighting Support
-Plugin 'lambdatoast/elm.vim'
-
-" Elixir Plugins
-Plugin 'elixir-lang/vim-elixir'
-Plugin 'slashmili/alchemist.vim'
-Plugin 'powerman/vim-plugin-AnsiEsc'
-
-" TypeScript Plugins
-Plugin 'rschmukler/typescript-vim'
+" Syntax and other light-weight suppor for a variety of languages
+Plugin 'sheerun/vim-polyglot'
 
 " Themes
-Plugin 'sickill/vim-monokai'
-Plugin 'altercation/vim-colors-solarized'
-Plugin 'mhartington/oceanic-next'
+Plugin 'deviantfero/wpgtk.vim'
+Plugin 'rainglow/vim'
+
 
 " Executes shell commands and pipes output into new Vim buffer.
 Plugin 'sjl/clam.vim'
@@ -91,9 +89,6 @@ Plugin 'christoomey/vim-tmux-navigator'
 " Async `:make` for code linting etc.
 Plugin 'neomake/neomake'
 
-" Color pack
-Plugin 'flazz/vim-colorschemes'
-
 " Better buffer mgt than CtrlP
 Plugin 'yegappan/mru'
 
@@ -102,32 +97,20 @@ Plugin 'zanglg/nova.vim'
 " Emulates Emacs's Helm Swoop search
 Plugin 'pelodelfuego/vim-swoop'
 
-" Fish Shell support
-Plugin 'dag/vim-fish'
-
-" Gotham colorscheme
-Plugin 'whatyouhide/vim-gotham'
-
 " Transparent encryption + decryption
 Plugin 'jamessan/vim-gnupg'
 
 " Javascript auto-formatting
-Plugin 'prettier/vim-prettier', {
-  \ 'do': 'yarn install',
-  \ 'for': ['javascript', 'typescript', 'css', 'less', 'scss', 'json', 'graphql', 'markdown'] }
+" Plugin 'prettier/vim-prettier', {
+"   \ 'do': 'yarn install',
+  " \ 'for': ['javascript', 'typescript', 'css', 'less', 'scss', 'json', 'graphql', 'markdown'] }
 
 " Support Org mode
 Plugin 'jceb/vim-orgmode'
 
-" ReaosnML
-Plugin 'reasonml-editor/vim-reason-plus'
-
 " Autocompletion
 Plugin 'junegunn/fzf'
 
-" Better JSON highlighting
-Plugin 'elzr/vim-json'
-
 " Text objects made easy
 Plugin 'kana/vim-textobj-user'
 
@@ -146,11 +129,11 @@ Plugin 'jiangmiao/auto-pairs'
 " Linting & error warnings
 Plugin 'vim-syntastic/syntastic'
 
-" Atom colorscheme
-Plugin 'rakr/vim-one'
+" Angular.js support
+Plugin 'burnettk/vim-angular'
 
-" Nix syntax highlighting
-Plugin 'LnL7/vim-nix'
+" Asynchronous Linting Engine
+Plugin 'w0rp/ale'
 
 call vundle#end()            " required
 filetype plugin indent on    " required
@@ -182,7 +165,11 @@ autocmd FileType reason nnoremap <buffer> gr :call LanguageClient_textDocument_r
 
 " Replace <CR> with G for faster navigation
 nnoremap <CR> G
+onoremap <CR> G
+vnoremap <CR> G
 
+" Mirror ZLE KBD
+inoremap <M-'> :echo "Working"<CR>
 
 " Syntastic configuration
 set statusline+=%#warningmsg#
@@ -193,17 +180,17 @@ let g:syntastic_always_populate_loc_list = 1
 let g:syntastic_auto_loc_list = 1
 let g:syntastic_check_on_open = 1
 let g:syntastic_check_on_wq = 0
-let g:syntastic_javascript_checkers = ['eslint']
+" let g:syntastic_javascript_checkers = ['eslint']
 let g:syntastic_javascript_eslint_generic = 1
 " this is a hack to prevent a false negative
 " https://github.com/vim-syntastic/syntastic/issues/1692
-let g:syntastic_javascript_eslint_exec = '/bin/ls'
-let g:syntastic_javascript_eslint_exe = 'npx eslint'
-let g:syntastic_javascript_eslint_args = '-f compact'
+" let g:syntastic_javascript_eslint_exec = '/bin/ls'
+" let g:syntastic_javascript_eslint_exe = 'npx eslint'
+" let g:syntastic_javascript_eslint_args = '-f compact'
 
 " javascript autocompletion
-autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS
-autocmd FileType javascript nnoremap <buffer> gf :Prettier<CR>
+" autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS
+" autocmd FileType javascript nnoremap <buffer> gf :Prettier<CR>
 
 " Maximize the current window
 " Similar to Tmux mapping alt-z in my tmux.conf
@@ -213,9 +200,9 @@ nnoremap t% :tab sp<CR>
 cnoremap <C-g> <C-c>
 
 " Prettier configuration
-let g:prettier#exec_cmd_async = 1
+" let g:prettier#exec_cmd_async = 1
 " force Prettier to run on files even without the @format pragma
-let g:prettier#autoformat = 0
+" let g:prettier#autoformat = 0
 
 
 " Basic settings
@@ -232,8 +219,7 @@ set shiftwidth=2
 set background=dark
 
 syntax enable
-colorscheme one
-set background=dark
+colorscheme peacock
 
 " Vim in terminal cannot have a different font from the one set within your
 " terminal. However, this setting will set the font for the GUI version.
@@ -309,6 +295,12 @@ augroup my_error_signs
 augroup END
 
 
+" templates
+if has("autocmd")
+  autocmd BufNewFile *.c  0r ~/.config/nvim/templates/boilerplate.c
+  autocmd BufNewFile *.rs 0r ~/.config/nvim/templates/boilerplate.rs
+endif
+
 let g:neomake_error_sign = {
             \ 'text': '>>',
             \ 'texthl': 'NeoMakeErrorSign',
@@ -498,6 +490,15 @@ inoremap <C-f> <Right>
 inoremap <C-p> <Up>
 inoremap <C-n> <Down>
 
+" temporarily disable <C-p> in normal mode so it doesn't attempt to index all of
+" Google3.
+nnoremap <C-p> :echo "You are attempting to index all of Google3. Aborting..."<CR>
+
+" tab maintenence
+nnoremap <C-t> :tabnew<CR>
+nnoremap <C-w> :tabclose<CR>
+nnoremap <Tab> :tabnext<CR>
+nnoremap <S-Tab> :tabprevious<CR>
 
 " Manage Vertical and Horizontal splits
 nnoremap sl <Esc>:vs<CR><C-w>l
@@ -615,7 +616,8 @@ vnoremap // y/<C-r>"<CR>N
 
 
 " trim trailing whitespace on save
-autocmd BufWritePre *.{js,py,tpl,less,html,ex,exs,txt} :%s/\s\+$//e
+" Are there any file type where I wouldn't want this?
+autocmd BufWritePre *.{js,py,tpl,less,html,ex,exs,txt,hs,java,rs,ml} :%s/\s\+$//e
 
 
 " Use .gitignore file to populate Ctrl-P
diff --git a/configs/shared/.config/nvim/simple.vim b/configs/shared/.config/nvim/simple.vim
new file mode 100644
index 0000000000..ea40964ee8
--- /dev/null
+++ b/configs/shared/.config/nvim/simple.vim
@@ -0,0 +1,98 @@
+" My barebones vimrc without any Vundle dependencies.
+"
+" I'm attempting to optimize the following:
+" - Minimize dependencies
+" - Maximize ergonomics
+" - Maximize Tmux compatibility
+" - Minimize shadowing of existing Vim KBDs
+"
+" Warning: This is currently unstable as it is a work-in-progress.
+"
+" Author: William Carroll <wpcarro@gmail.com>
+
+" Use <Space> as the leader key.
+let mapleader = " "
+nnoremap <leader>ev :tabnew<CR>:edit ~/.vimrc<CR>
+nnoremap <leader>sv :source ~/.vimrc<CR>
+nnoremap <leader>w  :w<CR>
+nnoremap <leader>h  :help 
+
+" increment,decrement numbers
+nnoremap + <C-a>
+" TODO: Restore with better KBD
+" nnoremap - <C-x>
+
+" Visit the CWD
+nnoremap - :e .<CR>
+
+" Turn line numbers on.
+set number
+
+" Easily create vertical, horizontal window splits.
+nnoremap sh :vsplit<CR>
+nnoremap sj :split<CR>:wincmd j<CR>
+nnoremap sk :split<CR>
+nnoremap sl :vsplit<CR>:wincmd l<CR>
+
+" Move across window splits.
+" TODO: Change to <M-{h,j,k,l}>.
+nnoremap <C-h> :wincmd h<CR>
+nnoremap <C-j> :wincmd j<CR>
+nnoremap <C-k> :wincmd k<CR>
+nnoremap <C-l> :wincmd l<CR>
+
+" TODO: Support these.
+" nnoremap <M-q> :q<CR>
+" nnoremap <M-h> :wincmd h<CR>
+" nnoremap <M-j> :wincmd j<CR>
+" nnoremap <M-k> :wincmd k<CR>
+" nnoremap <M-l> :wincmd l<CR>
+
+" Use <Enter> instead of G to support:
+"        20<Enter> - to jump to line 20
+"       d20<Enter> - to delete from the current line until line 20
+"   <C-v>20<Enter> - to select from the current line until line 20
+nnoremap <Enter> G
+onoremap <Enter> G
+vnoremap <Enter> G
+
+" Easily change modes on keyboards that don't have CapsLock mapped to <Esc>
+inoremap jk      <ESC>
+
+" CRUD tabs.
+nnoremap <TAB>   :tabnext<CR>
+nnoremap <S-TAB> :tabprevious<CR>
+nnoremap <C-t>   :tabnew<CR>:edit .<CR>
+nnoremap <C-w>   :tabclose<CR>
+" TODO: Re-enable these once <M-{h,j,k,l}> are supported.
+" nnoremap <C-l> :+tabmove<CR>
+" nnoremap <C-h> :-tabmove<CR>
+
+" Use H,L to goto beggining,end of a line.
+" Swaps the keys to ensure original functionality of H,L are preserved.
+nnoremap H ^
+nnoremap L $
+nnoremap ^ H
+nnoremap $ L
+
+" Use H,L in visual mode too
+vnoremap H ^
+vnoremap L $
+vnoremap ^ H
+vnoremap $ L
+
+" Emacs hybrid mode
+" TODO: model this after tpope's rsi.vim (Readline-style insertion)
+cnoremap <C-g> <C-c>
+cnoremap <C-a> <C-b>
+inoremap <C-a> <C-o>^
+inoremap <C-e> <C-o>$
+inoremap <C-b> <C-o>h
+inoremap <C-f> <C-o>l
+
+" Indenting
+" The following three settings are based on option 2 of `:help tabstop`
+set tabstop=4
+set shiftwidth=4
+set expandtab
+set autoindent
diff --git a/configs/shared/.config/nvim/templates/boilerplate.c b/configs/shared/.config/nvim/templates/boilerplate.c
new file mode 100644
index 0000000000..949743d725
--- /dev/null
+++ b/configs/shared/.config/nvim/templates/boilerplate.c
@@ -0,0 +1,6 @@
+#include <stdio.h>
+
+int main() {
+  printf("Hello, world!");
+  return 0;
+}
diff --git a/configs/shared/.config/nvim/templates/boilerplate.rs b/configs/shared/.config/nvim/templates/boilerplate.rs
new file mode 100644
index 0000000000..c83adbc69f
--- /dev/null
+++ b/configs/shared/.config/nvim/templates/boilerplate.rs
@@ -0,0 +1,5 @@
+fn main() {
+    // The statements here will be executed when the compiled binary is called.
+
+    println!("Hello, world!");
+}
diff --git a/configs/shared/.config/rofi/config b/configs/shared/.config/rofi/config
new file mode 100644
index 0000000000..576ab5cd8e
--- /dev/null
+++ b/configs/shared/.config/rofi/config
@@ -0,0 +1,6 @@
+rofi.font:                           Monospace 10
+rofi.color-normal:                   #31213f, #8de0e1, #31213f, #83526a, #8de0e1
+rofi.color-urgent:                   #31213f, #d6b48d, #22231D, #d6b48d, #8de0e1
+rofi.color-active:                   #31213f, #3CC2B5, #31213f, #3CC2B5, #31213f
+rofi.color-window:                   #31213f, #83526a, #5a3849
+rofi.modi: window,run,ssh,combi
diff --git a/configs/shared/.config/rofi/config.bak b/configs/shared/.config/rofi/config.bak
new file mode 100644
index 0000000000..cd77833442
--- /dev/null
+++ b/configs/shared/.config/rofi/config.bak
@@ -0,0 +1,6 @@
+rofi.font:                           Source Code Pro 10
+rofi.color-normal:                   #01022E, #a7dff4, #01022E, #015f9e, #a7dff4
+rofi.color-urgent:                   #01022E, #d6b48d, #22231D, #d6b48d, #a7dff4
+rofi.color-active:                   #01022E, #3FA4E0, #01022E, #3FA4E0, #01022E
+rofi.color-window:                   #01022E, #015f9e, #01416c
+rofi.modi: window,run,ssh,combi
diff --git a/configs/shared/.config/systemd/user/clipmenud.service b/configs/shared/.config/systemd/user/clipmenud.service
new file mode 100644
index 0000000000..fac317f3f0
--- /dev/null
+++ b/configs/shared/.config/systemd/user/clipmenud.service
@@ -0,0 +1,18 @@
+[Unit]
+Description=Clipmenu daemon
+
+[Service]
+ExecStart=clipmenud
+Restart=always
+RestartSec=500ms
+Environment=DISPLAY=:0
+
+MemoryDenyWriteExecute=yes
+NoNewPrivileges=yes
+ProtectControlGroups=yes
+ProtectKernelTunables=yes
+RestrictAddressFamilies=
+RestrictRealtime=yes
+
+[Install]
+WantedBy=default.target
diff --git a/configs/shared/.config/systemd/user/default.target.wants/clipmenud.service b/configs/shared/.config/systemd/user/default.target.wants/clipmenud.service
new file mode 120000
index 0000000000..387f2023d2
--- /dev/null
+++ b/configs/shared/.config/systemd/user/default.target.wants/clipmenud.service
@@ -0,0 +1 @@
+/usr/local/google/home/wpcarro/.config/systemd/user/clipmenud.service
\ No newline at end of file
diff --git a/configs/shared/.config/terminator/config b/configs/shared/.config/terminator/config
new file mode 100644
index 0000000000..9357a7ed29
--- /dev/null
+++ b/configs/shared/.config/terminator/config
@@ -0,0 +1,34 @@
+[global_config]
+  enabled_plugins = LaunchpadBugURLHandler, LaunchpadCodeURLHandler, APTURLHandler, TerminatorThemes
+[keybindings]
+[profiles]
+  [[default]]
+    background_color = "#ffffff"
+    cursor_shape = ibeam
+    cursor_color = "#E29B61"
+    font = Input Mono Medium 12
+    foreground_color = "#000000"
+    show_titlebar = False
+    scrollbar_position = hidden
+    palette = "#31213f:#e29b61:#e8c35f:#565b87:#a56785:#20a89e:#3cc2b5:#8de0e1:#629c9d:#e29b61:#e8c35f:#565b87:#a56785:#20a89e:#3cc2b5:#8de0e1"
+    use_system_font = False
+  [[Molokai]]
+    background_color = "#121212"
+    cursor_shape = ibeam
+    cursor_color = "#bbbbbb"
+    font = Input Mono Medium 12
+    foreground_color = "#bbbbbb"
+    show_titlebar = False
+    scrollbar_position = hidden
+    palette = "#121212:#fa2573:#98e123:#dfd460:#1080d0:#8700ff:#43a8d0:#bbbbbb:#555555:#f6669d:#b1e05f:#fff26d:#00afff:#af87ff:#51ceff:#ffffff"
+    use_system_font = False
+[layouts]
+  [[default]]
+    [[[child1]]]
+      parent = window0
+      type = Terminal
+      profile = Molokai
+    [[[window0]]]
+      parent = ""
+      type = Window
+[plugins]
diff --git a/configs/shared/.config/terminator/config.bak b/configs/shared/.config/terminator/config.bak
new file mode 100644
index 0000000000..d25a89c99e
--- /dev/null
+++ b/configs/shared/.config/terminator/config.bak
@@ -0,0 +1,23 @@
+[global_config]
+  enabled_plugins = LaunchpadBugURLHandler, LaunchpadCodeURLHandler, APTURLHandler
+[keybindings]
+[profiles]
+  [[default]]
+    background_color = "#01022E"
+    cursor_shape = ibeam
+    cursor_color = "#434AA6"
+    font = Source Code Pro 10
+    foreground_color = "#0278C6"
+    show_titlebar = False
+    scrollbar_position = hidden
+    palette = "#01022E:#434AA6:#0278C6:#9B6DB0:#018CD5:#07AAE9:#3FA4E0:#a7dff4:#749caa:#434AA6:#0278C6:#9B6DB0:#018CD5:#07AAE9:#3FA4E0:#a7dff4"
+    use_system_font = False
+[layouts]
+  [[default]]
+    [[[child1]]]
+      parent = window0
+      type = Terminal
+    [[[window0]]]
+      parent = ""
+      type = Window
+[plugins]
diff --git a/configs/shared/.config/terminator/plugins/terminator-themes.py b/configs/shared/.config/terminator/plugins/terminator-themes.py
new file mode 100644
index 0000000000..fa807c65bd
--- /dev/null
+++ b/configs/shared/.config/terminator/plugins/terminator-themes.py
@@ -0,0 +1,250 @@
+import requests
+import terminatorlib.plugin as plugin
+from gi.repository import Gtk
+from terminatorlib.config import ConfigBase
+from terminatorlib.translation import _
+from terminatorlib.util import get_config_dir, err, dbg, gerr
+
+AVAILABLE = ['TerminatorThemes']
+
+class TerminatorThemes(plugin.Plugin):
+
+    capabilities = ['terminal_menu']
+    config_base = ConfigBase()
+    base_url = 'https://api.github.com/repos/EliverLara/terminator-themes/contents/themes.json'
+    inherits_config_from = "default"
+
+    def callback(self, menuitems, menu, terminal):
+        """Add our item to the menu"""
+        self.terminal = terminal
+        item = Gtk.ImageMenuItem(Gtk.STOCK_FIND)
+        item.connect('activate',self.configure)
+        item.set_label("Themes")
+        item.set_sensitive(True)
+        menuitems.append(item)
+
+    def configure(self, widget, data = None):
+        ui = {}
+        dbox = Gtk.Dialog( _("Terminator themes"), None, Gtk.DialogFlags.MODAL)
+        
+        headers = { "Accept": "application/vnd.github.v3.raw" }
+        response = requests.get(self.base_url, headers=headers)
+
+        if response.status_code != 200:
+            gerr(_("Failed to get list of available themes"))
+            return
+        
+        self.themes_from_repo = response.json()["themes"]
+        self.profiles = self.terminal.config.list_profiles()
+
+        main_container = Gtk.HBox(spacing=5)
+        main_container.pack_start(self._create_themes_grid(ui), True, True, 0)
+        main_container.pack_start(self._create_settings_grid(ui), True, True, 0)
+        dbox.vbox.pack_start(main_container, True, True, 0)
+        
+        self.dbox = dbox
+        dbox.show_all()
+        res = dbox.run()
+
+        if res == Gtk.ResponseType.ACCEPT:
+            self.terminal.config.save()
+
+        del(self.dbox)
+        dbox.destroy()
+
+        return
+
+    def _create_themes_grid(self, ui):
+        grid = Gtk.Grid()
+        grid.set_column_spacing(5)
+        grid.set_row_spacing(7)
+        grid.set_column_homogeneous(True)
+        grid.set_row_homogeneous(True)
+
+        scroll_window = self._create_themes_list(ui)
+
+        #creating buttons to filter by theme type, and setting up their events
+        buttons = list()
+        for theme_type in ["light", "dark", "None"]:
+            button = Gtk.Button(theme_type)
+            buttons.append(button)
+            button.connect("clicked", self.on_filter_button_clicked)
+
+        grid.attach(scroll_window, 0, 0, 4, 10)
+        grid.attach_next_to(buttons[0], scroll_window, Gtk.PositionType.BOTTOM, 1, 1)
+
+        for i, button in enumerate(buttons[1:]):
+            grid.attach_next_to(button, buttons[i], Gtk.PositionType.RIGHT, 1, 1)
+
+        return grid
+
+    def _create_themes_list(self, ui):
+
+        profiles_list_model = Gtk.ListStore(str, str,bool, object)
+        # Set add/remove buttons availability
+        for theme in self.themes_from_repo:
+            if theme["name"] in self.profiles:
+                profiles_list_model.append([theme["name"], theme["type"],False, theme])
+            else:
+                profiles_list_model.append([theme["name"], theme["type"],True, theme])
+
+        self.current_filter_theme = None
+        self.theme_filter = profiles_list_model.filter_new()
+        self.theme_filter.set_visible_func(self.theme_filter_func)
+        
+        treeview = Gtk.TreeView.new_with_model(self.theme_filter)
+
+        selection = treeview.get_selection()
+        selection.set_mode(Gtk.SelectionMode.SINGLE)
+        selection.connect("changed", self.on_selection_changed, ui)
+        ui['treeview'] = treeview
+
+        for i, column_title in enumerate(["Theme", "Type"]):
+            renderer = Gtk.CellRendererText()
+            column = Gtk.TreeViewColumn(column_title, renderer, text=i)
+            treeview.append_column(column)
+
+        scroll_window = Gtk.ScrolledWindow()
+        scroll_window.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
+        scroll_window.add(treeview)
+
+        return scroll_window
+
+
+    def _create_settings_grid(self, ui):
+        grid = Gtk.Grid()
+        grid.set_column_spacing(5)
+        grid.set_row_spacing(7)
+        grid.attach(self._create_default_inherits_check(ui), 0, 0, 2, 1)
+        grid.attach(Gtk.Label("Available profiles: "), 0, 1, 1, 1)
+        grid.attach(self._create_inherits_from_combo(ui), 1, 1, 1, 1)
+        grid.attach(self._create_main_action_button(ui, "install", self.on_install), 0, 4, 1, 1)
+        grid.attach(self._create_main_action_button(ui, "remove", self.on_uninstall), 1, 4, 1, 1)
+
+        return grid
+
+    def _create_default_inherits_check(self, ui):
+        check = Gtk.CheckButton("Inherit preferences from default profile")
+        check.set_active(True)
+        check.connect("toggled", self.on_inheritsfromdefaultcheck_toggled, ui)
+        ui['check_inherits_from_default'] = check
+        
+        return check
+
+    def _create_inherits_from_combo(self, ui):
+        combo = Gtk.ComboBoxText()
+        combo.set_entry_text_column(0)
+        combo.set_sensitive(False)
+        combo.connect("changed", self.on_inheritsfromcombo_changed, ui)
+        ui['inherits_from_combo'] = combo
+
+        for profile in self.profiles:
+            combo.append_text(profile)
+
+        combo.set_active(self.profiles.index(self.terminal.config.get_profile()))
+
+        return combo
+    
+    def _create_main_action_button(self, ui, label, action):
+        btn = Gtk.Button(_(label.capitalize()))
+        btn.connect("clicked", action, ui) 
+        btn.set_sensitive(False)
+        ui['button_' + label] = btn
+
+        return btn
+
+    def theme_filter_func(self, model, iter, data):
+        """Tests if the theme in the row is the one in the filter"""
+        if self.current_filter_theme is None or self.current_filter_theme == "None":
+            return True
+        else:
+            return model[iter][1] == self.current_filter_theme
+
+    def on_filter_button_clicked(self, widget):
+        """Called on any of the button clicks"""
+        #we set the current theme filter to the button's label
+        self.current_filter_theme = widget.get_label()
+
+        #we update the filter, which updates in turn the view
+        self.theme_filter.refilter()
+
+
+    def  on_inheritsfromdefaultcheck_toggled(self, check, data=None):
+        if check.get_active() is not True:
+            data["inherits_from_combo"].set_sensitive(True)
+            self.inherits_config_from = self.profiles[data['inherits_from_combo'].get_active()]
+        else:
+            data["inherits_from_combo"].set_sensitive(False)
+            self.inherits_config_from = 'default'
+        
+    def  on_inheritsfromcombo_changed(self, combo, data):
+        if combo.get_sensitive():    
+            self.inherits_config_from = self.profiles[combo.get_active()]
+        else:
+            self.inherits_config_from = 'default'
+
+    def on_selection_changed(self, selection, data=None):
+        (model, iter) = selection.get_selected()
+        data['button_install'].set_sensitive(model[iter][2])
+        data['button_remove'].set_sensitive(model[iter][2] is not True)
+
+    def on_uninstall(self, button, data):
+        treeview = data['treeview']
+        selection = treeview.get_selection()
+        (store, iter) = selection.get_selected()
+        target = store[iter][0]
+
+        # If selected theme is active, sets terminal profile to default before unistalling
+        if self.terminal.get_profile() == target:
+            widget = self.terminal.get_vte()
+            self.terminal.force_set_profile(widget, 'default')
+
+        self.terminal.config.del_profile(target)
+        self.terminal.config.save()
+        self.update_comboInheritsFrom(data)
+
+        #'Add' button available again
+        data['treeview'].get_model().set_value(iter, 2, True)
+        self.on_selection_changed(selection, data)
+
+    def on_install(self, button, data):
+        treeview = data['treeview']
+        selection = treeview.get_selection()
+        (store, iter) = selection.get_selected()
+        target = store[iter][3]
+        widget = self.terminal.get_vte()
+        treeview.set_enable_tree_lines(False)
+        
+        if not iter:
+            return
+
+        self.terminal.config.add_profile(target["name"]) 
+        template_data = self.config_base.profiles[self.inherits_config_from].copy()
+
+        for k, v in target.items():
+            if k != 'background_image' and k != 'name' and k != 'type':
+                if k == 'background_darkness':
+                    template_data[k] = float(v)
+                else:
+                    template_data[k] = v
+
+        for k, v in template_data.items():
+            self.config_base.set_item(k, v, target["name"])
+                 
+        self.terminal.force_set_profile(widget, target["name"])
+        self.terminal.config.save()
+        self.update_comboInheritsFrom(data)
+
+        # "Remove" button available again
+        data['treeview'].get_model().set_value(iter, 2, False)
+        self.on_selection_changed(selection, data)
+        treeview.set_enable_tree_lines(True)
+
+    def update_comboInheritsFrom(self, data):
+        data['inherits_from_combo'].remove_all()
+        profiles = self.terminal.config.list_profiles()
+        self.profiles = profiles
+        for profile in profiles:
+            data['inherits_from_combo'].append_text(profile)
+
+        data['inherits_from_combo'].set_active(profiles.index(self.terminal.config.get_profile()))
\ No newline at end of file
diff --git a/configs/shared/.docker/.buildNodeID b/configs/shared/.docker/.buildNodeID
new file mode 100644
index 0000000000..82756fe024
--- /dev/null
+++ b/configs/shared/.docker/.buildNodeID
@@ -0,0 +1 @@
+fba49875b86b20c987649381fe9160d51df53e6836665499ded0e9fb90709e85
\ No newline at end of file
diff --git a/configs/shared/misc/.docker/config.json b/configs/shared/.docker/config.json
index 6e6b747acf..6e6b747acf 100644
--- a/configs/shared/misc/.docker/config.json
+++ b/configs/shared/.docker/config.json
diff --git a/configs/shared/.emacs.d/flycheck_init (wpcarro2's conflicted copy 2019-11-18).el b/configs/shared/.emacs.d/flycheck_init (wpcarro2's conflicted copy 2019-11-18).el
new file mode 100644
index 0000000000..a59b03e425
--- /dev/null
+++ b/configs/shared/.emacs.d/flycheck_init (wpcarro2's conflicted copy 2019-11-18).el
@@ -0,0 +1,51 @@
+(require 'wpc-package "~/.emacs.d/wpc/packages/wpc-package.el")
+
+;; load order is intentional
+(require 'constants)
+(require 'wpc-misc)
+
+;; my libraries
+(require 'functions)
+(require 'prelude)
+(require 'macros)
+(require 'kaomoji)
+
+;; Google
+(require 'google-tooling)
+;; TODO: How should I handle google-stuff.el?
+
+;; TODO: Debug why wallpaper is changing randomly.  It seems to happen every 5
+;; seconds when init.el is open...
+
+;; Laptop XF-functionality
+(require 'pulse-audio)
+(require 'screen-brightness)
+
+;; miscellaneous
+(require 'clipboard)
+(require 'battery)
+(require 'dotfiles)
+(require 'bookmark)
+(require 'keyboard)
+
+(require 'wpc-keybindings)
+(require 'window-manager)
+(require 'wpc-ui)
+(require 'wpc-dired)
+(require 'wpc-terminal)
+(require 'wpc-org)
+(require 'wpc-company)
+(require 'wpc-flycheck)
+(require 'wpc-shell)
+(require 'wpc-docker)
+(require 'wpc-lisp)
+(require 'wpc-haskell)
+(require 'wpc-reasonml)
+(require 'wpc-ocaml)
+(require 'wpc-elixir)
+(require 'wpc-nix)
+(require 'wpc-rust)
+(require 'wpc-clojure)
+(require 'wpc-python)
+(require 'wpc-javascript)
+(require 'wpc-java)
diff --git a/configs/shared/.emacs.d/init.el b/configs/shared/.emacs.d/init.el
new file mode 100644
index 0000000000..a59b03e425
--- /dev/null
+++ b/configs/shared/.emacs.d/init.el
@@ -0,0 +1,51 @@
+(require 'wpc-package "~/.emacs.d/wpc/packages/wpc-package.el")
+
+;; load order is intentional
+(require 'constants)
+(require 'wpc-misc)
+
+;; my libraries
+(require 'functions)
+(require 'prelude)
+(require 'macros)
+(require 'kaomoji)
+
+;; Google
+(require 'google-tooling)
+;; TODO: How should I handle google-stuff.el?
+
+;; TODO: Debug why wallpaper is changing randomly.  It seems to happen every 5
+;; seconds when init.el is open...
+
+;; Laptop XF-functionality
+(require 'pulse-audio)
+(require 'screen-brightness)
+
+;; miscellaneous
+(require 'clipboard)
+(require 'battery)
+(require 'dotfiles)
+(require 'bookmark)
+(require 'keyboard)
+
+(require 'wpc-keybindings)
+(require 'window-manager)
+(require 'wpc-ui)
+(require 'wpc-dired)
+(require 'wpc-terminal)
+(require 'wpc-org)
+(require 'wpc-company)
+(require 'wpc-flycheck)
+(require 'wpc-shell)
+(require 'wpc-docker)
+(require 'wpc-lisp)
+(require 'wpc-haskell)
+(require 'wpc-reasonml)
+(require 'wpc-ocaml)
+(require 'wpc-elixir)
+(require 'wpc-nix)
+(require 'wpc-rust)
+(require 'wpc-clojure)
+(require 'wpc-python)
+(require 'wpc-javascript)
+(require 'wpc-java)
diff --git a/configs/shared/.emacs.d/opam-user-setup.el b/configs/shared/.emacs.d/opam-user-setup.el
new file mode 100644
index 0000000000..3c7af326a8
--- /dev/null
+++ b/configs/shared/.emacs.d/opam-user-setup.el
@@ -0,0 +1,145 @@
+;; ## added by OPAM user-setup for emacs / base ## cfd3c9b7837c85cffd0c59de521990f0 ## you can edit, but keep this line
+(provide 'opam-user-setup)
+
+;; Base configuration for OPAM
+
+(defun opam-shell-command-to-string (command)
+  "Similar to shell-command-to-string, but returns nil unless the process
+  returned 0, and ignores stderr (shell-command-to-string ignores return value)"
+  (let* ((return-value 0)
+         (return-string
+          (with-output-to-string
+            (setq return-value
+                  (with-current-buffer standard-output
+                    (process-file shell-file-name nil '(t nil) nil
+                                  shell-command-switch command))))))
+    (if (= return-value 0) return-string nil)))
+
+(defun opam-update-env (switch)
+  "Update the environment to follow current OPAM switch configuration"
+  (interactive
+   (list
+    (let ((default
+            (car (split-string (opam-shell-command-to-string "opam switch show --safe")))))
+      (completing-read
+       (concat "opam switch (" default "): ")
+       (split-string (opam-shell-command-to-string "opam switch list -s --safe") "\n")
+       nil t nil nil default))))
+  (let* ((switch-arg (if (= 0 (length switch)) "" (concat "--switch " switch)))
+         (command (concat "opam config env --safe --sexp " switch-arg))
+         (env (opam-shell-command-to-string command)))
+    (when (and env (not (string= env "")))
+      (dolist (var (car (read-from-string env)))
+        (setenv (car var) (cadr var))
+        (when (string= (car var) "PATH")
+          (setq exec-path (split-string (cadr var) path-separator)))))))
+
+(opam-update-env nil)
+
+(defvar opam-share
+  (let ((reply (opam-shell-command-to-string "opam config var share --safe")))
+    (when reply (substring reply 0 -1))))
+
+(add-to-list 'load-path (concat opam-share "/emacs/site-lisp"))
+;; OPAM-installed tools automated detection and initialisation
+
+(defun opam-setup-tuareg ()
+  (add-to-list 'load-path (concat opam-share "/tuareg") t)
+  (load "tuareg-site-file"))
+
+(defun opam-setup-add-ocaml-hook (h)
+  (add-hook 'tuareg-mode-hook h t)
+  (add-hook 'caml-mode-hook h t))
+
+(defun opam-setup-complete ()
+  (if (require 'company nil t)
+    (opam-setup-add-ocaml-hook
+      (lambda ()
+         (company-mode)
+         (defalias 'auto-complete 'company-complete)))
+    (require 'auto-complete nil t)))
+
+(defun opam-setup-ocp-indent ()
+  (opam-setup-complete)
+  (autoload 'ocp-setup-indent "ocp-indent" "Improved indentation for Tuareg mode")
+  (autoload 'ocp-indent-caml-mode-setup "ocp-indent" "Improved indentation for Caml mode")
+  (add-hook 'tuareg-mode-hook 'ocp-setup-indent t)
+  (add-hook 'caml-mode-hook 'ocp-indent-caml-mode-setup  t))
+
+(defun opam-setup-ocp-index ()
+  (autoload 'ocp-index-mode "ocp-index" "OCaml code browsing, documentation and completion based on build artefacts")
+  (opam-setup-add-ocaml-hook 'ocp-index-mode))
+
+(defun opam-setup-merlin ()
+  (opam-setup-complete)
+  (require 'merlin)
+  (opam-setup-add-ocaml-hook 'merlin-mode)
+
+  (defcustom ocp-index-use-auto-complete nil
+    "Use auto-complete with ocp-index (disabled by default by opam-user-setup because merlin is in use)"
+    :group 'ocp_index)
+  (defcustom merlin-ac-setup 'easy
+    "Use auto-complete with merlin (enabled by default by opam-user-setup)"
+    :group 'merlin-ac)
+
+  ;; So you can do it on a mac, where `C-<up>` and `C-<down>` are used
+  ;; by spaces.
+  (define-key merlin-mode-map
+    (kbd "C-c <up>") 'merlin-type-enclosing-go-up)
+  (define-key merlin-mode-map
+    (kbd "C-c <down>") 'merlin-type-enclosing-go-down)
+  (set-face-background 'merlin-type-face "skyblue"))
+
+(defun opam-setup-utop ()
+  (autoload 'utop "utop" "Toplevel for OCaml" t)
+  (autoload 'utop-minor-mode "utop" "Minor mode for utop" t)
+  (add-hook 'tuareg-mode-hook 'utop-minor-mode))
+
+(defvar opam-tools
+  '(("tuareg" . opam-setup-tuareg)
+    ("ocp-indent" . opam-setup-ocp-indent)
+    ("ocp-index" . opam-setup-ocp-index)
+    ("merlin" . opam-setup-merlin)
+    ("utop" . opam-setup-utop)))
+
+(defun opam-detect-installed-tools ()
+  (let*
+      ((command "opam list --installed --short --safe --color=never")
+       (names (mapcar 'car opam-tools))
+       (command-string (mapconcat 'identity (cons command names) " "))
+       (reply (opam-shell-command-to-string command-string)))
+    (when reply (split-string reply))))
+
+(defvar opam-tools-installed (opam-detect-installed-tools))
+
+(defun opam-auto-tools-setup ()
+  (interactive)
+  (dolist (tool opam-tools)
+    (when (member (car tool) opam-tools-installed)
+     (funcall (symbol-function (cdr tool))))))
+
+(opam-auto-tools-setup)
+;; ## end of OPAM user-setup addition for emacs / base ## keep this line
+;; ## added by OPAM user-setup for emacs / tuareg ## 02c044af5abd4321e32578768beeca77 ## you can edit, but keep this line
+;; Set to autoload tuareg from its original switch when not found in current
+;; switch (don't load tuareg-site-file as it adds unwanted load-paths)
+(defun opam-tuareg-autoload (fct file doc args)
+  (let ((load-path (cons "/usr/local/google/home/wpcarro/.opam/4.08.0/share/emacs/site-lisp" load-path)))
+    (load file))
+  (apply fct args))
+(when (not (member "tuareg" opam-tools-installed))
+  (defun tuareg-mode (&rest args)
+    (opam-tuareg-autoload 'tuareg-mode "tuareg" "Major mode for editing OCaml code" args))
+  (defun tuareg-run-ocaml (&rest args)
+    (opam-tuareg-autoload 'tuareg-run-ocaml "tuareg" "Run an OCaml toplevel process" args))
+  (defun ocamldebug (&rest args)
+    (opam-tuareg-autoload 'ocamldebug "ocamldebug" "Run the OCaml debugger" args))
+  (defalias 'run-ocaml 'tuareg-run-ocaml)
+  (defalias 'camldebug 'ocamldebug)
+  (add-to-list 'auto-mode-alist '("\\.ml[iylp]?\\'" . tuareg-mode))
+  (add-to-list 'auto-mode-alist '("\\.eliomi?\\'" . tuareg-mode))
+  (add-to-list 'interpreter-mode-alist '("ocamlrun" . tuareg-mode))
+  (add-to-list 'interpreter-mode-alist '("ocaml" . tuareg-mode))
+  (dolist (ext '(".cmo" ".cmx" ".cma" ".cmxa" ".cmxs" ".cmt" ".cmti" ".cmi" ".annot"))
+    (add-to-list 'completion-ignored-extensions ext)))
+;; ## end of OPAM user-setup addition for emacs / tuareg ## keep this line
diff --git a/configs/shared/.emacs.d/projectile-bookmarks (wpcarro2's conflicted copy 2019-11-17).eld b/configs/shared/.emacs.d/projectile-bookmarks (wpcarro2's conflicted copy 2019-11-17).eld
new file mode 100644
index 0000000000..447dfd86ef
--- /dev/null
+++ b/configs/shared/.emacs.d/projectile-bookmarks (wpcarro2's conflicted copy 2019-11-17).eld
@@ -0,0 +1 @@
+("~/Dropbox/programming/data_structures_and_algorithms/" "~/Dropbox/dotfiles/" "~/Dropbox/ide/" "~/Dropbox/programming/tazjins-dotfiles/" "~/Dropbox/programming/tablecloth/" "~/Dropbox/programming/ngs/" "~/Dropbox/programming/" "~/.tmux/plugins/tmux-onedark-theme/" "~/Dropbox/programming/lispyville/" "~/Dropbox/programming/i3-quickterm/" "~/Dropbox/programming/db_cli/" "~/Dropbox/programming/clipmenu/" "~/Dropbox/ide-server/" "~/Dropbox/st/" "~/Dropbox/dwm/" "~/Dropbox/ide-server-stack/" "~/Dropbox/programming/programming/powerlisp/" "~/Dropbox/programming/nixery/" "/google/src/cloud/wpcarro/ac-skeleton/")
\ No newline at end of file
diff --git a/configs/shared/.emacs.d/projectile-bookmarks (wpcarro2's conflicted copy 2019-12-06).eld b/configs/shared/.emacs.d/projectile-bookmarks (wpcarro2's conflicted copy 2019-12-06).eld
new file mode 100644
index 0000000000..bebf64bf5c
--- /dev/null
+++ b/configs/shared/.emacs.d/projectile-bookmarks (wpcarro2's conflicted copy 2019-12-06).eld
@@ -0,0 +1 @@
+("~/Dropbox/dotfiles/" "~/Dropbox/programming/data_structures_and_algorithms/" "~/Dropbox/ide/" "~/Dropbox/programming/tazjins-dotfiles/" "~/Dropbox/programming/tablecloth/" "~/Dropbox/programming/ngs/" "~/Dropbox/programming/" "~/.tmux/plugins/tmux-onedark-theme/" "~/Dropbox/programming/lispyville/" "~/Dropbox/programming/i3-quickterm/" "~/Dropbox/programming/db_cli/" "~/Dropbox/programming/clipmenu/" "~/Dropbox/ide-server/" "~/Dropbox/st/" "~/Dropbox/dwm/" "~/Dropbox/ide-server-stack/" "~/Dropbox/programming/programming/powerlisp/" "~/Dropbox/programming/nixery/")
\ No newline at end of file
diff --git a/configs/shared/.emacs.d/snippets/c-mode/.yas-parents b/configs/shared/.emacs.d/snippets/c-mode/.yas-parents
new file mode 100644
index 0000000000..d58dacb7a0
--- /dev/null
+++ b/configs/shared/.emacs.d/snippets/c-mode/.yas-parents
@@ -0,0 +1 @@
+text-mode
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/c-mode/stdio b/configs/shared/.emacs.d/snippets/c-mode/stdio
index 52bc717e47..52bc717e47 100644
--- a/configs/shared/emacs/.emacs.d/snippets/c-mode/stdio
+++ b/configs/shared/.emacs.d/snippets/c-mode/stdio
diff --git a/configs/shared/emacs/.emacs.d/snippets/c-mode/stdlib b/configs/shared/.emacs.d/snippets/c-mode/stdlib
index 5d44e8ed79..5d44e8ed79 100644
--- a/configs/shared/emacs/.emacs.d/snippets/c-mode/stdlib
+++ b/configs/shared/.emacs.d/snippets/c-mode/stdlib
diff --git a/configs/shared/emacs/.emacs.d/snippets/c-mode/struct b/configs/shared/.emacs.d/snippets/c-mode/struct
index 6e9282f83c..6e9282f83c 100644
--- a/configs/shared/emacs/.emacs.d/snippets/c-mode/struct
+++ b/configs/shared/.emacs.d/snippets/c-mode/struct
diff --git a/configs/shared/.emacs.d/snippets/emacs-lisp-mode/.yas-parents b/configs/shared/.emacs.d/snippets/emacs-lisp-mode/.yas-parents
new file mode 100644
index 0000000000..d58dacb7a0
--- /dev/null
+++ b/configs/shared/.emacs.d/snippets/emacs-lisp-mode/.yas-parents
@@ -0,0 +1 @@
+text-mode
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/emacs-lisp-mode/elisp-module-docs b/configs/shared/.emacs.d/snippets/emacs-lisp-mode/elisp-module-docs
index 8ea7b8f077..8ea7b8f077 100644
--- a/configs/shared/emacs/.emacs.d/snippets/emacs-lisp-mode/elisp-module-docs
+++ b/configs/shared/.emacs.d/snippets/emacs-lisp-mode/elisp-module-docs
diff --git a/configs/shared/.emacs.d/snippets/emacs-lisp-mode/function b/configs/shared/.emacs.d/snippets/emacs-lisp-mode/function
new file mode 100644
index 0000000000..bfa888d526
--- /dev/null
+++ b/configs/shared/.emacs.d/snippets/emacs-lisp-mode/function
@@ -0,0 +1,8 @@
+# -*- mode: snippet -*-
+# name: Function
+# key: fn
+# expand-env: ((yas-indent-line 'fixed))
+# --
+(defun $1 ($2)
+  "$3"
+  $4)
\ No newline at end of file
diff --git a/configs/shared/.emacs.d/snippets/emacs-lisp-mode/generic-header b/configs/shared/.emacs.d/snippets/emacs-lisp-mode/generic-header
new file mode 100644
index 0000000000..bf6e525f8c
--- /dev/null
+++ b/configs/shared/.emacs.d/snippets/emacs-lisp-mode/generic-header
@@ -0,0 +1,7 @@
+# -*- mode: snippet -*-
+# name: Header
+# key: hdr
+# --
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; $1
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
diff --git a/configs/shared/.emacs.d/snippets/emacs-lisp-mode/library-header b/configs/shared/.emacs.d/snippets/emacs-lisp-mode/library-header
new file mode 100644
index 0000000000..0f0ad5c4fc
--- /dev/null
+++ b/configs/shared/.emacs.d/snippets/emacs-lisp-mode/library-header
@@ -0,0 +1,7 @@
+# -*- mode: snippet -*-
+# name: Library header
+# key: lib
+# --
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Library
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/emacs-lisp-mode/provide-footer b/configs/shared/.emacs.d/snippets/emacs-lisp-mode/provide-footer
index 2a0bcc33f7..2a0bcc33f7 100644
--- a/configs/shared/emacs/.emacs.d/snippets/emacs-lisp-mode/provide-footer
+++ b/configs/shared/.emacs.d/snippets/emacs-lisp-mode/provide-footer
diff --git a/configs/shared/.emacs.d/snippets/haskell-mode/.yas-parents b/configs/shared/.emacs.d/snippets/haskell-mode/.yas-parents
new file mode 100644
index 0000000000..d58dacb7a0
--- /dev/null
+++ b/configs/shared/.emacs.d/snippets/haskell-mode/.yas-parents
@@ -0,0 +1 @@
+text-mode
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/haskell-mode/derive-safe-copy b/configs/shared/.emacs.d/snippets/haskell-mode/derive-safe-copy
index 95f7d9deec..95f7d9deec 100644
--- a/configs/shared/emacs/.emacs.d/snippets/haskell-mode/derive-safe-copy
+++ b/configs/shared/.emacs.d/snippets/haskell-mode/derive-safe-copy
diff --git a/configs/shared/emacs/.emacs.d/snippets/haskell-mode/import-qualified b/configs/shared/.emacs.d/snippets/haskell-mode/import-qualified
index 4c4db62a8a..4c4db62a8a 100644
--- a/configs/shared/emacs/.emacs.d/snippets/haskell-mode/import-qualified
+++ b/configs/shared/.emacs.d/snippets/haskell-mode/import-qualified
diff --git a/configs/shared/emacs/.emacs.d/snippets/haskell-mode/instance-defn b/configs/shared/.emacs.d/snippets/haskell-mode/instance-defn
index 10d194ce41..10d194ce41 100644
--- a/configs/shared/emacs/.emacs.d/snippets/haskell-mode/instance-defn
+++ b/configs/shared/.emacs.d/snippets/haskell-mode/instance-defn
diff --git a/configs/shared/emacs/.emacs.d/snippets/haskell-mode/language-extension b/configs/shared/.emacs.d/snippets/haskell-mode/language-extension
index 9d6084acb4..9d6084acb4 100644
--- a/configs/shared/emacs/.emacs.d/snippets/haskell-mode/language-extension
+++ b/configs/shared/.emacs.d/snippets/haskell-mode/language-extension
diff --git a/configs/shared/emacs/.emacs.d/snippets/haskell-mode/separator b/configs/shared/.emacs.d/snippets/haskell-mode/separator
index 1ab0d762b6..1ab0d762b6 100644
--- a/configs/shared/emacs/.emacs.d/snippets/haskell-mode/separator
+++ b/configs/shared/.emacs.d/snippets/haskell-mode/separator
diff --git a/configs/shared/emacs/.emacs.d/snippets/haskell-mode/undefined b/configs/shared/.emacs.d/snippets/haskell-mode/undefined
index 7609f801f2..7609f801f2 100644
--- a/configs/shared/emacs/.emacs.d/snippets/haskell-mode/undefined
+++ b/configs/shared/.emacs.d/snippets/haskell-mode/undefined
diff --git a/configs/shared/.emacs.d/snippets/html-mode/.yas-parents b/configs/shared/.emacs.d/snippets/html-mode/.yas-parents
new file mode 100644
index 0000000000..d58dacb7a0
--- /dev/null
+++ b/configs/shared/.emacs.d/snippets/html-mode/.yas-parents
@@ -0,0 +1 @@
+text-mode
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/html-mode/index-boilerplate b/configs/shared/.emacs.d/snippets/html-mode/index-boilerplate
index 3cea6ce003..3cea6ce003 100644
--- a/configs/shared/emacs/.emacs.d/snippets/html-mode/index-boilerplate
+++ b/configs/shared/.emacs.d/snippets/html-mode/index-boilerplate
diff --git a/configs/shared/.emacs.d/snippets/java-mode/.yas-parents b/configs/shared/.emacs.d/snippets/java-mode/.yas-parents
new file mode 100644
index 0000000000..d58dacb7a0
--- /dev/null
+++ b/configs/shared/.emacs.d/snippets/java-mode/.yas-parents
@@ -0,0 +1 @@
+text-mode
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/java-mode/public-static-void-main b/configs/shared/.emacs.d/snippets/java-mode/public-static-void-main
index 1839a27eb5..1839a27eb5 100644
--- a/configs/shared/emacs/.emacs.d/snippets/java-mode/public-static-void-main
+++ b/configs/shared/.emacs.d/snippets/java-mode/public-static-void-main
diff --git a/configs/shared/.emacs.d/snippets/nix-mode/.yas-parents b/configs/shared/.emacs.d/snippets/nix-mode/.yas-parents
new file mode 100644
index 0000000000..d58dacb7a0
--- /dev/null
+++ b/configs/shared/.emacs.d/snippets/nix-mode/.yas-parents
@@ -0,0 +1 @@
+text-mode
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/nix-mode/shell-nix b/configs/shared/.emacs.d/snippets/nix-mode/shell-nix
index 4c308bb51b..4c308bb51b 100644
--- a/configs/shared/emacs/.emacs.d/snippets/nix-mode/shell-nix
+++ b/configs/shared/.emacs.d/snippets/nix-mode/shell-nix
diff --git a/configs/shared/.emacs.d/snippets/org-mode/.yas-parents b/configs/shared/.emacs.d/snippets/org-mode/.yas-parents
new file mode 100644
index 0000000000..d58dacb7a0
--- /dev/null
+++ b/configs/shared/.emacs.d/snippets/org-mode/.yas-parents
@@ -0,0 +1 @@
+text-mode
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/org-mode/code-snippet b/configs/shared/.emacs.d/snippets/org-mode/code-snippet
index 4215b15992..4215b15992 100644
--- a/configs/shared/emacs/.emacs.d/snippets/org-mode/code-snippet
+++ b/configs/shared/.emacs.d/snippets/org-mode/code-snippet
diff --git a/configs/shared/emacs/.emacs.d/snippets/org-mode/href b/configs/shared/.emacs.d/snippets/org-mode/href
index ac65ea2e49..ac65ea2e49 100644
--- a/configs/shared/emacs/.emacs.d/snippets/org-mode/href
+++ b/configs/shared/.emacs.d/snippets/org-mode/href
diff --git a/configs/shared/.emacs.d/snippets/python-mode/.yas-parents b/configs/shared/.emacs.d/snippets/python-mode/.yas-parents
new file mode 100644
index 0000000000..d58dacb7a0
--- /dev/null
+++ b/configs/shared/.emacs.d/snippets/python-mode/.yas-parents
@@ -0,0 +1 @@
+text-mode
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/python-mode/dunder-main b/configs/shared/.emacs.d/snippets/python-mode/dunder-main
index 4dd22dc0b2..4dd22dc0b2 100644
--- a/configs/shared/emacs/.emacs.d/snippets/python-mode/dunder-main
+++ b/configs/shared/.emacs.d/snippets/python-mode/dunder-main
diff --git a/configs/shared/.emacs.d/snippets/python-mode/header b/configs/shared/.emacs.d/snippets/python-mode/header
new file mode 100644
index 0000000000..db48adfec7
--- /dev/null
+++ b/configs/shared/.emacs.d/snippets/python-mode/header
@@ -0,0 +1,7 @@
+# -*- mode: snippet -*-
+# name: Header
+# key: hdr
+# --
+################################################################################
+# $1
+################################################################################
\ No newline at end of file
diff --git a/configs/shared/.emacs.d/snippets/python-mode/init b/configs/shared/.emacs.d/snippets/python-mode/init
new file mode 100644
index 0000000000..5c407495f5
--- /dev/null
+++ b/configs/shared/.emacs.d/snippets/python-mode/init
@@ -0,0 +1,6 @@
+# -*- mode: snippet -*-
+# name: dunder init
+# key: ctor
+# --
+def __init__(self$1):
+    $2
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/python-mode/shebang b/configs/shared/.emacs.d/snippets/python-mode/shebang
index 0f45ae782d..0f45ae782d 100644
--- a/configs/shared/emacs/.emacs.d/snippets/python-mode/shebang
+++ b/configs/shared/.emacs.d/snippets/python-mode/shebang
diff --git a/configs/shared/emacs/.emacs.d/snippets/python-mode/utf-8 b/configs/shared/.emacs.d/snippets/python-mode/utf-8
index 3babc73030..3babc73030 100644
--- a/configs/shared/emacs/.emacs.d/snippets/python-mode/utf-8
+++ b/configs/shared/.emacs.d/snippets/python-mode/utf-8
diff --git a/configs/shared/.emacs.d/snippets/racket-mode/.yas-parents b/configs/shared/.emacs.d/snippets/racket-mode/.yas-parents
new file mode 100644
index 0000000000..d58dacb7a0
--- /dev/null
+++ b/configs/shared/.emacs.d/snippets/racket-mode/.yas-parents
@@ -0,0 +1 @@
+text-mode
\ No newline at end of file
diff --git a/configs/shared/.emacs.d/snippets/racket-mode/function b/configs/shared/.emacs.d/snippets/racket-mode/function
new file mode 100644
index 0000000000..882c48ded3
--- /dev/null
+++ b/configs/shared/.emacs.d/snippets/racket-mode/function
@@ -0,0 +1,5 @@
+# -*- mode: snippet -*-
+# name: Function
+# key: fn
+# --
+(define ($1) $2)
\ No newline at end of file
diff --git a/configs/shared/.emacs.d/snippets/racket-mode/lambda b/configs/shared/.emacs.d/snippets/racket-mode/lambda
new file mode 100644
index 0000000000..b9a684588b
--- /dev/null
+++ b/configs/shared/.emacs.d/snippets/racket-mode/lambda
@@ -0,0 +1,5 @@
+# -*- mode: snippet -*-
+# name: Lambda function
+# key: ld
+# --
+(λ ($1) $2)
\ No newline at end of file
diff --git a/configs/shared/.emacs.d/snippets/racket-mode/lambda-symbol b/configs/shared/.emacs.d/snippets/racket-mode/lambda-symbol
new file mode 100644
index 0000000000..254b9fd96b
--- /dev/null
+++ b/configs/shared/.emacs.d/snippets/racket-mode/lambda-symbol
@@ -0,0 +1,5 @@
+# -*- mode: snippet -*-
+# name: Lambda symbol
+# key: l
+# --
+λ
\ No newline at end of file
diff --git a/configs/shared/.emacs.d/snippets/reason-mode/.yas-parents b/configs/shared/.emacs.d/snippets/reason-mode/.yas-parents
new file mode 100644
index 0000000000..d58dacb7a0
--- /dev/null
+++ b/configs/shared/.emacs.d/snippets/reason-mode/.yas-parents
@@ -0,0 +1 @@
+text-mode
\ No newline at end of file
diff --git a/configs/shared/.emacs.d/snippets/reason-mode/function b/configs/shared/.emacs.d/snippets/reason-mode/function
new file mode 100644
index 0000000000..6b4b6a5db2
--- /dev/null
+++ b/configs/shared/.emacs.d/snippets/reason-mode/function
@@ -0,0 +1,7 @@
+# -*- mode: snippet -*-
+# name: Function
+# key: fn
+# --
+let $1 = (~$2:$3) => {
+  $4
+};
\ No newline at end of file
diff --git a/configs/shared/.emacs.d/snippets/reason-mode/switch b/configs/shared/.emacs.d/snippets/reason-mode/switch
new file mode 100644
index 0000000000..40f34ff8d1
--- /dev/null
+++ b/configs/shared/.emacs.d/snippets/reason-mode/switch
@@ -0,0 +1,7 @@
+# -*- mode: snippet -*-
+# name: Switch statement
+# key: sw
+# --
+switch ($1) {
+| $2 =>
+}
\ No newline at end of file
diff --git a/configs/shared/.emacs.d/snippets/rjsx-mode/.yas-parents b/configs/shared/.emacs.d/snippets/rjsx-mode/.yas-parents
new file mode 100644
index 0000000000..d58dacb7a0
--- /dev/null
+++ b/configs/shared/.emacs.d/snippets/rjsx-mode/.yas-parents
@@ -0,0 +1 @@
+text-mode
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/action-extractor b/configs/shared/.emacs.d/snippets/rjsx-mode/action-extractor
index 62834a29ab..62834a29ab 100644
--- a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/action-extractor
+++ b/configs/shared/.emacs.d/snippets/rjsx-mode/action-extractor
diff --git a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/console-log b/configs/shared/.emacs.d/snippets/rjsx-mode/console-log
index 82ec3fd8e3..82ec3fd8e3 100644
--- a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/console-log
+++ b/configs/shared/.emacs.d/snippets/rjsx-mode/console-log
diff --git a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/const-defn b/configs/shared/.emacs.d/snippets/rjsx-mode/const-defn
index 8e35e61fc2..8e35e61fc2 100644
--- a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/const-defn
+++ b/configs/shared/.emacs.d/snippets/rjsx-mode/const-defn
diff --git a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/const-function b/configs/shared/.emacs.d/snippets/rjsx-mode/const-function
index 13f2018f22..13f2018f22 100644
--- a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/const-function
+++ b/configs/shared/.emacs.d/snippets/rjsx-mode/const-function
diff --git a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/destructure-const b/configs/shared/.emacs.d/snippets/rjsx-mode/destructure-const
index 2a52c57c75..2a52c57c75 100644
--- a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/destructure-const
+++ b/configs/shared/.emacs.d/snippets/rjsx-mode/destructure-const
diff --git a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/fat-arrow b/configs/shared/.emacs.d/snippets/rjsx-mode/fat-arrow
index 187a2efc5a..187a2efc5a 100644
--- a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/fat-arrow
+++ b/configs/shared/.emacs.d/snippets/rjsx-mode/fat-arrow
diff --git a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/fat-arrow-function b/configs/shared/.emacs.d/snippets/rjsx-mode/fat-arrow-function
index 694914a83c..694914a83c 100644
--- a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/fat-arrow-function
+++ b/configs/shared/.emacs.d/snippets/rjsx-mode/fat-arrow-function
diff --git a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/import-destructured b/configs/shared/.emacs.d/snippets/rjsx-mode/import-destructured
index ded3ce163a..ded3ce163a 100644
--- a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/import-destructured
+++ b/configs/shared/.emacs.d/snippets/rjsx-mode/import-destructured
diff --git a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/import-react b/configs/shared/.emacs.d/snippets/rjsx-mode/import-react
index 0463f5cd55..0463f5cd55 100644
--- a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/import-react
+++ b/configs/shared/.emacs.d/snippets/rjsx-mode/import-react
diff --git a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/import-type b/configs/shared/.emacs.d/snippets/rjsx-mode/import-type
index fcd51f687b..fcd51f687b 100644
--- a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/import-type
+++ b/configs/shared/.emacs.d/snippets/rjsx-mode/import-type
diff --git a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/import-x-from-y b/configs/shared/.emacs.d/snippets/rjsx-mode/import-x-from-y
index 09fa6df505..09fa6df505 100644
--- a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/import-x-from-y
+++ b/configs/shared/.emacs.d/snippets/rjsx-mode/import-x-from-y
diff --git a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/import-y b/configs/shared/.emacs.d/snippets/rjsx-mode/import-y
index 9f550e300d..9f550e300d 100644
--- a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/import-y
+++ b/configs/shared/.emacs.d/snippets/rjsx-mode/import-y
diff --git a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/jest-describe-test b/configs/shared/.emacs.d/snippets/rjsx-mode/jest-describe-test
index ed382d4f74..ed382d4f74 100644
--- a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/jest-describe-test
+++ b/configs/shared/.emacs.d/snippets/rjsx-mode/jest-describe-test
diff --git a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/jest-test b/configs/shared/.emacs.d/snippets/rjsx-mode/jest-test
index 12ca2e786d..12ca2e786d 100644
--- a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/jest-test
+++ b/configs/shared/.emacs.d/snippets/rjsx-mode/jest-test
diff --git a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/react-class-component b/configs/shared/.emacs.d/snippets/rjsx-mode/react-class-component
index f2a93a31d9..f2a93a31d9 100644
--- a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/react-class-component
+++ b/configs/shared/.emacs.d/snippets/rjsx-mode/react-class-component
diff --git a/configs/shared/.emacs.d/snippets/rjsx-mode/redux-action b/configs/shared/.emacs.d/snippets/rjsx-mode/redux-action
new file mode 100644
index 0000000000..7d24ffee41
--- /dev/null
+++ b/configs/shared/.emacs.d/snippets/rjsx-mode/redux-action
@@ -0,0 +1,5 @@
+# -*- mode: snippet -*-
+# name: redux-action
+# key: rax
+# --
+export const ${1:$$(string/lower->caps yas-text)} = '`(downcase (buffer-dirname))`/${1:$(string/caps->kebab yas-text)}'
\ No newline at end of file
diff --git a/configs/shared/.emacs.d/snippets/rjsx-mode/typed-redux-action b/configs/shared/.emacs.d/snippets/rjsx-mode/typed-redux-action
new file mode 100644
index 0000000000..c50e1f9d2e
--- /dev/null
+++ b/configs/shared/.emacs.d/snippets/rjsx-mode/typed-redux-action
@@ -0,0 +1,5 @@
+# -*- mode: snippet -*-
+# name: typed-redux-action
+# key: trax
+# --
+export const ${1:$$(string/lower->caps yas-text)}: '`(downcase (buffer-dirname))`/${1:$(string/caps->kebab yas-text)}' = '`(downcase (buffer-dirname))`/${1:$(string/caps->kebab yas-text)}'
\ No newline at end of file
diff --git a/configs/shared/.emacs.d/snippets/rust-mode/.yas-parents b/configs/shared/.emacs.d/snippets/rust-mode/.yas-parents
new file mode 100644
index 0000000000..d58dacb7a0
--- /dev/null
+++ b/configs/shared/.emacs.d/snippets/rust-mode/.yas-parents
@@ -0,0 +1 @@
+text-mode
\ No newline at end of file
diff --git a/configs/shared/.emacs.d/snippets/rust-mode/for-loop b/configs/shared/.emacs.d/snippets/rust-mode/for-loop
new file mode 100644
index 0000000000..4d8e0e3bbd
--- /dev/null
+++ b/configs/shared/.emacs.d/snippets/rust-mode/for-loop
@@ -0,0 +1,7 @@
+# -*- mode: snippet -*-
+# name: for-loop
+# key: for
+# --
+for $1 in $2 {
+    $3
+}
\ No newline at end of file
diff --git a/configs/shared/.emacs.d/snippets/rust-mode/match b/configs/shared/.emacs.d/snippets/rust-mode/match
new file mode 100644
index 0000000000..bf0e876e2b
--- /dev/null
+++ b/configs/shared/.emacs.d/snippets/rust-mode/match
@@ -0,0 +1,7 @@
+# -*- mode: snippet -*-
+# name: match
+# key: match
+# --
+match $1 {
+    $2 => $3,
+}
\ No newline at end of file
diff --git a/configs/shared/.emacs.d/snippets/sh-mode/.yas-parents b/configs/shared/.emacs.d/snippets/sh-mode/.yas-parents
new file mode 100644
index 0000000000..d58dacb7a0
--- /dev/null
+++ b/configs/shared/.emacs.d/snippets/sh-mode/.yas-parents
@@ -0,0 +1 @@
+text-mode
\ No newline at end of file
diff --git a/configs/shared/.emacs.d/snippets/sh-mode/function b/configs/shared/.emacs.d/snippets/sh-mode/function
new file mode 100644
index 0000000000..efa946bb27
--- /dev/null
+++ b/configs/shared/.emacs.d/snippets/sh-mode/function
@@ -0,0 +1,7 @@
+# -*- mode: snippet -*-
+# name: Create function
+# key: fn
+# --
+$1() {
+  $2
+}
\ No newline at end of file
diff --git a/configs/shared/.emacs.d/snippets/text-mode/.yas-parents b/configs/shared/.emacs.d/snippets/text-mode/.yas-parents
new file mode 100644
index 0000000000..d58dacb7a0
--- /dev/null
+++ b/configs/shared/.emacs.d/snippets/text-mode/.yas-parents
@@ -0,0 +1 @@
+text-mode
\ No newline at end of file
diff --git a/configs/shared/.emacs.d/snippets/text-mode/check-mark b/configs/shared/.emacs.d/snippets/text-mode/check-mark
new file mode 100644
index 0000000000..7977819688
--- /dev/null
+++ b/configs/shared/.emacs.d/snippets/text-mode/check-mark
@@ -0,0 +1,5 @@
+# -*- mode: snippet -*-
+# name: Unicode checkmark
+# key: uck
+# --
+✓
\ No newline at end of file
diff --git a/configs/shared/.emacs.d/snippets/text-mode/x-mark b/configs/shared/.emacs.d/snippets/text-mode/x-mark
new file mode 100644
index 0000000000..bc3c356a61
--- /dev/null
+++ b/configs/shared/.emacs.d/snippets/text-mode/x-mark
@@ -0,0 +1,5 @@
+# -*- mode: snippet -*-
+# name: Unicode ex-mark
+# key: ux
+# --
+✗
\ No newline at end of file
diff --git a/configs/shared/.emacs.d/snippets/web-mode/.yas-parents b/configs/shared/.emacs.d/snippets/web-mode/.yas-parents
new file mode 100644
index 0000000000..d58dacb7a0
--- /dev/null
+++ b/configs/shared/.emacs.d/snippets/web-mode/.yas-parents
@@ -0,0 +1 @@
+text-mode
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/web-mode/index-boilerplate b/configs/shared/.emacs.d/snippets/web-mode/index-boilerplate
index b791cdf86f..b791cdf86f 100644
--- a/configs/shared/emacs/.emacs.d/snippets/web-mode/index-boilerplate
+++ b/configs/shared/.emacs.d/snippets/web-mode/index-boilerplate
diff --git a/configs/shared/.emacs.d/tramp b/configs/shared/.emacs.d/tramp
new file mode 100644
index 0000000000..71a1e33c4f
--- /dev/null
+++ b/configs/shared/.emacs.d/tramp
@@ -0,0 +1,8 @@
+;; -*- emacs-lisp -*- <19/11/18 15:05:12 /home/wpcarro/.emacs.d/tramp>
+;; Tramp connection history.  Don't change this file.
+;; You can delete it, forcing Tramp to reapply the checks.
+
+(((tramp-file-name "ssh" "wpcarro" nil "desktop" nil nil nil)
+  nil)
+ ((tramp-file-name "ssh" "wpcarro" nil "cloudtop" nil nil nil)
+  nil))
diff --git a/configs/shared/.emacs.d/vendor/dired+.el b/configs/shared/.emacs.d/vendor/dired+.el
new file mode 100644
index 0000000000..2403b0af9c
--- /dev/null
+++ b/configs/shared/.emacs.d/vendor/dired+.el
@@ -0,0 +1,13696 @@
+;;; dired+.el --- Extensions to Dired.
+;;
+;; Filename: dired+.el
+;; Description: Extensions to Dired.
+;; Author: Drew Adams
+;; Maintainer: Drew Adams (concat "drew.adams" "@" "oracle" ".com")
+;; Copyright (C) 1999-2019, Drew Adams, all rights reserved.
+;; Created: Fri Mar 19 15:58:58 1999
+;; Version: 2019.04.21
+;; Package-Requires: ()
+;; Last-Updated: Sun Jul 21 09:47:33 2019 (-0700)
+;;           By: dradams
+;;     Update #: 11727
+;; URL: https://www.emacswiki.org/emacs/download/dired%2b.el
+;; Doc URL: https://www.emacswiki.org/emacs/DiredPlus
+;; Keywords: unix, mouse, directories, diredp, dired
+;; Compatibility: GNU Emacs: 20.x, 21.x, 22.x, 23.x, 24.x, 25.x, 26.x
+;;
+;; Features that might be required by this library:
+;;
+;;   `apropos', `apropos+', `autofit-frame', `avoid', `backquote',
+;;   `bookmark', `bookmark+', `bookmark+-1', `bookmark+-bmu',
+;;   `bookmark+-key', `bookmark+-lit', `button', `bytecomp', `cconv',
+;;   `cl', `cl-lib', `cmds-menu', `col-highlight', `crosshairs',
+;;   `dired', `dired+', `dired-aux', `dired-loaddefs', `dired-x',
+;;   `easymenu', `fit-frame', `font-lock', `font-lock+',
+;;   `format-spec', `frame-fns', `gv', `help+', `help-fns',
+;;   `help-fns+', `help-macro', `help-macro+', `help-mode',
+;;   `highlight', `hl-line', `hl-line+', `image', `image-dired',
+;;   `image-file', `image-mode', `info', `info+', `kmacro',
+;;   `macroexp', `menu-bar', `menu-bar+', `misc-cmds', `misc-fns',
+;;   `naked', `pp', `pp+', `radix-tree', `replace', `second-sel',
+;;   `strings', `syntax', `text-mode', `thingatpt', `thingatpt+',
+;;   `vline', `w32-browser', `w32browser-dlgopen', `wid-edit',
+;;   `wid-edit+', `widget'.
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; Commentary:
+;;
+;;    Extensions to Dired.
+;;
+;;  This file extends functionalities provided by standard GNU Emacs
+;;  files `dired.el', `dired-aux.el', and `dired-x.el'.
+;;
+;;  Key bindings changed.  Menus redefined.  `diredp-mouse-3-menu'
+;;  popup menu added.  New commands.  Some commands enhanced.
+;;
+;;  All of the new functions, variables, and faces defined here have
+;;  the prefix `diredp-' (for Dired Plus) in their names.
+;;
+;;
+;;  Wraparound Navigation
+;;  ---------------------
+;;
+;;  In vanilla Dired, `dired-next-marked-file' (`M-}' or `* C-n') and
+;;  `dired-previous-marked-file' (`M-{' or `* C-p') wrap around when
+;;  you get to the end or the beginning of the Dired buffer.  Handy.
+;;
+;;  But the other navigation commands do not wrap around.  In `Dired+'
+;;  they do, provided option `diredp-wrap-around-flag' is non-nil,
+;;  which it is by default.  This means the following commands:
+;;
+;;    `diredp-next-line'     - `n', `C-n', `down', `SPC'
+;;    `diredp-previous-line' - `p', `C-p', `up'
+;;    `diredp-next-dirline'  - `>'
+;;    `diredp-prev-dirline'  - `<'
+;;    `diredp-next-subdir'   - `C-M-n'
+;;    `diredp-prev-subdir'   - `C-M-p'
+;;
+;;
+;;  Quick Viewing While Navigating
+;;  ------------------------------
+;;
+;;  You can use key `C-down' or `C-up' to navigate to the next or
+;;  previous file line, respectively, and at the same time show its
+;;  file in another window.  The focus remains on the Dired buffer.
+;;  A numeric prefix arg means move that many lines first.
+;;
+;;  Names of files and directories that match either of the options
+;;  `diredp-visit-ignore-extensions' or `diredp-visit-ignore-regexps'
+;;  are skipped.
+;;
+;;  You can use `e' to show the file of the current line.  If it is
+;;  already shown in the same frame, and if Dired is the only other
+;;  window there, then the file is hidden (its window is deleted).
+;;
+;;
+;;  Font-Lock Highlighting
+;;  ----------------------
+;;
+;;  If you want a maximum or minimum fontification for Dired mode,
+;;  then customize option `font-lock-maximum-decoration'.  If you want
+;;  a different fontification level for Dired than for other modes,
+;;  you can do this too by customizing
+;;  `font-lock-maximize-decoration'.
+;;
+;;  A few of the user options defined here have an effect on
+;;  font-locking, and this effect is established only when Dired+ is
+;;  loaded, which defines the font-lock keywords for Dired.  These
+;;  options include `diredp-compressed-extensions',
+;;  `diredp-ignore-compressed-flag', `dired-omit-extensions', and
+;;  `diredp-omit-files-regexp'.  This means that if you change the
+;;  value of such an option then you will see the change only in a new
+;;  Emacs session.
+;;
+;;  (You can see the effect in the same session if you use `C-M-x' on
+;;  the `defvar' sexp for `diredp-font-lock-keywords-1', and then you
+;;  toggle font-lock off and back on.)
+;;
+;;
+;;  Act on All Files
+;;  ----------------
+;;
+;;  Most of the commands (such as `C' and `M-g') that operate on the
+;;  marked files have the added feature here that multiple `C-u' use
+;;  not the files that are marked or the next or previous N files, but
+;;  *all* of the files in the Dired buffer.  Just what "all" files
+;;  means changes with the number of `C-u', as follows:
+;;
+;;    `C-u C-u'         - Use all files present, but no directories.
+;;    `C-u C-u C-u'     - Use all files and dirs except `.' and `..'.
+;;    `C-u C-u C-u C-u' - use all files and dirs, `.' and `..'.
+;;
+;;    (More than four `C-u' act the same as two.)
+;;
+;;  This feature can be particularly useful when you have a Dired
+;;  buffer with files chosen from multiple directories.
+;;
+;;  Note that in most cases this behavior is described only in the doc
+;;  string of function `dired-get-marked-files'.  It is generally
+;;  *not* described in the doc strings of the various commands,
+;;  because that would require redefining each command separately
+;;  here.  Instead, we redefine macro `dired-map-over-marks' and
+;;  function `dired-get-filename' in order to achieve this effect.
+;;
+;;  Commands such as `dired-do-load' for which it does not make sense
+;;  to act on directories generally treat more than two `C-u' the same
+;;  as two `C-u'.
+;;
+;;  Exceptions to the general behavior described here are called out
+;;  in the doc strings.  In particular, the behavior of a prefix arg
+;;  for `dired-do-query-replace-regexp' is different, so that you can
+;;  use it also to specify word-delimited replacement.
+;;
+;;
+;;  Act on Marked (or All) Files Here and Below
+;;  -------------------------------------------
+;;
+;;  The prefix argument behavior just described does not apply to the
+;;  `diredp-*-recursive' commands.  These commands act on the marked
+;;  files in the current Dired buffer or on all files in the directory
+;;  if none are marked.
+;;
+;;  But these commands also handle marked subdirectories recursively,
+;;  in the same way.  That is, they act also on the marked files in
+;;  any marked subdirectories, found recursively.  If such a
+;;  descendant directory is listed in a Dired buffer then its marked
+;;  files and subdirs are handled the same way.  If there is no Dired
+;;  buffer that lists a given marked subdirectory then all of its
+;;  files and subdirs are acted on.
+;;
+;;  For most such here-and-below commands, a prefix argument means
+;;  ignore all marks.  The commands then act on all files in the
+;;  current Dired buffer and all of its subdirectories, recursively.
+;;
+;;  But here-and-below commands that unmark or change marks act
+;;  differently for different kinds of prefix argument:
+;;
+;;  * A non-positive prefix arg means ignore subdir markings and act
+;;    instead on ALL subdirs.
+;;
+;;  * A non-negative prefix arg means do not change marks on subdirs
+;;    themselves.
+;;
+;;  For example, `M-+ U' removes all marks, including from marked
+;;  subdirs, recursively.  `C-- M-+ U' removes them from all files in
+;;  all subdirs (marked or not), recursively.  `C-9 M-+ U' removes all
+;;  marks, recursively, except the marks on subdirs themselves.  `C-0
+;;  M-+ U' acts like those two combined: it descends everywhere,
+;;  ignoring which subdirs are marked, but it does not remove marks
+;;  from subdirs themselves.
+;;
+;;  All of the `diredp-*-recursive' commands are on prefix key `M-+',
+;;  and most are available on submenu `Marked Here and Below' of the
+;;  `Multiple' menu-bar menu.  The commands that unmark and change
+;;  marks are also in submenu `Here and Below' of menu-bar menu
+;;  `Marks'.
+;;
+;;  If you use library `Icicles' then you have the following
+;;  additional commands/keys that act recursively on marked files.
+;;  They are in the `Icicles' submenu of menu `Multiple' > `Marked
+;;  Here and Below'.
+;;
+;;  * `M-+ M-s M-s' or `M-s M-s m' - Use Icicles search (and its
+;;                  on-demand replace) on the marked files.
+;;
+;;  * Save the names of the marked files:
+;;
+;;    `M-+ C-M->' - Save as a completion set, for use during
+;;                  completion (e.g. with `C-x C-f').
+;;
+;;    `M-+ C->'   - Add marked names to the names in the current saved
+;;                  completion set.
+;;
+;;    `M-+ C-}'   - Save persistently to an Icicles cache file, for
+;;                  use during completion in another session.
+;;
+;;    `icicle-dired-save-marked-to-fileset-recursive' - Like `M-+
+;;                  C-}', but save persistently to an Emacs fileset.
+;;
+;;    `M-+ C-M-}' - Save to a Lisp variable.
+;;
+;;
+;;  In the other direction, if you have a saved set of file names then
+;;  you can use `C-M-<' (`icicle-dired-chosen-files-other-window') in
+;;  Dired to open a Dired buffer for just those files.  So you can
+;;  mark some files and subdirs in a hierarchy of Dired buffers, use
+;;  `M-+ C-}' to save their names persistently, then later use `C-{'
+;;  to retrieve them, and `C-M-<' (in Dired) to open Dired on them.
+;;
+;;
+;;  Image Files
+;;  -----------
+;;
+;;  `Dired+' provides several enhancements regarding image files.
+;;  Most of these require standard library `image-dired.el'.  One of
+;;  them, command `diredp-do-display-images', which displays all of
+;;  the marked image files, requires standard library `image-file.el'.
+;;
+;;  `Dired+' loads these libraries automatically, if available, which
+;;  means an Emacs version that supports image display (Emacs 22 or
+;;  later).  (You must of course have installed whatever else your
+;;  Emacs version needs to display images.)
+;;
+;;  Besides command `diredp-do-display-images', see the commands whose
+;;  names have prefix `diredp-image-'.  And see options
+;;  `diredp-image-preview-in-tooltip' and
+;;  `diredp-auto-focus-frame-for-thumbnail-tooltip-flag'.
+;;    
+;;
+;;  Inserted Subdirs, Multiple Dired Buffers, Files from Anywhere,...
+;;  -----------------------------------------------------------------
+;;
+;;  These three standard Dired features are worth pointing out.  The
+;;  third in particular is little known because (a) it is limited in
+;;  vanilla Dired and (b) you cannot use it interactively.
+;;
+;;   * You can pass a glob pattern with wildcards to `dired'
+;;     interactively, as the file name.
+;;
+;;   * You can insert multiple subdirectory listings into a single
+;;     Dired buffer using `i' on each subdir line.  Use `C-u i' to
+;;     specify `ls' switches.  Specifying switch `R' inserts the
+;;     inserted subdirectory's subdirs also, recursively.  You can
+;;     also use `i' to bounce between a subdirectory line and its
+;;     inserted-listing header line.  You can delete a subdir listing
+;;     using `C-u k' on its header line.  You can hide/show an
+;;     inserted subdir using `$'.  You can use `C-_' to undo any of
+;;     these operations.
+;;
+;;   * You can open a Dired buffer for an arbitrary set of files from
+;;     different directories.  You do this by invoking `dired'
+;;     non-interactively, passing it a cons of a Dired buffer name and
+;;     the file names.  Relative file names are interpreted relative
+;;     to the value of `default-directory'.  Use absolute file names
+;;     when appropriate.
+;;
+;;  `Dired+' makes these features more useful.
+;;
+;;  `$' is improved: It is a simple toggle - it does not move the
+;;  cursor forward.  `M-$' advances the cursor, in addition to
+;;  toggling like `$'.  `C-u $' does hide/show all (what `M-$' does in
+;;  vanilla Dired).
+;;
+;;  `i' is improved in these ways:
+;;
+;;   * Once a subdir has been inserted, `i' bounces between the subdir
+;;     listing and the subdir line in the parent listing.  If the
+;;     parent dir is hidden, then `i' from a subdir opens the parent
+;;     listing so it can move to the subdir line there (Emacs 24+).
+;;
+;;   * Vanilla Dired lets you create a Dired listing with files and
+;;     directories from arbitrary locations, but you cannot insert
+;;     (`i') such a directory if it is not in the same directory tree
+;;     as the `default-directory' used to create the Dired buffer.
+;;     `Dired+' removes this limitation; you can insert any non-root
+;;     directories (that is, not `/', `c:/', etc.).
+;;
+;;  `Dired+' lets you create Dired buffers that contain arbitrary
+;;  files and directories interactively, not just using Lisp.  Just
+;;  use a non-positive prefix arg (e.g., `C--') when invoking `dired'.
+;;
+;;  You are then prompted for the Dired buffer name (anything you
+;;  like, not necessarily a directory name) and the individual files
+;;  and directories that you want listed.
+;;
+;;  A non-negative prefix arg still prompts you for the `ls' switches
+;;  to use.  (So `C-0' does both: prompts for `ls' switches and for
+;;  the Dired buffer name and the files to list.)
+;;
+;;  `Dired+' adds commands for combining and augmenting Dired
+;;  listings:
+;;
+;;   * `diredp-add-to-dired-buffer', bound globally to `C-x D A', lets
+;;     you add arbitrary file and directory names to an existing Dired
+;;     buffer.
+;;
+;;   * `diredp-dired-union', bound globally to `C-x D U', lets you
+;;     take the union of multiple Dired listings, or convert an
+;;     ordinary Dired listing to an explicit list of absolute file
+;;     names.  With a non-positive prefix arg, you can add extra file
+;;     and directory names, just as for `diredp-add-to-dired-buffer'.
+;;
+;;  You can optionally add a header line to a Dired buffer using
+;;  toggle command `diredp-breadcrumbs-in-header-line-mode'.  (A
+;;  header line remains at the top of the window - no need to scroll
+;;  to see it.)  If you want to show the header line automatically in
+;;  all Dired buffers, you can do this:
+;;
+;;    (add-hook 'dired-before-readin-hook
+;;              'diredp-breadcrumbs-in-header-line-mode)
+;;
+;;  Some other libraries, such as `Bookmark+' and `Icicles', make it
+;;  easy to create or re-create Dired buffers that list specific files
+;;  and have a particular set of markings.  `Bookmark+' records Dired
+;;  buffers persistently, remembering `ls' switches, markings, subdir
+;;  insertions, and hidden subdirs.  If you use `Icicles' then `dired'
+;;  is a multi-command: you can open multiple Dired buffers with one
+;;  `dired' invocation.
+;;
+;;  Dired can help you manage projects.  You might have multiple Dired
+;;  buffers with quite specific contents.  You might have some
+;;  subdirectories inserted in the same Dired buffer, and you might
+;;  have separate Dired buffers for some subdirectories.  Sometimes it
+;;  is useful to have both for the same subdirectory.  And sometimes
+;;  it is useful to move from one presentation to the other.
+;;
+;;  This is one motivation for the `Dired+' `diredp-*-recursive'
+;;  commands, which act on the marked files in marked subdirectories,
+;;  recursively.  In one sense, these commands are an alternative to
+;;  using a single Dired buffer with inserted subdirectories.  They
+;;  let you use the same operations on the files in a set of Dired
+;;  directories, without inserting those directories into an ancestor
+;;  Dired buffer.
+;;
+;;  You can use command `diredp-dired-inserted-subdirs' to open a
+;;  separate Dired buffer for each of the subdirs that is inserted in
+;;  the current Dired buffer.  Markings and Dired switches are
+;;  preserved.
+;;
+;;  In the opposite direction, if you use `Icicles' then you can use
+;;  multi-command `icicle-dired-insert-as-subdir', which lets you
+;;  insert any number of directories you choose interactively into a
+;;  Dired ancestor directory listing.  If a directory you choose to
+;;  insert already has its own Dired buffer, then its markings and
+;;  switches are preserved for the new, subdirectory listing in the
+;;  ancestor Dired buffer.
+;;
+;;
+;;  Hide/Show Details
+;;  -----------------
+;;
+;;  Starting with Emacs 24.4, listing details are hidden by default.
+;;  Note that this is different from the vanilla Emacs behavior, which
+;;  is to show details by default.
+;;
+;;  Use `(' anytime to toggle this hiding.  You can use option
+;;  `diredp-hide-details-initially-flag' to change the default/initial
+;;  state.  See also option `diredp-hide-details-propagate-flag'.
+;;
+;;  NOTE: If you do not want to hide details initially then you must
+;;        either (1) change `diredp-hide-details-initially-flag' using
+;;        Customize (recommended) or (2) set it to `nil' (e.g., using
+;;        `setq') *BEFORE* loading `dired+.el'.
+;;
+;;  If you have an Emacs version older than 24.4, you can use library
+;;  `dired-details+.el' (plus `dired-details.el') to get similar
+;;  behavior.
+;;
+;;
+;;  Mode-Line
+;;  ---------
+;;
+;;  The number of files and dirs that are marked with `*', and the
+;;  number that are flagged for deletion (marked `D') are indicated in
+;;  the mode-line.  When the cursor is on such a line the indication
+;;  tells you how many more there are.  For example, if the cursor is
+;;  on the line of the third file that is marked `*', and there are
+;;  seven of them total, then the mode-line shows `3/7*'.
+;;
+;;  The mode-line also indicates, for the current listing (which could
+;;  be a subdir listing), how many files and dirs are listed.  If the
+;;  cursor is on the 27th file in a listing of 78 files then the
+;;  mode-line shows 27/78.
+;;
+;;  For counting files and dirs in a listing, option
+;;  `diredp-count-.-and-..-flag' controls whether to count the lines
+;;  for `.' and `..'.  By default it is nil, meaning they are not
+;;  counted.
+;;
+;;
+;;  If You Use Dired+ in Terminal Mode
+;;  ----------------------------------
+;;
+;;  By default, Dired+ binds some keys that can be problematic in some
+;;  terminals when you use Emacs in terminal mode (i.e., `emacs -nw').
+;;  This is controlled by option
+;;  `diredp-bind-problematic-terminal-keys'.
+;;
+;;  In particular, keys that use modifiers Meta and Shift together can
+;;  be problematic.  If you use Dired+ in text-only terminal, and you
+;;  find that your terminal does not support such keys, then you might
+;;  want to customize the option to set the value to `nil', and then
+;;  bind the commands to some other keys, which your terminal
+;;  supports.
+;;  
+;;  The problematic keys used by Dired+ include these:
+;;
+;;    `M-M'   (aka `M-S-m')   - `diredp-chmod-this-file'
+;;    `M-O'   (aka `M-S-o')   - `diredp-chown-this-file'
+;;    `M-T'   (aka `M-S-t')   - `diredp-touch-this-file'
+;;    `C-M-B' (aka `C-M-S-b') - `diredp-do-bookmark-in-bookmark-file'
+;;    `C-M-G' (aka `C-M-S-g') - `diredp-chgrp-this-file'
+;;    `C-M-R' (aka `C-M-S-r') - `diredp-toggle-find-file-reuse-dir'
+;;    `C-M-T' (aka `C-M-S-t') - `dired-do-touch'
+;;    `M-+ M-B'   (aka `M-+ M-S-b') -
+;;        `diredp-do-bookmark-dirs-recursive'
+;;    `M-+ C-M-B' (aka `M-+ C-M-S-b') -
+;;        `diredp-do-bookmark-in-bookmark-file-recursive'
+;;    `M-+ C-M-T' (aka `M-+ C-M-S-t') - `diredp-do-touch-recursive'
+;;
+;;  (See also `(info "(org) TTY keys")' for more information about
+;;  keys that can be problematic in a text-only terminal.)
+;;
+;;
+;;  Faces defined here:
+;;
+;;    `diredp-autofile-name', `diredp-compressed-file-suffix',
+;;    `diredp-date-time', `diredp-deletion',
+;;    `diredp-deletion-file-name', `diredp-dir-heading',
+;;    `diredp-dir-priv', `diredp-exec-priv', `diredp-executable-tag',
+;;    `diredp-file-name', `diredp-file-suffix', `diredp-flag-mark',
+;;    `diredp-flag-mark-line', `diredp-get-file-or-dir-name',
+;;    `diredp-ignored-file-name', `diredp-link-priv',
+;;    `diredp-mode-line-flagged', `diredp-mode-line-marked'
+;;    `diredp-omit-file-name', `diredp-no-priv', `diredp-number',
+;;    `diredp-other-priv', `diredp-rare-priv', `diredp-read-priv',
+;;    `diredp-symlink', `diredp-tagged-autofile-name',
+;;    `diredp-write-priv'.
+;;
+;;  Commands defined here:
+;;
+;;    `diredp-add-to-dired-buffer', `diredp-add-to-this-dired-buffer',
+;;    `diredp-do-apply-function',
+;;    `diredp-do-apply-function-recursive',
+;;    `diredp-async-shell-command-this-file',
+;;    `diredp-bookmark-this-file',
+;;    `diredp-breadcrumbs-in-header-line-mode' (Emacs 22+),
+;;    `diredp-byte-compile-this-file', `diredp-capitalize',
+;;    `diredp-capitalize-recursive', `diredp-capitalize-this-file',
+;;    `diredp-change-marks-recursive' (Emacs 22+),
+;;    `diredp-chgrp-this-file', `diredp-chmod-this-file',
+;;    `diredp-chown-this-file',
+;;    `diredp-compilation-files-other-window' (Emacs 24+),
+;;    `diredp-compress-this-file',
+;;    `diredp-copy-abs-filenames-as-kill',
+;;    `diredp-copy-abs-filenames-as-kill-recursive',
+;;    `diredp-copy-filename-as-kill-recursive',
+;;    `diredp-copy-tags-this-file', `diredp-copy-this-file',
+;;    `diredp-decrypt-this-file', `diredp-delete-this-file',
+;;    `diredp-describe-autofile', `diredp-describe-file',
+;;    `diredp-describe-marked-autofiles', `diredp-describe-mode',
+;;    `diredp-dired-for-files', `diredp-dired-for-files-other-window',
+;;    `diredp-dired-inserted-subdirs', `diredp-dired-plus-help',
+;;    `diredp-dired-recent-dirs',
+;;    `diredp-dired-recent-dirs-other-window',
+;;    `diredp-dired-this-subdir', `diredp-dired-union',
+;;    `diredp-do-async-shell-command-recursive', `diredp-do-bookmark',
+;;    `diredp-do-bookmark-dirs-recursive',
+;;    `diredp-do-bookmark-in-bookmark-file',
+;;    `diredp-do-bookmark-in-bookmark-file-recursive',
+;;    `diredp-do-bookmark-recursive', `diredp-do-chmod-recursive',
+;;    `diredp-do-chgrp-recursive', `diredp-do-chown-recursive',
+;;    `diredp-do-copy-recursive', `diredp-do-decrypt-recursive',
+;;    `diredp-do-delete-recursive', `diredp-do-display-images' (Emacs
+;;    22+), `diredp-do-emacs-command', `diredp-do-encrypt-recursive',
+;;    `diredp-do-find-marked-files-recursive', `diredp-do-grep',
+;;    `diredp-do-grep-recursive', `diredp-do-hardlink-recursive',
+;;    `diredp-do-isearch-recursive',
+;;    `diredp-do-isearch-regexp-recursive', `diredp-do-lisp-sexp'
+;;    (Emacs 22+), `diredp-do-move-recursive',
+;;    `diredp-do-paste-add-tags', `diredp-do-paste-replace-tags',
+;;    `diredp-do-print-recursive',
+;;    `diredp-do-query-replace-regexp-recursive',
+;;    `diredp-do-redisplay-recursive',
+;;    `diredp-do-relsymlink-recursive', `diredp-do-remove-all-tags',
+;;    `diredp-do-search-recursive', `diredp-do-set-tag-value',
+;;    `diredp-do-shell-command-recursive', `diredp-do-sign-recursive',
+;;    `diredp-do-symlink-recursive', `diredp-do-tag',
+;;    `diredp-do-touch-recursive', `diredp-do-untag',
+;;    `diredp-do-verify-recursive', `diredp-downcase-recursive',
+;;    `diredp-downcase-this-file', `diredp-ediff',
+;;    `diredp-encrypt-this-file', `diredp-fileset',
+;;    `diredp-fileset-other-window', `diredp-find-a-file',
+;;    `diredp-find-a-file-other-frame',
+;;    `diredp-find-a-file-other-window',
+;;    `diredp-find-file-other-frame',
+;;    `diredp-find-file-reuse-dir-buffer',
+;;    `diredp-find-line-file-other-window',
+;;    `diredp-flag-auto-save-files-recursive',
+;;    `diredp-flag-region-files-for-deletion',
+;;    `diredp-grepped-files-other-window', `diredp-grep-this-file',
+;;    `diredp-hardlink-this-file', `diredp-highlight-autofiles-mode',
+;;    `diredp-image-dired-comment-file',
+;;    `diredp-image-dired-comment-files-recursive',
+;;    `diredp-image-dired-copy-with-exif-name',
+;;    `diredp-image-dired-create-thumb',
+;;    `diredp-image-dired-delete-tag',
+;;    `diredp-image-dired-delete-tag-recursive',
+;;    `diredp-image-dired-display-thumb',
+;;    `diredp-image-dired-display-thumbs-recursive',
+;;    `diredp-image-dired-edit-comment-and-tags',
+;;    `diredp-image-dired-tag-file',
+;;    `diredp-image-dired-tag-files-recursive',
+;;    `diredp-image-show-this-file', `diredp-insert-as-subdir',
+;;    `diredp-insert-subdirs', `diredp-insert-subdirs-recursive',
+;;    `diredp-kill-this-tree', `diredp-list-marked-recursive',
+;;    `diredp-load-this-file', `diredp-mark-autofiles',
+;;    `diredp-marked', `diredp-marked-other-window',
+;;    `diredp-marked-recursive',
+;;    `diredp-marked-recursive-other-window',
+;;    `diredp-mark-extension-recursive',
+;;    `diredp-mark-files-containing-regexp-recursive',
+;;    `diredp-mark-files-regexp-recursive',
+;;    `diredp-mark-files-tagged-all', `diredp-mark-files-tagged-none',
+;;    `diredp-mark-files-tagged-not-all',
+;;    `diredp-mark-files-tagged-some',
+;;    `diredp-mark-files-tagged-regexp', `diredp-mark-region-files',
+;;    `diredp-mark-sexp-recursive' (Emacs 22+),
+;;    `diredp-mark/unmark-autofiles', `diredp-mark/unmark-extension',
+;;    `diredp-mouse-3-menu', `diredp-mouse-backup-diff',
+;;    `diredp-mouse-copy-tags', `diredp-mouse-describe-autofile',
+;;    `diredp-mouse-describe-file', `diredp-mouse-diff',
+;;    `diredp-mouse-do-bookmark', `diredp-mouse-do-byte-compile',
+;;    `diredp-mouse-do-chgrp', `diredp-mouse-do-chmod',
+;;    `diredp-mouse-do-chown', `diredp-mouse-do-compress',
+;;    `diredp-mouse-do-copy', `diredp-mouse-do-delete',
+;;    `diredp-mouse-do-grep', `diredp-mouse-do-hardlink',
+;;    `diredp-mouse-do-load', `diredp-mouse-do-print',
+;;    `diredp-mouse-do-remove-all-tags', `diredp-mouse-do-rename',
+;;    `diredp-mouse-do-set-tag-value',
+;;    `diredp-mouse-do-shell-command', `diredp-mouse-do-symlink',
+;;    `diredp-mouse-do-tag', `diredp-mouse-do-untag',
+;;    `diredp-mouse-downcase', `diredp-mouse-ediff',
+;;    `diredp-mouse-find-line-file-other-window',
+;;    `diredp-mouse-find-file-other-frame',
+;;    `diredp-mouse-find-file-reuse-dir-buffer',
+;;    `diredp-mouse-flag-file-deletion', `diredp-mouse-mark',
+;;    `diredp-mouse-mark-region-files', `diredp-mouse-mark/unmark',
+;;    `diredp-mouse-unmark', `diredp-mouse-upcase',
+;;    `diredp-mouse-view-file', `diredp-move-file' (Emacs 24+),
+;;    `diredp-multiple-w32-browser-recursive',
+;;    `diredp-nb-marked-in-mode-name', `diredp-next-dirline',
+;;    `diredp-next-line', `diredp-next-subdir', `diredp-omit-marked',
+;;    `diredp-omit-unmarked', `diredp-paste-add-tags-this-file',
+;;    `diredp-paste-files', `diredp-paste-replace-tags-this-file',
+;;    `diredp-prev-dirline', `diredp-previous-line',
+;;    `diredp-prev-subdir', `diredp-print-this-file',
+;;    `diredp-relsymlink-this-file',
+;;    `diredp-remove-all-tags-this-file', `diredp-rename-this-file',
+;;    `diredp-send-bug-report',
+;;    `diredp-set-bookmark-file-bookmark-for-marked',
+;;    `diredp-set-bookmark-file-bookmark-for-marked-recursive',
+;;    `diredp-set-tag-value-this-file',
+;;    `diredp-shell-command-this-file', `diredp-show-metadata',
+;;    `diredp-show-metadata-for-marked', `diredp-sign-this-file',
+;;    `diredp-symlink-this-file', `diredp-tag-this-file',
+;;    `diredp-toggle-find-file-reuse-dir',
+;;    `diredp-toggle-marks-in-region', `diredp-touch-this-file',
+;;    `diredp-unmark-all-files-recursive' (Emacs 22+),
+;;    `diredp-unmark-all-marks-recursive' (Emacs 22+),
+;;    `diredp-unmark-autofiles', `diredp-unmark-files-tagged-all',
+;;    `diredp-unmark-files-tagged-none',
+;;    `diredp-unmark-files-tagged-not-all',
+;;    `diredp-unmark-files-tagged-some', `diredp-unmark-region-files',
+;;    `diredp-untag-this-file', `diredp-upcase-recursive',
+;;    `diredp-up-directory', `diredp-up-directory-reuse-dir-buffer',
+;;    `diredp-upcase-this-file', `diredp-verify-this-file',
+;;    `diredp-visit-next-file', `diredp-visit-previous-file',
+;;    `diredp-visit-this-file', `diredp-w32-drives',
+;;    `diredp-w32-drives-mode', `diredp-yank-files',
+;;    `global-dired-hide-details-mode' (Emacs 24.4+),
+;;    `toggle-diredp-find-file-reuse-dir'.
+;;
+;;  User options defined here:
+;;
+;;    `diredp-auto-focus-frame-for-thumbnail-tooltip-flag',
+;;    `diredp-bind-problematic-terminal-keys',
+;;    `diredp-compressed-extensions', `diredp-count-.-and-..-flag'
+;;    (Emacs 22+), `diredp-do-report-echo-limit',
+;;    `diredp-dwim-any-frame-flag' (Emacs 22+),
+;;    `diredp-image-preview-in-tooltip', `diff-switches',
+;;    `diredp-hide-details-initially-flag' (Emacs 24.4+),
+;;    `diredp-highlight-autofiles-mode',
+;;    `diredp-hide-details-propagate-flag' (Emacs 24.4+),
+;;    `diredp-ignore-compressed-flag',
+;;    `diredp-image-show-this-file-use-frame-flag' (Emacs 22+),
+;;    `diredp-list-file-attributes', `diredp-max-frames',
+;;    `diredp-move-file-dirs' (Emacs 24+), `diredp-omit-files-regexp'
+;;    `diredp-prompt-for-bookmark-prefix-flag',
+;;    `diredp-visit-ignore-extensions', `diredp-visit-ignore-regexps',
+;;    `diredp-w32-local-drives', `diredp-wrap-around-flag'.
+;;
+;;  Non-interactive functions defined here:
+;;
+;;    `derived-mode-p' (Emacs < 22), `diredp-all-files',
+;;    `diredp-ancestor-dirs', `diredp-apply-function-to-file-name',
+;;    `diredp-bookmark',
+;;    `diredp-create-files-non-directory-recursive',
+;;    `diredp-delete-dups', `diredp-delete-if',
+;;    `diredp-delete-if-not', `diredp-directories-within',
+;;    `diredp-dired-plus-description',
+;;    `diredp-dired-plus-description+links',
+;;    `diredp-dired-plus-help-link', `diredp-dired-union-1',
+;;    `diredp-dired-union-interactive-spec', `diredp-display-image'
+;;    (Emacs 22+), `diredp-do-chxxx-recursive',
+;;    `diredp-do-create-files-recursive', `diredp-do-grep-1',
+;;    `diredp-ensure-bookmark+', `diredp-ensure-mode',
+;;    `diredp-eval-lisp-sexp' (Emacs 22+),
+;;    `diredp-existing-dired-buffer-p', `diredp-fewer-than-2-files-p',
+;;    `diredp-fewer-than-echo-limit-files-p',
+;;    `diredp-fewer-than-N-files-p', `diredp-fileset-1',
+;;    `diredp-find-a-file-read-args',
+;;    `diredp-file-for-compilation-hit-at-point' (Emacs 24+),
+;;    `diredp-files-within', `diredp-files-within-1',
+;;    `diredp-fit-frame-unless-buffer-narrowed' (Emacs 24.4+),
+;;    `diredp-get-confirmation-recursive', `diredp-get-files',
+;;    `diredp-get-files-for-dir', `diredp-get-subdirs',
+;;    `diredp-hide-details-if-dired' (Emacs 24.4+),
+;;    `diredp-hide/show-details' (Emacs 24.4+),
+;;    `diredp-highlight-autofiles', `diredp-image-dired-required-msg',
+;;    `diredp-get-image-filename', `diredp-internal-do-deletions',
+;;    `diredp-invoke-emacs-command', `diredp-invoke-function-no-args',
+;;    `diredp-list-file', `diredp-list-files', `diredp-looking-at-p',
+;;    `diredp-make-find-file-keys-reuse-dirs',
+;;    `diredp-make-find-file-keys-not-reuse-dirs', `diredp-maplist',
+;;    `diredp-map-over-marks-and-report', `diredp-marked-here',
+;;    `diredp-mark-files-tagged-all/none',
+;;    `diredp-mark-files-tagged-some/not-all',
+;;    `diredp-nonempty-region-p', `diredp-parent-dir',
+;;    `diredp-paste-add-tags', `diredp-paste-replace-tags',
+;;    `diredp-read-bookmark-file-args', `diredp-read-command',
+;;    `diredp-read-expression' (Emacs 22+),
+;;    `diredp-read-include/exclude', `diredp-read-regexp',
+;;    `diredp-recent-dirs', `diredp-refontify-buffer',
+;;    `diredp-remove-if', `diredp-remove-if-not',
+;;    `diredp-report-file-result', `diredp--reuse-dir-buffer-helper',
+;;    `diredp-root-directory-p', `diredp-set-header-line-breadcrumbs'
+;;    (Emacs 22+), `diredp-set-tag-value', `diredp-set-union',
+;;    `diredp--set-up-font-locking', `diredp-string-match-p',
+;;    `diredp-tag', `diredp-this-file-marked-p',
+;;    `diredp-this-file-unmarked-p', `diredp-this-subdir',
+;;    `diredp-untag', `diredp-visit-ignore-regexp',
+;;    `diredp-y-or-n-files-p'.
+;;
+;;  Variables defined here:
+;;
+;;    `diredp-bookmark-menu', `diredp-file-line-overlay',
+;;    `diredp-files-within-dirs-done', `diredp-font-lock-keywords-1',
+;;    `diredp-hide-details-last-state' (Emacs 24.4+),
+;;    `diredp-hide-details-toggled' (Emacs 24.4+),
+;;    `diredp-hide/show-menu', `diredp-images-recursive-menu',
+;;    `diredp-last-copied-filenames', `diredp-list-files-map',
+;;    `diredp-loaded-p', `diredp-marks-recursive-menu',
+;;    `diredp-menu-bar-dir-menu', `diredp-menu-bar-marks-menu',
+;;    `diredp-menu-bar-multiple-menu', `diredp-menu-bar-regexp-menu',
+;;    `diredp-menu-bar-single-menu', `diredp-multiple-bookmarks-menu',
+;;    `diredp-multiple-delete-menu', `diredp-multiple-dired-menu',
+;;    `diredp-multiple-images-menu',
+;;    `diredp-multiple-encryption-menu',
+;;    `diredp-multiple-move-copy-link-menu',
+;;    `diredp-multiple-omit-menu', `diredp-multiple-recursive-menu',
+;;    `diredp-multiple-rename-menu', `diredp-multiple-search-menu',
+;;    `diredp-navigate-menu', `diredp-regexp-recursive-menu',
+;;    `diredp-re-no-dot', `diredp-single-bookmarks-menu',
+;;    `diredp-single-encryption-menu', `diredp-single-image-menu',
+;;    `diredp-single-move-copy-link-menu', `diredp-single-open-menu',
+;;    `diredp-single-rename-menu', `diredp-w32-drives-mode-map'.
+;;
+;;  Macros defined here:
+;;
+;;    `diredp-mark-if', `diredp-user-error',
+;;    `diredp-with-help-window'.
+;;
+;;
+;;  ***** NOTE: The following macros defined in `dired.el' have
+;;              been REDEFINED HERE:
+;;
+;;  `dired-map-over-marks'    - Treat multiple `C-u' specially.
+;;
+;;
+;;  ***** NOTE: The following functions defined in `dired.el' have
+;;              been REDEFINED or ADVISED HERE:
+;;
+;;  `dired'                   - Handle non-positive prefix arg.
+;;  `dired-do-delete'         - Display message to warn that marked,
+;;                              not flagged, files will be deleted.
+;;  `dired-do-flagged-delete' - Display message to warn that flagged,
+;;                              not marked, files will be deleted.
+;;  `dired-dwim-target-directory' - Uses `diredp-dwim-any-frame-flag'.
+;;  `dired-find-file'         - Allow `.' and `..' (Emacs 20 only).
+;;  `dired-get-filename'      - Test `./' and `../' (like `.', `..').
+;;  `dired-get-marked-files'  - Can include `.' and `..'.
+;;                              Allow FILTER + DISTINGUISH-ONE-MARKED.
+;;  `dired-goto-file'         - Fix Emacs bug #7126.
+;;                              Remove `/' from dir before compare.
+;;                              (Emacs < 24 only.)
+;;  `dired-hide-details-mode' - Respect new user options:
+;;                              * `diredp-hide-details-initially-flag'
+;;                              * `diredp-hide-details-propagate-flag'
+;;                              (Emacs 24.4+)
+;;  `dired-insert-directory'  - Compute WILDCARD arg for
+;;                              `insert-directory' for individual file
+;;                              (don't just use nil). (Emacs 23+, and
+;;                              only for MS Windows)
+;;  `dired-insert-set-properties' - `mouse-face' on whole line.
+;;  `dired-flag-auto-save-files', `dired-mark-directories',
+;;  `dired-mark-executables', `dired-mark-files-containing-regexp',
+;;  `dired-mark-files-regexp', `dired-mark-symlinks'
+;;                            - Use `diredp-mark-if', not `dired-mark-if'.
+;;  `dired-mark-files-regexp' - Add regexp to `regexp-search-ring'.
+;;                              More matching possibilities.
+;;                              Added optional arg LOCALP.
+;;  `dired-mark-pop-up'       - Delete the window or frame popped up,
+;;                              afterward, and bury its buffer. Do not
+;;                              show a menu bar for pop-up frame.
+;;  `dired-other-frame'       - Handle non-positive prefix arg.
+;;  `dired-other-window'      - Handle non-positive prefix arg.
+;;  `dired-pop-to-buffer'     - Put window point at bob (bug #12281).
+;;                              (Emacs 22-24.1)
+;;  `dired-read-dir-and-switches' - Non-positive prefix arg behavior.
+;;
+;;; NOT YET:
+;;; ;;  `dired-readin-insert'     - Use t as WILDCARD arg to
+;;; ;;                              `dired-insert-directory'.  (Emacs 23+,
+;;; ;;                              and only for MS Windows)
+;;
+;;  `dired-revert'            - Reset `mode-line-process' to nil.
+;;  `dired-switches-escape-p' - Made compatible with Emacs 20, 21.
+;;
+;;
+;;  ***** NOTE: The following functions are included here with little
+;;              or no change to their definitions.  They are here to
+;;              take advantage of the new definition of macro
+;;              `dired-map-over-marks':
+;;
+;;  `dired-do-redisplay', `dired-map-over-marks-check',
+;;  `image-dired-dired-insert-marked-thumbs',
+;;  `image-dired-dired-toggle-marked-thumbs'.
+;;
+;;
+;;  ***** NOTE: The following functions defined in `dired-aux.el' have
+;;              been REDEFINED HERE:
+;;
+;;  `dired-do-byte-compile', `dired-do-compress', `dired-do-load' -
+;;     Redisplay only if at most one file is being treated.
+;;  `dired-do-find-regexp', `dired-do-find-regexp-and-replace' -
+;;     Prefix arg lets you act on files other than those marked.
+;;  `dired-do-isearch', `dired-do-isearch-regexp',
+;;     `dired-do-query-replace-regexp', `dired-do-search' -
+;;        Use new `dired-get-marked-files'.
+;;  `dired-insert-subdir-newpos' - If not a descendant, put at eob.
+;;  `dired-insert-subdir-validate' - Do nothing: no restrictions.
+;;  `dired-maybe-insert-subdir' - Go back to subdir line if in listing.
+;;  `dired-handle-overwrite' - Added optional arg FROM, for listing.
+;;  `dired-copy-file(-recursive)', `dired-hardlink', `dired-query',
+;;     `dired-rename-file' - You can list (`l') the files involved.
+;;
+;;
+;;  ***** NOTE: The following functions defined in `dired-x.el' have
+;;              been REDEFINED HERE:
+;;
+;;  `dired-copy-filename-as-kill' -
+;;     Put file names also in var `diredp-last-copied-filenames'.
+;;  `dired-do-find-marked-files' -
+;;     Call `dired-get-marked-files' with original ARG.
+;;     Added optional arg INTERACTIVEP - no error if nil and no files.
+;;  `dired-do-run-mail' - Require confirmation.
+;;  `dired-mark-sexp' - 1. Variable `s' -> `blks'.
+;;                      2. Fixes to `uid' and `gid'.
+;;  `dired-mark-unmarked-files' (Emacs < 24 only) - Emacs 24+ version.
+;;  `dired-simultaneous-find-file' -
+;;     Use separate frames instead of windows if `pop-up-frames' is
+;;     non-nil, or if prefix arg < 0.
+;;
+;;
+;;  ***** NOTE: (Emacs 20 only) The following variable defined in
+;;        `dired.el' has been REDEFINED HERE:
+;;
+;;  `dired-move-to-filename-regexp' - Recognize file size in k etc.
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; Change Log:
+;;
+;; 2019/07/03 dadams
+;;     dired-mark-unmarked-files: Apply fix for Emacs bug #27465.
+;;     diredp-mark-if, diredp-mark-sexp(-recursive), dired-mark-unmarked-files:
+;;       Use char-after, not diredp-looking-at-p.
+;; 2019/07/19 dadams
+;;     diredp-change-marks-recursive, diredp-unmark-all-files-recursive,
+;;       diredp-mark-files(-containing)-regexp-recursive, diredp-mark-sexp-recursive, diredp-mark-recursive-1:
+;;         Added missing PREDICATE arg in calls to diredp-get-subdirs.
+;; 2019/06/25 dadams
+;;     diredp-mark-if, diredp-this-file-(un)marked-p: Use regexp-quote for marker char.
+;; 2019/06/03 dadams
+;;     Removed autoload cookie for diredp-omit-files-regexp - it evaluates dired-omit-files, from dired-x.el.
+;;     Hard-require dired-x.el.  (No reason not to.)  Removed fboundp guards for it.
+;; 2019/04/22 dadams
+;;     Added diredp-move-files-named-in-kill-ring.  Bound to C-w.
+;; 2019/04/21 dadams
+;;     Added redefinitions of dired-do-find-regexp, dired-do-find-regexp-and-replace.
+;;     diredp-multiple-search-menu: Added "Using TAGS Table" for dired-do-(query-replace|search).
+;; 2019/04/20 dadams
+;;     Added:
+;;       diredp-map-over-marks-and-report, diredp-do-emacs-command, diredp-invoke-emacs-command,
+;;       diredp-read-command, diredp-do-lisp-sexp, diredp-eval-lisp-sexp, diredp-report-file-result,
+;;       diredp-do-report-echo-limit, diredp-fewer-than-N-files-p, diredp-fewer-than-echo-limit-files-p,
+;;       diredp-apply-function-to-file-name, diredp-invoke-function-no-args, diredp-list-file-attributes.
+;;     diredp-do-apply-function: Redefine to use diredp-map-over-marks-and-report.
+;;     diredp-dired-plus-description, diredp-menu-bar-multiple-menu:
+;;       Added diredp-do-emacs-command, diredp-do-lisp-sexp.
+;;     diredp-menu-bar-multiple-menu: Reordered items.
+;;     diredp-list-marked, diredp-*-recursive, diredp-describe-marked-autofiles:
+;;       Use diredp-list-file-attributes for DETAILS arg interactively.
+;;     diredp-yank-files, dired-query: Use diredp-list-file-attributes, not harcoded list (5 8).
+;;     diredp-set-bookmark-file-bookmark-for-marked-recursive: Corrected interactive spec.
+;; 2019/04/16 dadams
+;;     Added: diredp-delete-if.
+;;     dired-map-over-marks-check: Added &rest argument FUN-ARGS, so FUN can accept arguments.
+;; 2019/04/12 dadams
+;;     dired-get-marked-files: Do not add t to RESULT.  Thx to Jeff Spencer for bug report.
+;;                             If all marked is (t) for some reason reset it to nil, per vanilla Emacs 24+.
+;;     diredp-compressed-extensions: Added .rar, .rev.
+;; 2019/04/10 dadams
+;;     Added diredp-read-expression (forgot it when added diredp-mark-sexp-recursive).
+;;     diredp-mark-sexp-recursive is thus only for Emacs 22+.
+;; 2019/03/20 dadams
+;;     Added option diredp-omit-files-regexp.
+;;     Face diredp-omit-file-name: Added strike-through.
+;;     diredp-font-lock-keywords-1, for face diredp-omit-file-name:
+;;       Move to file name.  Use diredp-omit-files-regexp.  Append * for executable flag.  Highlight whole line.
+;; 2019/03/17 dadams
+;;     diredp-font-lock-keywords-1:
+;;       Use just dired-omit-files as regexp - its components already have ^...$.
+;;       Removed superfluous execute *'s in regexps and superfluous concat for compressed extensions.
+;;     Face diredp-omit-file-name: Removed :strike-through for default value.
+;; 2019/03/16 dadms
+;;     Added face diredp-omit-file-name.
+;;     diredp-font-lock-keywords-1: Use face diredp-omit-file-name for dired-omit-files matches.
+;; 2019/03/15 dadams
+;;     diredp-font-lock-keywords-1: Treat dired-omit-files like dired-omit-extensions.
+;; 2019/01/27 dadams
+;;     Added: diredp-mark-files-containing-regexp-recursive.
+;;              Bound to M-+ % g.  Added to diredp-marks-recursive-menu, diredp-regexp-recursive-menu.
+;; 2019/01/17 dadams
+;;     Added: diredp-mark-sexp-recursive.  Bound to M-+ M-(, M-+ * (.  Added to diredp-marks-recursive-menu.
+;;     dired-query: Use dired-query-alist only when available.
+;;     diredp-move-file: Fix format string in error call.
+;;     diredp-mark-symlinks-recursive: Added missing DETAILS arg for diredp-mark-recursive-1.
+;; 2019/01/01 dadams
+;;     Added: diredp-list-file.
+;;     Added redefinitions of dired-query, dired-handle-overwrite, dired-copy-file(-recursive), dired-rename-file,
+;;           dired-hardlink.
+;;     Added optional arg DETAILS to these functions: diredp-get-(subdirs|files), diredp-y-or-n-files-p,
+;;       diredp-list-(marked|files), diredp-yank-files, diredp-describe-marked-autofiles, plus all functions with
+;;       "recursive" in their name except diredp-get-confirmation-recursive.
+;;       Added optional arg DETAILS.
+;;     diredp-get-(subdirs|files), diredp-y-or-n-files-p, diredp-list-(marked|files), diredp-yank-files, 
+;;       diredp-describe-marked-autofiles:
+;;         Added optional arg DETAILS.
+;;     diredp-list-files: Use dired-list-file, to optionally show details.
+;;     diredp-yank-files: Non-positive prefix arg shows details now.
+;; 2018/12/02 dadams
+;;     dired-mark-pop-up: Work around Emacs 22 bug in dired-pop-to-buffer which can exit in Dired buffer.
+;; 2018/10/17 dadams
+;;     dired-read-dir-and-switches: Removed mention of icicle-file-sort-first-time-p (no longer used in Icicles).
+;; 2018/09/21 dadams
+;;     diredp-image-dired-edit-comment-and-tags, diredp-w32-drives:
+;;       Use pop-to-buffer-same-window, not switch-to-buffer.
+;; 2018/09/14 dadams
+;;     Added: diredp-move-file-dirs, diredp-move-file.
+;; 2018/06/30 dadams
+;;     Added: diredp-delete-if-not.
+;; 2018/06/16 dadams
+;;     Added: diredp-visit-ignore-extensions, diredp-visit-ignore-regexps, diredp-visit-next-file,
+;;            diredp-visit-previous-file, diredp-visit-this-file, diredp-visit-ignore-regexp.
+;;     Bind the commands to C-down, C-up, e.
+;; 2018/03/25 dadams
+;;     Added: diredp-user-error.
+;;     Updated for Emacs 27-pretest-2 change in dired-get-marked-files signature.
+;;       dired-get-marked-files: Added optional arg ERROR-IF-NONE-P.
+;;       diredp-list-marked, diredp-insert-subdirs, dired-do-(i)search(-regexp), dired-do-query-replace-regexp,
+;;         dired-do-find-marked-files, diredp-describe-marked-autofiles:
+;;           Added optional arg INTERACTIVEP.
+;;           Pass non-nil ERROR-IF-NONE-P to dired-get-marked-files when INTERACTIVEP.  (See Emacs bug #30938.)
+;; 2018/03/23 dadams
+;;     Added diredp-mark-if.  Removed: redefinition of dired-mark-if.
+;;       Differences: msg and return value include both number of matches and number of changes.
+;;     Added redefinitions (use diredp-mark-if) of dired-flag-auto-save-files,
+;;           dired-mark-(files-containing-regexp|symlinks|directories|executables).
+;;     Everywhere: Use diredp-mark-if, not dired-mark-if.
+;; 2018/03/03 dadams
+;;     diredp-delete-dups: defalias the symbol, not its symbol-function (dunno why I did the latter).
+;; 2018/02/28 dadams
+;;     Added: diredp-last-copied-filenames, diredp-copy-abs-filenames-as-kill-recursive,
+;;            and redefinition of vanilla diredp-last-copied-filenames.
+;;     diredp-copy-abs-filenames-as-kill: Use diredp-ensure-mode in interactive spec.
+;;     diredp-copy-filename-as-kill-recursive: Update diredp-last-copied-filenames with filenames string.
+;;     diredp-yank-files: Require confirmation for pasting, using diredp-y-or-n-files-p.
+;;                        Get file names from variable diredp-last-copied-filenames, not kill-ring.
+;;                        Added NO-CONFIRM-P arg.
+;;     diredp-ensure-mode: Added doc string.
+;;     diredp-do-grep, diredp-do-grep-recursive: Changed bindings to C-M-G and M-+ C-M-G, due to M-g conflict.
+;; 2018/02/27 dadams
+;;     Added: diredp-copy-abs-filenames-as-kill, diredp-yank-files (aka diredp-paste-files) (bound to C-y).
+;;     diredp-menu-bar-multiple-menu: Added diredp-copy-abs-filenames-as-kill.
+;;     diredp-menu-bar-dir-menu: Added diredp-yank-files.
+;; 2018/01/11 dadams
+;;     diredp-get-files:
+;;       Set IGNORE-MARKS-P to non-nil if nothing marked here.  (It was not getting all if nothing marked.)
+;;     diredp-marked-recursive(-other-window):
+;;       Corrected interactive spec, which was missing nil DIRNAME arg.  Corrected body: use DIRNAME.
+;;     diredp-get-files-for-dir, diredp-do-bookmark-dirs-recursive, diredp-change-marks-recursive,
+;;       diredp-unmark-all-files-recursive, diredp-mark-files-regexp-recursive, diredp-mark-recursive-1,
+;;       diredp-do-delete-recursive:
+;;         Factor out (dired-buffers-for-dir (expand-file-name directory)).
+;; 2018/01/03 dadams
+;;     dired-mark-files-regexp: Corrected doc string wrt prefix args.  Thx to John Mastro.
+;;     diredp-do-grep-recursive: Removed unused optional arg IGNORE-MARKS-P.
+;;     diredp-marked-recursive(-other-window): Moved handling of optional arg from interactive spec to body.
+;; 2018/01/02 dadams
+;;     Added: diredp-flag-auto-save-files-recursive.  Bound to M-+ #.
+;;     diredp-get-file-or-dir-name, diredp-marked-here: Doubled backslashes to escape dots.
+;;     diredp-marked-here: Fixed regexp to match only double-dot, not single-dot.
+;;     diredp-flag-auto-save-files-recursive: Updated to include more M-+ keys.
+;;     diredp-marks-recursive-menu: Added diredp-flag-auto-save-files-recursive.
+;; 2017/12/31 dadams
+;;     diredp-get-files-for-dir: Pass non-nil NO-DOT-DOT-P arg to diredp-marked-here.
+;;     dired-get-marked-files: Allow use of FILTER and DISTINGUISH-ONE-MARKED together.
+;;     diredp-marked-here: Added optional arg NO-DOT-DOT-P.
+;;     diredp-change-marks-recursive, diredp-unmark-all-files-recursive: Removed unused vars include-dirs, files.
+;; 2017/12/30 dadams
+;;     Added: diredp-change-marks-recursive, diredp-unmark-all-files-recursive, diredp-unmark-all-marks-recursive.
+;;            Bound to M-+ * c, M-+ M-DEL, M-+ U, respectively.
+;;     diredp-menu-bar-marks-menu: Rename item Change Marks to Change Mark.
+;;     diredp-marks-recursive-menu, diredp-multiple-recursive-menu:
+;;       Added diredp-change-marks-recursive, diredp-unmark-all-(files|marks)-recursive.
+;; 2017/12/21 dadams
+;;     Added: diredp-mark-recursive-1.  Forgot to add it last June.
+;; 2017/12/17 dadams
+;;     Removed: diredp-display-graphic-p.
+;;     Do not use diredp-display-graphic-p to allow binding diredp-bind-problematic-terminal-keys by default.
+;; 2017/11/25 dadams
+;;     diredp-nb-marked-in-mode-name: Wrap last :eval sexp in save-excursion.
+;;                                    Protect Call dired-current-directory only when dired-subdir-alist.
+;; 2017/10/23 dadams
+;;     Added: diredp-count-.-and-..-flag, diredp--reuse-dir-buffer-helper.
+;;     Removed: diredp-mouse-find-file.
+;;     diredp-find-file-reuse-dir-buffer, diredp-mouse-find-file-reuse-dir-buffer,
+;;       diredp-up-directory-reuse-dir-buffer:
+;;         Use diredp--reuse-dir-buffer-helper.
+;;     diredp-find-file-reuse-dir-buffer: Changed logic: do find-alternate-file only if target is a dir not in
+;;                                        Dired and current Dired buffer is in only this window.
+;;     diredp-mouse-find-file-reuse-dir-buffer: Added optional args FIND-FILE-FUNC and  FIND-DIR-FUNC.
+;;     diredp-up-directory, diredp-up-directory-reuse-dir-buffer: Pass OTHER-WINDOW arg to diredp-w32-drives.
+;;     diredp-nb-marked-in-mode-name: Show also number of lines in current listing, and listing-relative lineno,
+;;                                    respecting diredp-count-.-and-..-flag.
+;;     diredp-find-a-file*: Added autoload cookies.
+;; 2017/08/18 dadams
+;;     Fixed emacswiki URLs everywhere.  They changed the locations and changed http to https.
+;; 2017/06/30 dadams
+;;     Added: diredp-bind-problematic-terminal-keys, diredp-display-graphic-p.
+;;     Guard bindings of problematic keys with diredp-display-graphic-p & diredp-bind-problematic-terminal-keys.
+;;     Documented problematic keys for terminal mode in commentary.
+;; 2017/06/23 dadams
+;;     Added: diredp-read-regexp (removed alias to read-regexp), diredp-marks-recursive-menu,
+;;       diredp-mark-executables-recursive (bound to M-+ * *),
+;;       diredp-mark-directories-recursive (bound to M-+ * /),
+;;       diredp-mark-extension-recursive (bound to M-+ * .),
+;;       diredp-mark-autofiles-recursive (bound to M-+ * B),
+;;       diredp-mark-executables-recursive (bound to M-+ * *),
+;;       diredp-mark-directories-recursive (bound to M-+ * /),
+;;       diredp-mark-symlinks-recursive (bound to M-+ * @),
+;;     Bind diredp-mark-autofiles to * B.
+;;     diredp-marked-here: Bind dired-marker-char to ?*.
+;;     diredp-mark-files-regexp-recursive: Better msgs - show total count.
+;;     Everywhere: Use diredp-looking-at, not looking-at.  Use diredp-read-regexp, not dired-read-regexp.
+;; 2017/05/30 dadams
+;;     Fixed typo: direp--set-up-font-locking -> diredp--set-up-font-locking.
+;; 2017/05/22 dadams
+;;     Added: direp--set-up-font-locking.
+;;     Use direp--set-up-font-locking instead of lambda in dired-mode-hook.
+;; 2017/04/09 dadams
+;;     Version 2017.04.09.
+;;     Added: diredp-multiple-move-copy-link-menu, diredp-multiple-rename-menu, diredp-multiple-dired-menu,
+;;            diredp-multiple-omit-menu, diredp-multiple-delete-menu, diredp-single-bookmarks-menu,
+;;            diredp-single-encryption-menu, diredp-single-image-menu, diredp-single-open-menu,
+;;            diredp-single-move-copy-link-menu, diredp-single-rename-menu.
+;;            Moved single menu items there.
+;;     Renamed: diredp-menu-bar-encryption-menu        to diredp-multiple-encryption-menu,
+;;              diredp-menu-bar-mark-menu              to diredp-menu-bar-marks-menu,
+;;              diredp-menu-bar-operate-menu           to diredp-menu-bar-multiple-menu,
+;;              diredp-menu-bar-operate-bookmarks-menu to diredp-multiple-bookmarks-menu,
+;;              diredp-menu-bar-operate-recursive-menu to diredp-multiple-recursive-menu,
+;;              diredp-menu-bar-operate-search-menu    to diredp-multiple-search-menu,
+;;              diredp-menu-bar-images-menu            to diredp-multiple-images-menu,
+;;              diredp-menu-bar-images-recursive-menu  to diredp-images-recursive-menu,
+;;              diredp-menu-bar-immediate-menu         to diredp-menu-bar-single-menu,
+;;              diredp-menu-bar-regexp-recursive-menu  to diredp-regexp-recursive-menu,
+;;              diredp-menu-bar-subdir-menu            to diredp-menu-bar-dir-menu.
+;;     Added dired-do-rename to diredp-multiple-rename-menu.
+;;     diredp-nonempty-region-p: Ensure (mark) also.
+;; 2017/03/30 dadams
+;;     Moved key bindings to end of file.  Moved defgroup before defcustoms.
+;;     Bind dired-multiple-w32-browser to C-M-RET, diredp-multiple-w32-browser-recursive to M-+ C-M-RET.
+;; 2017/03/29 dadams
+;;     Added: diredp-dired-union-other-window, diredp-add-to-dired-buffer-other-window.
+;;     diredp-dired-union-1: Added optional arg OTHERWIN.
+;;     diredp-dired-plus-description: Updated doc string.
+;;     diredp-menu-bar-subdir-menu: Added diredp-dired-for-files.
+;;     Bind diredp-w32-drives to :/, diredp-dired-inserted-subdirs to C-M-i.
+;;     Bind diredp-add-to-dired-buffer to C-x D A (not C-x E), diredp-dired-union to C-x D U (not C-x D),
+;;          diredp-fileset to C-x D S (not C-M-f), diredp-dired-recent-dirs to C-x D R (not C-x R),
+;;          diredp-dired-for-files to C-x D F, plus other-window versions.
+;; 2017/03/24 dadams
+;;     Added defalias for dired-read-regexp.
+;;     diredp-mouse-3-menu: Removed second arg to mouse-save-then-kill.
+;; 2017/02/20 dadams
+;;     diredp-(next|previous)-line, diredp-(next|prev)-dirline, diredp-(next|prev)-subdir:
+;;       Update interactive spec to use (in effect) ^p for prefix arg (for shift-select-mode).
+;; 2017/01/12 dadams
+;;     dired-mark-files-regexp: Swapped prefix-arg behavior for relative and absolute name matching.
+;; 2017/01/01 dadams
+;;     dired-mark-files-regexp: Fix to prompt for no prefix arg.
+;; 2016/12/28 dadams
+;;     dired-mark-files-regexp: Corrected prompt string for Mark/UNmark.  Thx to Tino Calancha.
+;; 2016/11/20 dadams
+;;     diredp-menu-bar-operate-search-menu: Added dired-do-find-regexp and dired-do-find-regexp-and-replace.
+;;     Bind dired-do-search to M-a and dired-do-query(-replace)-regexp to M-q.
+;;     diredp-dired-plus-description: Added dired-do-find-regexp and dired-do-find-regexp-and-replace.
+;; 2016/10/12 dadams
+;;     diredp-compressed-extensions: Added extensions .xz and .lzma.  Thx to xuhdev (https://www.topbug.net/).
+;; 2016/09/20 dadams
+;;     Emacs 25.1: Bind M-z to dired-do-compress-to (replaces c).  (Emacs bug #24484.)
+;;                 diredp-menu-bar-operate-menu: Added item: Compress to (dired-do-compress-to).
+;; 2016/09/15 dadams
+;;     Added: diredp-max-frames.
+;;     dired-do-find-marked-files: Pass non-nil ARG to dired-get-marked-files only if it is a cons.
+;;                                 Clarified doc string wrt prefix arg.
+;;     dired-simultaneous-find-file: Require confirmation if more files than diredp-max-frames.
+;;     diredp-do-find-marked-files-recursive: Clarified doc string wrt prefix arg.
+;;     Thx to Tino Calancha.
+;; 2016/09/14 dadams
+;;     diredp-dired-plus-description: Added entry for dired-hide-details-mode - ( key.
+;; 2016/08/26 dadams
+;;     diredp-y-or-n-files-p: pop-to-buffer only when the buffer was created.
+;;                            Update wrt vanilla (scroll actions).
+;;     diredp-do-query-replace-regexp-recursive:
+;;       Call diredp-get-confirmation-recursive.
+;;       Use only diredp-get-files, not dired-get-marked-files.
+;;       Non-positive prefix arg means DELIMITED.
+;; 2016/08/08 dadams
+;;     diredp-menu-bar-mark-menu:
+;;       Added: dired-mark-files-containing-regexp, dired-mark-sexp, image-dired-mark-tagged-files, 
+;; 2016/05/28 dadams
+;;     diredp-mark-files-regexp-recursive: Use nil for dired-get-filename LOCALP arg.
+;;     dired-mark-files-regexp: Corrected doc string: absolute filename matching by default.
+;; 2016/05/24 dadams
+;;     dired-mark-files-regexp: Added optional arg LOCALP, so can mark/unmark matching different file-name forms.
+;; 2016/05/15 dadams
+;;     Added: diredp-bookmark-menu, diredp-hide/show-menu, diredp-navigate-menu.
+;;     Move insert after revert and rename it to Insert/Move-To This Subdir.  Move create-directory before revert.
+;; 2016/04/29 dadams
+;;     diredp-next-line: Respect goal-column.
+;; 2016/01/24 dadams
+;;     Added: diredp-ensure-bookmark+, diredp-mark-autofiles, diredp-unmark-autofiles,
+;;            diredp-mark/unmark-autofiles, diredp-describe-autofile, diredp-show-metadata,
+;;            diredp-mouse-describe-autofile, diredp-describe-marked-autofiles, diredp-show-metadata-for-marked
+;;     Soft-require help-fns+.el (Emacs 22+) or help+20.el (Emacs 20-21).
+;;     Add to menu-bar menus:
+;;       diredp-(un)mark-autofiles, diredp-describe-autofile, diredp-describe-marked-autofiles.
+;;     diredp-menu-bar-immediate-menu: Add diredp-describe-file only if defined.
+;;     Bind diredp-describe-file to keys only if defined.
+;;     Use diredp-ensure-bookmark+ everywhere, instead of its definition.
+;;     diredp(-mouse)-describe-file: Define only if describe-file is defined.  Removed raising error if not.
+;;     diredp-mouse-3-menu: Use  diredp-describe-autofile if diredp-describe-file is not defined.
+;;     diredp-dired-plus-description: Add diredp-mouse-describe-autofile, when bound.
+;;     dired-mark-if: Do not count non-changes.
+;; 2015/12/15 dadams
+;;     diredp-font-lock-keywords-1: Follow # with optional [/ ], for face diredp-number.  Thx to Tino Calancha.
+;; 2015/11/10 dadams
+;;     diredp-fileset(-other-window): Separate error msgs for unloaded filesets.el and empty filesets-data.
+;; 2015/10/02 dadams
+;;     dired-mark-sexp: Like vanilla, skip extended attributes marker before setting NLINK.  Thx to Tino Calancha.
+;; 2015/09/29 dadams
+;;     diredp-delete-this-file: Redefined to use delete-file instead of dired-do-delete.
+;; 2015/09/07 dadams
+;;     diredp-font-lock-keywords-1: Do not test diredp-ignore-compressed-flag when highlighting file names.
+;;                                  Use separate entries for compressed and non-compressed file names.
+;;                                  Added missing \\| before ignored compressed extensions.
+;; 2015/09/06 dadams
+;;     diredp-compressed-extensions: Added .tgz.  Removed duplicate .gz.
+;;     diredp-font-lock-keywords-1: Use regexp-opt where possible, instead of mapcar regexp-quote.
+;; 2015/09/05 dadams
+;;     Added: diredp-compressed-extensions, diredp-ignore-compressed-flag, diredp-compressed-file-name,
+;;            diredp-dir-name.
+;;     diredp-font-lock-keywords-1:
+;;       Allow spaces in symlink names.  Highlight compressed-file names, if diredp-ignore-compressed-flag.
+;;       Use diredp-compressed-extensions instead of hardcoding extensions.
+;;     Highlight d with diredp-dir-priv (fix).
+;;     Treat l in third column the same as - and d there.
+;;     Highlight whole line for D-flagged files, with face diredp-deletion-file-name.
+;;     Thx to Nick Helm.
+;; 2015/08/30 dadams
+;;     dired-mark-sexp: Updated per Emacs 25 code.
+;; 2015/07/30 dadams
+;;     diredp-fileset(-other-window): Changed key binding from C-x F to C-x C-M-f (conflicted with find-function).
+;; 2015/06/24 dadams
+;;     Added: diredp-parent-dir, diredp-breadcrumbs-in-header-line-mode, diredp-set-header-line-breadcrumbs.
+;; 2015/06/06 dadams
+;;     Added dired-other-(frame|window).
+;;     diredp-font-lock-keywords-1:
+;;       Use dired-re-maybe-mark and dired-re-inode-size for permission matchings and directory names.
+;;     dired(-other-(frame|window)) advice:
+;;       Add interactive spec, to handle arg <= 0 (broken by change to dired-read-dir-and-switches 2015/02/02).
+;;     diredp-dired-for-files: Typo: pass empy string.
+;; 2015/06/05 dadams
+;;     Added: diredp-grepped-files-other-window as alias for diredp-compilation-files-other-window.
+;;     diredp-compilation-files-other-window: Added SWITCHES optional arg (prefix arg).
+;; 2015/06/04 dadams
+;;     diredp-dired-for-files(-other-window):
+;;       Updated to fit change to dired-read-dir-and-switches made 2015/02/02: addition of READ-EXTRA-FILES-P.
+;;       Use prefix arg to prompt for switches.
+;; 2015/05/31 dadams
+;;     Added: diredp-image-show-this-file,diredp-image-show-this-file-use-frame-flag, diredp-get-image-filename.
+;;     image-dired-dired-toggle-marked-thumbs, diredp-menu-bar-immediate-menu [image]:
+;;       Use diredp-get-image-filename.
+;;     Bound diredp-image-show-this-file to C-t I.
+;;     diredp-menu-bar-immediate-image-menu: Added diredp-image-show-this-file and dired-find-file.
+;;     Added autoload cookies for image commands.
+;; 2015/04/16 dadams
+;;     Added: diredp-do-apply-function, diredp-do-apply-function-recursive.  Added to menus.  Bind to @, M-+ @.
+;;     dired-do-query-replace-regexp: Handle nil ARG properly.
+;; 2015/03/26 dadams
+;;     Added: redefinitions of dired-do-isearch, dired-do-isearch-regexp, dired-do-query-replace-regexp,
+;;            dired-do-search, to handle multi-C-u.
+;;     Added: dired-nondirectory-p (Emacs 20), diredp-refontify-buffer.
+;;     dired-do-byte-compile, dired-do-load, : Corrected interactive spec, to treat more than two C-u as two.
+;;     dired-after-readin-hook: Add diredp-refontify-buffer.  In particular, this ensures that reverting Dired
+;;       for a listing of explicit file names gets refontified.  (Just turn-on-font-lock does not refontify.)
+;; 2015/03/24 dadams
+;;     Added: diredp-compilation-files-other-window, diredp-file-for-compilation-hit-at-point.
+;; 2015/03/06 dadams
+;;     Renamed: diredp-menu-bar-recursive-marked-menu to diredp-menu-bar-operate-recursive-menu.
+;;     Added: diredp-do-delete-recursive: M-+ D.  Added to diredp-menu-bar-operate-recursive-menu.
+;;     Added: diredp-mark-files-regexp-recursive: M-+ % m.  Added to diredp-menu-bar-regexp-recursive-menu.
+;; 2015/03/04 dadams
+;;     Added: diredp-dwim-any-frame-flag, (redefinition of) dired-dwim-target-directory.
+;; 2015/02/22 dadams
+;;     diredp-bookmark: Corrected for use without Bookmark+ - bookmark-store signature.
+;;                      Pass correct value to bmkp-autofile-set for its MSG-P arg.
+;;     diredp-mouse-do-bookmark: Do not pass non-nil NO-MSG-P arg to diredp-bookmark.
+;; 2015/02/03 dadams
+;;     Added: diredp-add-to-this-dired-buffer.
+;;     Removed: diredp-add-to-dired-buffer-other-window, diredp-dired-union-other-window.
+;;     diredp-dired-union-1: Removed optional arg OTHER-WINDOW-P.
+;;     diredp-menu-bar-subdir-menu: Added diredp-add-to-this-dired-buffer.
+;;     dired-read-dir-and-switches, diredp-dired-union-interactive-spec:
+;;       Added optional arg DIRED-BUFFER.  If nil, use current buffer name as default when reading buffer name.
+;; 2015/02/02 dadams
+;;     Added: diredp-add-to-dired-buffer, diredp-add-to-dired-buffer-other-window, diredp-set-union,
+;;            diredp-existing-dired-buffer-p.
+;;     Bind diredp-add-to-dired-buffer(-other-window) globally to C-x E, C-x 4 E.
+;;     diredp-dired-union(-other-window):
+;;       Added args DIRNAME and EXTRA.  Pass them to diredp-dired-union-1.  Moved "UNION" to *-interactive-spec.
+;;       Pass values for new args NO-DIRED-BUFS and READ-EXTRA-FILES-P to diredp-dired-union-interactive-spec.
+;;     diredp-dired-union-interactive-spec:
+;;       Added args NO-DIRED-BUFS and READ-EXTRA-FILES-P.  Use (updated) dired-read-dir-and-switches.
+;;       Delete dead buffers from dired-buffers.  Remove DIRNAME buffer as candidate.
+;;       Apply expand-file-name to default-directory.  Return list of DIRNAME BUFS SWITCHES EXTRA-FILES.
+;;     diredp-dired-union-1:
+;;       Added args DIRED-NAME and EXTRA.
+;;       For existing Dired buffer whose dired-directory is a cons:
+;;         Include its current listing.  Replace buffer with new one of same name, after deleting its window.
+;;     dired-read-dir-and-switches:
+;;       Added arg READ-EXTRA-FILES-P.
+;;       If chosen Dired buffer exists and is an ordinary listing then start out with its directory-files.
+;;     diredp-dired-union, diredp-fileset, diredp-dired-recent-dirs: Bind globally, not just in Dired mode.
+;; 2015/01/30 dadams
+;;     dired-read-dir-and-switches: Remove any killed buffers from dired-buffers, before using for completion.
+;; 2014/10/25 dadams
+;;     diredp-dired-union-interactive-spec: Typo: quote buffer-name-history.  Pass other-window STRING.
+;;     diredp-dired-union-other-window: Pass other-window STRING.
+;;     dired-read-dir-and-switches: Include STRING for reading buffer name also.
+;;     dired (defadvice): Corrected doc string for prefix arg >= and <= 0.
+;; 2014/10/15 dadams
+;;     diredp-hide-details-initially-flag:
+;;       Added :set, to ensure that diredp-hide-details-last-state is kept up-to-date.
+;; 2014/09/28 dadams
+;;     Added: diredp-recent-dirs, diredp-read-include/exclude, diredp-root-directory-p, diredp-remove-if.
+;;     diredp-dired-recent-dirs(-other-window): Added optional ARG.  Use diredp-recent-dirs.  Pass SWITCHES.
+;;     dired-read-dir-and-switches: Use diredp-root-directory-p.
+;;     Bound diredp-dired-recent-dirs(-other-window) to C-x R and C-x 4 R.
+;;     Added diredp-dired-recent-dirs to Dir menu.
+;; 2014/09/27 dadams
+;;     Added: diredp-dired-recent-dirs, diredp-dired-recent-dirs-other-window, diredp-delete-dups.
+;; 2014/09/26 dadams
+;;     diredp-mouseover-help: dired-get-filename etc. has to be inside the save-excursion.
+;;     diredp-image-dired-create-thumb: Added FILE arg.  Use numeric prefix arg as the new thumbnail size.
+;; 2014/09/22 dadams
+;;     diredp-mouse-3-menu: Do not place overlay unless on a file/dir name (i.e., dired-get-filename).
+;; 2014/09/15 dadams
+;;     dired-read-dir-and-switches: Made it (thus dired too) an Icicles multi-command.
+;;     dired (defadvice): Added doc about using it with Icicles.
+;; 2014/09/14 dadams
+;;     Added: diredp-kill-this-tree.
+;;     Removed: diredp-dired-files(-other-window), diredp-dired-files-interactive-spec.
+;;     dired-read-dir-and-switches:
+;;       Based on diredp-dired-files-interactive-spec implementation now, but:
+;;        Moved unwind-protect outside call to list.  completing-read, not read-string, for DIRBUF.
+;;        Do not allow inclusion of root directories.  Protected icicle-sort-comparer with boundp.
+;;     dired-insert-subdir-validate: Make it a no-op.
+;;     dired advice (doc string): Mention wildcards, Icicles.
+;;     diredp-dired-for-files(-other-window):
+;;       Use dired-read-dir-and-switches and dired, not diredp-dired-files-interactive-spec and
+;;       diredp-dired-files.
+;;     diredp-menu-bar-immediate-menu, diredp-mouse-3-menu:
+;;       Added item for diredp-kill-this-tree.
+;;       Corrected visible condition: expand-file-name, so ~/ compares with its expansion.
+;;     diredp-font-lock-keywords-1: Include period (.) for diredp(-compressed)-file-suffix.
+;; 2014/09/09 dadams
+;;     Added: dired-read-dir-and-switches.
+;;     Advise dired, for doc string.
+;;     dired-get-filename: Hack for Emacs 20-22, to expand ~/...
+;; 2014/09/07 dadams
+;;     Added: redefinitions of dired-insert-subdir-newpos, dired-insert-subdir-validate.
+;; 2014/07/26 dadams
+;;     diredp-do-find-marked-files-recursive:
+;;       Only ARG >= 0 ignores marks now.  And ARG <= 0 means find but do not display.
+;; 2014/07/13 dadams
+;;     diredp-mouseover-help: Wrap (goto-char pos) in save-excursion (Emacs bug #18011).
+;; 2014/07/12 dadams
+;;     Faces diredp(-tagged)-autofile-name: Made paler/darker (less saturated).
+;;     Moved diredp-highlight-autofiles before diredp-highlight-autofiles-mode, so will be
+;;      defined for first revert.
+;;     diredp-mouse-3-menu: Renamed items Tag, Untag to Add Tags, Remove Tags.
+;;     diredp-dired-plus-description: Updated.
+;; 2014/07/11 dadams
+;;     Added: diredp-highlight-autofiles-mode, diredp-highlight-autofiles,
+;;            diredp-autofile-name, diredp-tagged-autofile-name.
+;;     Soft-require bookmark+.el.  Soft-require highlight.el if bookmark+.el is provided.
+;;     diredp-menu-bar-subdir-menu: Added item Toggle Autofile Highlighting.
+;;     Removed unused face: diredp-display-msg.
+;; 2014/06/29 dadams
+;;     dired-get-marked-files, diredp-internal-do-deletions:
+;;       Remove nils from dired-map-over-marks result.
+;; 2014/05/28 dadams
+;;     diredp-mode-line-marked: Use DarkViolet for both light and dark background modes.
+;; 2014/05/23 dadams
+;;     Added: diredp-with-help-window.
+;;     diredp-list-files, diredp-dired-plus-help:
+;;       Use diredp-with-help-window, not with-output-to-temp-buffer.  See Emacs bug #17109.
+;; 2014/05/06 dadams
+;;     Added: diredp-image-dired-required-msg, diredp-list-files-map,
+;;            diredp-find-line-file-other-window, diredp-mouse-find-line-file-other-window,
+;;            image-dired-dired-toggle-marked-thumbs, diredp-list-marked.
+;;     Soft-require image-dired.el and image-file.el.
+;;     diredp-image-dired-create-thumb: Define unconditionally.
+;;     image-dired-dired-insert-marked-thumbs, diredp-image-dired-comment-file, 
+;;       diredp-image-dired-tag-file, diredp-image-dired-delete-tag,
+;;       diredp-image-dired-display-thumb, diredp-image-dired-copy-with-exif-name,
+;;       diredp-image-dired-edit-comment-and-tags, diredp-do-display-images:
+;;         Define unconditionally and raise error if no image-(dired|file).el.
+;;     diredp-menu-bar-immediate-image-menu, diredp-menu-bar-images-menu,
+;;       diredp-menu-bar-images-recursive-menu, image-dired-mark-tagged-files:
+;;         Define unconditionally and use :enable.
+;;     diredp-menu-bar-images-menu, diredp-menu-bar-images-recursive-menu:
+;;       Add defalias so can use menu-item with :enable.
+;;     diredp-list-files: Add properties mouse-face, keymap, and help-echo.
+;;     diredp-mouseover-help: Make it work also for diredp-list-files listings.
+;;     image-dired-dired-insert-marked-thumbs: Add autoload cookie.
+;;     dired-get-marked-files: Pass non-nil 2nd arg to dired-get-filename, to include . and .. .
+;;     Bind diredp-list-marked to C-M-l and diredp-list-marked-recursive to M+ C-M-l.
+;;     diredp-insert-subdirs: Exclude . and .., as dired-get-marked-files can now include them.
+;;     diredp-menu-bar-operate-menu: Add diredp-menu-bar-operate-menu to menu.
+;;     diredp-dired-plus-description: Mention diredp-list-marked*.
+;; 2014/05/03 dadams
+;;     dired-switches-escape-p: Use dired-switches-check if available, based on bug #17218 fix.
+;; 2014/04/25 dadams
+;;     diredp-image-dired-create-thumb:
+;;       Do not call diredp-image-dired-create-thumb twice: reuse THUMB-NAME.
+;; 2014/04/24 dadams
+;;     Added: diredp-mouseover-help, diredp-auto-focus-frame-for-thumbnail-tooltip-flag,
+;;            diredp-image-preview-in-tooltip.
+;;     dired-insert-set-properties: Show image-file preview in tooltip.
+;;     diredp-image-dired-create-thumb: Return thumbnail file name or nil.
+;; 2014/04/23 dadams
+;;     Added: diredp-looking-at-p.
+;;     dired-insert-set-properties: Applied fix for bug #17228.
+;; 2014/04/05 dadams
+;;     Added: diredp-do-bookmark-dirs-recursive.
+;;            Renamed from bmkp-create-dired-bookmarks-recursive in bookmark+-1.el (removed).
+;;       Bound to M-B (aka M-S-b).
+;;       Added to menus *-subdir-menu, *-operate-bookmarks-menu, *-bookmarks-menu.
+;;     diredp-get-confirmation-recursive: Added optional TYPE arg.
+;;     diredp-insert-subdirs-recursive: Call diredp-get-confirmation-recursive with TYPE arg.
+;; 2014/02/16 dadams
+;;     dired-pop-to-buffer: Do not redefine for Emacs > 24.1.
+;;     dired-mark-pop-up: Updated doc string.
+;; 2014/02/13 dadams
+;;     Added: diredp-fileset-other-window, diredp-fileset-1.
+;;     diredp-fileset: Use diredp-fileset-1.
+;;     Bind diredp-dired-union(-other-window) to C-x D, C-x 4 D,
+;;          diredp-fileset(-other-window)     to C-x F, C-x 4 F.
+;;     Use diredp-fileset-other-window, not diredp-fileset, in menu.
+;; 2014/02/03 dadams
+;;     Added: diredp-hide-subdir-nomove.
+;;     Added: dired-goto-file for Emacs 24+ - open hidden parent dir, so can goto destination.
+;;     Replace bindings for dired-hide-subdir with diredp-hide-subdir-nomove.
+;;     Bind dired-hide-subdir to M-$ (not $).
+;; 2014/02/02 dadams
+;;     dired-goto-file: Redefine only for Emacs < 24. 
+;; 2014/01/15 dadams
+;;     Bind diredp-toggle-find-file-reuse-dir to C-M-R (aka C-M-S-r).
+;; 2014/01/05 dadams
+;;     Bind dired-omit-mode (aka dired-omit-toggle) to C-x M-o.
+;; 2013/12/05 dadams
+;;     diredp-do-grep-1: Call grep-default-command with arg, if grep+.el is loaded.
+;; 2013/11/05 dadams
+;;     Added: diredp-get-subdirs.
+;;     diredp-get-files, diredp-get-files-for-dir, diredp-marked-here: Added optional arg NIL-IF-NONE-P.
+;;     diredp-get-files: Pass INCLUDE-DIRS-P to diredp-files-within.
+;; 2013/11/04 dadams
+;;     Renamed Bookmarks submenus to Bookmark.
+;;     Added Bookmark Dired Buffer to Dir menu.
+;;     Alias dired-toggle-marks to dired-do-toggle for Emacs 20, instead of backwards for others.
+;;     Use dired-toggle-marks everywhere instead of dired-do-toggle.
+;; 2013/11/03 dadams
+;;     Created submenus of Multiple menu: Bookmarks, Search.
+;;     Created submenus of Multiple > Marked Here and Below menu:
+;;       Images, Encryption, Search, Bookmarks.
+;;     Reordered menus.
+;; 2013/09/26 dadams
+;;     diredp-next-line: Use let*, so line-move sees let bindings.
+;; 2013/08/11 dadams
+;;     diredp-dired-files-interactive-spec:
+;;       Protect icicle-file-sort with boundp.  Thx to Vladimir Lomov.
+;; 2013/08/06 dadams
+;;     diredp-display-image,diredp-menu-bar-immediate-image-menu (:enable's):
+;;       Protect diredp-string-match-p from nil argument.
+;; 2013/07/24 dadams
+;;     Added: diredp-nonempty-region-p.  Use everywhere, in place of its definition.
+;; 2013/07/21 dadams
+;;     Added: diredp-image-dired-(comment-file|copy-with-exif-name|(create|display)-thumb|
+;;                                delete-tag|edit-comment-and-tags|tag-file),
+;;            diredp-string-match-p, diredp-menu-bar-immediate-image-menu.
+;;     Put this-file image commands on new menu diredp-menu-bar-immediate-image-menu.
+;;     diredp-menu-bar-images-menu: Added diredp-do-display-images.
+;;     Use diredp-string-match-p instead of string-match where appropriate.
+;;     diredp-find-a-file-read-args: Removed #' from lambda.
+;; 2013/07/19 dadams
+;;     Added redefinition of dired-hide-details-mode.
+;;     Added: diredp-hide-details-propagate-flag, diredp-hide-details-initially-flag,
+;;            diredp-hide-details-last-state, diredp-hide-details-toggled,
+;;            diredp-hide-details-if-dired, global-dired-hide-details-mode,
+;;            diredp-fit-frame-unless-buffer-narrowed, diredp-hide/show-details,
+;;            diredp-do-display-images, diredp-display-image.
+;;     On dired-after-readin-hook: diredp-hide/show-details.
+;;     On dired-hide-details-mode-hook: diredp-fit-frame-unless-buffer-narrowed.
+;;     diredp-maplist: Use diredp-maplist, not maplist, in recursive call.
+;;     diredp-next-line: Added bobp test for negative ARG.
+;;                       Emacs 20 line-move returns nil, so use (progn ... t).
+;;     Soft-require autofit-frame.el.
+;; 2013/07/18 dadams
+;;     diredp-next-line: Protect visible-p with fboundp for Emacs 20.
+;; 2013/07/17 dadams
+;;     Added: diredp-menu-bar-encryption-menu, diredp-menu-bar-images-menu,
+;;            diredp-menu-bar-immediate-encryption-menu,
+;;            diredp-(decrypt|verify|sign|encrypt)-this-file.
+;;     Added diredp-(decrypt|verify|sign|encrypt)-this-file to *-immediate-encryption-menu.
+;;     Moved encryption and image-dired items to the new Multiple submenus from Multiple menu.
+;; 2013/07/15 dadams
+;;     Added: diredp-async-shell-command-this-file, diredp-do-async-shell-command-recursive.
+;;            Added them to menus.  Bind diredp-do-async-shell-command-recursive to M-+ &.
+;;     diredp-menu-bar-mark-menu, diredp-dired-plus-description: Added dired-mark-omitted.
+;;     diredp-menu-bar-subdir-menu: Added dired-omit-mode, dired-hide-details-mode.
+;;     diredp-menu-bar-regexp-menu: Added image-dired-mark-tagged-files.
+;;     diredp-menu-bar-subdir-menu: Added dired-hide-details-mode.
+;;     diredp-shell-command-this-file: Corrected: provide file list to dired-do-shell-command.
+;; 2013/07/13 dadams
+;;     diredp-font-lock-keywords-1:
+;;       Ensure diredp-dir-priv is not used for directory header of d:/... (Windows drive name).
+;;     dired-insert-directory:
+;;       Update wrt Emacs 24.4: Do dired-insert-set-properties last; use saved CONTENT-POINT.
+;;     dired-insert-set-properties: Updated for Emacs 24.4, for dired-hide-details-mode.
+;;     Add frame-fitting to dired-hide-details-mode-hook.
+;;     dired-mouse-find-file(-other-window): Error msg if click off a file name.
+;; 2013/07/12 dadams
+;;     Added: diredp-wrap-around-flag, diredp-(next|previous)-(subdir|(dir)line). 
+;;     Renamed dired-up-directory to diredp-up-directory.
+;;     Replaced vanilla commands by these new commands everywhere.
+;; 2013/07/11 dadams
+;;     Added: diredp-up-directory-reuse-dir-buffer.
+;;     diredp-make-find-file-keys(-not)-reuse-dirs: Added diredp-up-directory-reuse-dir-buffer.
+;; 2013/02/06 dadams
+;;     dired-mark-pop-up: goto point-min, so show start of file list.  Thx to Michael Heerdegen.
+;; 2013/01/28 dadams
+;;     Added redefinition of dired-do-run-mail.  Fixes Emacs bug #13561.
+;; 2012/12/18 dadams
+;;     diredp-ediff: Better default for FILE2.  Thx to Michael Heerdegen.
+;;     Require subr-21.el for Emacs 20.
+;; 2012/11/17 dadams
+;;     Added: derived-mode-p (for Emacs < 22), diredp-ensure-mode.
+;;     Use diredp-ensure-mode everywhere for mode, so compatible with Sunrise Commander etc.
+;; 2012/11/01 dadams
+;;     Do not require ediff.el.  It is required in diredp-ediff itself.
+;; 2012/10/06 dadams
+;;     Added: minibuffer-with-setup-hook for code byte-compiled using Emacs < 22.
+;; 2012/09/28 dadams
+;;     Moved dired-*w32* bindings after normal mouse bindings, so they override them.
+;; 2012/09/05 dadams
+;;     diredp-(rename|copy|(rel)symlink|hardlink)-this-file: Bind use-file-dialog to nil.
+;; 2012/08/26 dadams
+;;     Set font-lock-defaults to a 3-element list, so it works with font-menus(-da).el.
+;; 2012/08/25 dadams
+;;     Added: redefinition of dired-pop-to-buffer (fix for bug #12281).
+;;     dired-mark-pop-up: If buffer is shown in a separate frame, do not show menu bar.
+;; 2012/07/10 dadams
+;;     Removed unneeded substitute-key-definition for (next|previous)-line.
+;; 2012/07/09 dadams
+;;     Added redefinition of dired-mark-files-regexp: Push REGEXP onto regexp-search-ring.
+;; 2012/06/21 dadams
+;;     diredp-nb-marked-in-mode-name:
+;;       Add marker numbers regardless of name match.
+;;       Use text property dired+-mode-name to tell whether mode-name was already changed.
+;; 2012/06/20 dadams
+;;     Added: diredp-nb-marked-in-mode-name, diredp-mode-line-(flagged|marked).  Added to hooks.
+;;     Thx to Michael Heerdegen.
+;; 2012/06/14 dadams
+;;     dired-mark-pop-up: Wrap save-excursion around window/frame deletion.
+;;     dired-do-redisplay: Updated wrt Emacs 23: bind, (then run) dired-after-readin-hook.
+;;     diredp-y-or-n-files-p: Corrected construction of prompt wrt final SPC.
+;; 2012/06/13 dadams
+;;     dired-buffers-for-dir: Updated wrt Emacs 23:
+;;       If dired-directory is a list then expand FILE in DIR & check whether in cdr of list.
+;;     diredp-get-files-for-dir, diredp-files-within-1, diredp-insert-as-subdir:
+;;       Expand dir name before passing it to dired-buffers-for-dir.
+;; 2012/06/05 dadams
+;;     MS Windows: Just do not define commands that are inappropriate for Windows (instead of
+;;       defining them to raise an error or making them invisible in menus).
+;; 2012/06/02 dadams
+;;     Added: diredp-do-(print|encrypt|decrypt|sign|verify)-recursive.  Menus.  Keys.
+;;     diredp-do-move-recursive: Corrected to use dired-rename-file, not dired-copy-file.
+;; 2012/05/30 dadams
+;;     diredp-insert-as-subdir: Added optional arg IN-DIRED-NOW-P.  Pick up markings & switches
+;;                              from sole Dired buffer for CHILD if not in Dired now.
+;; 2012/05/29 dadams
+;;     Added: diredp-do-(chxxx|chgrp|chown|touch)-recursive, diredp-touch-this-file,
+;;       diredp-menu-bar-(immediate|operate)-bookmarks-menu.  Added to menus.  Bound to keys.
+;;     Factored bookmark stuff into Bookmark(s) submenus.
+;;     diredp-menu-bar-immediate-menu: Added dired-kill-subdir, [goto-subdir].
+;;     diredp-dired-this-subdir, dired-maybe-insert-subdir: Corrected :visible/enable.
+;;     diredp-dired-inserted-subdirs: Do dired-(remember-marks|mark-remembered) in this-buff.
+;;     diredp-mouse-3-menu:
+;;       Do not use save-excursion, because some commands move point on purpose.  Just return to
+;;         original point unless command intends to MOVEP.
+;;       Added to menu dired-maybe-insert-subdir (two entries), dired-kill-subdir.
+;;       Use *-this-file*, not *-do-*: copy|symlink|shell-command|grep|load (don't use :keys).
+;; 2012/05/26 dadams
+;;     diredp-dired-inserted-subdirs, diredp-insert-as-subdir:
+;;       Preserve markings and switches in target buffer.
+;;     dired-mark-pop-up: Use unwind-protect.  Bury buffer too.
+;;     diredp-do-chmod-recursive: Use only 5 args if < Emacs 23.
+;; 2012/05/25 dadams
+;;     Added: diredp-insert-as-subdir, diredp-ancestor-dirs, diredp-maplist,
+;;            diredp-do-redisplay-recursive, diredp-do-chmod-recursive.
+;;            Bound diredp-do-chmod-recursive. to M-+ M and added to menu.
+;;     diredp-get-files: Added optional arg DONT-ASKP.
+;;     diredp-y-or-n-files-p: Kill list buffer if it was never shown.
+;;     dired-mark-pop-up: ignore error when delete frame/window.
+;; 2012/05/22 dadams
+;;     diredp-get-files(-for-dir): Added optional arg INCLUDE-DIRS-P.
+;;     Added: diredp-insert-subdirs(-recursive), diredp(-this)-dired-inserted-subdir(s).
+;;            Added to menus.  Bound diredp-insert-subdirs* to (M-+) M-i.
+;;     Bound diredp-capitalize(-recursive) to (M-+) %c.
+;;     Added diredp-dired-union-other-window to Dirs menu.
+;;     Updated diredp-dired-plus-description.
+;; 2012/05/19 dadams
+;;     Added: diredp-image-dired-*-recursive, diredp-*link-recursive,
+;;            diredp-do-isearch(-regexp)-recursive, diredp-do-query-replace-regexp-recursive,
+;;            diredp-do-search-recursive, diredp-(capitalize|(up|down)case)-recursive,
+;;            diredp-create-files-non-directory-recursive.
+;;              Bound on M-+ prefix key.  Added to menus.
+;;     diredp-get-files, diredp-y-or-n-files-p, diredp-list-files, diredp-list-marked-recursive:
+;;       Added optional arg PREDICATE.
+;;     diredp-do-create-files-recursive: Removed MARKER-CHAR arg.  Hard-code to keep markings.
+;;     diredp-do-(copy|move)-recursive: Use arg IGNORE-MARKS-P (forgot to use it).
+;;                                      Removed MARKER-CHAR arg in call to d-d-c-f-r.
+;;     Added missing autoload cookies.
+;; 2012/05/06 dadsms
+;;     diredp-y-or-n-files-p: Do not kill buffer *Files* - just bury it.
+;; 2012/05/05 dadams
+;;     Added: diredp-do-bookmark-recursive, diredp-do-bookmark-in-bookmark-file-recursive,
+;;            diredp-set-bookmark-file-bookmark-for-marked-recursive.
+;;              Bound to M-+ M-b, M-+ C-M-B (aka C-M-S-b), M-+ C-M-b, respectively.  Added to menus.
+;;     diredp-bookmark: Added optional arg FILE.
+;;     diredp-do-bookmark-in-bookmark-file: Added optional arg FILES.
+;;     diredp-dired-plus-description: Updated.
+;;     diredp-get-confirmation-recursive: Raise error if not in Dired.
+;;     diredp-do-bookmark-recursive, diredp-marked-recursive(-other-window),
+;;       diredp-multiple-w32-browser-recursive:
+;;         Use diredp-get-confirmation-recursive.
+;; 2012/05/04 dadams
+;;     Added: dired-mark-unmarked-files for Emacs < 24.
+;;     diredp-do-create-files-recursive: Corrected for Emacs < 24.
+;;     diredp-do-create-files-recursive, diredp-(un)mark-files-tagged-regexp,
+;;       diredp(-mouse)-do-(un)tag, diredp(-mouse)-do-remove-all-tags,
+;;       diredp(-mouse)-do-paste-(add|replace)-tags, diredp(-mouse)-do-set-tag-value,
+;;       diredp(-mouse)-do-bookmark(-in-bookmark-file), diredp-find-a-file-read-args,
+;;       diredp-mouse-do-shell-command:
+;;         Use lexical-let(*), to get closures for free vars in lambdas.
+;; 2012/04/28 dadams
+;;     Added:
+;;       diredp-copy-filename-as-kill-recursive, diredp-do-copy-recursive,
+;;       diredp-do-find-marked-files-recursive, diredp-do-grep-recursive,
+;;       diredp-do-move-recursive, diredp-do-shell-command-recursive,
+;;       diredp-list-marked-recursive, diredp-marked-recursive(-other-window),
+;;       diredp-multiple-w32-browser-recursive, diredp-do-create-files-recursive,
+;;       diredp-get-confirmation-recursive, diredp-list-files, diredp-y-or-n-files-p,
+;;       diredp-menu-bar-recursive-marked-menu.
+;;     diredp-get-files: Use diredp-y-or-n-files-p, not y-or-n-p.
+;;     Commented out dired-readin-insert - see comment.
+;;     Moved bookmark menu items to submenu Bookmarks.
+;;     Added keys (with M-+ prefix) and menu items for new (*-recursive) commands.
+;;     Reordered w32-browser stuff in menus.
+;;     diredp-do-grep: Combined defs for diff Emacs versions - do version test at runtime.
+;; 2012/04/25 dadams
+;;     dired-insert-directory: Updated per Emacs 24.
+;; 2012/04/23 dadams
+;;     Added (moved here from Icicles, and renamed prefix):
+;;       diredp-re-no-dot, diredp-get-files, diredp-get-files-for-dir, diredp-files-within,
+;;       diredp-files-within-dirs-done.
+;; 2012/04/05 dadams
+;;     Added redefinition of dired-mark-pop-up, to fix Emacs bug #7533.  If they ever fix it
+;;     then remove this hack.
+;; 2012/03/13 dadams
+;;     diredp-dired(-for)-files(-other-window):
+;;       Bind: icicle-sort-comparer, icicle-all-candidates-list-alt-action-fn.
+;;       Use icicle-(un)bind-file-candidate-keys.
+;;     diredp-dired-files-interactive-spec: Updated doc strings accordingly.
+;; 2012/03/07 dadams
+;;     Added: dired-switches-escape-p.
+;;     dired-get-filename: Updated wrt Emacs 24:
+;;       whitespace quoting for bug #10469, filename quoting per Emacs 23.3+,
+;;         MS Windows conversion of \ to / per Emacs 23.3+.
+;;     dired-goto-file: Escape whitespace, per Emacs 24 (for bug #10469).
+;; 2012/03/02 dadams
+;;     Require cl.el at compile time even for Emacs 22+, for case macro.
+;; 2012/02/28 dadams
+;;     Do not bother to soft-require mkhtml.el anymore.
+;; 2012/02/18 dadams
+;;     Swapped keys for dired-w32(-browser|explore), so the former is M-RET, as in Bookmark+.
+;; 2012/01/10 dadams
+;;     diredp-font-lock-keywords-1: Corrected for date/time when locale is used, not iso.
+;; 2011/12/19 dadams
+;;     dired-insert-set-properties, dired-mark-sexp, diredp-(un)mark-region-files,
+;;       diredp-flag-region-files-for-deletion, diredp-mouse-3-menu:
+;;         Use line-(beginning|end)-position.
+;; 2011/12/16 dadams
+;;     diredp-menu-bar-mark-menu: Removed Revert item.
+;;     diredp-menu-bar-subdir-menu: Add image-dired-dired-toggle-marked-thumbs.
+;;     diredp-mouse-3-menu:
+;;       Use commands bound to keys, so the keys show up in the menu.  Prefer *-this-file.
+;;       Correct the mark/unmark/flag menu-item visibility.  Added Capitalize.
+;; 2011/12/09 dadams
+;;     diredp-w32-drives: Use dolist, not mapcar.
+;;     diredp-mouse-3-menu: Use easymenu to build the menu.  Conditionalize some items.
+;;     Bind down-mouse-3, not mouse-3, to diredp-mouse-3-menu.  (bind mouse-3 to ignore).
+;;     Added eval-when-compile for easymenu.el.
+;; 2011/12//02 dadams
+;;     Added diredp-internal-do-deletions.
+;;     dired(-mouse)-do(-flagged)-delete, : Use diredp-internal-do-deletions, for trash.
+;; 2011/11/29 dadams
+;;     diredp-read-bookmark-file-args: Corrected use of list of default file names: > Emacs 23.1.
+;; 2011/10/31 dadams
+;;     dired-mode-hook: Call font-lock-refresh-defaults - see Emacs 24 bugs #6662 and #9919.
+;; 2011/10/24 dadams
+;;     Protect dired-show-file-type with fboundp.
+;; 2011/09/03 dadams
+;;     diredp-do-grep-1: Map shell-quote-argument over file names.  Thx to Joe Bloggs.
+;; 2011/08/07 dadams
+;;     diredp-bookmark (need to keep in sync with bmkp-make-record-for-target-file):
+;;       Instead of image-bookmark-make-record, use explicit function that includes file, type.
+;; 2011/07/25 dadams
+;;     Changed featurep to eval-after-load, for bookmark+-1.el and w32-browser.el.
+;; 2011/07/01 dadams
+;;     Fixed typo: dired-toggle-find-file-reuse-dir -> ...diredp....  Thx to pasja on Emacs Wiki.
+;; 2011/06/18 dadams
+;;     Added: diredp-describe-mode, diredp-dired-plus-help(-link), diredp-help-button,
+;;            diredp-dired-plus-description(+links), diredp-send-bug-report.
+;;     Bound diredp-describe-mode to whatever describe-mode is bound to.
+;;     All menus, :enable with mark-active: Added transient-mark-mode and mark != point.
+;;     toggle-diredp-find-file-reuse-dir: Swapped which one is the alias.
+;;     diredp-w32-list-mapped-drives: Display *Shell Command Output* at end.
+;;     diredp-mouse-(describe-file|3-menu|mark/unmark|(find|view)-file(-other-window)):
+;;       save-excursion set-buffer -> with-current-buffer.
+;; 2011/06/08 dadams
+;;     Added: diredp-dired-for-files(-other-window).
+;; 2011/06/07 dadams
+;;     Bound dired-show-file-type to _, since y is diredp-relsymlink-this-file.
+;; 2011/04/25 dadams
+;;     Added (from files+.el): dired(-mouse)-describe-file. Bound to C-h (C-)RET, added to menus.
+;; 2011/04/23 dadams
+;;     Added, bound (T c, T M-w, T 0, T v, T p, T C-y, T q), and added to menus:
+;;       diredp-copy-tags-this-file, diredp-mouse-copy-tags,
+;;       diredp(-mouse)(-do)-remove-all-tags(-this-file),
+;;       diredp(-mouse)(-do)-set-tag-value(-this-file),
+;;       diredp(-mouse)(-do)-paste-(add|replace)-tags(-this-file).
+;;     diredp-mark-files-tagged-(all/none|some/not-all): Bound free var presentp.
+;;     dired-map-over-marks: Corrected: Bind NEWARG and use that, not ARG.
+;;     dired-get-marked-files: let* -> let.
+;;     dired-do-redisplay, diredp-mouse-diff: when/if -> and.
+;;     dired-readin-insert, dired-get-filename: if -> unless/when.
+;;     diredp-mouse-find-file-reuse-dir-buffer: with-current-buffer, not save...
+;;     diredp-mouse-mark/unmark: Removed unused bol/eol vars.
+;; 2011/04/19 dadams
+;;     Added: diredp-(un)mark-files-tagged-((not-)all|none|some|regexp|all/none|some/not-all),
+;;            dired-mark-if.  Added Tagged submenu for Mark menu.
+;;     Put tags commands on prefix key T, as in Bookmark+.  Removed C-(M-)+/- tags-cmd bindings.
+;;     diredp-untag-this-file: Added prefix-arg behavior.
+;; 2011/04/18 dadams
+;;     Added: diredp-prompt-for-bookmark-prefix-flag.
+;;            Use it in diredp(-mouse)-do-(un)tag, diredp-read-bookmark-file-args,
+;;                      diredp(-mouse)-do-bookmark, diredp-(bookmark|(un)tag)-this-file.
+;;     diredp-(bookmark|(un)tag)-this-file, diredp(-do)-bookmark, diredp-(un)tag,
+;;       diredp-do-bookmark-in-bookmark-file, diredp-set-bookmark-file-bookmark-for-marked:
+;;         Made PREFIX arg optional.
+;; 2011/04/17 dadams
+;;     Added: diredp-(bookmark|(un)tag)-this-file, diredp(-mouse)(-do)-(un)tag.
+;;     diredp-mouse-3-menu: Added: diredp-mouse-do-(un)tag.
+;;     diredp-menu-bar-immediate-menu: Added diredp-(un)tag-this-file, diredp-bookmark-this-file.
+;;     diredp-menu-bar-operate-menu: Added diredp-do-(un)tag.
+;;     Bound diredp-do-tag to C-+, diredp-tag-this-file to C-M-+, diredp-do-untag to C--,
+;;           diredp-untag-this-file to C-M--, diredp-bookmark-this-file to C-B.
+;;     diredp-bookmark: Use bmkp-autofile-set, not bmkp-file-target-set, so get autofile.
+;;     diredp-read-bookmark-file-args, diredp(-mouse)-do-bookmark:
+;;       Default for prefix is now an empty string, not the directory.
+;;     diredp-mouse-do-bookmark: Removed optional second arg.
+;;     Corrected typo: direp-read-bookmark-file-args -> diredp-read-bookmark-file-args.
+;; 2011/03/25 dadams
+;;     diredp-bookmark: Fixed typo: bmkp-file-indirect-set -> bmkp-file-target-set.
+;; 2011/02/11 dadams
+;;     diredp-deletion, diredp-deletion-file-name, diredp-executable-tag:
+;;       Made default the same for dark background as for light.
+;;     diredp-ignored-file-name: Made default a bit darker for dark background.
+;; 2011/02/03 dadams
+;;     All deffaces: Provided default values for dark-background screens too.
+;; 2011/01/12 dadams
+;;     dired-do-flagged-delete: Removed sit-for added on 1/02.
+;; 2011/01/04 dadams
+;;     defsubst -> defun everywhere.
+;;     Removed autoload cookies from non def* sexps, defvar, and non-interactive functions.
+;;     Added some missing autoload cookies for defcustom and commands.
+;; 2011/01/02 dadams
+;;     Added: diredp-this-file-(un)marked-p, diredp-toggle-marks-in-region.
+;;     diredp-(un)mark-region-files, diredp-flag-region-files-for-deletion:
+;;       Act only on marked/unmarked files (opposite).  Fix 2nd arg to dired-mark-if.
+;;     diredp-mouse-3-menu:
+;;       If region is active and mouse3.el was loaded, then use its popup.
+;;       Fix Toggle Marked/Unmarked:
+;;         Use diredp-toggle-marks-in-region, so widen, show details and use bol/eol.
+;;     dired-do-flagged-delete: Added sit-for.
+;; 2010/11/28 dadams
+;;     diredp-mouse-3-menu: Added Toggle Marked/Unmarked for region menu.
+;; 2010/10/20 dadams
+;;     Moved Emacs 20 tweak to recognize k in file sizes to var dired-move-to-filename-regexp.
+;;     Added diredp-loaded-p.
+;; 2010/10/19 dadams
+;;     diredp-font-lock-keywords-1:
+;;       Handle decimal pt in file size.  Thx to Michael Heerdegen.
+;;       Enable Emacs 20/21 to handle -h option (decimal point size).
+;;     Renamed: face diredp-inode+size to diredp-number.
+;; 2010/10/01 dadams
+;;     dired-goto-file: Avoid infloop from looking for dir line.  Thx to not-use.dilines.net.
+;; 2010/09/29 dadams
+;;     Added: diredp-dired-union(-1|-other-window|-interactive-spec).
+;;     dired-goto-file: fix for Emacs bug #7126.
+;; 2010/09/27 dadams
+;;     Renamed diredp-dired-interactive-spec to diredp-dired-files-interactive-spec.
+;;     diredp-dired-files-interactive-spec: Respect file-list arg: kill existing Dired buffer.
+;;                                          Fix use of prefix arg for switches.
+;; 2010/09/26 dadams
+;;     Added: dired-insert-directory: Compute WILDCARD arg for individual files.
+;;     Added: dired-readin-insert: Use t as WILDCARD arg to dired-insert-directory.
+;;     Added: diredp-dired-files(-other-window), diredp-dired-interactive-spec.
+;; 2010/08/27 dadams
+;;     Use diredp-font-lock-keywords-1 properly as a second level of fontification.
+;;     Added: diredp-w32-drives(-mode(-map)), dired-up-directory.
+;; 2010/08/07 dadams
+;;     dired-map-over-marks: Removed loop that used dired-between-files.
+;;     diredp-get-file-or-dir-name: test against subdir/..? also.
+;;     dired-do-find-marked-files: Pass original ARG to dired-get-marked-files.
+;; 2010/08/05 dadams
+;;     diredp-bookmark:
+;;       Handle image files (and sound files, if Bookmark+ is used).
+;;       Use bmkp-file-indirect-set if available.
+;;       Use error-message-string to get failure msg.
+;; 2010/07/11 dadams
+;;     Added: diredp-set-bookmark-file-bookmark-for-marked (C-M-b), diredp-mouse-do-bookmark,
+;;            diredp-do-bookmark-in-bookmark-file (C-M-B, aka C-M-S-b), diredp-read-bookmark-file-args.
+;;     Added them to the operate menu.  Added diredp-do-bookmark to mouse-3 menu.
+;; 2010/07/07 dadams
+;;     dired-do-*: Updated doc strings for prefix arg treatment from dired-map-over-marks-check.
+;;     Added missing autoload cookies.
+;; 2010/05/29 dadams
+;;     diredp-bookmark: Use relative file name in bookmark name.
+;;     Removed defvar of directory-listing-before-filename-regexp.
+;; 2010/05/28 dadams
+;;     Changed menu item for dired-create-directory to New Directory.  Moved it before Up Dir.
+;; 2010/03/19 dadams
+;;     diredp-font-lock-keywords-1: Handle date+time wrt regexp changes for Emacs 23.2.
+;; 2010/01/31 dadams
+;;     diredp-bookmark:
+;;       Don't use bookmark-set or find-file-noselect - inline the needed bookmark-store code.
+;;       Call bookmark-maybe-load-default-file.  Use rudimentary bookmark-make-record-function.
+;; 2010/01/21 dadams
+;;     Renamed:
+;;       diredp-subst-find-alternate-for-find to diredp-make-find-file-keys-reuse-dirs
+;;       diredp-subst-find-for-find-alternate to diredp-make-find-file-keys-not-reuse-dirs.
+;;     diredp-make-find-file-keys(-not)-reuse-dirs: Handle also dired(-mouse)-w32-browser.
+;; 2010/01/10 dadams
+;;     Added: face diredp-inode+size.  Use in diredp-font-lock-keywords-1.
+;;     diredp-font-lock-keywords-1: Allow decimal point in file size.  Thx to Regis.
+;; 2010/01/05 dadams
+;;     dired-insert-set-properties:
+;;       Add text property dired-filename to the file name (for Emacs 23).
+;; 2009/10/23 dadams
+;;     diredp-font-lock-keywords-1: Override `l' and `t' matches in headings with default face.
+;; 2009/10/13 dadams
+;;     Added: diredp(-do)-bookmark.  Added to Multiple menu, and bound to M-b.
+;; 2009/10/11 dadams
+;;     diredp-menu-bar-immediate-menu:
+;;       Added items: image display items, dired-maybe-insert-subdir.
+;;       Test dired-do-relsymlink, not diredp-relsymlink-this-file.
+;;     diredp-menu-bar-operate-menu:
+;;       Added items: epa encryption items, image items, isearch items.
+;;     diredp-menu-bar-subdir-menu:
+;;       Added items: revert, isearch file names, dired-compare-directories.
+;;     Removed macro menu-item-any-version - use menu-item everywhere (works for Emacs 20+).
+;;     Added wdired-change-to-wdired-mode to subdir menu even for Emacs 20, if defined.
+;; 2009/07/09 dadams
+;;     dired-goto-file: Make sure we have a string before calling directory-file-name.
+;; 2009/05/08 dadams
+;;     dired-find-file (Emacs 20): Raise error if dired-get-filename returns nil.
+;; 2009/04/26 dadams
+;;     dired-insert-set-properties, diredp-(un)mark-region-files,
+;;       diredp-flag-region-files-for-deletion, diredp-mouse-3-menu, diredp-mouse-mark/unmark:
+;;         Bind inhibit-field-text-motion to t, to ensure real eol.
+;; 2008/12/17 dadams
+;;     diredp-font-lock-keywords-1: Don't do diredp-deletion, diredp-flag-mark for empty lines.
+;; 2008/09/22 dadams
+;;     Added: diredp-fileset, diredp-get-file-or-dir-name, and redefinitions of
+;;            dired-map-over-marks, dired-find-file, and dired-mouse-find-file-other-window.
+;;     Added vanilla code to pick up macro dired-map-over-marks:
+;;       dired-get-marked-files, dired-do-delete, dired-map-over-marks-check,
+;;       dired-do-redisplay, image-dired-dired-insert-marked-thumbs.
+;;     diredp-find-file-other-frame, diredp-mouse-(find|view)-file:
+;;       Added nil t args to dired-get-filename calls.
+;;     diredp-do-grep(-1): Use new dired-get-marked-files instead of ad-hoc treatment of C-u.
+;; 2008/09/21 dadams
+;;     diredp-marked(-other-window): Don't treat zero prefix arg as numerical (no empty Dired).
+;;     Added dired-find-file redefinition for Emacs 20.
+;; 2008/09/11 dadams
+;;     diredp-do-grep: Plain C-u means grep all files in Dired buffer.
+;;     diredp-do-grep-1: Treat 'all value of FILES arg.
+;;     Added: diredp-all-files.
+;; 2008/09/09 dadams
+;;     Added: diredp-marked(-other-window).  Added to menus.  Bound *-other-window to C-M-*.
+;; 2008/09/07 dadams
+;;     Added: diredp(-mouse)-do-grep(-1), diredp-grep-this-file.
+;;     Bound diredp-do-grep to M-g.  Added grep commands to menus.
+;; 2008/07/18 dadams
+;;     Soft-require w32-browser.el.  Bind its commands in Dired map and menus.
+;; 2008/03/08 dadams
+;;     dired-maybe-insert-subdir: Fit one-window frame after inserting subdir.
+;; 2008/03/07 dadams
+;;     Added: redefinitions of dired-maybe-insert-subdir, dired-goto-file, dired-get-filename.
+;;     Added: diredp-this-subdir.
+;; 2007/11/27 dadams
+;;     diredp-mouse(-backup)-diff: If available, use icicle-read-string-completing.
+;; 2007/09/23 dadams
+;;     Removed second arg to undefine-killer-commands.
+;; 2007/07/27 dadams
+;;     diredp-font-lock-keywords-1: Allow also for bz2 compressed files - Thx to Andreas Eder.
+;; 2006/09/03 dadams
+;;     diredp-font-lock-keywords-1: Corrected file size and inode number.  Thx to Peter Barabas.
+;; 2006/08/20 dadams
+;;     Added: diredp-find-a-file*.
+;; 2006/06/18 dadams
+;;     diredp-font-lock-keywords-1: Highlight file name (also) of flagged files.
+;;                                  Use dired-del-marker instead of literal D.
+;;     Added: diredp-deletion-file-name.
+;; 2006/03/31 dadams
+;;     No longer use display-in-minibuffer.
+;; 2006/01/07 dadams
+;;     Added: link for sending bug report.
+;; 2006/01/06 dadams
+;;     Added defgroup Dired-Plus and used it. Added :link.
+;; 2006/01/04 dadams
+;;     Added defvar of directory-listing-before-filename-regexp, for Emacs 22 compatibility.
+;; 2005/12/29 dadams
+;;     Added: diredp-mouse-mark/unmark-mark-region-files.
+;; 2005/12/26 dadams
+;;     Updated groups.
+;; 2005/12/05 dadams
+;;     diredp-ignored-file-name: Made it slightly darker.
+;; 2005/11/05 dadams
+;;     Renamed all stuff defined here to have diredp- prefix.
+;;     diredp-relsymlink-this-file: Protected with fboundp.
+;;     Changed to soft require: dired-x.el.
+;;     Removed comment to require this inside eval-after-load.
+;; 2005/11/03 dadams
+;;     Added: dired-display-msg.  Replace blue-foreground-face with it.
+;;     Alias dired-do-toggle to dired-toggle-marks, if defined.
+;; 2005/11/02 dadams
+;;     Added: dired-get-file-for-visit, dired(-mouse)-find-alternate-file*,
+;;            togglep-dired-find-file-reuse-dir, dired+-subst-find-*.
+;;     Use defface for all faces.  Renamed without "-face".  No longer require def-face-const.
+;;     dired-simultaneous-find-file: Minor bug fix (typo).
+;; 2005/07/10 dadams
+;;     dired-unmark-all-files-no-query -> dired-unmark-all-marks
+;;       (thanks to Sivaram Neelakantan for bug report).
+;; 2005/05/25 dadams
+;;     string-to-int -> string-to-number everywhere.
+;; 2005/05/17 dadams
+;;     Updated to work with Emacs 22.x.
+;; 2005/02/16 dadams
+;;     Added dired-mark/unmark-extension. Replaced dired-mark-extension with it everywhere.
+;; 2005/01/08 dadams
+;;     Bind [S-mouse-1], instead of [S-down-mouse-1], to dired-mouse-mark-region-files.
+;; 2004/11/20 dadams
+;;     dired-mark-sexp: Search for literal month names only for versions before Emacs 20.
+;;     Refined to deal with Emacs 21 < 21.3.50 (soon to be 22.x)
+;; 2004/11/14 dadams
+;;     Bound dired-no-confirm to non-nil for dired-mouse-*.
+;;     Updated for Emacs 21 and improved highlighting:
+;;       Spaces OK in file and directory names. Highlight date/time and size.
+;; 2004/10/17 dadams
+;;     Require cl only for Emacs 20, and only when compile.
+;; 2004/10/01 dadams
+;;     Updated to work with Emacs 21 also.
+;; 2004/04/02 dadams
+;;     dired-font-lock-keywords-1: Prefer using dired-omit-extensions
+;;     to completion-ignored-extensions, if available.
+;; 2004/03/22 dadams
+;;     Added dired-mouse-mark-region-files and dired-mouse-mark/unmark.
+;; 2000/09/27 dadams
+;;     1. dired-font-lock-keywords-1: fixed for spaces in dir names.
+;;     2. Added: dired-buffers-for-dir.
+;; 1999/09/06 dadams
+;;     Added S-*-mouse-2 bindings (same as C-*-mouse-2).
+;; 1999/08/26 dadams
+;;     1. Added *-face vars and dired-font-lock-keywords-1.
+;;     2. Added possibility to use dired-font-lock-keywords-1 via hook.
+;; 1999/08/26 dadams
+;;     Changed key binding of dired-mouse-find-file from down-mouse-2 to mouse-2.
+;; 1999/08/25 dadams
+;;     Changed (C-)(M-)mouse-2 bindings.
+;; 1999/08/25 dadams
+;;     1. Added cmds & menu bar and key bindings: (dired-)find-file-other-frame.
+;;     2. Changed binding for dired-display-file.
+;; 1999/03/26 dadams
+;;     1. Get rid of Edit menu-bar menu.
+;;     2. dired-mouse-3-menu: Changed popup titles and item names.
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program; see the file COPYING.  If not, write to
+;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth
+;; Floor, Boston, MA 02110-1301, USA.
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; Code:
+
+(eval-when-compile (require 'cl)) ;; case (plus, for Emacs 20: dolist, pop, push)
+(eval-when-compile (require 'easymenu)) ;; easy-menu-create-menu
+
+(require 'dired) ;; dired-revert
+(require 'dired-aux) ;; dired-bunch-files, dired-do-chxxx, dired-do-create-files,
+                     ;; dired-mark-read-string, dired-read-shell-command,
+                     ;; dired-run-shell-command, dired-shell-stuff-it
+(require 'dired-x) ;; dired-do-relsymlink
+(require 'autofit-frame nil t) ;; (no error if not found) fit-frame-if-one-window
+(require 'bookmark+ nil t) ;; (no error if not found)
+ ;; bmkp-autofile-add-tags, bmkp-autofile-remove-tags, bmkp-autofile-set, bmkp-copied-tags,
+ ;; bmkp-current-bookmark-file, bmkp-describe-bookmark, bmkp-empty-file, bmkp-get-autofile-bookmark,
+ ;; bmkp-get-bookmark-in-alist, bmkp-get-tags, bmkp-read-tag-completing,
+ ;; bmkp-read-tags-completing, bmkp-refresh/rebuild-menu-list, bmkp-remove-all-tags,
+ ;; bmkp-same-file-p, bmkp-set-bookmark-file-bookmark, bmkp-set-sequence-bookmark,
+ ;; bmkp-set-tag-value, bmkp-some, bmkp-switch-bookmark-file, bmkp-tag-name
+
+;; For now at least, `highlight.el' is needed only if you use `bookmark+.el'.
+(when (featurep 'bookmark+) (require 'highlight nil t)) ;; (no error if not found):
+ ;; hlt-highlight-region
+
+(if (> emacs-major-version 21) (require 'help-fns+ nil t) (require 'help+20 nil t))  ;; (no error if not found):
+ ;; describe-file
+
+(require 'misc-fns nil t) ;; (no error if not found): undefine-killer-commands
+(require 'image-file nil t) ;; (no error if not found): image-file-name-regexp
+(require 'image-dired nil t) ;; (no error if not found):
+ ;; image-dired-create-thumb, image-dired-create-thumbnail-buffer,
+ ;; image-dired-dired-after-readin-hook, image-dired-delete-tag, image-dired-dired-comment-files,
+ ;; image-dired-dired-display-external, image-dired-dired-display-image,
+ ;; image-dired-display-thumbs, image-dired-get-comment, image-dired-get-exif-file-name,
+ ;; image-dired-get-thumbnail-image, image-dired-insert-thumbnail, image-dired-line-up,
+ ;; image-dired-line-up-dynamic, image-dired-line-up-interactive, image-dired-line-up-method,
+ ;; image-dired-list-tags, image-dired-main-image-directory, image-dired-mark-tagged-files,
+ ;; image-dired-read-comment, image-dired-remove-tag, image-dired-save-information-from-widgets,
+ ;; image-dired-tag-files, image-dired-thumb-height, image-dired-thumbnail-buffer,
+ ;; image-dired-thumb-name, image-dired-thumb-size, image-dired-thumb-width,
+ ;; image-dired-widget-list, image-dired-write-comments, image-dired-write-tags
+(when (memq system-type '(windows-nt ms-dos))
+  ;; (no error if not found):
+  (require 'w32-browser nil t));; dired-w32explore, dired-w32-browser, dired-mouse-w32-browser,
+                               ;; dired-multiple-w32-browser
+(when (< emacs-major-version 21) (require 'subr-21)) ;; replace-regexp-in-string
+
+;; Provide macro for code byte-compiled using Emacs < 22.
+(eval-when-compile
+ (when (< emacs-major-version 22)
+   (defmacro minibuffer-with-setup-hook (fun &rest body)
+     "Temporarily add FUN to `minibuffer-setup-hook' while executing BODY.
+BODY should use the minibuffer at most once.
+Recursive uses of the minibuffer are unaffected (FUN is not
+called additional times).
+
+This macro actually adds an auxiliary function that calls FUN,
+rather than FUN itself, to `minibuffer-setup-hook'."
+     ;; (declare (indent 1) (debug t))
+     (let ((hook  (make-symbol "setup-hook")))
+       `(let (,hook)
+         (setq ,hook  (lambda ()
+                        ;; Clear out this hook so it does not interfere
+                        ;; with any recursive minibuffer usage.
+                        (remove-hook 'minibuffer-setup-hook ,hook)
+                        (funcall ,fun)))
+         (unwind-protect
+              (progn (add-hook 'minibuffer-setup-hook ,hook) ,@body)
+           (remove-hook 'minibuffer-setup-hook ,hook)))))))
+
+(defmacro diredp-user-error (&rest args)
+  `(if (fboundp 'user-error) (user-error ,@args) (error ,@args)))
+
+;; Define these for Emacs 20 and 21.
+(unless (fboundp 'dired-get-file-for-visit) ; Emacs 22+
+  (defun dired-get-file-for-visit ()    ; Not bound
+    "Get the current line's file name, with an error if file does not exist."
+    (interactive)
+    (let ((raw  (dired-get-filename nil t)) ; Pass t for second arg so no error for `.' and `..'.
+          file-name)
+      (unless raw (error "No file on this line"))
+      (setq file-name  (file-name-sans-versions raw t))
+      (if (file-exists-p file-name)
+          file-name
+        (if (file-symlink-p file-name)
+            (error "File is a symlink to a nonexistent target")
+          (error "File no longer exists; type `g' to update Dired buffer")))))
+
+  (defun dired-find-alternate-file ()   ; Not bound
+    "In Dired, visit this file or directory instead of the Dired buffer."
+    (interactive)
+    (set-buffer-modified-p nil)
+    (find-alternate-file (dired-get-file-for-visit))))
+
+;;;;;;;;;;;;;;;;;;;;;;;
+
+
+(provide 'dired+)
+(require 'dired+)                       ; Ensure loaded before compile this.
+
+;; Quiet the byte-compiler.
+(defvar bmkp-copied-tags)                         ; In `bookmark+-1.el'
+(defvar bmkp-current-bookmark-file)               ; In `bookmark+-1.el'
+(defvar bookmark-default-file)                    ; In `bookmark.el'
+(defvar compilation-current-error)                ; In `compile.el'
+(defvar delete-by-moving-to-trash)                ; Built-in, Emacs 23+
+(defvar dired-always-read-filesystem)             ; In `dired.el', Emacs 26+
+(defvar dired-auto-revert-buffer)                 ; In `dired.el', Emacs 23+
+(defvar dired-create-files-failures)              ; In `dired-aux.el', Emacs 22+
+(defvar dired-details-state)                      ; In `dired-details+.el'
+(defvar dired-keep-marker-hardlink)               ; In `dired-x.el'
+(defvar dired-overwrite-confirmed)                ; In `dired-aux.el'
+(defvar dired-query-alist)                        ; In `dired-aux.el', Emacs < 24
+(defvar dired-recursive-copies)                   ; In `dired-aux.el', Emacs 22+
+(defvar dired-recursive-deletes)                  ; In `dired.el', Emacs 22+
+(defvar dired-shrink-to-fit)                      ; In `dired.el'
+(defvar dired-switches-alist)                     ; In `dired.el'
+(defvar dired-subdir-switches)                    ; In `dired.el'
+(defvar dired-touch-program)                      ; Emacs 22+
+(defvar dired-use-ls-dired)                       ; Emacs 22+
+(defvar diredp-count-.-and-..-flag)               ; Here, Emacs 22+
+(defvar diredp-hide-details-initially-flag)       ; Here, Emacs 24.4+
+(defvar diredp-hide-details-last-state)           ; Here, Emacs 24.4+
+(defvar diredp-hide-details-propagate-flag)       ; Here, Emacs 24.4+
+(defvar diredp-hide-details-toggled)              ; Here, Emacs 24.4+
+(defvar diredp-highlight-autofiles-mode)          ; Here, Emacs 22+
+(defvar diredp-menu-bar-encryption-menu)          ; Here, Emacs 23+
+(defvar diredp-menu-bar-images-recursive-menu)    ; Here (old name)
+(defvar diredp-menu-bar-regexp-recursive-menu)    ; Here (old name)
+(defvar diredp-menu-bar-subdir-menu)              ; Here (old name)
+(defvar diredp-move-file-dirs)                    ; Here, Emacs 24+
+(defvar diredp-single-bookmarks-menu)             ; Here, if Bookmark+ is available
+(defvar filesets-data)                            ; In `filesets.el'
+(defvar grep-use-null-device)                     ; In `grep.el'
+(defvar header-line-format)                       ; Emacs 22+
+(defvar icicle-file-sort)                         ; In `icicles-opt.el'
+;; $$$$ (defvar icicle-file-sort-first-time-p)            ; In `icicles-var.el'
+(defvar icicle-files-ido-like-flag)               ; In `icicles-opt.el'
+(defvar icicle-ignored-directories)               ; In `icicles-opt.el'
+(defvar icicle-sort-comparer)                     ; In `icicles-opt.el'
+(defvar image-dired-display-image-buffer)         ; In `image-dired.el'
+(defvar image-dired-line-up-method)               ; In `image-dired.el'
+(defvar image-dired-main-image-directory)         ; In `image-dired.el'
+(defvar image-dired-thumbnail-buffer)             ; In `image-dired.el'
+(defvar image-dired-thumb-height)                 ; In `image-dired.el'
+(defvar image-dired-thumb-width)                  ; In `image-dired.el'
+(defvar image-dired-widget-list)                  ; In `image-dired.el'
+(defvar ls-lisp-use-insert-directory-program)     ; In `ls-lisp.el'
+(defvar minibuffer-default-add-function)          ; In `simple.el', Emacs 23+
+(defvar mouse3-dired-function)                    ; In `mouse3.el'
+(defvar read-file-name-completion-ignore-case)    ; In `minibuffer.el', Emacs 23+.  In C code, Emacs 22.
+(defvar recentf-list)                             ; In `recentf.el'
+(defvar switch-to-buffer-preserve-window-point)   ; In `window.el', Emacs 24+
+(defvar tooltip-mode)                             ; In `tooltip.el'
+(defvar vc-directory-exclusion-list)              ; In `vc'
+(defvar w32-browser-wait-time)                    ; In `w32-browser.el'
+
+;;;;;;;;;;;;;;;;;;;;;;;
+
+(defgroup Dired-Plus nil
+  "Various enhancements to Dired."
+  :prefix "diredp-" :group 'dired
+  :link `(url-link :tag "Send Bug Report"
+          ,(concat "mailto:" "drew.adams" "@" "oracle" ".com?subject=\
+dired+.el bug: \
+&body=Describe bug here, starting with `emacs -q'.  \
+Don't forget to mention your Emacs and library versions."))
+  :link '(url-link :tag "Other Libraries by Drew"
+          "https://www.emacswiki.org/emacs/DrewsElispLibraries")
+  :link '(url-link :tag "Download"
+          "https://www.emacswiki.org/emacs/download/dired%2b.el")
+  :link '(url-link :tag "Description"
+          "https://www.emacswiki.org/emacs/DiredPlus")
+  :link '(emacs-commentary-link :tag "Commentary" "dired+"))
+ 
+;;; Variables
+
+;; `dired-do-toggle' was renamed to `dired-toggle-marks' after Emacs 20.
+(unless (fboundp 'dired-toggle-marks) (defalias 'dired-toggle-marks 'dired-do-toggle))
+
+;;; This is duplicated in `diff.el' and `vc.el'.
+;;;###autoload
+(defcustom diff-switches "-c"
+  "*A string or list of strings specifying switches to be passed to diff."
+  :type '(choice string (repeat string))
+  :group 'dired :group 'diff)
+
+;;;###autoload
+(defcustom diredp-auto-focus-frame-for-thumbnail-tooltip-flag nil
+  "*Non-nil means automatically focus the frame for a thumbnail tooltip.
+If nil then you will not see a thumbnail image tooltip when you
+mouseover an image-file name in Dired, unless you first give the frame
+the input focus (e.g., by clicking its title bar).
+
+This option has no effect if `diredp-image-preview-in-tooltip' is nil.
+It also has no effect for Emacs versions prior to Emacs 22."
+  :type 'boolean :group 'Dired-Plus)
+
+;;;###autoload
+(defcustom diredp-bind-problematic-terminal-keys t
+  "*Non-nil means bind some keys that might not work in a text-only terminal.
+This applies to keys that use modifiers Meta and Shift together.
+If you use Emacs in text-only terminal and your terminal does not
+support the use of such keys then customize this option to nil."
+  :type 'boolean :group 'Dired-Plus)
+
+;;;###autoload
+(defcustom diredp-compressed-extensions '(".tar" ".taz" ".tgz" ".arj" ".lzh"
+                                          ".lzma" ".xz" ".zip" ".z" ".Z" ".gz" ".bz2" ".rar" ".rev")
+  "*List of compressed-file extensions, for highlighting.
+
+Note: If you change the value of this option then you need to restart
+Emacs to see the effect of the new value on font-locking."
+  :type '(repeat string) :group 'Dired-Plus)
+
+(when (> emacs-major-version 21)        ; Emacs 22+
+  (defcustom diredp-count-.-and-..-flag nil
+    "Non-nil means count `.' and `..' when counting files for mode-line."
+    :type 'boolean :group 'Dired-Plus))
+
+;;;###autoload
+(defcustom diredp-do-report-echo-limit 5
+  "Echo result for each file, for fewer than this many files.
+If more than this many files are acted on then there is no echoing.
+
+Used by some do-and-report commands such as `diredp-do-emacs-command'.
+Results that are not echoed are anyway reported by `dired-log', so you
+can show them with `?' in the Dired buffer."
+  :type '(restricted-sexp :match-alternatives (wholenump)) :group 'Dired-Plus)
+
+;;;###autoload
+(defcustom diredp-dwim-any-frame-flag pop-up-frames
+  "*Non-nil means the target directory can be in a window in another frame.
+Only visible frames are considered.
+This is used by ``dired-dwim-target-directory'.
+This option has no effect for Emacs versions before Emacs 22."
+  :type 'boolean :group 'Dired-Plus)
+
+(when (fboundp 'dired-hide-details-mode) ; Emacs 24.4+
+  (defcustom diredp-hide-details-initially-flag t
+    "*Non-nil means hide details in Dired from the outset."
+    :type 'boolean :group 'Dired-Plus
+    :set (lambda (sym defs)
+           (custom-set-default sym defs)
+           (setq diredp-hide-details-last-state  diredp-hide-details-initially-flag)))
+
+  (defcustom diredp-hide-details-propagate-flag t
+    "*Non-nil means display the next Dired buffer the same way as the last.
+The last `dired-hide-details-mode' value set is used by the next Dired
+buffer created."
+    :type 'boolean :group 'Dired-Plus))
+
+;; Emacs 20 only.
+;;;###autoload
+(unless (fboundp 'define-minor-mode)
+  (defcustom diredp-highlight-autofiles-mode t
+    "*Non-nil means highlight names of files that are autofile bookmarks.
+Autofiles that have tags are highlighted using face
+`diredp-tagged-autofile-name'.  Those with no tags are highlighted
+using face `diredp-autofile-name'.
+
+Setting this option directly does not take effect; use either
+\\[customize] or command `diredp-highlight-autofiles-mode'.
+
+NOTE: When `dired+.el' is loaded (for the first time per Emacs
+session), the highlighting is turned ON, regardless of the option
+value.  To prevent this and have the highlighting OFF by default, you
+must do one of the following:
+
+ * Put (diredp-highlight-autofiles-mode -1) in your init file, AFTER
+   it loads `dired+.el'.
+
+ * Customize the option to `nil', AND ensure that your `custom-file'
+   (or the `custom-saved-variables' part of your init file) is
+   evaluated before `dired+.el' is loaded.
+
+This option has no effect unless you use libraries `Bookmark and
+`highlight.el'."
+    :set        (lambda (symbol value) (diredp-highlight-autofiles-mode (if value 1 -1)))
+    :initialize 'custom-initialize-default
+    :type 'boolean :group 'Dired-Plus :require 'dired+))
+
+;;;###autoload
+(defcustom diredp-ignore-compressed-flag t
+  "*Non-nil means to font-lock names of compressed files as ignored files.
+This applies to filenames whose extensions are in
+`diredp-compressed-extensions'.  If nil they are highlighted using
+face `diredp-compressed-file-name'.
+
+Note: If you change the value of this option then you need to restart
+Emacs to see the effect of the new value on font-locking."
+  :type 'boolean :group 'Dired-Plus)
+
+;;;###autoload
+(defcustom diredp-image-preview-in-tooltip (or (and (boundp 'image-dired-thumb-size)  image-dired-thumb-size)
+                                               100)
+  "*Whether and what kind of image preview to show in a tooltip.
+The possible values are:
+
+ `nil'       : do not show a tooltip preview
+ integer N>0 : show a thumbnail preview of that size
+ `full'      : show a full-size preview of the image
+
+To enable tooltip image preview you must turn on `tooltip-mode' and
+load library `image-dired.el'.  See also option
+`diredp-auto-focus-frame-for-thumbnail-tooltip-flag'.
+
+This option has no effect for Emacs versions prior to Emacs 22."
+  :type '(choice
+          (restricted-sexp :tag "Show a thumnail image of size"
+           :match-alternatives ((lambda (x) (and (wholenump x)  (not (zerop x))))))
+          (const :tag "Show a full-size image preview"      full)
+          (const :tag "OFF: Do not show an image preview"   nil))
+  :group 'Dired-Plus)
+
+;;;###autoload
+(defcustom diredp-image-show-this-file-use-frame-flag t
+  "Non-nil means `diredp-image-show-this-file' uses another frame.
+If nil then it uses another window.  Using another frame means you
+have more control over the image size when you use a prefix arg.
+
+If it uses another window then the prefix arg controls only the
+minimum window height, not necessarily the image scale (height).
+
+\(If the buffer displaying the image is already considered a
+special-display buffer by your Emacs setup, then a nil value of this
+option has no effect.)"
+  :type 'boolean :group 'Dired-Plus)
+
+;;;###autoload
+(defcustom diredp-list-file-attributes (list '(5 8) 'auto)
+  "Which file attributes `diredp-list-file' uses, and when."
+  :group 'Dired-Plus :type '(list (repeat integer)
+                                  (choice
+                                   (const :tag "Show automatically, immediately" 'auto)
+                                   (const :tag "Show on demand via `l'" 'on-demand))))
+
+;;;###autoload
+(defcustom diredp-max-frames 200
+  "*Max number of frames, for commands that find files in separate frames.
+These commands are `dired-do-find-marked-files' and
+`diredp-do-find-marked-files-recursive'.  See their descriptions for
+the circumstances in which they show the files in separate frames."
+  :type '(restricted-sexp :match-alternatives ((lambda (x) (and (wholenump x)  (not (zerop x))))))
+  :group 'Dired-Plus)
+
+(when (fboundp 'file-equal-p)           ; Emacs 24+
+  (defcustom diredp-move-file-dirs ()
+    "Alist of names of files and preferred directories to move them to.
+File names should be relative (no directory component).
+Target directory names should be absolute."
+    :group 'files :type '(alist :key-type file :value-type directory)))
+
+;; (Not used - just use the body directly in the option default value.
+;; (defun diredp-omit-files-regexp ()
+;;   "Return regexp to use for font-locking, using `dired-omit-files' as base."
+;;   (let* ((strg  dired-omit-files)
+;;          (strg  (if (eq ?^ (aref strg 0)) (substring strg 1) strg)) ; Remove initial ^
+;;          (strg  (replace-regexp-in-string "\\(\\\\[|]\\)\\^" "\\1" strg 'FIXEDCASE nil)) ; Remove other ^'s
+;;          (strg  (replace-regexp-in-string "\\([$]\\)" "" strg 'FIXEDCASE nil))) ; Remove $'s
+;;     strg))
+
+(defcustom diredp-omit-files-regexp (let* ((strg  dired-omit-files)
+                                           (strg  (if (eq ?^ (aref strg 0)) ; Remove initial ^
+                                                      (substring strg 1)
+                                                    strg))
+                                           (strg  (replace-regexp-in-string "\\(\\\\[|]\\)\\^" ; Remove other ^'s
+                                                                            "\\1"
+                                                                            strg
+                                                                            'FIXEDCASE
+                                                                            nil))
+                                           (strg  (replace-regexp-in-string "\\([$]\\)" ; Remove $'s
+                                                                            ""
+                                                                            strg
+                                                                            'FIXEDCASE
+                                                                            nil)))
+                                      strg)
+  "Regexp for font-locking file names to be omitted by `dired-omit-mode'.
+The regexp is matched only against the file name, but the entire line
+is highlighted (with face `diredp-omit-file-name').
+
+The default value of this option differs from that of
+`dired-omit-files' by removing \"^\" from the beginning, and \"$\"
+from the end, of each regexp choice.  (The default value of
+`dired-omit-files', at least prior to Emacs 27, uses \"^\" and \"$\",
+but it should not.)
+
+If you want to control the beginning and end of choice matches then
+use \"\\`\" and \"\\'\" instead of \"^\" and \"$\".
+
+Note: If you change the value of this option then you need to restart
+Emacs to see the effect of the new value on font-locking."
+  :group 'Dired-Plus :type 'regexp)
+
+;;;###autoload
+(defcustom diredp-prompt-for-bookmark-prefix-flag nil
+  "*Non-nil means prompt for a prefix string for bookmark names."
+  :type 'boolean :group 'Dired-Plus)
+
+;;;###autoload
+(defcustom diredp-visit-ignore-regexps ()
+  "Regexps matching file names for `diredp-visit-(next|previous)' to skip.
+A file or directory name matching one of these regexps is skipped,
+along with those with an extension in `diredp-visit-ignore-extensions'."
+  :type '(repeat regexp) :group 'Dired-Plus)
+
+;;;###autoload
+(defcustom diredp-visit-ignore-extensions '("elc")
+  "Extensions of file names for `diredp-visit-(next|previous)' to skip.
+A file name with one of these extensions is skipped, along with those
+matching a regexp in `diredp-visit-ignore-regexps'."
+  :type '(repeat string) :group 'Dired-Plus)
+
+;;;###autoload
+(defcustom diredp-w32-local-drives '(("C:" "Local disk"))
+  "*Local MS Windows drives that you want to use for `diredp-w32-drives'.
+Each entry is a list (DRIVE DESCRIPTION), where DRIVE is the drive
+name and DESCRIPTION describes DRIVE."
+  :type '(alist
+          :key-type   (string        :tag "Drive name")
+          :value-type (group (string :tag "Drive description")))
+  :group 'Dired-Plus)
+
+;;;###autoload
+(defcustom diredp-wrap-around-flag t
+  "*Non-nil means Dired \"next\" commands wrap around to buffer beginning."
+  :type 'boolean :group 'Dired-Plus)
+
+(when (fboundp 'dired-hide-details-mode) ; Emacs 24.4+
+  (defvar diredp-hide-details-last-state diredp-hide-details-initially-flag
+    "Last `dired-hide-details-mode' value.
+Initialized to the value of option `diredp-hide-details-initially-flag'.")
+
+  (defvar diredp-hide-details-toggled nil
+    "Non-nil means you have already toggled hiding details in this buffer.")
+  (make-variable-buffer-local 'diredp-hide-details-toggled))
+
+;; Same value as the default value of `icicle-re-no-dot'.
+(defvar diredp-re-no-dot "^\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*"
+  "Regexp that matches anything except `.' and `..'.")
+
+(defvar diredp-w32-drives-mode-map (let ((map  (make-sparse-keymap)))
+                                     (define-key map "q"       'bury-buffer)
+                                     (define-key map "\r"      'widget-button-press)
+                                     (define-key map [mouse-2] 'widget-button-click)
+                                     map)
+  "Keymap for `diredp-w32-drives-mode'.")
+
+;;; $$$$$$ Starting with Emacs 22, *-move-to* is defvaraliased to *-listing-before*.
+;;; But `files+.el' defines *-listing-before*, so we define it here too.
+;;; (unless (> emacs-major-version 21)
+;;;   (defvar directory-listing-before-filename-regexp dired-move-to-filename-regexp
+;;;     "Regular expression to match up to the file name in a directory listing.
+;;; The default value is designed to recognize dates and times
+;;; regardless of the language."))
+ 
+;;; Macros
+
+
+;; Unlike `dired-mark-if':
+;;
+;; 1. Value returned and message indicate both the number matched and the number changed.
+;; 2. Added optional arg PLURAL, for irregular plurals (e.g. "directories").
+;;
+(defmacro diredp-mark-if (predicate singular &optional plural)
+  "Mark files for PREDICATE, according to `dired-marker-char'.
+PREDICATE is evaluated on each line, with point at beginning of line.
+SINGULAR is a singular noun phrase for the type of files being marked.
+Optional arg PLURAL is a plural noun phrase for the type of files
+ being marked.
+If PLURAL is nil then SINGULAR should end with a noun that can be
+pluralized by adding `s'.
+
+Return nil if no files matched PREDICATE.
+Otherwise return a cons (CHANGED . MATCHED), where:
+ CHANGED is the number of markings that were changed by the operation.
+ MATCHED is the number of files that matched PREDICATE."
+  `(let ((inhibit-read-only  t)
+         changed matched)
+    (save-excursion
+      (setq matched  0
+            changed  0)
+      (when ,singular (message "%s %s%s..."
+                               (cond ((eq dired-marker-char ?\040)            "Unmarking")
+                                     ((eq dired-del-marker dired-marker-char) "Flagging")
+                                     (t                                       "Marking"))
+                               (or ,plural  (concat ,singular "s"))
+                               (if (eq dired-del-marker dired-marker-char) " for deletion" "")))
+      (goto-char (point-min))
+      (while (not (eobp))
+        (when ,predicate
+          (setq matched  (1+ matched))
+          (unless (eq dired-marker-char (char-after))
+            (delete-char 1) (insert dired-marker-char) (setq changed  (1+ changed))))
+        (forward-line 1))
+      (when ,singular (message "%s %s%s%s newly %s%s"
+                               matched
+                               (if (= matched 1) ,singular (or ,plural  (concat ,singular "s")))
+                               (if (not (= matched changed)) " matched, " "")
+                               (if (not (= matched changed)) changed "")
+                               (if (eq dired-marker-char ?\040) "un" "")
+                               (if (eq dired-marker-char dired-del-marker) "flagged" "marked"))))
+    (and (> matched 0)  (cons changed matched))))
+
+
+;; Just a helper function for `dired-map-over-marks'.
+(defun diredp-get-file-or-dir-name (arg)
+  "Return name of next file or directory or nil if none.
+Argument ARG:
+ `all-files-no-dirs' or nil means skip directories.
+ `all-files-no-dots' means skip `.' and `..'."
+  (let ((fname  nil))
+    (while (and (not fname)  (not (eobp)))
+      (setq fname  (dired-get-filename t t))
+      (when (and fname  (or (not arg)  (eq arg 'all-files-no-dirs))  (file-directory-p fname))
+        (setq fname  nil))
+      (when (and fname  (eq arg 'all-files-no-dots)  (or (member fname '("." ".."))
+                                                         (diredp-string-match-p "/\\.\\.?$" fname)))
+        (setq fname  nil))
+      (forward-line 1))
+    (forward-line -1)
+    fname))
+
+
+;; REPLACE ORIGINAL in `dired.el'.
+;;
+;; Treat multiple `C-u' specially.
+;;
+(defmacro dired-map-over-marks (body arg &optional show-progress
+                                distinguish-one-marked)
+  "Eval BODY with point on each marked line.  Return a list of BODY's results.
+If no marked file could be found, execute BODY on the current line.
+ARG, if non-nil, specifies the files to use instead of the marked files.
+ If ARG is an integer, use the next ARG files (previous -ARG, if < 0).
+   In that case, point is dragged along.  This is so that commands on
+   the next ARG (instead of the marked) files can be easily chained.
+ If ARG is a cons with element 16, 64, or 256, corresponding to
+   `C-u C-u', `C-u C-u C-u', or `C-u C-u C-u C-u', then use all files
+   in the Dired buffer, where:
+     16 includes NO directories (including `.' and `..')
+     64 includes directories EXCEPT `.' and `..'
+    256 includes ALL directories (including `.' and `..')
+ If ARG is otherwise non-nil, use the current file.
+If optional third arg SHOW-PROGRESS evaluates to non-nil,
+ redisplay the Dired buffer after each file is processed.
+
+No guarantee is made about the position on the marked line.  BODY must
+ensure this itself, if it depends on this.
+
+Search starts at the beginning of the buffer, thus the car of the list
+corresponds to the line nearest the end of the buffer.  This is also
+true for (positive and negative) integer values of ARG.
+
+BODY should not be too long, because it is expanded four times.
+
+If DISTINGUISH-ONE-MARKED is non-nil, then return (t FILENAME) instead
+ of (FILENAME), if only one file is marked."
+  ;; WARNING: BODY must not add new lines before point - this may cause an
+  ;; endless loop.  This warning should not apply any longer, sk  2-Sep-1991 14:10.
+  `(prog1
+    (let ((inhibit-read-only  t)
+          (newarg             ,arg)
+          multi-C-u case-fold-search found results)
+      (when (and (consp newarg)  (> (prefix-numeric-value newarg) 4))
+        (setq newarg     (case (prefix-numeric-value newarg)
+                           (16   'all-files-no-dirs) ; `C-u C-u'
+                           (64   'all-files-no-dots) ; `C-u C-u C-u'
+                           (256  'all-files) ; `C-u C-u C-u C-u'
+                           (t    'all-files-no-dirs))
+              multi-C-u  t))
+      (if (and newarg  (not multi-C-u))
+          (if (integerp newarg)
+              (progn                    ; No `save-excursion', want to move point.
+                (dired-repeat-over-lines newarg #'(lambda ()
+                                                    (when ,show-progress (sit-for 0))
+                                                    (setq results  (cons ,body results))))
+                (if (< newarg 0) (nreverse results) results))
+            ;; Non-nil, non-integer ARG means use current file:
+            (list ,body))
+        (let ((regexp  (dired-marker-regexp))
+              next-position)
+          (save-excursion
+            (goto-char (point-min))
+            ;; Remember position of next marked file before BODY can insert lines before the
+            ;; just found file, confusing us by finding the same marked file again and again...
+            (setq next-position  (and (if multi-C-u
+                                          (diredp-get-file-or-dir-name newarg)
+                                        (re-search-forward regexp nil t))
+                                      (point-marker))
+                  found          (not (null next-position)))
+            (while next-position
+              (goto-char next-position)
+              (when ,show-progress (sit-for 0))
+              (setq results  (cons ,body results))
+              ;; move after last match
+              (goto-char next-position)
+              (forward-line 1)
+              (set-marker next-position nil)
+              (setq next-position  (and (if multi-C-u
+                                            (diredp-get-file-or-dir-name newarg)
+                                          (re-search-forward regexp nil t))
+                                        (point-marker)))))
+          (when (and ,distinguish-one-marked  (= (length results) 1))
+            (setq results  (cons t results)))
+          (if found results (list ,body)))))
+    ;; `save-excursion' loses, again
+    (dired-move-to-filename)))
+
+;; Same as `icicle-with-help-window' in `icicles-mac.el'
+;; and `bmkp-with-help-window' in `bookmark+-mac.el'.
+(defmacro diredp-with-help-window (buffer &rest body)
+  "`with-help-window', if available; else `with-output-to-temp-buffer'."
+  (if (fboundp 'with-help-window)
+      `(with-help-window ,buffer ,@body)
+    `(with-output-to-temp-buffer ,buffer ,@body)))
+
+(put 'diredp-with-help-window 'common-lisp-indent-function '(4 &body))
+ 
+;;; Utility functions
+
+;; Same as `imenup-delete-if-not'.
+;;
+(defun diredp-delete-if-not (predicate xs)
+  "Remove all elements of list XS that do not satisfy PREDICATE.
+This operation is destructive, reusing conses of XS whenever possible."
+  (while (and xs  (not (funcall predicate (car xs))))
+    (setq xs  (cdr xs)))
+  (let ((cl-p  xs))
+    (while (cdr cl-p)
+      (if (not (funcall predicate (cadr cl-p))) (setcdr cl-p (cddr cl-p)) (setq cl-p  (cdr cl-p)))))
+  xs)
+
+;; Same as `imenup-delete-if'.
+;;
+(defun diredp-delete-if (predicate xs)
+  "Remove all elements of list XS that satisfy PREDICATE.
+This operation is destructive, reusing conses of XS whenever possible."
+  (while (and xs  (funcall predicate (car xs)))
+    (setq xs  (cdr xs)))
+  (let ((cl-p  xs))
+    (while (cdr cl-p)
+      (if (funcall predicate (cadr cl-p))
+          (setcdr cl-p (cddr cl-p))
+        (setq cl-p  (cdr cl-p)))))
+  xs)
+
+;; Same as `tap-string-match-p' in `thingatpt+.el'.
+(if (fboundp 'string-match-p)
+    (defalias 'diredp-string-match-p 'string-match-p) ; Emacs 23+
+  (defun diredp-string-match-p (regexp string &optional start)
+    "Like `string-match', but this saves and restores the match data."
+    (save-match-data (string-match regexp string start))))
+
+(if (fboundp 'looking-at-p)
+    (defalias 'diredp-looking-at-p 'looking-at-p) ; Emacs 23+
+  (defun diredp-looking-at-p (regexp)
+    "Like `looking-at', but this saves and restores the match data."
+    (save-match-data (looking-at regexp))))
+
+;; `dired-read-regexp' does not accept DEFAULT and HISTORY for older Emacsen, so use this.
+(defun diredp-read-regexp (prompt &optional default history)
+  "Read a regexp.
+HISTORY defaults to `dired-regexp-history'."
+  (setq history  (or history 'dired-regexp-history))
+  (if (fboundp 'read-regexp)
+      (read-regexp prompt default history)
+    (read-from-minibuffer prompt nil nil nil history default)))
+
+(if (fboundp 'delete-dups)
+    (defalias 'diredp-delete-dups 'delete-dups)
+  (defun diredp-delete-dups (list)
+    "Destructively remove `equal' duplicates from LIST.
+Store the result in LIST and return it.  LIST must be a proper list.
+Of several `equal' occurrences of an element in LIST, the first
+one is kept."
+    (let ((tail list))
+      (while tail
+        (setcdr tail (delete (car tail) (cdr tail)))
+        (setq tail (cdr tail))))
+    list))
+
+(defun diredp-nonempty-region-p ()
+  "Return non-nil if region is active and non-empty."
+  (and transient-mark-mode  mark-active  (mark)  (> (region-end) (region-beginning))))
+
+(defun diredp-get-image-filename (&optional localp no-error-if-not-filep)
+  "Return the image-file name on this line, or nil if no image file.
+If not in Dired (or a mode derived from Dired), then test the entire
+text of the current line as the file name.
+
+The optional args are the same as for `dired-get-filename'.  They are
+ignored if not in a Dired mode.
+
+\(Prior to Emacs 22, this function just returns nil.)"
+  (let ((file  (if (derived-mode-p 'dired-mode)
+                   (dired-get-filename localp no-error-if-not-filep)
+                 ;; Make it work also for `diredp-list-files' listings.
+                 (buffer-substring-no-properties (line-beginning-position) (line-end-position)))))
+    (and file
+         (fboundp 'image-file-name-regexp) ; Emacs 22+, `image-file.el'.
+         (diredp-string-match-p (image-file-name-regexp) file)
+         file)))
+
+(defun diredp-root-directory-p (file)
+  "Return non-nil if FILE is a root directory."
+  (if (fboundp 'ange-ftp-root-dir-p)
+      (ange-ftp-root-dir-p (file-name-as-directory file))
+    ;; This is essentially `ange-ftp-root-dir-p' applied to `file-name-as-directory'.
+    ;; If `ange-ftp-root-dir-p' changes, update this code.
+    (or (and (eq system-type 'windows-nt)  (diredp-string-match-p "\\`[a-zA-Z]:[/\\]\\'"
+                                                                  (file-name-as-directory file)))
+        (string= "/" file))))
+
+(defun diredp-parent-dir (file &optional relativep)
+  "Return the parent directory of FILE, or nil if none.
+Optional arg RELATIVEP non-nil means return a relative name, that is,
+just the parent component."
+  (let ((parent  (file-name-directory (directory-file-name (expand-file-name file))))
+        relparent)
+    (when relativep (setq relparent  (file-name-nondirectory (directory-file-name parent))))
+    (and (not (equal parent file))  (or relparent  parent))))
+
+(unless (fboundp 'derived-mode-p)       ; Emacs 20, 21.
+  (defun derived-mode-p (&rest modes)
+    "Non-nil if the current major mode is derived from one of MODES.
+Uses the `derived-mode-parent' property of the symbol to trace backwards."
+    (let ((parent  major-mode))
+      (while (and (not (memq parent modes))  (setq parent  (get parent 'derived-mode-parent))))
+      parent)))
+
+(defun diredp-ensure-mode ()
+  "Raise an error if not in Dired or a mode derived from it."
+  (unless (derived-mode-p 'dired-mode)
+    (error "You must be in Dired or a mode derived from it to use this command")))
+
+(defun diredp-ensure-bookmark+ ()
+  (unless (require 'bookmark+ nil t) (error "This command requires library `bookmark+.el'")))
+ 
+
+(unless (fboundp 'dired-nondirectory-p) ; Emacs 20, 21.
+  (defun dired-nondirectory-p (file)
+    "Return non-nil if FILE is not a directory."
+    (not (file-directory-p file))))
+
+
+;;; Some of the redefinitions that follow are essentially unaltered vanilla Emacs code to be
+;;; reloaded, to use the new definition of `dired-map-over-marks' here.
+
+
+;; REPLACE ORIGINAL in `dired.el'.
+;;
+;; 1. Pass non-nil second arg to `dired-get-filename' so we can include `.' and `..'.
+;; 2. Doc string is updated to reflect the new ARG behavior.
+;; 3. Allow, unlike vanilla Emacs, use of FILTER and DISTINGUISH-ONE-MARKED together.
+;;
+(defun dired-get-marked-files (&optional localp arg filter distinguish-one-marked error-if-none-p)
+  "Return names of the marked files and directories as a list of strings.
+The list is in the same order as the buffer, that is, the car is the
+  first marked file.
+Values returned are normally absolute file names.
+Optional arg LOCALP as in `dired-get-filename'.
+Optional second argument ARG specifies files to use instead of marked.
+ Usually ARG comes from the command's prefix arg.
+ If ARG is an integer, use the next ARG files (previous -ARG, if < 0).
+ If ARG is a cons with element 16, 64, or 256, corresponding to
+  `C-u C-u', `C-u C-u C-u', or `C-u C-u C-u C-u', then use all files
+  in the Dired buffer, where:
+    16 includes NO directories (including `.' and `..')
+    64 includes directories EXCEPT `.' and `..'
+   256 includes ALL directories (including `.' and `..')
+ If ARG is otherwise non-nil, use the current file.
+Optional third argument FILTER, if non-nil, is a function to select
+ some of the files: those for which (funcall FILTER FILENAME) is
+ non-nil.
+If DISTINGUISH-ONE-MARKED is non-nil, then return (t FILENAME) instead
+ of (FILENAME) if only one file is marked (after any filtering by
+ FILTER).
+If ERROR-IF-NONE-P is non-nil, signal an error if the list of files is
+ empty.  If ERROR-IF-NONE-P is a string then it is the error message.
+
+Note that the Dired+ version of this function differs from the vanilla
+version in these respects:
+
+* There are more possibilities for argument ARG (prefix argument).
+* Directories `.' and `..' can be included as marked.
+* You can use arguments FILTER and DISTINGUISH-ONE-MARKED together."
+  (let ((all  (delq nil (save-excursion (dired-map-over-marks (dired-get-filename localp 'NO-ERROR-IF-NOT-FILEP)
+                                                              arg
+                                                              nil
+                                                              distinguish-one-marked))))
+        result)
+    (when (equal all '(t)) (setq all  nil)) ; Added by vanilla Emacs 24+.
+    (if (and distinguish-one-marked  (eq (car all) t))
+        (if (not filter)
+            all
+          (and (funcall filter (cadr all))  (list t (cadr all))))
+      (dolist (file  all)
+        (when (or (not filter)  (funcall filter file)) (push file result)))
+      (when (and (null result)  error-if-none-p)
+        (diredp-user-error (if (stringp error-if-none-p) error-if-none-p "No files specified")))
+      result)))
+
+
+;; REPLACE ORIGINAL in `dired-aux.el'.
+;;
+;; 1. Define here to make use of my `dired-map-over-marks'.
+;; 2. Added &rest arg FUN-ARGS.
+;; 3. Added doc string.
+;;
+(defun dired-map-over-marks-check (fun mark-arg op-symbol &optional show-progress &rest fun-args)
+  "Map FUN over marked lines and display failures.
+FUN returns non-nil (the offending object, e.g. the short form of the
+filename) for a failure and probably logs a detailed error explanation
+using function `dired-log'.
+
+MARK-ARG is as the second argument of `dired-map-over-marks'.
+
+OP-SYMBOL is a symbol describing the operation performed (e.g.
+`compress').  It is used with `dired-mark-pop-up' to prompt the user
+\(e.g. with `Compress * [2 files]? ') and to display errors (e.g.
+`Failed to compress 1 of 2 files - type ? for details (\"foo\")')
+
+SHOW-PROGRESS if non-nil means redisplay Dired after each file.
+
+FUN-ARGS is the list of any remaining args to
+`dired-map-over-marks-check'.  Function FUN is applied to these
+arguments."
+  (and (dired-mark-confirm op-symbol mark-arg)
+       (let* ((results     (dired-map-over-marks (apply fun fun-args) mark-arg show-progress)) ; FUN return vals.
+              (nb-results  (length results))
+              (failures    (delq nil results))
+              (nb-fail     (length failures))
+              (op-strg     (if (eq op-symbol 'compress) "Compress or uncompress" (capitalize
+                                                                                  (symbol-name op-symbol)))))
+         (if (null failures)
+             (message "%s: %d file%s." op-strg nb-results (dired-plural-s nb-results))
+           (dired-log-summary (format "Failed to %s %d of %d file%s"
+                                      (downcase op-strg) nb-fail nb-results (dired-plural-s nb-results))
+                              failures)))))
+
+;; Like `dired-map-over-marks-check', but `dired-log-summary' is always called, and first arg passed is different.
+;;
+(defun diredp-map-over-marks-and-report (fun mark-arg op-symbol &optional show-progress &rest fun-args)
+  "Map FUN over marked lines and report the results.
+FUN returns non-nil (the offending object, e.g. the short form of the
+filename) for a failure and probably logs a detailed error explanation
+using function `dired-log'.
+
+MARK-ARG is as the second argument of `dired-map-over-marks'.
+
+OP-SYMBOL is a symbol describing the operation performed (e.g.
+`compress').  It is used with `dired-mark-pop-up' to prompt the user
+\(e.g. with `Compress * [2 files]? ') and to display errors (e.g.
+`Failed to compress 1 of 2 files - type ? to see why (\"foo\")')
+
+SHOW-PROGRESS if non-nil means redisplay Dired after each file.
+
+FUN-ARGS is the list of any remaining args to
+`diredp-map-over-marks-and-report'.  Function FUN is applied to these
+arguments."
+  (and (dired-mark-confirm op-symbol mark-arg)
+       (let* ((results     (dired-map-over-marks (apply fun fun-args) mark-arg show-progress)) ; FUN return vals.
+              (nb-results  (length results))
+              (failures    (delq nil results))
+              (nb-fail     (length failures))
+              (op-strg     (capitalize (symbol-name op-symbol))))
+         (dired-log-summary (format "%s for %d file%s%s"
+                                    op-strg nb-results (dired-plural-s nb-results)
+                                    (if failures (format ": %d failures" nb-fail) ""))
+                            failures))))
+
+
+;; REPLACE ORIGINAL in `dired-aux.el'.
+;;
+(when (boundp 'dired-subdir-switches)   ; Emacs 22+
+  (defun dired-do-redisplay (&optional arg test-for-subdir) ; Bound to `l'
+    "Redisplay all marked (or next ARG) files.
+If on a subdir line, redisplay that subdirectory.  In that case,
+a prefix arg lets you edit the `ls' switches used for the new listing.
+
+Dired remembers switches specified with a prefix arg, so that reverting
+the buffer will not reset them.  However, using `dired-undo' to re-insert
+or delete subdirectories can bypass this machinery.  Hence, you sometimes
+may have to reset some subdirectory switches after a `dired-undo'.
+You can reset all subdirectory switches to the default using
+\\<dired-mode-map>\\[dired-reset-subdir-switches].
+See Info node `(emacs)Subdir switches' for more details."
+    ;; Moves point if the next ARG files are redisplayed.
+    (interactive "P\np")
+    (if (and test-for-subdir  (dired-get-subdir))
+        (let* ((dir       (dired-get-subdir))
+               (switches  (cdr (assoc-string dir dired-switches-alist))))
+          (dired-insert-subdir dir (and arg  (read-string "Switches for listing: "
+                                                          (or switches
+                                                              dired-subdir-switches
+                                                              dired-actual-switches)))))
+      (message "Redisplaying...")
+      ;; `message' is much faster than making `dired-map-over-marks' show progress
+      (dired-uncache (if (consp dired-directory) (car dired-directory) dired-directory))
+      (dired-map-over-marks (let ((fname                    (dired-get-filename))
+                                  ;; Postpone readin hook map over all marked files (Bug#6810).
+                                  (dired-after-readin-hook  nil))
+                              (message "Redisplaying... `%s'" fname)
+                              (dired-update-file-line fname))
+                            arg)
+      (run-hooks 'dired-after-readin-hook)
+      (dired-move-to-filename)
+      (message "Redisplaying...done"))))
+
+
+;; REPLACE ORIGINAL in `dired-aux.el'.
+;;
+(unless (boundp 'dired-subdir-switches) ; Emacs 20, 21
+  (defun dired-do-redisplay (&optional arg test-for-subdir) ; Bound to `l'
+    "Redisplay all marked (or next ARG) files.
+If on a subdir line, redisplay that subdirectory.  In that case,
+a prefix arg lets you edit the `ls' switches used for the new listing."
+    ;; Moves point if the next ARG files are redisplayed.
+    (interactive "P\np")
+    (if (and test-for-subdir  (dired-get-subdir))
+        (dired-insert-subdir (dired-get-subdir)
+                             (and arg  (read-string "Switches for listing: " dired-actual-switches)))
+      (message "Redisplaying...")
+      ;; `message' is much faster than making dired-map-over-marks show progress
+      (dired-uncache (if (consp dired-directory) (car dired-directory) dired-directory))
+      (dired-map-over-marks (let ((fname  (dired-get-filename)))
+                              (message "Redisplaying... `%s'" fname)
+                              (dired-update-file-line fname))
+                            arg)
+      (dired-move-to-filename)
+      (message "Redisplaying...done"))))
+
+
+;; REPLACE ORIGINAL in `dired.el'.
+;;
+(when (fboundp 'get-window-with-predicate) ; Emacs 22+
+  (defun dired-dwim-target-directory ()
+    "Guess a target directory to use for Dired.
+If there is a Dired buffer displayed in another window, use its
+current subdir, else use current subdir of this Dired buffer."
+    (let ((this-dir  (and (eq major-mode 'dired-mode)  (dired-current-directory))))
+      ;; Non-dired buffer may want to profit from this function, e.g. `vm-uudecode'.
+      (if dired-dwim-target
+          (let* ((other-win  (get-window-with-predicate (lambda (window)
+                                                          (with-current-buffer (window-buffer window)
+                                                            (eq major-mode 'dired-mode)))
+                                                        nil
+                                                        (and diredp-dwim-any-frame-flag  'visible)))
+                 (other-dir  (and other-win  (with-current-buffer (window-buffer other-win)
+                                               (and (eq major-mode 'dired-mode)  (dired-current-directory))))))
+            (or other-dir  this-dir))
+        this-dir))))
+
+
+;; REPLACE ORIGINAL in `dired.el'.
+;;
+;; 1. Added behavior for non-positive prefix arg:
+;;    * Construct a cons DIRNAME arg.
+;;    * Read a Dired buffer name (not a directory) for its car.
+;;    * If READ-EXTRA-FILES-P is non-nil then read any number of file and dir names, to be included as its cdr. 
+;;    * If chosen Dired buffer exists and is an ordinary listing then start out with its `directory-files'.
+;;
+;; 2. If you use Icicles then this is a multi-command - see doc for `dired' defadvice.
+;;
+(defun dired-read-dir-and-switches (string &optional read-extra-files-p dired-buffer)
+  "Read arguments for `dired' commands.
+STRING is added to the prompt after \"Dired \".  If not \"\", it should
+end with a space.
+
+With a non-negative prefix arg, read the `ls' switches.
+With a non-negative prefix arg or none, read the directory to Dired.
+
+With a non-positive prefix arg:
+* If DIRED-BUFFER is non-nil, it is the name of the Dired buffer to
+  use.  Otherwise, read it (it is not necessarily a directory name).
+  If in Dired now, the current buffer name is the default.
+* If READ-EXTRA-FILES-P is non-nil then read any number of directory
+  or file names, to make up the Dired arbitrary-files listing.  You
+  can use file-name wildcards (i.e., `*' for globbing), to include the
+  matching files and directories.  Use `C-g' when done entering the
+  files and directories to list.
+
+Return a list of arguments for `dired': (DIRNAME SWITCHES).  DIRNAME
+here has the same form as `dired-directory'.  When a non-positive
+prefix arg is used, DIRNAME is a cons of the buffer name and the list
+of file names.
+
+If you use Icicles then reading uses Icicles completion, with
+additional multi-command keys.  See `dired' (defadvice doc)."
+  (let* ((switchs                                     (and current-prefix-arg
+                                                           (natnump (prefix-numeric-value current-prefix-arg))
+                                                           (read-string "Dired listing switches: "
+                                                                        dired-listing-switches)))
+         (icicle-candidate-action-fn
+          (lambda (cand)
+            (dired-other-window cand (and current-prefix-arg  (read-string "Dired listing switches: "
+                                                                           dired-listing-switches)))
+            (select-window (minibuffer-window))
+            (select-frame-set-input-focus (selected-frame))))
+;;; $$$$$$ Alternative: Could choose no-op for non-dir candidate.
+;;;          (icicle-candidate-action-fn
+;;;           (lambda (cand)
+;;;             (cond ((file-directory-p cand)
+;;;                    (dired-other-window cand (and current-prefix-arg  (read-string "Dired listing switches: "
+;;;                                                                                   dired-listing-switches)))
+;;;                    (select-window (minibuffer-window))
+;;;                    (select-frame-set-input-focus (selected-frame)))
+;;;                   (t
+;;;                    (message "Not a directory: `%s'" cand) (sit-for 2)))))
+         (icicle-all-candidates-list-alt-action-fn ; M-|'
+          (lambda (files)
+            (let ((enable-recursive-minibuffers  t))
+              (dired-other-window (cons (read-string (format "Dired %s(buffer name): " string)) files)))))
+         (icicle-sort-comparer                        (or (and (boundp 'icicle-file-sort) ; If not reading files
+                                                               icicle-file-sort) ; then dirs first.
+                                                          (and (> (prefix-numeric-value current-prefix-arg) 0)
+                                                               'icicle-dirs-first-p)
+                                                          (and (boundp 'icicle-sort-comparer)
+                                                               icicle-sort-comparer)))
+
+         ;; The rest of the bindings are from `icicle-file-bindings', in `icicles-mac.el'.
+         (completion-ignore-case
+          (or (and (boundp 'read-file-name-completion-ignore-case)  read-file-name-completion-ignore-case)
+              completion-ignore-case))
+         (icicle-show-Completions-initially-flag      (and (boundp 'icicle-show-Completions-initially-flag)
+                                                           (or icicle-show-Completions-initially-flag
+                                                               icicle-files-ido-like-flag)))
+         (icicle-top-level-when-sole-completion-flag  (and (boundp 'icicle-top-level-when-sole-completion-flag)
+                                                           (or icicle-top-level-when-sole-completion-flag
+                                                               icicle-files-ido-like-flag)))
+         (icicle-default-value                        (and (boundp 'icicle-default-value)
+                                                           (if (and icicle-files-ido-like-flag
+                                                                    icicle-default-value)
+                                                               icicle-files-ido-like-flag
+                                                             ;;  Get default via `M-n', but do not insert it.
+                                                             (and (memq icicle-default-value '(t nil))
+                                                                  icicle-default-value))))
+         (icicle-must-match-regexp                    (and (boundp 'icicle-file-match-regexp)
+                                                           icicle-file-match-regexp))
+         (icicle-must-not-match-regexp                (and (boundp 'icicle-file-no-match-regexp)
+                                                           icicle-file-no-match-regexp))
+         (icicle-must-pass-after-match-predicate      (and (boundp 'icicle-file-predicate)
+                                                           icicle-file-predicate))
+         (icicle-require-match-flag                   (and (boundp 'icicle-file-require-match-flag)
+                                                           icicle-file-require-match-flag))
+         (icicle-file-completing-p                    t)
+         (icicle-extra-candidates                     (and (boundp 'icicle-file-extras)  icicle-file-extras))
+         (icicle-transform-function                   'icicle-remove-dups-if-extras)
+         ;; Put `icicle-file-sort' first.  If already in the list, move it, else add it, to beginning.
+         (icicle--temp-orders                         (and (boundp 'icicle-sort-orders-alist)
+                                                           (copy-sequence icicle-sort-orders-alist)))
+         (icicle-candidate-help-fn                    (lambda (cand)
+                                                        (icicle-describe-file cand current-prefix-arg t)))
+         (icicle-candidate-alt-action-fn              (and (boundp 'icicle-candidate-alt-action-fn)
+                                                           (or icicle-candidate-alt-action-fn
+                                                               (icicle-alt-act-fn-for-type "file"))))
+         (icicle-delete-candidate-object              'icicle-delete-file-or-directory)
+         (icicle-sort-orders-alist
+          (and (boundp 'icicle-sort-orders-alist)
+               (progn (when t ; $$$$ (and icicle-file-sort-first-time-p  icicle-file-sort)
+                        (setq icicle-sort-comparer  icicle-file-sort))
+                        ; $$$$ (setq icicle-file-sort-first-time-p  nil))
+                      (if icicle-file-sort
+                          (let ((already-there  (rassq icicle-file-sort icicle--temp-orders)))
+                            (if already-there
+                                (cons already-there (setq icicle--temp-orders  (delete already-there
+                                                                                       icicle--temp-orders)))
+                              (cons `("by `icicle-file-sort'" ,@icicle-file-sort) icicle--temp-orders)))
+                        icicle--temp-orders)))))
+    (when (fboundp 'icicle-bind-file-candidate-keys) (icicle-bind-file-candidate-keys))
+    (unwind-protect
+         (list
+          (if (> (prefix-numeric-value current-prefix-arg) 0)
+              ;; If a dialog box is about to be used, call `read-directory-name' so the dialog
+              ;; code knows we want directories.  Some dialog boxes can only select directories
+              ;; or files when popped up, not both. If no dialog box is used, call `read-file-name'
+              ;; because the user may want completion of file names for use in a wildcard pattern.
+              (funcall (if (and (fboundp 'read-directory-name)  (next-read-file-uses-dialog-p))
+                           #'read-directory-name
+                         #'read-file-name)
+                       (format "Dired %s(directory): " string) nil default-directory nil)
+            (dolist (db  dired-buffers) ; Remove any killed buffers from `dired-buffers' (even if DIRED-BUFFER).
+              (unless (buffer-name (cdr db)) (setq dired-buffers  (delq db dired-buffers))))
+            (let* ((dbufs   (and (not dired-buffer)
+                                 (mapcar (lambda (db) (list (buffer-name (cdr db)))) dired-buffers)))
+                   (dirbuf  (or dired-buffer
+                                (completing-read (format "Dired %s(buffer name): " string) dbufs nil nil nil nil
+                                                 (and (derived-mode-p 'dired-mode)  (buffer-name)))))
+                   (files   (and (diredp-existing-dired-buffer-p dirbuf)
+                                 (with-current-buffer (get-buffer dirbuf)
+                                   (and (not (consp dired-directory))
+                                        (directory-files dired-directory 'FULL diredp-re-no-dot)))))
+                   file)
+              (when read-extra-files-p
+                (while (condition-case nil ; Use lax completion, to allow wildcards.
+                           (setq file  (read-file-name "File or dir (C-g when done): "))
+                         (quit nil))
+                  ;; Do not allow root dir (`/' or a Windows drive letter, e.g. `d:/').
+                  (if (diredp-root-directory-p file)
+                      (progn (message "Cannot choose root directory") (sit-for 1))
+                    (push file files))))
+              (cons dirbuf files)))
+          switchs)
+      (when (fboundp 'icicle-unbind-file-candidate-keys) (icicle-unbind-file-candidate-keys)))))
+
+
+;;; $$$$$$$$ An alternative implementation - different behavior.
+;;;
+;;; ;; REPLACE ORIGINAL in `dired.el'.
+;;; ;;
+;;; ;; Non-positive prefix arg means construct cons DIRNAME arg: Read Dired name and files/dirs.
+;;; ;;
+;;; (defun dired-read-dir-and-switches (string)
+;;;   "Read arguments for `dired'.
+;;; With a non-negative prefix arg, prompt first for `ls' switches.
+;;; With a non-positive prefix arg, read the Dired buffer name and then
+;;;  read any number of dir or file names, to make up the Dired listing.
+
+;;; STRING is appended to the prompt, unless prefix arg is non-positive.
+;;; If non-empty, STRING should begin with a SPC."
+;;;   (let ((switches    (and current-prefix-arg
+;;;                           (>= (prefix-numeric-value current-prefix-arg) 0)
+;;;                           (read-string "Dired listing switches: " dired-listing-switches)))
+;;;         (formt       (format "Dired %s(directory): " string))
+;;;         (entries     ())
+;;;         (curr-entry  ""))
+;;;     (when (and current-prefix-arg  (<= (prefix-numeric-value current-prefix-arg) 0))
+;;;       (push (completing-read "Dired buffer name: " dired-buffers) entries)
+;;;       (setq curr-entry  (read-file-name (format "Dir or file: ") nil "" 'MUST-MATCH))
+;;;       (while (not (equal "" curr-entry))
+;;;         (push curr-entry entries)
+;;;         (setq curr-entry  (read-file-name (format "Dir or file: ") nil "" 'MUST-MATCH)))
+;;;       (unless (cadr entries) (push default-directory entries)))
+;;;     (list (or (nreverse entries)  (if (and (fboundp 'next-read-file-uses-dialog-p)
+;;;                                            (next-read-file-uses-dialog-p))
+;;;                                       (read-directory-name formt nil default-directory nil)
+;;;                                     (read-file-name formt nil default-directory nil)))
+;;;           switches)))
+
+
+;; ADVISE ORIGINAL in `dired.el'.
+;;
+;; Add to doc string, to document non-positive prefix arg.
+;;
+(defadvice dired (before diredp-doc-cons-arg activate)
+  "Interactively, a prefix argument changes the behavior as follows:
+
+* If >= 0, you are first prompted for the `ls' switches to use.
+
+* If <= 0, you are prompted first for the name of the Dired  buffer.
+  Then you are prompted repeatedly for the names of the directories
+  or files to list in the buffer.  You can use file-name wildcards
+  (i.e., `*' for globbing), to include the matching files and
+  directories.  Use `C-g' to end.
+
+  In other words, instead of listing a single directory, the Dired
+  buffer can list any number of directories and file names, which can
+  even belong to different directory trees.
+
+The rest of this description applies only if you use Icicles.
+
+In Icicle mode this is a multi-command: You can cycle among file-name
+completion candidates and act individually on those that name
+directories.  The action is to open Dired for the directory.  While
+cycling, these keys are active:
+
+\\<minibuffer-local-completion-map>\
+`C-mouse-2', `C-return' - Act on current completion candidate only
+`C-down', `C-wheel-down' - Move to next completion candidate and act
+`C-up', `C-wheel-up' - Move to previous completion candidate and act
+`C-next'  - Move to next apropos-completion candidate and act
+`C-prior' - Move to previous apropos-completion candidate and act
+`C-end'   - Move to next prefix-completion candidate and act
+`C-home'  - Move to previous prefix-completion candidate and act
+`\\[icicle-all-candidates-action]'     - Act on *all* candidates, successively (careful!)
+`\\[icicle-all-candidates-list-alt-action]'     - Open Dired on all candidates
+
+When candidate action and cycling are combined (e.g. `C-next'), user
+option `icicle-act-before-cycle-flag' determines which occurs first.
+
+With prefix `C-M-' instead of `C-', the same keys (`C-M-mouse-2',
+`C-M-RET', `C-M-down', and so on) provide help about candidates.
+
+Use `mouse-2', `RET', or `S-RET' to finally choose a candidate, or
+`C-g' to quit.
+
+These keys are also bound in the minibuffer during completion (`*'
+means the key requires library `Bookmark+'):
+
+   S-delete    - Delete candidate file or (empty) dir
+   C-c +       - Create a new directory
+   C-backspace - Go up one directory level
+ * C-x C-t *   - Narrow to files with all of the tags you specify
+ * C-x C-t +   - Narrow to files with some of the tags you specify
+ * C-x C-t % * - Narrow to files with all tags matching a regexp
+ * C-x C-t % + - Narrow to files with some tags  matching a regexp
+ * C-x a +     - Add tags to the current-candidate file
+ * C-x a -     - Remove tags from the current-candidate file
+ * C-x m       - Access file bookmarks (not just autofiles)"
+  (interactive (dired-read-dir-and-switches "" 'READ-EXTRA-FILES-P)))
+
+
+;; ADVISE ORIGINAL in `dired.el'.
+;;
+;; Add to doc string, to document non-positive prefix arg.
+;;
+(defadvice dired-other-window (before diredp-doc-cons-arg activate)
+  "Interactively, a prefix argument changes the behavior.
+A non-positive prefix arg lets you choose an explicit set of files and
+directories to list.  See the advice for `dired' for more information."
+  (interactive (dired-read-dir-and-switches "" 'READ-EXTRA-FILES-P)))
+
+
+;; ADVISE ORIGINAL in `dired.el'.
+;;
+;; Add to doc string, to document non-positive prefix arg.
+;;
+(defadvice dired-other-frame (before diredp-doc-cons-arg activate)
+  "Interactively, a prefix argument changes the behavior.
+A non-positive prefix arg lets you choose an explicit set of files and
+directories to list.  See the advice for `dired' for more information."
+  (interactive (dired-read-dir-and-switches "" 'READ-EXTRA-FILES-P)))
+
+
+;; REPLACE ORIGINAL in `dired.el'.
+;;
+;; Made compatible with Emacs 20, 21, which do not have [:alnum].
+;; Also, this is defined here because it is used elsewhere in the file.
+;;
+(defun dired-switches-escape-p (switches)
+  "Return non-nil if the string SWITCHES contains `-b' or `--escape'."
+  (if (fboundp 'dired-switches-check)   ; Emacs 24.4+ - see Emacs bug #17218.
+      (dired-switches-check switches "escape" "b")
+    ;; Do not match things like "--block-size" that happen to contain "b".
+    (if (> emacs-major-version 21)      ; SWITCHES must be a string here, not nil.
+        (diredp-string-match-p "\\(\\`\\| \\)-[[:alnum:]]*b\\|--escape\\>" switches)
+      (diredp-string-match-p "\\(\\`\\| \\)-\\(\w\\|[0-9]\\)*b\\|--escape\\>" switches))))
+
+
+;; From `dired.el'
+
+(when (and (> emacs-major-version 22)  (featurep 'ls-lisp+))
+
+;;; 2012/04/26: Commented this out.
+;;;             Might need it again when update `ls-lisp+.el' to fix other things.
+;;;
+;;;   ;; Use t as WILDCARD arg to `dired-insert-directory'.
+;;;   ;;
+;;;   (defun dired-readin-insert ()
+;;;     ;; Insert listing for the specified dir (and maybe file  list)
+;;;     ;; already in dired-directory, assuming a clean buffer.
+;;;     (let (dir  file-list)
+;;;       (if (consp dired-directory)
+;;;           (setq dir        (car dired-directory)
+;;;                 file-list  (cdr dired-directory))
+;;;         (setq dir        dired-directory
+;;;               file-list  ()))
+;;;       (setq dir  (expand-file-name dir))
+;;;       (if (and (equal "" (file-name-nondirectory dir))  (not file-list))
+;;;           ;; If we are reading a whole single directory...
+;;;           (dired-insert-directory dir dired-actual-switches nil nil t)
+;;;         (unless (file-readable-p (directory-file-name (file-name-directory dir)))
+;;;           (error "Directory `%s' inaccessible or nonexistent" dir))
+;;;         ;; Else treat it as a wildcard spec.
+;;;         (dired-insert-directory dir dired-actual-switches file-list t t))))
+
+
+  ;; REPLACE ORIGINAL in `dired.el'.
+  ;;
+  ;; Compute WILDCARD arg for `insert-directory' for individual file (don't just use nil).
+  ;;
+  (defun dired-insert-directory (dir switches &optional file-list wildcard hdr)
+    "Insert a directory listing of DIR, Dired style.
+Use SWITCHES to make the listings.
+If FILE-LIST is non-nil, list only those files.
+Otherwise, if WILDCARD is non-nil, expand wildcards;
+ in that case, DIR should be a file name that uses wildcards.
+In other cases, DIR should be a directory name or a directory filename.
+If HDR is non-nil, insert a header line with the directory name."
+    (let ((opoint               (point))
+          (process-environment  (copy-sequence process-environment))
+          end)
+      (when (and
+             ;; Do not try to invoke `ls' if on DOS/Windows, where `ls-lisp' is used, unless
+             ;; the user really wants to use `ls', as indicated by
+             ;; `ls-lisp-use-insert-directory-program'.
+             (or (not (featurep 'ls-lisp))  ls-lisp-use-insert-directory-program)
+             (or (if (eq dired-use-ls-dired 'unspecified)
+                     ;; Check if "ls --dired" gives exit code 0.  Put it in `dired-use-ls-dired'.
+                     (or (setq dired-use-ls-dired  (eq 0 (call-process insert-directory-program
+                                                                       nil nil nil "--dired")))
+                         (progn (message "Command `ls' does not support switch `--dired' - see \
+`dired-use-ls-dired'.")
+                                nil))
+                   dired-use-ls-dired)
+                 (file-remote-p dir)))
+        (setq switches  (concat "--dired " switches)))
+      ;; We used to specify the C locale here, to force English month names.  This should not be
+      ;; necessary any more with the new value of `directory-listing-before-filename-regexp'.
+      (if file-list
+          (dolist (f  file-list)
+            (let ((beg  (point)))
+              ;; Compute wildcard arg for this file.
+              (insert-directory f switches (diredp-string-match-p "[[?*]" f) nil)
+              ;; Re-align fields, if necessary.
+              (dired-align-file beg (point))))
+        (insert-directory dir switches wildcard (not wildcard)))
+      ;; Quote certain characters, unless `ls' quoted them for us.
+      (unless (dired-switches-escape-p dired-actual-switches)
+        (save-excursion
+          (setq end  (point-marker))
+          (goto-char opoint)
+          (while (search-forward "\\" end t)
+            (replace-match (apply #'propertize "\\\\" (text-properties-at (match-beginning 0)))
+                           nil t))
+          (goto-char opoint)
+          (while (search-forward "\^m" end t)
+            (replace-match (apply #'propertize "\\015" (text-properties-at (match-beginning 0)))
+                           nil t))
+          (set-marker end nil))
+        ;; Comment in original, from some Emacs Dev developer:
+        ;;
+        ;; Replace any newlines in DIR with literal "\n" for the sake of the header line.  To
+        ;; disambiguate a literal "\n" in the actual dirname, we also replace "\" with "\\".
+        ;; I think this should always be done, irrespective of the value of
+        ;; dired-actual-switches, because:
+        ;;   i) Dired does not work with an unescaped newline in the directory name used in the
+        ;;      header (bug=10469#28), and
+        ;;  ii) "\" is always replaced with "\\" in the listing, so doing it in the header as
+        ;;      well makes things consistent.
+        ;; But at present it is done only if "-b" is in ls-switches, because newlines in dirnames
+        ;; are uncommon, and people may have gotten used to seeing unescaped "\" in the headers.
+        ;; Note: adjust `dired-build-subdir-alist' if you change this.
+        (setq dir  (replace-regexp-in-string "\\\\" "\\\\" dir nil t)
+              dir  (replace-regexp-in-string "\n" "\\n" dir nil t)))
+      ;; If we used `--dired' and it worked, the lines are already indented.  Else indent them.
+      (unless (save-excursion (goto-char opoint) (diredp-looking-at-p "  "))
+        (let ((indent-tabs-mode  nil)) (indent-rigidly opoint (point) 2)))
+      ;; Insert text at the beginning to standardize things.
+      (let ((content-point opoint))
+        (save-excursion
+          (goto-char opoint)
+          (when (and (or hdr  wildcard)  (not (and (looking-at "^  \\(.*\\):$")
+                                                   (file-name-absolute-p (match-string 1)))))
+            ;; `dired-build-subdir-alist' will replace the name by its expansion, so it does not
+            ;; matter whether what we insert here is fully expanded, but it should be absolute.
+            (insert "  " (directory-file-name (file-name-directory dir)) ":\n")
+            (setq content-point (point)))
+          (when wildcard
+            ;; Insert "wildcard" line where "total" line would be for a full dir.
+            (insert "  wildcard " (file-name-nondirectory dir) "\n")))
+        (dired-insert-set-properties content-point (point))))))
+
+
+;;; Image stuff.
+
+(defun diredp-image-dired-required-msg ()
+  "Raise an error if `image-dired.el' is not loaded."
+  (unless (require 'image-dired nil t) (error "This command requires library `image-dired.el'")))
+
+;; See `image-dired-create-thumb'.
+;; Define this even if `image-dired.el' is not loaded.
+;; Do NOT raise an error if not loaded, because this is used in `diredp-mouseover-help'.
+;;;###autoload
+(defun diredp-image-dired-create-thumb (file &optional arg)
+  "Create thumbnail image file for FILE (default: file on current line).
+With a prefix arg, replace any existing thumbnail for FILE.
+With a numeric prefix arg (not a cons), use it as the thumbnail size.
+Return the name of the thumbnail image file, or nil if none."
+  (interactive (list (if (derived-mode-p 'dired-mode)
+                         (dired-get-filename nil 'NO-ERROR)
+                       ;; Make it work also for `diredp-list-files' listings.
+                       (buffer-substring-no-properties (line-beginning-position) (line-end-position)))
+                     current-prefix-arg))
+  (and (fboundp 'image-dired-thumb-name) ; No-op (return nil) if `image-dired.el' not loaded.
+       (let ((thumb-name  (image-dired-thumb-name file)))
+         (when arg (clear-image-cache))
+         (when (or arg  (not (file-exists-p thumb-name)))
+           (let ((image-dired-thumb-width   (or (and arg  (atom arg)  arg)  image-dired-thumb-width))
+                 (image-dired-thumb-height  (or (and arg  (atom arg)  arg)  image-dired-thumb-height)))
+             (unless (zerop (image-dired-create-thumb file thumb-name))
+               (error "Thumbnail image file could not be created"))))
+         (and (file-exists-p thumb-name)  thumb-name))))
+
+
+;; REPLACE ORIGINAL in `image-dired.el' (Emacs 22-23).
+;;
+;; 1. Raise an error if `image-dired.el' is not available.
+;; 2. Repro it here so it picks up `Dired+' version of `dired-map-over-marks'.
+;;
+;;;###autoload
+(defun image-dired-dired-insert-marked-thumbs () ; Bound to `C-t C-t' (Emacs 22-23)
+  "Insert thumbnails before file names of marked files in the Dired buffer."
+  (interactive (progn (diredp-image-dired-required-msg) ()))
+  (dired-map-over-marks
+   (let* ((image-pos   (dired-move-to-filename))
+          (image-file  (dired-get-filename))
+          (thumb-file  (image-dired-get-thumbnail-image image-file))
+          overlay)
+     ;; If image is not already added, then add it.
+     (unless (delq nil (mapcar (lambda (o) (overlay-get o 'put-image))
+                               ;; Can't use (overlays-at (point)), BUG?
+                               (overlays-in (point) (1+ (point)))))
+       (put-image thumb-file image-pos)
+       (setq overlay  (car (delq nil (mapcar (lambda (ov) (and (overlay-get ov 'put-image)  ov))
+                                             (overlays-in (point) (1+ (point)))))))
+       (overlay-put overlay 'image-file image-file)
+       (overlay-put overlay 'thumb-file thumb-file)))
+   nil)
+  (add-hook 'dired-after-readin-hook 'image-dired-dired-after-readin-hook nil t))
+
+
+;; REPLACE ORIGINAL in `image-dired.el' (Emacs 24+).
+;;
+;; 1. Raise an error if `image-dired.el' is not available.
+;; 2. Repro it here so it picks up `Dired+' version of `dired-map-over-marks'.
+;;
+;;;###autoload
+(defun image-dired-dired-toggle-marked-thumbs (&optional arg) ; Bound to `C-t C-t' (Emacs 24+)
+  "Toggle thumbnails in front of file names in Dired.
+If no files are marked, insert or hide thumbnails on the current line.
+With a numeric prefix arg N, ignore marked files and act on the next N
+files (previous -N files, if N < 0)."
+  (interactive (progn (diredp-image-dired-required-msg) (list current-prefix-arg)))
+  (dired-map-over-marks
+   (let* ((image-pos   (dired-move-to-filename))
+          (image-file  (diredp-get-image-filename nil 'NO-ERROR))
+          thumb-file  overlay)
+     (when image-file
+       (setq thumb-file  (image-dired-get-thumbnail-image image-file))
+       ;; If image is not already added, then add it.
+       (let* ((cur-ovs   (overlays-in (point) (1+ (point))))
+              (thumb-ov  (car (diredp-remove-if-not (lambda (ov) (overlay-get ov 'thumb-file))
+                                                    cur-ovs))))
+         (if thumb-ov
+             (delete-overlay thumb-ov)
+           (put-image thumb-file image-pos)
+           (setq overlay (car (delq nil (mapcar (lambda (ov) (and (overlay-get ov 'put-image)  ov))
+                                                (overlays-in (point) (1+ (point)))))))
+           (overlay-put overlay 'image-file image-file)
+           (overlay-put overlay 'thumb-file thumb-file)))))
+   arg
+   'SHOW-PROGRESS)
+  (add-hook 'dired-after-readin-hook 'image-dired-dired-after-readin-hook nil t))
+
+;; Corresponds to `image-dired-dired-comment-files'.
+;;;###autoload
+(defun diredp-image-dired-comment-file ()
+  "Add comment to this image file."
+  (interactive (progn (diredp-image-dired-required-msg) ()))
+  (image-dired-write-comments (cons (dired-get-filename) (image-dired-read-comment))))
+
+;; Corresponds to `image-dired-tag-files'.
+;;;###autoload
+(defun diredp-image-dired-tag-file ()
+  "Tag this image file with an `image-dired' tag."
+  (interactive (progn (diredp-image-dired-required-msg) ()))
+  (image-dired-write-tags (cons (dired-get-filename)
+                                (read-string "Tags to add (use `;' to separate): "))))
+
+;; Corresponds to `image-dired-delete-tag'.
+;;;###autoload
+(defun diredp-image-dired-delete-tag ()
+  "Remove an `image-dired' tag from  this image file."
+  (interactive (progn (diredp-image-dired-required-msg) ()))
+  (image-dired-remove-tag (list (dired-get-filename)) (read-string "Tag to remove: ")))
+
+;; Corresponds to `image-dired-display-thumbs'.
+;;;###autoload
+(defun diredp-image-dired-display-thumb (&optional append)
+  "Pop to thumbnail of this image file, in `image-dired-thumbnail-buffer'.
+If a thumbnail image does not yet exist for this file, create it.
+With a prefix arg, append the thumbnail to the thumbnails buffer,
+instead of clearing the buffer first."
+  (interactive (progn (diredp-image-dired-required-msg) (list current-prefix-arg)))
+  (let* ((dired-buf   (current-buffer))
+         (curr-file   (dired-get-filename))
+         (thumb-name  (image-dired-thumb-name curr-file)))
+    (with-current-buffer (image-dired-create-thumbnail-buffer)
+      (let ((inhibit-read-only  t))
+        (if (not append) (erase-buffer) (goto-char (point-max)))
+        (if (and (not (file-exists-p thumb-name))
+                 (not (zerop (image-dired-create-thumb curr-file thumb-name))))
+            (message "Cannot create thumbnail image for file `%s'" curr-file)
+          (image-dired-insert-thumbnail thumb-name curr-file dired-buf)))
+      (cond ((eq 'dynamic image-dired-line-up-method)     (image-dired-line-up-dynamic))
+            ((eq 'fixed image-dired-line-up-method)       (image-dired-line-up))
+            ((eq 'interactive image-dired-line-up-method) (image-dired-line-up-interactive))
+            ((eq 'none image-dired-line-up-method)        nil)
+            (t                                            (image-dired-line-up-dynamic))))
+    (pop-to-buffer image-dired-thumbnail-buffer)))
+
+;; Corresponds to `image-dired-copy-with-exif-file-name'.
+;;;###autoload
+(defun diredp-image-dired-copy-with-exif-name ()
+  "Copy this image file to your main image directory.
+Uses `image-dired-get-exif-file-name' to name the new file."
+  (interactive (progn (diredp-image-dired-required-msg) ()))
+  (let* ((curr-file  (dired-get-filename))
+         (new-name   (format "%s/%s" (file-name-as-directory
+                                      (expand-file-name image-dired-main-image-directory))
+                             (image-dired-get-exif-file-name curr-file))))
+    (message "Copying `%s' to `%s'..." curr-file new-name)
+    (copy-file curr-file new-name)
+    (message "Copying `%s' to `%s'...done" curr-file new-name)))
+
+;; Corresponds to `image-dired-dired-edit-comment-and-tags'.
+;;;###autoload
+(defun diredp-image-dired-edit-comment-and-tags ()
+  "Edit comment and tags for this image file."
+  (interactive (progn (diredp-image-dired-required-msg) ()))
+  (setq image-dired-widget-list  ())
+  (let ((file  (dired-get-filename)))
+    (if (fboundp 'pop-to-buffer-same-window)
+        (pop-to-buffer-same-window "*Image-Dired Edit Meta Data*")
+      (switch-to-buffer "*Image-Dired Edit Meta Data*"))
+    (kill-all-local-variables)
+    (make-local-variable 'widget-example-repeat)
+    (let ((inhibit-read-only  t))
+      (erase-buffer)
+      (remove-overlays)
+      (widget-insert
+       "\nEdit comment and tags for the image.  Separate multiple tags
+with a comma (`,').  Move forward among fields using `TAB' or `RET'.
+Move backward using `S-TAB'.  Click `Save' to save your edits or
+`Cancel' to abandon them.\n\n")
+      (let* ((thumb-file  (image-dired-thumb-name file))
+             (img         (create-image thumb-file))
+             comment-widget  tag-widget)
+        (insert-image img)
+        (widget-insert "\n\nComment: ")
+        (setq comment-widget  (widget-create 'editable-field :size 60 :format "%v "
+                                             :value (or (image-dired-get-comment file)  "")))
+        (widget-insert "\nTags:    ")
+        (setq tag-widget  (widget-create 'editable-field :size 60 :format "%v "
+                                         :value (or (mapconcat #'identity (image-dired-list-tags file) ",")  "")))
+        ;; Save info in widgets to use when the user saves the form.
+        (setq image-dired-widget-list  (append image-dired-widget-list
+                                               (list (list file comment-widget tag-widget))))
+        (widget-insert "\n\n")))
+    (widget-insert "\n")
+    (widget-create 'push-button :notify (lambda (&rest _ignore)
+                                          (image-dired-save-information-from-widgets)
+                                          (bury-buffer)
+                                          (message "Done"))
+                   "Save")
+    (widget-insert " ")
+    (widget-create 'push-button :notify (lambda (&rest _ignore)
+                                          (bury-buffer)
+                                          (message "Operation canceled"))
+                   "Cancel")
+    (widget-insert "\n")
+    (use-local-map widget-keymap)
+    (widget-setup)
+    (widget-forward 1)))                ; Jump to the first widget.
+
+;;;###autoload
+(defun diredp-do-display-images (&optional arg)
+  "Display the marked image files.
+A prefix argument ARG specifies files to use instead of those marked.
+ An integer means use the next ARG files (previous -ARG, if < 0).
+ `C-u': Use the current file (whether or not any files are marked).
+ More than one `C-u' means use all files in the Dired buffer, as if
+ they were all marked."
+  (interactive (progn (unless (require 'image-file nil t)
+                        (error "This command requires library `image-file.el'"))
+                      (diredp-ensure-mode)
+                      (list current-prefix-arg)))
+  (dired-map-over-marks-check #'diredp-display-image arg 'display\ image
+                              (diredp-fewer-than-2-files-p arg)))
+
+(defun diredp-display-image ()
+  "Display image file at point.  Log an error using `dired-log'."
+  (let ((file     (dired-get-filename 'LOCAL 'NO-ERROR))
+        (failure  nil))
+    (save-excursion
+      (if (let ((inhibit-changing-match-data  t))
+            (and file  (diredp-string-match-p (image-file-name-regexp) file)))
+          (condition-case err
+              (let ((find-file-run-dired  nil)) (find-file-other-window file))
+            (error (setq failure  (error-message-string err))))
+        (dired-log (format "Not an image file: `%s'" file))
+        (setq failure  t)))
+    (and failure                    ; Return nil for success.
+         (prog1 file                ; Return file name for failure.
+           (unless (eq t failure) (dired-log "Cannot display image file `%s':\n%s\n" file failure)  t)))))
+
+;;;###autoload
+(defun diredp-image-show-this-file (&optional arg)
+  "Show the image file named on this line in another frame or window.
+Option `diredp-image-show-this-file-use-frame-flag' which is used.
+
+With a prefix arg, shrink the image to fit a frame that many lines
+high or a window at least that many lines high.
+Otherwise, show the image full size.
+Note:
+ * To show the image full size, you can also use `\\<dired-mode-map>\\[dired-find-file]'.
+ * To show the image in another window, at whatever scale fits there,
+   you can use `\\[image-dired-dired-display-image]'."
+  (interactive (progn (diredp-image-dired-required-msg) (list current-prefix-arg)))
+  (image-dired-create-display-image-buffer)
+  (let ((fit-frame-inhibit-fitting-flag  t) ; In `fit-frame.el'.
+        (img-file                        (diredp-get-image-filename)))
+    (if img-file
+        (with-current-buffer image-dired-display-image-buffer
+          (let* ((window-min-height  (if arg
+                                         (prefix-numeric-value arg)
+                                       (ceiling (cdr (image-size (create-image img-file))))))
+                 (special-display-frame-alist   (if diredp-image-show-this-file-use-frame-flag
+                                                    (cons `(height . ,window-min-height)
+                                                          special-display-frame-alist)
+                                                  special-display-frame-alist))
+                 (special-display-buffer-names  (if diredp-image-show-this-file-use-frame-flag
+                                                    (cons image-dired-display-image-buffer
+                                                          special-display-buffer-names)
+                                                  special-display-buffer-names)))
+            (display-buffer image-dired-display-image-buffer)
+            (image-dired-display-image img-file (not arg))))
+      (message "No image file here")))) ; An error is handled by `diredp-get-image-filename'.
+
+(defun diredp-report-file-result (file result failure echop)
+  (cond (failure
+         (when echop (message "Error for %s:\n%s\n" file failure) (sit-for 1))
+         (dired-log "Error for %s:\n%s\n" file failure)
+         (dired-make-relative file))   ; Return file name for failure.
+        (t
+         (when echop (message "Result for %s:\n%s\n" file result) (sit-for 1))
+         (dired-log "Result for %s:\n%s\n" file result)
+         nil)))                      ; Return nil for success.
+
+;;;###autoload
+(defun diredp-do-emacs-command (command &optional arg)
+  "Invoke an Emacs COMMAND in each marked file.
+Visit each marked file at its beginning, then invoke COMMAND.
+You are prompted for the COMMAND.
+
+The result returned for each file is logged by `dired-log'.  Use `?'
+to see all such results and any error messages.  If there are fewer
+marked files than `diredp-do-report-echo-limit' then each result is
+also echoed momentarily.
+
+A prefix argument behaves according to the ARG argument of
+`dired-get-marked-files'.  In particular, `C-u C-u' operates on all
+files in the Dired buffer."
+  (interactive (progn (diredp-ensure-mode)
+                      (list (diredp-read-command) current-prefix-arg)))
+  (save-selected-window
+    (diredp-map-over-marks-and-report
+     #'diredp-invoke-emacs-command arg 'invoke\ emacs\ command (diredp-fewer-than-2-files-p arg)
+     command (diredp-fewer-than-echo-limit-files-p arg))))
+
+(defun diredp-invoke-emacs-command (command &optional echop)
+  "Visit file of this line at its beginning, then invoke COMMAND.
+Log the result returned or any error.
+Non-nil optional arg ECHOP means also echo the result."
+  (let* ((file     (dired-get-filename))
+         (failure  (not (file-exists-p file)))
+         result)
+    (unless failure
+      (condition-case err
+          (with-current-buffer (find-file-noselect file)
+            (save-excursion
+              (goto-char (point-min))
+              (setq result  (call-interactively command))))
+        (error (setq failure  err))))
+    (diredp-report-file-result file result failure echop)))
+
+(defun diredp-read-command (&optional prompt default)
+  "Read the name of a command and return a symbol with that name.
+\(A command is anything that satisfies predicate `commandp'.)
+Prompt with PROMPT, which defaults to \"Command: \".
+By default, return the command named DEFAULT (or, with Emacs 23+, its
+first element if DEFAULT is a list).  (If DEFAULT does not name a
+command then it is ignored.)"
+  (setq prompt  (or prompt  "Command: "))
+  (let ((name  (completing-read prompt obarray #'commandp t nil
+                                'extended-command-history default)))
+    (while (string= "" name)
+      (setq name  (completing-read prompt obarray #'commandp t nil
+                                   'extended-command-history default)))
+    (intern name)))
+
+(when (fboundp 'diredp-read-expression) ; Emacs 22+
+
+  (defun diredp-do-lisp-sexp (sexp &optional arg)
+    "Evaluate an Emacs-Lisp SEXP in each marked file.
+Visit each marked file at its beginning, then evaluate SEXP.
+You are prompted for the SEXP.
+
+The result returned for each file is logged by `dired-log'.  Use `?'
+to see all such results and any error messages.  If there are fewer
+marked files than `diredp-do-report-echo-limit' then each result is
+also echoed momentarily.
+
+A prefix argument behaves according to the ARG argument of
+`dired-get-marked-files'.  In particular, `C-u C-u' operates on all
+files in the Dired buffer."
+    (interactive (progn (diredp-ensure-mode)
+                        (list (diredp-read-expression "Sexp: ") current-prefix-arg)))
+    (save-selected-window
+      (diredp-map-over-marks-and-report
+       #'diredp-eval-lisp-sexp arg 'eval\ elisp\ sexp (diredp-fewer-than-2-files-p arg)
+       sexp (diredp-fewer-than-echo-limit-files-p arg))))
+
+  (defun diredp-eval-lisp-sexp (sexp &optional echop)
+    "Visit file of this line at its beginning, then evaluate SEXP.
+Log the result returned or any error.
+Non-nil optional arg ECHOP means also echo the result."
+    (let* ((file     (dired-get-filename))
+           (failure  (not (file-exists-p file)))
+           result)
+      (unless failure
+        (condition-case err
+            (with-current-buffer (find-file-noselect file)
+              (save-excursion
+                (goto-char (point-min))
+                (setq result  (eval-expression sexp))))
+          (error (setq failure  err))))
+      (diredp-report-file-result file result failure echop)))
+
+  )
+ 
+;;; Face Definitions
+
+(defface diredp-autofile-name
+    '((((background dark)) (:background "#111313F03181")) ; Very dark blue
+      (t                   (:background "#EEECEC0FCE7E"))) ; Very pale goldenrod
+  "*Face used in Dired for names of files that are autofile bookmarks."
+  :group 'Dired-Plus :group 'font-lock-highlighting-faces)
+(defvar diredp-autofile-name 'diredp-autofile-name)
+
+(defface diredp-compressed-file-name
+    '((((background dark)) (:foreground "Blue"))
+      (t                   (:foreground "Brown")))
+  "*Face used for compressed file names."
+  :group 'Dired-Plus :group 'font-lock-highlighting-faces)
+(defvar diredp-compressed-file-name 'diredp-compressed-file-name)
+
+(defface diredp-compressed-file-suffix
+    '((((background dark)) (:foreground "Blue"))
+      (t                   (:foreground "Yellow")))
+  "*Face used for compressed file suffixes in Dired buffers.
+This means the `.' plus the file extension.  Example: `.zip'."
+  :group 'Dired-Plus :group 'font-lock-highlighting-faces)
+(defvar diredp-compressed-file-suffix 'diredp-compressed-file-suffix)
+
+(defface diredp-date-time
+    '((((background dark)) (:foreground "#74749A9AF7F7")) ; ~ med blue
+      (t                   (:foreground "DarkGoldenrod4")))
+  "*Face used for date and time in Dired buffers."
+  :group 'Dired-Plus :group 'font-lock-highlighting-faces)
+(defvar diredp-date-time 'diredp-date-time)
+
+(defface diredp-deletion
+    '((t (:foreground "Yellow" :background "Red")))
+  "*Face used for deletion flags (D) in Dired buffers."
+  :group 'Dired-Plus :group 'font-lock-highlighting-faces)
+(defvar diredp-deletion 'diredp-deletion)
+
+(defface diredp-deletion-file-name
+    '((t (:foreground "Red")))
+  "*Face used for names of deleted files in Dired buffers."
+  :group 'Dired-Plus :group 'font-lock-highlighting-faces)
+(defvar diredp-deletion-file-name 'diredp-deletion-file-name)
+
+(defface diredp-dir-heading
+    '((((background dark)) (:foreground "Yellow" :background "#00003F3F3434")) ; ~ dark green
+      (t                   (:foreground "Blue" :background "Pink")))
+  "*Face used for directory headings in Dired buffers."
+  :group 'Dired-Plus :group 'font-lock-highlighting-faces)
+(defvar diredp-dir-heading 'diredp-dir-heading)
+
+(defface diredp-dir-name
+    '((((background dark))
+       (:foreground "#7474FFFFFFFF" :background "#2C2C2C2C2C2C")) ; ~ cyan, dark gray
+      (t (:foreground "DarkRed" :background "LightGray")))
+  "*Face used for directory names."
+  :group 'Dired-Plus :group 'font-lock-highlighting-faces)
+(defvar diredp-dir-name 'diredp-dir-name)
+
+(defface diredp-dir-priv
+    '((((background dark))
+       (:foreground "#7474FFFFFFFF" :background "#2C2C2C2C2C2C")) ; ~ cyan, dark gray
+      (t (:foreground "DarkRed" :background "LightGray")))
+  "*Face used for directory privilege indicator (d) in Dired buffers."
+  :group 'Dired-Plus :group 'font-lock-highlighting-faces)
+(defvar diredp-dir-priv 'diredp-dir-priv)
+
+(defface diredp-exec-priv
+    '((((background dark)) (:background "#4F4F3B3B2121")) ; ~ dark brown
+      (t                   (:background "LightSteelBlue")))
+  "*Face used for execute privilege indicator (x) in Dired buffers."
+  :group 'Dired-Plus :group 'font-lock-highlighting-faces)
+(defvar diredp-exec-priv 'diredp-exec-priv)
+
+;; For this to show up, you need `F' among the options in `dired-listing-switches'.
+;; For example, I use "-alF" for `dired-listing-switches'.
+(defface diredp-executable-tag
+    '((t (:foreground "Red")))
+  "*Face used for executable tag (*) on file names in Dired buffers."
+  :group 'Dired-Plus :group 'font-lock-highlighting-faces)
+(defvar diredp-executable-tag 'diredp-executable-tag)
+
+(defface diredp-file-name
+    '((((background dark)) (:foreground "Yellow"))
+      (t                   (:foreground "Blue")))
+  "*Face used for file names (without suffixes) in Dired buffers.
+This means the base name.  It does not include the `.'."
+  :group 'Dired-Plus :group 'font-lock-highlighting-faces)
+(defvar diredp-file-name 'diredp-file-name)
+
+(defface diredp-file-suffix
+    '((((background dark)) (:foreground "#7474FFFF7474")) ; ~ light green
+      (t                   (:foreground "DarkMagenta")))
+  "*Face used for file suffixes in Dired buffers.
+This means the `.' plus the file extension.  Example: `.elc'."
+  :group 'Dired-Plus :group 'font-lock-highlighting-faces)
+(defvar diredp-file-suffix 'diredp-file-suffix)
+
+(defface diredp-flag-mark
+    '((((background dark)) (:foreground "Blue" :background "#7575D4D41D1D")) ; ~ olive green
+      (t                   (:foreground "Yellow" :background "Blueviolet")))
+  "*Face used for flags and marks (except D) in Dired buffers."
+  :group 'Dired-Plus :group 'font-lock-highlighting-faces)
+(defvar diredp-flag-mark 'diredp-flag-mark)
+
+(defface diredp-flag-mark-line
+    '((((background dark)) (:background "#787831311414")) ; ~ dark red brown
+      (t                   (:background "Skyblue")))
+  "*Face used for flagged and marked lines in Dired buffers."
+  :group 'Dired-Plus :group 'font-lock-highlighting-faces)
+(defvar diredp-flag-mark-line 'diredp-flag-mark-line)
+
+(defface diredp-ignored-file-name
+  '((((background dark)) (:foreground "#C29D6F156F15"))    ; ~ salmon
+    (t                   (:foreground "#00006DE06DE0"))) ; ~ dark cyan
+  "*Face used for files whose names are omitted based on the extension.
+See also face `diredp-omit-file-name'."
+  :group 'Dired-Plus :group 'font-lock-highlighting-faces)
+(defvar diredp-ignored-file-name 'diredp-ignored-file-name)
+
+(defface diredp-link-priv
+    '((((background dark)) (:foreground "#00007373FFFF")) ; ~ blue
+      (t                   (:foreground "DarkOrange")))
+  "*Face used for link privilege indicator (l) in Dired buffers."
+  :group 'Dired-Plus :group 'font-lock-highlighting-faces)
+(defvar diredp-link-priv 'diredp-link-priv)
+
+(when (> emacs-major-version 21)
+  (defface diredp-mode-line-marked
+      '((t (:foreground "DarkViolet")))
+    "*Face for marked number in mode-line `mode-name' for Dired buffers."
+    :group 'Dired-Plus :group 'font-lock-highlighting-faces)
+
+  (defface diredp-mode-line-flagged
+      '((t (:foreground "Red")))
+    "*Face for flagged number in mode-line `mode-name' for Dired buffers."
+    :group 'Dired-Plus :group 'font-lock-highlighting-faces))
+
+(defface diredp-no-priv
+    '((((background dark)) (:background "#2C2C2C2C2C2C")) ; ~ dark gray
+      (t                   (:background "LightGray")))
+  "*Face used for no privilege indicator (-) in Dired buffers."
+  :group 'Dired-Plus :group 'font-lock-highlighting-faces)
+(defvar diredp-no-priv 'diredp-no-priv)
+
+(defface diredp-number
+    '((((background dark)) (:foreground "#FFFFFFFF7474")) ; ~ light yellow
+      (t                   (:foreground "DarkBlue")))
+  "*Face used for numerical fields in Dired buffers.
+In particular, inode number, number of hard links, and file size."
+  :group 'Dired-Plus :group 'font-lock-highlighting-faces)
+(defvar diredp-number 'diredp-number)
+
+(defface diredp-omit-file-name
+  (if (assq :inherit custom-face-attributes) ; Emacs 22+
+      '((((background dark)) (:inherit diredp-ignored-file-name :strike-through "#555555555555")) ; ~ dark gray
+        (t                   (:inherit diredp-ignored-file-name :strike-through "#AAAAAAAAAAAA"))) ; ~ light gray
+    '((((background dark)) (:foreground "#C29D6F156F15")) ; ~ salmon
+      (t                   (:foreground "#00006DE06DE0")))) ; ~ dark cyan
+  "*Face used for files whose names will be omitted in `dired-omit-mode'.
+This means file names that match regexp `diredp-omit-files-regexp'.
+\(File names matching `dired-omit-extensions' are highlighted with face
+`diredp-ignored-file-name' instead.)"
+  :group 'Dired-Plus :group 'font-lock-highlighting-faces)
+(defvar diredp-omit-file-name 'diredp-omit-file-name)
+
+(defface diredp-other-priv
+    '((((background dark)) (:background "#111117175555")) ; ~ dark blue
+      (t                   (:background "PaleGoldenrod")))
+  "*Face used for l,s,S,t,T privilege indicators in Dired buffers."
+  :group 'Dired-Plus :group 'font-lock-highlighting-faces)
+(defvar diredp-other-priv 'diredp-other-priv)
+
+(defface diredp-rare-priv
+    '((((background dark)) (:foreground "Green" :background "#FFFF00008080")) ; ~ hot pink
+      (t                   (:foreground "Magenta" :background "SpringGreen")))
+  "*Face used for rare privilege indicators (b,c,s,m,p,S) in Dired buffers."
+  :group 'Dired-Plus :group 'font-lock-highlighting-faces)
+(defvar diredp-rare-priv 'diredp-rare-priv)
+
+(defface diredp-read-priv
+    '((((background dark)) (:background "#999932325555")) ; ~ burgundy / dark magenta
+      (t                   (:background "MediumAquamarine")))
+  "*Face used for read privilege indicator (w) in Dired buffers."
+  :group 'Dired-Plus :group 'font-lock-highlighting-faces)
+(defvar diredp-read-priv 'diredp-read-priv)
+
+(defface diredp-symlink
+    '((((background dark)) (:foreground "#00007373FFFF")) ; ~ blue
+      (t                   (:foreground "DarkOrange")))
+  "*Face used for symbolic links in Dired buffers."
+  :group 'Dired-Plus :group 'font-lock-highlighting-faces)
+(defvar diredp-symlink 'diredp-symlink)
+
+(defface diredp-tagged-autofile-name
+    '((((background dark)) (:background "#328C0411328C")) ; Very dark magenta
+      (t                   (:background "#CD73FBEECD73"))) ; Very pale green
+  "*Face used in Dired for names of files that are autofile bookmarks."
+  :group 'Dired-Plus :group 'font-lock-highlighting-faces)
+(defvar diredp-tagged-autofile-name 'diredp-tagged-autofile-name)
+
+(defface diredp-write-priv
+    '((((background dark)) (:background "#25258F8F2929")) ; ~ dark green
+      (t                   (:background "Orchid")))
+  "*Face used for write privilege indicator (w) in Dired buffers."
+  :group 'Dired-Plus :group 'font-lock-highlighting-faces)
+(defvar diredp-write-priv 'diredp-write-priv)
+
+;; Fix Emacs 20 recognition of fields up through file name when size is expressed using `k' etc.
+(when (and (< emacs-major-version 21)  (not (boundp 'diredp-loaded-p))
+           dired-move-to-filename-regexp ; These last two checks are just in case.
+           (eq (aref dired-move-to-filename-regexp 7) ?\  ))
+  (setq dired-move-to-filename-regexp  (concat "[0-9][BkKMGTPEZY]?"
+                                               (substring dired-move-to-filename-regexp 7))))
+
+;;; Define second level of fontifying.
+(defvar diredp-font-lock-keywords-1
+  (list
+   '("^  \\(.+:\\)$" 1 diredp-dir-heading) ; Directory headers
+   '("^  wildcard.*$" 0 'default)   ; Override others, e.g. `l' for `diredp-other-priv'.
+   '("^  (No match).*$" 0 'default) ; Override others, e.g. `t' for `diredp-other-priv'.
+   '("[^ .]\\(\\.[^. /]+\\)$" 1 diredp-file-suffix) ; Suffix, including `.'.
+   '("\\([^ ]+\\) -> .+$" 1 diredp-symlink)         ; Symbolic links
+
+   ;; 1) Date/time and 2) filename w/o suffix.
+   ;;    This is a bear, and it is fragile - Emacs can change `dired-move-to-filename-regexp'.
+   (if (or (not (fboundp 'version<))  (version< emacs-version "23.2"))
+       (list dired-move-to-filename-regexp
+             (list 1 'diredp-date-time t t) ; Date/time
+             (list (concat "\\(.+\\)\\(" (concat (funcall #'regexp-opt diredp-compressed-extensions)
+                                                 "\\)[*]?$")) ; Compressed-file name
+                   nil nil (list 0 diredp-compressed-file-name 'keep t)))
+     `(,dired-move-to-filename-regexp
+       (7 diredp-date-time t t) ; Date/time, locale (western or eastern)
+       (2 diredp-date-time t t) ; Date/time, ISO
+       (,(concat "\\(.+\\)\\(" (concat (funcall #'regexp-opt diredp-compressed-extensions)
+                                       "\\)[*]?$"))
+        nil nil (0 diredp-compressed-file-name keep t)))) ; Compressed-file suffix
+   (if (or (not (fboundp 'version<))  (version< emacs-version "23.2"))
+       (list dired-move-to-filename-regexp
+             (list 1 'diredp-date-time t t) ; Date/time
+             (list "\\(.+\\)$" nil nil (list 0 diredp-file-name 'keep t))) ; Filename
+     `(,dired-move-to-filename-regexp
+       (7 diredp-date-time t t) ; Date/time, locale (western or eastern)
+       (2 diredp-date-time t t) ; Date/time, ISO
+       ("\\(.+\\)$" nil nil (0 diredp-file-name keep t)))) ; Filename (not a compressed file)
+
+   ;; Files to ignore.
+   ;;   Use face `diredp-ignored-file-name' for omission by file-name extension.
+   ;;   Use face `diredp-omit-file-name' for omission by entire file name.
+   (let* ((omit-exts   (or (and (boundp 'dired-omit-extensions)  dired-omit-extensions)
+                           completion-ignored-extensions))
+          (omit-exts   (and omit-exts  (mapconcat #'regexp-quote omit-exts "\\|")))
+          (compr-exts  (and diredp-ignore-compressed-flag
+                            (concat "\\|" (mapconcat #'regexp-quote diredp-compressed-extensions "\\|")))))
+     (list (concat "^  \\(.*\\(" omit-exts compr-exts "\\)[*]?\\)$") ; [*]? allows for executable flag (*).
+           1 diredp-ignored-file-name t))
+   `(,(concat "^.*" dired-move-to-filename-regexp
+              "\\(" diredp-omit-files-regexp "\\).*[*]?$") ; [*]? allows for executable flag (*).
+     (0 diredp-omit-file-name t))
+
+   ;; Compressed-file (suffix)
+   (list (concat "\\(" (funcall #'regexp-opt diredp-compressed-extensions) "\\)[*]?$")
+         1 diredp-compressed-file-suffix t)
+   '("\\([*]\\)$" 1 diredp-executable-tag t) ; Executable (*)
+
+   ;; Inode, hard-links, & file size (. and , are for the decimal point, depending on locale)
+   ;; See comment for `directory-listing-before-filename-regexp' in `files.el' or `files+.el'.
+   '("\\(\\([0-9]+\\([.,][0-9]+\\)?\\)[BkKMGTPEZY]?[ /]?\\)" 1 diredp-number)
+
+   ;; Directory names - exclude d:/..., Windows drive letter in a dir heading.
+   (list (concat dired-re-maybe-mark dired-re-inode-size "\\(d\\)[^:]")
+         '(1 diredp-dir-priv t) '(".+" (dired-move-to-filename) nil (0 diredp-dir-name t)))
+
+   (list (concat dired-re-maybe-mark dired-re-inode-size "[-dl]........\\(x\\)") ; o x
+ 	 '(1 diredp-exec-priv))
+   (list (concat dired-re-maybe-mark dired-re-inode-size "[-dl]........\\([lsStT]\\)") ; o misc
+ 	 '(1 diredp-other-priv))
+   (list (concat dired-re-maybe-mark dired-re-inode-size "[-dl].......\\(w\\).") ; o w
+ 	 '(1 diredp-write-priv))
+   (list (concat dired-re-maybe-mark dired-re-inode-size "[-dl]......\\(r\\)..") ; o r
+ 	 '(1 diredp-read-priv))
+   (list (concat dired-re-maybe-mark dired-re-inode-size "[-dl].....\\(x\\)...") ; g x
+ 	 '(1 diredp-exec-priv))
+   (list (concat dired-re-maybe-mark dired-re-inode-size "[-dl].....\\([lsStT]\\)...") ; g misc
+ 	 '(1 diredp-other-priv))
+   (list (concat dired-re-maybe-mark dired-re-inode-size "[-dl]....\\(w\\)....") ; g w
+ 	 '(1 diredp-write-priv))
+   (list (concat dired-re-maybe-mark dired-re-inode-size "[-dl]...\\(r\\).....") ; g r
+ 	 '(1 diredp-read-priv))
+   (list (concat dired-re-maybe-mark dired-re-inode-size "[-dl]..\\(x\\)...") ; u x
+ 	 '(1 diredp-exec-priv))
+   (list (concat dired-re-maybe-mark dired-re-inode-size "[-dl]..\\([lsStT]\\)...") ; u misc
+ 	 '(1 diredp-other-priv))
+   (list (concat dired-re-maybe-mark dired-re-inode-size "[-dl].\\(w\\)....") ; u w
+ 	 '(1 diredp-write-priv))
+   (list (concat dired-re-maybe-mark dired-re-inode-size "[-dl]\\(r\\).....") ; u r
+ 	 '(1 diredp-read-priv))
+
+   (list (concat dired-re-maybe-mark dired-re-inode-size "[-dl]........\\([-rwxlsStT]\\)") ; o -
+ 	 '(1 diredp-no-priv keep))
+   (list (concat dired-re-maybe-mark dired-re-inode-size "[-dl].......\\([-rwxlsStT]\\).") ; g -
+ 	 '(1 diredp-no-priv keep))
+   (list (concat dired-re-maybe-mark dired-re-inode-size "[-dl]......\\([-rwxlsStT]\\)..") ; u -
+ 	 '(1 diredp-no-priv keep))
+   (list (concat dired-re-maybe-mark dired-re-inode-size "[-dl].....\\([-rwxlsStT]\\)...") ; o -
+ 	 '(1 diredp-no-priv keep))
+   (list (concat dired-re-maybe-mark dired-re-inode-size "[-dl]....\\([-rwxlsStT]\\)....") ; g -
+ 	 '(1 diredp-no-priv keep))
+   (list (concat dired-re-maybe-mark dired-re-inode-size "[-dl]...\\([-rwxlsStT]\\).....") ; u -
+ 	 '(1 diredp-no-priv keep))
+   (list (concat dired-re-maybe-mark dired-re-inode-size "[-dl]..\\([-rwxlsStT]\\)......") ; o -
+ 	 '(1 diredp-no-priv keep))
+   (list (concat dired-re-maybe-mark dired-re-inode-size "[-dl].\\([-rwxlsStT]\\).......") ; g -
+ 	 '(1 diredp-no-priv keep))
+   (list (concat dired-re-maybe-mark dired-re-inode-size "[-dl]\\([-rwxlsStT]\\)........") ; u -
+ 	 '(1 diredp-no-priv keep))
+
+   (list (concat dired-re-maybe-mark dired-re-inode-size "\\([bcsmpS]\\)") ; (rare)
+         '(1 diredp-rare-priv keep))
+   (list (concat dired-re-maybe-mark dired-re-inode-size "\\(l\\)[-rwxlsStT]") ; l
+         '(1 diredp-rare-priv keep))
+
+   (list (concat "^\\([^\n " (char-to-string dired-del-marker) "].*$\\)")
+         1 diredp-flag-mark-line t)     ; Flag/mark lines
+   (list (concat "^\\([^\n " (char-to-string dired-del-marker) "]\\)") ; Flags, marks (except D)
+         1 diredp-flag-mark t)
+
+   (list (concat "^\\([" (char-to-string dired-del-marker) "].*$\\)") ; Deletion-flagged lines
+         1 diredp-deletion-file-name t)
+   (list (concat "^\\([" (char-to-string dired-del-marker) "]\\)") ; Deletion flags (D)
+         1 diredp-deletion t)
+
+   ) "2nd level of Dired highlighting.  See `font-lock-maximum-decoration'.")
+
+
+(defun diredp--set-up-font-locking ()
+  "Add this to `dired-mode-hook' to provide for second-level fontifying."
+  (set (make-local-variable 'font-lock-defaults)
+       ;; Two levels.  Use 3-element list, since it is standard to have one more
+       ;; than the number of levels.  This is necessary for it to work with
+       ;; `font(-lock)-menus.el'.
+       '((dired-font-lock-keywords
+          dired-font-lock-keywords
+          diredp-font-lock-keywords-1)
+         t nil nil beginning-of-line))
+  ;; Refresh `font-lock-keywords' from `font-lock-defaults'
+  (when (fboundp 'font-lock-refresh-defaults) (font-lock-refresh-defaults)))
+
+;;; Provide for the second level of fontifying.
+(add-hook 'dired-mode-hook 'diredp--set-up-font-locking)
+
+;; Ensure that Dired buffers are refontified when you use `g' or otherwise read in the file list.
+(defun diredp-refontify-buffer ()
+  "Turn `font-lock-mode' off, then on."
+  (setq font-lock-mode  nil)
+  (font-lock-mode))
+(add-hook 'dired-after-readin-hook 'diredp-refontify-buffer)
+ 
+;;; Function Definitions
+
+;;; $$$$$$$$
+;;; (defun diredp-dired-files (arg &optional switches) ; Not bound
+;;;   "Like `dired', but non-positive prefix arg prompts for files to list.
+;;; This is like `dired' unless you use a non-positive prefix arg.
+;;; In that case, you are prompted for names of files and directories to
+;;; list, and then you are prompted for the name of the Dired buffer that
+;;; lists them.  Use `C-g' when you are done entering file names to list.
+
+;;; In all cases, when inputting a file or directory name you can use
+;;; shell wildcards.
+
+;;; If you use Icicles, then in Icicle mode the following keys are bound
+;;; in the minibuffer during completion (`*' means the key requires
+;;; library `Bookmark+'):
+
+;;;   M-|       - Open Dired on the file names matching your input
+;;;   C-c +     - Create a new directory
+;;;  *C-x a +   - Add tags to the current-candidate file
+;;;  *C-x a -   - Remove tags from the current-candidate file
+;;;  *C-x m     - Access file bookmarks (not just autofiles)"
+;;;   (interactive (diredp-dired-files-interactive-spec ""))
+;;;   (when (consp arg)
+;;;     (let ((buf  (dired-find-buffer-nocreate (car arg)))) ; Respect file list.
+;;;       (when buf (kill-buffer buf))))
+;;;   (if (fboundp 'pop-to-buffer-same-window)
+;;;       (pop-to-buffer-same-window (dired-noselect arg switches))
+;;;     (switch-to-buffer (dired-noselect arg switches))))
+
+;;; (defun diredp-dired-files-other-window (arg &optional switches) ; Not bound
+;;;   "Same as `diredp-dired-files' except uses another window."
+;;;   (interactive (diredp-dired-files-interactive-spec "in other window "))
+;;;   (when (consp arg)
+;;;     (let ((buf  (dired-find-buffer-nocreate (car arg)))) ; Respect file list.
+;;;       (when buf (kill-buffer buf))))
+;;;   (dired-other-window arg switches))
+
+;;;###autoload
+(defun diredp-dired-for-files (arg &optional switches) ; Bound to `C-x D F'
+  "Dired file names that you enter, in a Dired buffer that you name.
+You are prompted for the name of the Dired buffer to use.
+You are then prompted for names of files and directories to list,
+ which can be located anywhere.
+Use `C-g' when you are done.
+
+With a prefix arg you are first prompted for the `ls' switches to use.
+
+See also `dired' (including the advice)."
+  (interactive (let ((current-prefix-arg  (if current-prefix-arg 0 -1)))
+                 (dired-read-dir-and-switches "" 'READ-EXTRA-FILES-P)))
+  (dired arg switches))
+
+;;;###autoload
+(defun diredp-dired-for-files-other-window (arg &optional switches) ; Bound to `C-x 4 D F'
+  "Same as `diredp-dired-for-files', except uses another window."
+  (interactive (let ((current-prefix-arg  (if current-prefix-arg 0 -1)))
+                 (dired-read-dir-and-switches "in other window " 'READ-EXTRA-FILES-P)))
+  (dired-other-window arg switches))
+
+;;;###autoload
+(defun diredp-dired-recent-dirs (buffer &optional arg) ; Bound to `C-x D R'
+  "Open Dired in BUFFER, showing recently used directories.
+You are prompted for BUFFER.
+
+No prefix arg or a plain prefix arg (`C-u', `C-u C-u', etc.) means
+list all of the recently used directories.
+
+With a prefix arg:
+* If 0, `-', or plain (`C-u') then you are prompted for the `ls'
+  switches to use.
+* If not plain (`C-u') then:
+  * If >= 0 then the directories to include are read, one by one.
+  * If  < 0 then the directories to exclude are read, one by one.
+
+When entering directories to include or exclude, use `C-g' to end."
+  (interactive (list (completing-read "Dired buffer name: " dired-buffers) current-prefix-arg))
+  (unless (require 'recentf nil t) (error "This command requires library `recentf.el'"))
+  (let ((switches  (and (or (zerop (prefix-numeric-value arg))  (consp arg))
+                        (read-string "Dired listing switches: " dired-listing-switches))))
+    (dired (cons (generate-new-buffer-name buffer) (diredp-recent-dirs arg)) switches)))
+
+;;;###autoload
+(defun diredp-dired-recent-dirs-other-window (buffer &optional arg) ; Bound to `C-x 4 D R'
+  "Same as `diredp-dired-recent-dirs', but use other window."
+  (interactive (list (completing-read "Dired buffer name: " dired-buffers) current-prefix-arg))
+  (unless (require 'recentf nil t) (error "This command requires library `recentf.el'"))
+  (let ((switches  (and (or (zerop (prefix-numeric-value arg))  (consp arg)  (eq '- arg))
+                        (read-string "Dired listing switches: " dired-listing-switches))))
+    (dired-other-window (cons (generate-new-buffer-name buffer) (diredp-recent-dirs arg)) switches)))
+
+(defun diredp-recent-dirs (arg)
+  "Return a list of recently used directories.
+ARG is as for `diredp-dired-recent-dirs'."
+  (let ((recent-dirs  (diredp-remove-if #'diredp-root-directory-p
+                                        (diredp-delete-dups
+                                         (mapcar (lambda (f/d)
+                                                   (if (file-directory-p f/d) f/d (file-name-directory f/d)))
+                                                 recentf-list)))))
+    (if (and arg  (atom arg))
+        (diredp-read-include/exclude 'Dir recent-dirs (not (natnump (prefix-numeric-value arg))))
+      recent-dirs)))
+         
+(defun diredp-read-include/exclude (thing things &optional exclude)
+  "Read which THINGs to include (or to EXCLUDE, if non-nil) from list THINGS.
+The things are read one by one.  `C-g' stops reading.
+
+THING is a string or symbol naming the type of thing to read, e.g.,
+`File' or `Directory'.  It is used only in the prompt, which is THING
+followed by \" to exclude\" or \" to include\" and a reminder about `C-g'.
+
+A new list is returned - list THINGS is not modified."
+  (let* ((thgs                    (if exclude (copy-sequence things) ()))
+         (prompt                  (format "%s to %s (C-g when done): " thing (if exclude 'EXCLUDE 'INCLUDE)))
+         (completion-ignore-case  (or (and (boundp 'read-file-name-completion-ignore-case)
+                                           (memq thing '(Dir Directory File "Dir" "Directory" "File")) ; Hack
+                                           read-file-name-completion-ignore-case)
+                                      completion-ignore-case))
+         thing)
+    (while (condition-case nil
+               (setq thing  (completing-read prompt (mapcar #'list things) nil t))
+             (quit nil))
+      (if exclude (delete thing thgs)
+        (push thing thgs)))
+    thgs))
+
+;;; $$$$$$$$
+;;; (defun diredp-dired-files-interactive-spec (str)
+;;;   "`interactive' spec for `diredp-dired-files' commands.
+;;; STR is a string appended to the prompt.
+;;; With non-negative prefix arg, read switches.
+;;; With non-positive prefix arg, read files and dirs to list and then the
+;;;  Dired buffer name.  User uses `C-g' when done reading files and dirs.
+
+;;; If you use Icicles, then in Icicle mode the following keys are bound
+;;; in the minibuffer during completion (`*' means the key requires
+;;; library `Bookmark+'):
+
+;;;   M-|       - Open Dired on the file names matching your input
+;;;   C-c +     - Create a new directory
+;;;  *C-x a +   - Add tags to the current-candidate file
+;;;  *C-x a -   - Remove tags from the current-candidate file
+;;;  *C-x m     - Access file bookmarks (not just autofiles)"
+;;;   (list
+;;;    (unwind-protect
+;;;         (let ((icicle-sort-comparer  (or (and (boundp 'icicle-file-sort) ;; If not reading files
+;;;                                               icicle-file-sort)          ;; then dirs first.
+;;;                                          (and (> (prefix-numeric-value current-prefix-arg) 0)
+;;;                                               'icicle-dirs-first-p)
+;;;                                          icicle-sort-comparer))
+;;;               (icicle-all-candidates-list-alt-action-fn ; M-|'
+;;;                (lambda (files)
+;;;                  (let ((enable-recursive-minibuffers  t))
+;;;                    (dired-other-window (cons (read-string "Dired buffer name: ") files))))))
+;;;           (when (fboundp 'icicle-bind-file-candidate-keys) (icicle-bind-file-candidate-keys))
+;;;           (if (> (prefix-numeric-value current-prefix-arg) 0)
+;;;               ;; If a dialog box is about to be used, call `read-directory-name' so the dialog
+;;;               ;; code knows we want directories.  Some dialog boxes can only select directories
+;;;               ;; or files when popped up, not both.
+;;;               (if (and (fboundp 'read-directory-name)  (next-read-file-uses-dialog-p))
+;;;                   (read-directory-name (format "Dired %s(directory): " str) nil
+;;;                                        default-directory nil)
+;;;                 (read-file-name (format "Dired %s(directory): " str) nil default-directory nil))
+;;;             (let ((insert-default-directory  nil)
+;;;                   (files                     ())
+;;;                   file)
+;;;               (while (condition-case nil ; Use lax completion, to allow wildcards.
+;;;                          (setq file  (read-file-name "File or dir (C-g when done): "))
+;;;                        (quit nil))
+;;;                 (push file files))
+;;;               (cons (read-string "Dired buffer name: " nil nil default-directory) files))))
+;;;      (when (fboundp 'icicle-unbind-file-candidate-keys)
+;;;        (icicle-unbind-file-candidate-keys)))
+;;;    (and current-prefix-arg  (natnump (prefix-numeric-value current-prefix-arg))
+;;;         (read-string "Dired listing switches: " dired-listing-switches))))
+
+;;;###autoload
+(defun diredp-dired-union (dired-name dirbufs &optional switches extra) ; Bound to `C-x D U'
+  "Create a Dired buffer that is the union of some existing Dired buffers.
+With a non-negative prefix arg, you are prompted for `ls' switches.
+With a non-positive prefix arg, you are prompted for file and dir
+names to add to the listing - see below.
+
+You are prompted for the name of the Dired union buffer.  Completion
+against names of existing Dired buffers is available, but you can
+enter any other name to create a new Dired buffer of that name.
+
+If the union buffer name you choose names an existing Dired buffer,
+then what happens depends on whether that buffer is an ordinary Dired
+directory listing or a list of arbitrary file names.  That is, it
+depends on whether `dired-directory' is a directory name or a cons of
+a Dired buffer name plus file names.
+
+* If the buffer is an ordinary Dired listing, then it is converted to
+  an explicit list of absolute file names, just as if these had been
+  chosen individually.  The existing buffer and window are replaced by
+  new ones that show the explicit listing.  (This replacement is
+  necessary because the list of files contained in an ordinary Dired
+  listing cannot be modified.)
+
+* If the buffer lists arbitrary file names explicitly, then it is
+  updated to include also the files from any Dired buffers and any
+  additional files that you specify.
+
+If the union buffer name you choose does not name an existing Dired
+buffer, then its `default-directory' is the same as the
+`default-directory' before invoking the command.
+
+If you use a non-positive prefix arg, then you can next choose
+additional file and directory names to add to the listing.  Use `C-g'
+when done choosing them.
+
+Any directory names you choose this way are included as single entries
+in the listing - the directory contents are not included (these
+directories are not unioned).  To instead include the contents of a
+directory chosen this way, use a glob pattern: `/*' after the
+directory name.
+
+You are then prompted for the Dired buffers to union.  Use `C-g' when
+done choosing them.  These Dired listings to union are included in the
+order that you chose them, and each entry is listed only once in the
+new Dired buffer.
+
+The new Dired listing respects the markings, subdirectory insertions,
+and hidden subdirectories of the selected Dired listings.  However, in
+case of conflict between marked or unmarked status for the same entry,
+the entry is marked.  Similarly, in case of conflict over an included
+subdirectory between it being hidden or shown, it is hidden, but its
+contained files are also listed.
+
+See also command `diredp-add-to-dired-buffer'.
+
+From Lisp:
+ DIRED-NAME is the name of the resulting Dired union buffer.
+ DIRBUFS is a list of the names of Dired buffers to union.
+ SWITCHES is a string of `ls' switches.
+ EXTRA is a list of files & directories to be included in the listing."
+  (interactive (diredp-dired-union-interactive-spec "UNION "
+                                                    nil
+                                                    (and current-prefix-arg
+                                                         (<= (prefix-numeric-value current-prefix-arg) 0))))
+  (diredp-dired-union-1 dired-name dirbufs switches extra))
+
+;;;###autoload
+(defun diredp-dired-union-other-window (dired-name dirbufs &optional switches extra) ; Bound to `C-x 4 D U'
+  "Same as `diredp-dired-union', except use other window."
+  (interactive (diredp-dired-union-interactive-spec "UNION "
+                                                    nil
+                                                    (and current-prefix-arg
+                                                         (<= (prefix-numeric-value current-prefix-arg) 0))))
+  (diredp-dired-union-1 dired-name dirbufs switches extra 'OTHERWIN))
+
+;;;###autoload
+(defun diredp-add-to-dired-buffer (dired-name to-add &optional switches) ; Bound to `C-x D A'
+  "Add individual file and directory names to a Dired buffer.
+You are prompted for the buffer name.
+With a prefix arg, you are also prompted for the `ls' switches.
+
+The buffer must either not exist yet or must list arbitrary file and
+directory names.  That is, it cannot be an ordinary Dired directory
+listing - those cannot be modified.
+
+Any directory names you choose this way are included as single entries
+in the listing - the directory contents are not included (these
+directories are not unioned).  To instead include the contents of a
+directory chosen this way, use a glob pattern: `/*' after the
+directory name.
+
+See also command `diredp-dired-union'.
+
+From Lisp:
+ DIRED-NAME is the name of the Dired buffer to modify.
+ TO-ADD is the list of files and dirs to add to it.
+ SWITCHES is the string of `ls' switches."
+  ;; Bind `current-prefix-arg' to force reading file/dir names.
+  ;; Read `ls' switches too, if user used prefix arg.
+  (interactive
+   (let* ((current-prefix-arg  (if current-prefix-arg 0 -1))
+          (all                 (diredp-dired-union-interactive-spec "add files/dirs "
+                                                                    'NO-DIRED-BUFS
+                                                                    'READ-EXTRA-FILES-P)))
+     (list (nth 0 all) (nth 3 all) (nth 2 all))))
+  (diredp-dired-union-1 dired-name () switches to-add))
+
+;;;###autoload
+(defun diredp-add-to-dired-buffer-other-window (dired-name to-add &optional switches) ; Bound to `C-x 4 D A'
+  "Same as `diredp-add-to-dired-buffer', except use other window."
+  ;; Bind `current-prefix-arg' to force reading file/dir names.
+  ;; Read `ls' switches too, if user used prefix arg.
+  (interactive
+   (let* ((current-prefix-arg  (if current-prefix-arg 0 -1))
+          (all                 (diredp-dired-union-interactive-spec "add files/dirs "
+                                                                    'NO-DIRED-BUFS
+                                                                    'READ-EXTRA-FILES-P)))
+     (list (nth 0 all) (nth 3 all) (nth 2 all))))
+  (diredp-dired-union-1 dired-name () switches to-add 'OTHERWIN))
+
+;;;###autoload
+(defun diredp-add-to-this-dired-buffer (dired-name to-add &optional switches) ; Not bound by default
+  "Same as `diredp-add-to-dired-buffer' for this Dired buffer."
+  ;; Bind `current-prefix-arg' to force reading file/dir names.
+  ;; Read `ls' switches too, if user used prefix arg.
+  (interactive
+   (progn (unless (derived-mode-p 'dired-mode) (error "Not in a Dired buffer"))
+          (let* ((current-prefix-arg  (if current-prefix-arg 0 -1))
+                 (all                 (diredp-dired-union-interactive-spec "add files/dirs here "
+                                                                           'NO-DIRED-BUFS
+                                                                           'READ-EXTRA-FILES-P
+                                                                           (buffer-name))))
+            (list (nth 0 all) (nth 3 all) (nth 2 all)))))
+  (diredp-dired-union-1 dired-name () switches to-add))
+
+;; $$$$$ Maybe I should set `dired-sort-inhibit' to t for now (?),
+;; since there is an Emacs bug (at least on Windows) that prevents
+;; sorting from working for a Dired buffer with an explicit file list.
+(defun diredp-dired-union-1 (dired-name dirbufs switches extra &optional otherwin)
+  "Helper for `diredp-dired-union' and `diredp-add-to-dired-buffer'.
+Non-nil optional OTHERWIN means use other window for the Dired buffer.
+See `diredp-dired-union' for the other argument descriptions."
+  (let ((dbuf         (get-buffer dired-name))
+        (files        extra)
+        (marked       ())
+        (subdirs      ())
+        (hidden-dirs  ())
+        hid-here files-here)
+    (dolist (buf  (reverse dirbufs))
+      (with-current-buffer buf
+        (unwind-protect
+             (progn (setq hid-here    (save-excursion (dired-remember-hidden))
+                          files-here  (if (consp dired-directory)
+                                          (reverse (cdr dired-directory)) ; Reverse bc will push.
+                                        ()))
+                    (unless files-here
+                      (save-excursion   ; This bit is more or less from `dired-toggle-marks'.
+                        (goto-char (point-min))
+                        (while (not (eobp))
+                          (or (diredp-looking-at-p dired-re-dot)
+                              (push (dired-get-filename nil 'NO-ERROR-P) files-here))
+                          (forward-line 1)))
+                      (setq files-here  (delq nil files-here)))
+                    (dolist (hid-here  hid-here) (push hid-here hidden-dirs))
+                    (dolist (sub  (cdr (reverse dired-subdir-alist)))
+                      (push (list (car sub)) subdirs))
+                    (dolist (mkd  (dired-remember-marks (point-min) (point-max))) ; This unhides.
+                      (push (car mkd) marked))
+                    (dolist (file  files-here)
+                      (when (or (not (file-name-absolute-p file))  (not (member file files)))
+                        (push file files))))
+          (save-excursion               ; Hide subdirs that were hidden.
+            (dolist (dir  hid-here)  (when (dired-goto-subdir dir) (dired-hide-subdir 1)))))))
+    ;; For an existing Dired buffer having this name whose `dired-directory' is a cons:
+    ;; 1. Include the files and dirs already listed there.
+    ;; 2. Kill the current buffer and delete its window.  A new buffer of the same name is created and shown.
+    (when dbuf
+      (with-current-buffer dbuf
+        (when (consp dired-directory) (setq files  (diredp-set-union (cdr dired-directory) files)))
+        (let ((win  (get-buffer-window dbuf 0))) (when win (delete-window win)))
+        (kill-buffer dbuf)))
+    (setq dbuf  (dired-other-window (cons dired-name files) switches))
+    (with-current-buffer dbuf
+      (let ((inhibit-read-only  t))
+        (dired-insert-old-subdirs subdirs)
+        (dired-mark-remembered          ; Don't really need `expand-file-name' - already abs.
+         (mapcar (lambda (mf) (cons (expand-file-name mf dired-directory) 42)) marked))
+        (save-excursion
+          (dolist (hdir  hidden-dirs)  (when (dired-goto-subdir hdir) (dired-hide-subdir 1))))))))
+
+(defun diredp-dired-union-interactive-spec (string &optional no-dired-bufs read-extra-files-p dired-buffer)
+  "Read arguments for `diredp-dired-union' and `diredp-add-to-dired-buffer'.
+STRING is appended to the prompt for the listing buffer name.
+Non-nil NO-DIRED-BUFS means do not read Dired buffers to union.
+Non-nil READ-EXTRA-FILES-P is passed to `dired-read-dir-and-switches',
+ and means read extra files to add to the listing.
+Non-nil DIRED-BUFFER is passed to `dired-read-dir-and-switches'.
+  It is the name of the Dired union buffer."
+  (let* ((current-prefix-arg  -1)
+         (dir+switches        (dired-read-dir-and-switches string read-extra-files-p dired-buffer))
+         (dirname             (car  dir+switches))
+         (switches            (cadr dir+switches))
+         (dirbufs             ())
+         (bufs                ())
+         (extra-files         ())
+         buf)
+    (when (consp dirname) (setq extra-files  (cdr dirname)
+                                dirname      (car dirname)))
+    (unless no-dired-bufs
+      ;; Remove any killed buffers from `dired-buffers'.  Then use all but the target buffer as candidates.
+      (dolist (db  dired-buffers)
+        (if (buffer-live-p (cdr db))
+            (unless (equal dirname (buffer-name (cdr db)))
+              (push (cons (buffer-name (cdr db)) (car db)) dirbufs))
+          (setq dired-buffers  (delq db dired-buffers))))
+      (while (and dirbufs  (condition-case nil
+                               (setq buf  (completing-read "Existing Dired buffer to include (C-g when done): "
+                                                           dirbufs nil t nil 'buffer-name-history
+                                                           (and dirbufs  (car (assoc (buffer-name) dirbufs)))))
+                             (quit nil)))
+        (push buf bufs)
+        (setq dirbufs  (delete (cons buf (with-current-buffer buf (expand-file-name default-directory)))
+                               dirbufs)))
+      (setq bufs  (nreverse bufs)))
+    (list dirname bufs switches extra-files)))
+
+(when (> emacs-major-version 23)        ; `compilation--loc->file-struct'
+
+  (defalias 'diredp-grepped-files-other-window 'diredp-compilation-files-other-window)
+  (defun diredp-compilation-files-other-window (&optional switches)
+    "Open Dired on the files indicated by compilation (e.g., `grep') hits.
+Applies to any `compilation-mode'-derived buffer, such as `*grep*'.
+You are prompted for the name of the new Dired buffer.
+With a prefix arg you are first prompted for the `ls' switches.
+
+\(However, Emacs bug #20739 means that the switches are ignored.)"
+    (interactive (list (and current-prefix-arg  (read-string "Dired listing switches: " dired-listing-switches))))
+    (unless (compilation-buffer-p (current-buffer)) (error "Not in a buffer derived from `compilation-mode'"))
+    (let ((files  ()))
+      (save-excursion (goto-char (point-min))
+                      (while (condition-case nil (compilation-next-file 1) (error nil))
+                        (setq compilation-current-error  (point))
+                        (push (diredp-file-for-compilation-hit-at-point) files)))
+      (setq files  (nreverse files))
+      (dired-other-window
+       (cons (read-string "Dired buffer name: " nil nil (generate-new-buffer-name default-directory)) files)
+       switches)))
+
+  (defun diredp-file-for-compilation-hit-at-point ()
+    "Return the name of the file for the compilation hit at point.
+The name is expanded in the directory for the last directory change."
+    (let* ((msg         (compilation-next-error 0))
+           (loc         (compilation--message->loc msg))
+           (filestruct  (compilation--loc->file-struct loc))
+           (file        (caar filestruct))
+           (dir         (cadr (car filestruct))))
+      (when dir (setq file  (expand-file-name file dir)))
+      file))
+  )
+
+;;;###autoload
+(defun diredp-fileset (flset-name)      ; Bound to `C-x D S'
+  "Open Dired on the files in fileset FLSET-NAME."
+  (interactive
+   (progn (unless (require 'filesets nil t) (error "Feature `filesets' not provided"))
+          (unless filesets-data (error "`filesets-data' is empty"))
+          (list (completing-read "Open Dired on fileset: " filesets-data))))
+  (diredp-fileset-1 flset-name))
+
+;;;###autoload
+(defun diredp-fileset-other-window (flset-name) ; Bound to `C-x 4 D S'
+  "Open Dired in another window on the files in fileset FLSET-NAME."
+  (interactive
+   (progn (unless (require 'filesets nil t) (error "Feature `filesets' not provided"))
+          (unless filesets-data (error "`filesets-data' is empty"))
+          (list (completing-read "Open Dired on fileset, in other window: " filesets-data))))
+  (diredp-fileset-1 flset-name 'OTHER-WINDOW))
+
+(defun diredp-fileset-1 (flset-name &optional other-window-p)
+  "Helper for `diredp-fileset(-other-window)'."
+  (let ((flset   (filesets-get-fileset-from-name flset-name))
+        (files   ())
+        (mode    nil)
+        (dirfun  (if other-window-p #'dired-other-window #'dired)))
+    (unless (or (setq mode  (filesets-entry-mode flset)) ; ("my-fs" (:files "a" "b"))
+                (setq flset  (cons "dummy" flset) ; (:files "a" "b")
+                      mode   (filesets-entry-mode flset)))
+      (error "Bad fileset: %S" flset-name))
+    (message "Gathering file names...")
+    (dolist (file  (filesets-get-filelist flset mode)) (push file files))
+    (funcall dirfun (cons (generate-new-buffer-name flset-name)
+                          (nreverse (mapcar (lambda (file)
+                                              (if (file-name-absolute-p file)
+                                                  (expand-file-name file)
+                                                file))
+                                            files))))))
+
+;;;###autoload
+(defun diredp-dired-this-subdir (&optional tear-off-p msgp)
+  "Open Dired for the subdir at or above point.
+If point is not on a subdir line, but is in an inserted subdir
+listing, then use that subdir.
+
+With a prefix arg:
+ If the subdir is inserted and point is in the inserted listing then
+ remove that listing and move to the ordinary subdir line.  In other
+ words, when in an inserted listing, a prefix arg tears off the
+ inserted subdir to its own Dired buffer."
+  (interactive "P\np")
+  (diredp-ensure-mode)
+  (let* ((this-dir       default-directory)
+         (this-subdir    (diredp-this-subdir))
+         (on-dir-line-p  (atom this-subdir)))
+    (unless on-dir-line-p               ; Subdir header line or non-directory file.
+      (setq this-subdir  (car this-subdir)))
+    (unless (string= this-subdir this-dir)
+      (when tear-off-p
+        (unless on-dir-line-p
+          (dired-kill-subdir)           ; Tear it off.
+          (dired-goto-file this-subdir))) ; Move to normal subdir line.
+      (dired-other-window this-subdir))))
+
+;;;###autoload
+(defun diredp-dired-inserted-subdirs (&optional no-show-p msgp) ; Bound to `C-M-i'
+  "Open Dired for each of the subdirs inserted in this Dired buffer.
+A separate Dired buffer is used for each of them.
+With a prefix arg, create the Dired buffers but do not display them.
+Markings and current Dired switches are preserved."
+  (interactive "P\np")
+  (diredp-ensure-mode)
+  (let ((this-dir    default-directory)
+        (this-buff   (current-buffer))
+        (this-frame  (selected-frame))
+        marked)
+    (unwind-protect
+         (save-selected-window
+           (dolist (entry  dired-subdir-alist)
+             (unless (string= (car entry) this-dir)
+               (setq marked  (with-current-buffer this-buff
+                               (dired-remember-marks (dired-get-subdir-min entry) (dired-get-subdir-max entry))))
+               (if (not no-show-p)
+                   (dired-other-window (car entry) dired-actual-switches)
+                 (dired-noselect (car entry) dired-actual-switches)
+                 (when msgp (message "Dired buffers created but not shown")))
+               (set-buffer this-buff)
+               (let ((inhibit-read-only  t))
+                 (dired-mark-remembered marked))
+               (set-buffer-modified-p nil))))
+      (select-frame-set-input-focus this-frame))))
+
+
+;;; Actions on marked files and subdirs, recursively.
+
+(defun diredp-get-subdirs (&optional ignore-marks-p predicate details)
+  "Return subdirs from this Dired buffer and from marked subdirs, recursively.
+If optional arg IGNORE-MARKS-P is non-nil then include all
+subdirectories.  Otherwise, include only those that are marked.
+
+Non-nil optional arg PREDICATE means include only subdirectory names
+for which the PREDICATE returns non-nil.  PREDICATE must accept a file
+name as its only required argument.
+
+Optional arg DETAILS is passed to `diredp-get-files'."
+  (diredp-get-files ignore-marks-p (if predicate
+                                       `(lambda (name) (and (file-directory-p name)  (funcall ,predicate name)))
+                                     #'file-directory-p)
+                    'INCLUDE-DIRS-P 'DONT-ASKP 'ONLY-MARKED-P details))
+
+(defun diredp-get-files (&optional ignore-marks-p predicate include-dirs-p dont-askp only-marked-p details)
+  "Return file names from this Dired buffer and subdirectories, recursively.
+The names are those that are marked in the current Dired buffer, or
+all files in the directory if none are marked.  Marked subdirectories
+are handled recursively in the same way.
+
+If there is some included subdirectory that has a Dired buffer with
+marked files, then (unless DONT-ASKP is non-nil) this asks you whether
+to use the marked files in Dired buffers, as opposed to using all of
+the files in included directories.  To this y-or-n question you can
+hit `l' to see the list of files that will be included (using
+`diredp-list-files').  In that `l' listing you can mouseover to see
+image-file previews or use `RET' or `mouse-2' to visit files.
+
+\(Directories in `icicle-ignored-directories' are skipped, if you use
+Icicles.  Otherwise, directories in `vc-directory-exclusion-list' are
+skipped.)
+
+Non-nil IGNORE-MARKS-P means ignore all Dired markings: just get all
+of the files in the current directory (and all of the subdirectories,
+if INCLUDE-DIRS-P is non-nil).
+
+Non-nil PREDICATE means include only file names for which the
+PREDICATE returns non-nil.  PREDICATE must accept a file name as its
+only required argument.
+
+Non-nil INCLUDE-DIRS-P means include marked subdirectory names (but
+also handle those subdirs recursively, picking up their marked files
+and subdirs).
+
+Non-nil DONT-ASKP means do not ask the user whether to use marked
+instead of all.  Act as if the user was asked and replied `y'.
+
+Non-nil optional arg ONLY-MARKED-P means collect only marked files,
+instead of collecting all files if none are marked.  This argument is
+ignored if IGNORE-MARKS-P is non-nil.
+
+Optional arg DETAILS is passed to `diredp-y-or-n-files-p'."
+  (let ((askp  (list nil)))             ; The cons's car will be set to `t' if need to ask user.
+    (if ignore-marks-p
+        (diredp-files-within (directory-files default-directory 'FULL diredp-re-no-dot)
+                             () nil include-dirs-p predicate)
+      ;; Pass FILES and ASKP to `diredp-get-files-for-dir', so we don't have to use them as
+      ;; free vars there.  But that means that they each need to be a cons cell that we can
+      ;; modify, so we can get back the updated info.
+      (let ((files  (list 'DUMMY)))     ; The files picked up will be added to this list.
+        (diredp-get-files-for-dir default-directory files askp include-dirs-p only-marked-p)
+        (setq files  (cdr files))       ; Remove `DUMMY' from the modifed list.
+        (if (or dont-askp
+                (not (car askp))
+                (diredp-y-or-n-files-p "Use marked (instead of all) in subdir Dired buffers? "
+                                       files predicate details))
+            (if predicate (diredp-remove-if-not predicate files) files)
+          (setq files  ())
+          (dolist (file  (diredp-marked-here))
+            (if (not (file-directory-p file))
+                (when (or (not predicate)  (funcall predicate file))
+                  (add-to-list 'files file))
+              (when include-dirs-p (setq files  (nconc files (list file))))
+              (setq files  (nconc files (diredp-files-within (directory-files file 'FULL diredp-re-no-dot)
+                                                             () nil include-dirs-p predicate)))))
+          (nreverse files))))))
+
+(defun diredp-get-files-for-dir (directory accum askp &optional include-dirs-p only-marked-p)
+  "Return marked file names for DIRECTORY and subdirectories, recursively.
+Pick up names of all marked files in DIRECTORY if it has a Dired
+buffer, or all files in DIRECTORY if not.  Handle subdirs recursively
+\(only marked subdirs, if Dired).
+
+ACCUM is an accumulator list: the files picked up in this call are
+nconc'd to it.
+
+ASKP is a one-element list, the element indicating whether to ask the
+user about respecting Dired markings.  It is set here to `t' if there
+is a Dired buffer for DIRECTORY.
+
+Non-nil optional arg INCLUDE-DIRS-P means include marked subdirectory
+names (but also handle those subdirs recursively).
+
+Non-nil optional arg ONLY-MARKED-P means collect only marked files,
+instead of collecting all files if none are marked.
+
+If there is more than one Dired buffer for DIRECTORY then raise an
+error."
+  (let ((dbufs  (dired-buffers-for-dir (expand-file-name directory))))
+    (dolist (file  (if (not dbufs)
+                       (and (not only-marked-p)  (directory-files directory 'FULL diredp-re-no-dot))
+                     (when (cadr dbufs) (error "More than one Dired buffer for `%s'" directory))
+                     (unless (equal directory default-directory) (setcar askp  t))
+                     (with-current-buffer (car dbufs) (diredp-marked-here only-marked-p 'NO-DOT-DOT))))
+      (if (not (file-directory-p file))
+          (setcdr (last accum) (list file))
+        (when include-dirs-p (setcdr (last accum) (list file)))
+        (diredp-get-files-for-dir file accum askp include-dirs-p only-marked-p)))))
+
+(defun diredp-marked-here (&optional only-marked-p no-dot-dot-p)
+  "Marked files and subdirs in this Dired buffer, or all if none are marked.
+Non-nil optional arg ONLY-MARKED-P means return nil if none are
+marked.
+Non-nil optional arg NO-DOT-DOT-P means do not include marked `..'."
+  ;; If no file is marked, exclude `(FILENAME)': the unmarked file at cursor.
+  ;; If there are no marked files as a result, return all files and subdirs in the dir.
+  (let* ((dired-marker-char  ?*)
+         (ff                 (condition-case nil ; Ignore error if on `.' or `..' and no file is marked.
+                                 (dired-get-marked-files
+                                  nil nil (and no-dot-dot-p
+                                               (lambda (mf) (not (diredp-string-match-p "/\\.\\.$" mf))))
+                                  'DISTINGUISH-ONE-MARKED)
+                               (error nil))))
+    (cond ((eq t (car ff))  (cdr ff))   ; Single marked
+          ((cadr ff)        ff)         ; Multiple marked
+          (t                (and (not only-marked-p) ; None marked
+                                 (directory-files default-directory 'FULL diredp-re-no-dot 'NOSORT))))))
+
+(defun diredp-y-or-n-files-p (prompt files &optional predicate details)
+  "PROMPT user with a \"y or n\" question about a list of FILES.
+Return t if answer is \"y\".  Otherwise, return nil.
+
+Like `y-or-n-p', but you can also hit `l' to display the list of files
+that the confirmation is for, in buffer `*Files'.  In that `'l'
+listing you can mouseover to see image-file previews or use `RET' or
+`mouse-2' to visit files.
+
+When finished, buffer `*Files*' is killed if it was never shown, or is
+hidden and buried otherwise.  Thus, if it was shown then it is still
+available to revisit afterward (even if you quit using `C-g').
+
+PREDICATE is passed to `diredp-list-files', to list only file names
+for which it returns non-nil.
+
+DETAILS is passed to `diredp-list-files', to show details about FILES."
+  (let ((answer  'recenter))
+    (cond (noninteractive
+           (setq prompt  (concat prompt
+                                 (and (not (eq ?\   (aref prompt (1- (length prompt)))))  " ")
+                                 "(y or n; l to show file list) "))
+           (let ((temp-prompt  prompt))
+             (while (not (memq answer '(act skip)))
+               (let ((str  (read-string temp-prompt)))
+                 (cond ((member str '("y" "Y")) (setq answer  'act))
+                       ((member str '("n" "N")) (setq answer  'skip))
+                       (t (setq temp-prompt  (concat "Please answer y or n.  " prompt))))))))
+          ((if (not (fboundp 'display-popup-menus-p))
+               (and window-system  (listp last-nonmenu-event)  use-dialog-box)
+             (and (display-popup-menus-p)  (listp last-nonmenu-event)  use-dialog-box))
+           (setq answer  (x-popup-dialog t `(,prompt ("Yes" . act) ("No" . skip)))))
+          (t
+           (let ((list-buf        (generate-new-buffer-name "*Files*"))
+                 (list-was-shown  nil))
+             (unwind-protect
+                 (progn
+                   (define-key query-replace-map "l" 'show)
+                   (setq prompt  (concat prompt
+                                         (and (eq ?\   (aref prompt (1- (length prompt))))
+                                              "" " ")
+                                         "(y or n; l to show file list) "))
+                   (while (let* ((reprompt-actions  '(recenter scroll-up scroll-down
+                                                               scroll-other-window scroll-other-window-down))
+                                 (key               (let ((cursor-in-echo-area  t))
+                                                      (when minibuffer-auto-raise
+                                                        (raise-frame (window-frame (minibuffer-window))))
+                                                      (if (fboundp 'read-key)
+                                                          (read-key (propertize
+                                                                     (if (memq answer reprompt-actions)
+                                                                         prompt
+                                                                       (concat "Please answer y or n.  " prompt))
+                                                                     'face 'minibuffer-prompt))
+                                                        (read-char-exclusive
+                                                         (if (memq answer reprompt-actions)
+                                                             prompt
+                                                           (concat "Please answer y or n.  " prompt)))))))
+                            (setq answer  (lookup-key query-replace-map (vector key) t))
+                            (case answer
+                              ((skip  act)              nil)
+                              (recenter                 (recenter) t)
+                              (show                     (diredp-list-files files nil list-buf predicate details)
+                                                        (setq list-was-shown  t)) ; Record showing it.
+                              (help                     (message "Use `l' to show file list") (sit-for 1))
+                              (scroll-up                (condition-case nil (scroll-up-command) (error nil)) t)
+                              (scroll-down              (condition-case nil (scroll-down-command) (error nil)) t)
+                              (scroll-other-window      (condition-case nil (scroll-other-window) (error nil)) t)
+                              (scroll-other-window-down (condition-case nil (scroll-other-window-down nil)
+                                                          (error nil)) t)
+                              ((exit-prefix  quit)      (signal 'quit nil) t)
+                              (t (or (not (eq key ?\e))  (progn (signal 'quit nil) t)))))
+                     (ding)
+                     (discard-input)))
+               (when (get-buffer list-buf)
+                 (save-window-excursion (pop-to-buffer list-buf)
+                                        (condition-case nil ; Ignore error if user already deleted.
+                                            (if (one-window-p) (delete-frame) (delete-window))
+                                          (error nil))
+                                        (if list-was-shown (bury-buffer list-buf) (kill-buffer list-buf))))
+               (define-key query-replace-map "l" nil)))))
+    (let ((ret  (eq answer 'act)))
+      (unless noninteractive (message "%s %s" prompt (if ret "y" "n")))
+      ret)))
+
+(defvar diredp-list-files-map
+  (let ((map  (make-sparse-keymap)))
+    (define-key map "q"       'quit-window)
+    (define-key map "\r"      'diredp-find-line-file-other-window)
+    (define-key map [mouse-2] 'diredp-mouse-find-line-file-other-window)
+    map)
+  "Keymap for `diredp-list-files' output.")
+(fset 'diredp-list-files-map diredp-list-files-map)
+
+;;;###autoload
+(defun diredp-find-line-file-other-window ()
+  "Visit file named by current line, in another window.
+The full text of the line is used as the file name."
+  (interactive)
+  (let ((file  (buffer-substring-no-properties (line-beginning-position) (line-end-position))))
+    (when file (find-file-other-window file))))
+
+;;;###autoload
+(defun diredp-mouse-find-line-file-other-window (e)
+  "Visit file named by clicked line, in another window.
+The full text of the line is used as the file name."
+  (interactive "e")
+  (save-excursion (mouse-set-point e) (diredp-find-line-file-other-window)))
+
+;;;###autoload
+(defun diredp-list-marked (&optional arg predicate interactivep details) ; Bound to `C-M-l'
+  "List the marked files in this Dired buffer.
+A prefix arg specifies files to use instead of the marked files:
+
+ * Numeric prefix arg N: The next N files (previous -N, if < 0).
+ * C-u C-u: All files, but no directories.
+ * C-u C-u C-u: All files and directories, except `.' and `..'
+ * C-u C-u C-u C-u: All files and directories, including `.' and `..'
+ * Any other prefix arg: The current line's file only.
+
+You can use `RET' or `mouse-2' to visit any of the files.
+If `tooltip-mode' is on then moving the mouse over image-file names
+shows image previews.
+
+When called from Lisp:
+ Non-nil optional arg PREDICATE is a file-name predicate.  List only
+  the files for which it returns non-nil.
+ Non-nil optional arg DETAILS is passed to `diredp-list-files'."
+  (interactive (progn (diredp-ensure-mode) (list current-prefix-arg nil t diredp-list-file-attributes)))
+  (let ((files  (dired-get-marked-files nil arg predicate 'DISTINGUISH-ONE interactivep)))
+    (diredp-list-files files nil nil nil details)))
+
+(defun diredp-list-files (files &optional dir bufname predicate details)
+  "Display FILES, a list of file names.  Wildcard patterns are expanded.
+The files are shown in a new buffer, `*Files*' by default.
+
+Optional arg DIR serves as the default directory for expanding file
+ names that are not absolute.  It defaults to `default-directory'.
+
+Optional arg BUFNAME is the name of the buffer for the display.
+ It defaults to `*Files*' (or `*Files*<N>' if `*Files*' exists).
+
+Optional arg PREDICATE is a predicate used to filter FILES: only files
+ satisfying PREDICATE are listed.
+
+Non-nil arg DETAILS means show details about each file, in addition to
+the file name.  It is passed to `diredp-list-file' (which see).
+
+File names listed are absolute.  Mouseover gives help or an image-file
+preview, and you can use `RET' or `mouse-2' to visit files."
+  (unless bufname (setq bufname  (generate-new-buffer-name "*Files*")))
+  (diredp-with-help-window
+   bufname
+   (princ "Files\n-----\n\n")
+   (let ((all-files-no-wildcards  ())
+         file-alist file-dir)
+     (dolist (file  files)
+       (unless (or (string= file "")    ; Ignore empty file names.
+                   (and predicate  (not (funcall predicate file))))
+         (if (not (diredp-string-match-p "[[?*]" file))
+             (add-to-list 'all-files-no-wildcards (diredp-list-file file details))
+           (setq file-dir    (or (file-name-directory file)  default-directory)
+                 file-alist  (directory-files-and-attributes file-dir 'FULL "[[?*]" 'NOSORT))
+           (dolist (ff  file-alist)
+             (add-to-list 'all-files-no-wildcards (diredp-list-file file details))))))
+     (save-excursion (dolist (fff  (nreverse all-files-no-wildcards))
+                       (princ fff) (terpri)))))
+  (with-current-buffer bufname
+    (let ((buffer-read-only  nil))
+      (save-excursion
+        (goto-char (point-min))
+        (forward-line 3)
+        (while (not (eobp))
+          (add-text-properties (line-beginning-position) (line-end-position)
+                               '(mouse-face highlight help-echo diredp-mouseover-help dired-filename t
+                                            ;; `keymap' does not work for Emacs 20.  Could use `local-map'
+                                            ;; but that still leaves `RET' bound to `help-follow'.
+                                            keymap diredp-list-files-map))
+          (forward-line 1))))
+    (set-buffer-modified-p nil)
+    (setq buffer-read-only  t)
+    (buffer-enable-undo)))
+
+(defun diredp-list-file (file &optional details)
+  "Return FILE name, expanded.
+Non-nil optional arg DETAILS means append details about FILE to the
+returned string.
+
+If DETAILS is a list of file attribute numbers then include only the
+values of those attributes.  Otherwise, include all attribute values."
+  (let ((file-dir  (and details  (or (file-name-directory file)  default-directory)))
+        attrs)
+    (setq file  (expand-file-name file file-dir))
+    (when (and details  (atom details)) (setq details  '(0 1 2 3 4 5 6 7 8 9 10 11)))
+    (concat
+     file
+     (and details
+          (setq attrs  (file-attributes file))
+          (concat
+           "\n"
+           (and (memq 0 details)
+                (format " File Type:                  %s\n"
+                        (cond ((eq t (nth 0 attrs))  "Directory")
+                              ((stringp (nth 0 attrs))  (format "Symbolic link to `%s'" (nth 0 attrs)))
+                              (t  "Normal file"))))
+           (and (memq 8 details)
+                (format " Permissions:                %s\n" (nth 8 attrs)))
+           (and (memq 7 details)  (not (eq t (nth 0 attrs)))
+                (format " Size in bytes:              %g\n" (nth 7 attrs)))
+           (and (memq 4 details)
+                (format-time-string " Time of last access:        %a %b %e %T %Y (%Z)\n" (nth 4 attrs)))
+           (and (memq 5 details)
+                (format-time-string " Time of last modification:  %a %b %e %T %Y (%Z)\n" (nth 5 attrs)))
+           (and (memq 6 details)
+                (format-time-string " Time of last status change: %a %b %e %T %Y (%Z)\n" (nth 6 attrs)))
+           (and (memq 1 details)
+                (format " Number of links:            %d\n" (nth 1 attrs)))
+           (and (memq 2 details)
+                (format " User ID (UID):              %s\n" (nth 2 attrs)))
+           (and (memq 3 details)
+                (format " Group ID (GID):             %s\n" (nth 3 attrs)))
+           (and (memq 10 details)
+                (format " Inode:                      %S\n" (nth 10 attrs)))
+           (and (memq 11 details)
+                (format " Device number:              %s\n" (nth 11 attrs))))))))
+
+(defvar diredp-files-within-dirs-done ()
+  "Directories already processed by `diredp-files-within'.")
+
+
+;; Not used in the `Dired+' code yet.
+(defun diredp-directories-within (&optional directory no-symlinks-p predicate)
+  "List of accessible directories within DIRECTORY.
+Directories in `icicle-ignored-directories' are skipped, if you use
+Icicles.  Otherwise, directories in `vc-directory-exclusion-list' are
+skipped.
+
+Optional arg DIRECTORY defaults to the value of `default-directory'.
+Non-nil optional arg NO-SYMLINKS-P means do not follow symbolic links.
+Non-nil optional arg PREDICATE must be a function that accepts a
+ file-name argument.  Only directories that satisfy PREDICATE are
+ included in the result."
+  (unless directory (setq directory  default-directory))
+  (let ((dirs  (diredp-files-within (directory-files directory 'FULL diredp-re-no-dot)
+                                    () no-symlinks-p 'INCLUDE-DIRS-P
+                                    #'file-directory-p)))
+    (if predicate (diredp-remove-if-not predicate dirs) dirs)))
+
+;; Args INCLUDE-DIRS-P and PREDICATE are not used in the `Dired+' code yet
+;; (except in `diredp-directories-within', which also is not used yet).
+;;
+(defun diredp-files-within (file-list accum &optional no-symlinks-p include-dirs-p predicate)
+  "List of readable files in FILE-LIST, handling directories recursively.
+FILE-LIST is a list of file names or a function that returns such.
+If a function then invoke it with no args to get the list of files.
+
+Accessible directories in the list of files are processed recursively
+to include their files and the files in their subdirectories.  The
+directories themselves are not included, unless optional arg
+INCLUDE-DIRS-P is non-nil.  (Directories in
+`icicle-ignored-directories' are skipped, if you use Icicles.
+Otherwise, directories in `vc-directory-exclusion-list' are skipped.)
+
+But if there is a Dired buffer for such a directory, and if FILE-LIST
+is a function, then it is invoked in that Dired buffer to return the
+list of files to use.  E.g., if FILE-LIST is `dired-get-marked-files'
+then only the marked files and subdirectories are included.  If you
+have more than one Dired buffer for a directory that is processed
+here, then only the first one in `dired-buffers' is used.
+
+The list of files is accumulated in ACCUM, which is used for recursive
+calls.
+
+Non-nil optional arg NO-SYMLINKS-P means do not follow symbolic links.
+
+Non-nil optional arg INCLUDE-DIRS-P means include directory names
+along with the names of non-directories.
+
+Non-nil optional arg PREDICATE must be a function that accepts a
+file-name argument.  Only files (and possibly directories) that
+satisfy PREDICATE are included in the result."
+  ;; Bind `diredp-files-within-dirs-done' for use as a free var in `diredp-files-within-1'.
+  (let ((diredp-files-within-dirs-done  ()))
+    (nreverse (diredp-files-within-1 file-list accum no-symlinks-p include-dirs-p predicate))))
+
+;; `diredp-files-within-dirs-done' is free here, bound in `diredp-files-within'.
+(defun diredp-files-within-1 (file-list accum no-symlinks-p include-dirs-p predicate)
+  "Helper for `diredp-files-within'."
+  (let ((files  (if (functionp file-list) (funcall file-list) file-list))
+        (res    accum)
+        file)
+    (when (and files  predicate) (setq files  (diredp-remove-if-not predicate files)))
+    (while files
+      (setq file  (car files))
+      (unless (and no-symlinks-p  (file-symlink-p file))
+        (if (file-directory-p file)
+            ;; Skip directory if ignored, already treated, or inaccessible.
+            (when (and (not (member (file-name-nondirectory file)
+                                    (if (boundp 'icicle-ignored-directories)
+                                        icicle-ignored-directories
+                                      (and (boundp 'vc-directory-exclusion-list)
+                                           vc-directory-exclusion-list))))
+                       (not (member (file-truename file) diredp-files-within-dirs-done))
+                       (file-accessible-directory-p file))
+              (setq res  (diredp-files-within-1 (or (and (functionp file-list)
+                                                         (dired-buffers-for-dir
+                                                          (expand-file-name file)) ; Removes killed buffers.
+                                                         (with-current-buffer
+                                                             (cdr (assoc (file-name-as-directory file)
+                                                                         dired-buffers))
+                                                           (funcall file-list)))
+                                                    (directory-files file 'FULL diredp-re-no-dot))
+                                                res no-symlinks-p include-dirs-p predicate))
+              (when include-dirs-p (push file res))
+              (push (file-truename file) diredp-files-within-dirs-done))
+          (when (file-readable-p file) (push file res))))
+      (pop files))
+    res))
+
+(defun diredp-remove-if (pred xs)
+  "A copy of list XS with no elements that satisfy predicate PRED."
+  (let ((result  ()))
+    (dolist (x xs) (unless (funcall pred x) (push x result)))
+    (nreverse result)))
+
+(defun diredp-remove-if-not (pred xs)
+  "A copy of list XS with only elements that satisfy predicate PRED."
+  (let ((result  ()))
+    (dolist (x xs) (when (funcall pred x) (push x result)))
+    (nreverse result)))
+
+(when (> emacs-major-version 21)        ; Emacs 20 has no PREDICATE arg to `read-file-name'.
+  (defun diredp-insert-as-subdir (child ancestor &optional in-dired-now-p)
+    "Insert the current Dired dir into a Dired listing of an ancestor dir.
+Ancestor means parent, grandparent, etc. at any level.
+You are prompted for the ancestor directory.
+The ancestor Dired buffer is selected.
+
+Markings and switches in the current Dired buffer are preserved for
+the subdir listing in the ancestor Dired buffer.
+
+Note: If you use Icicles, then you can use
+`icicle-dired-insert-as-subdir' instead: it is a multi-command.  It
+does the same thing, but it lets you insert any number of descendant
+directories into a given ancestor-directory Dired buffer.
+
+Non-interactively:
+ Insert CHILD dir into Dired listing for ANCESTOR dir.
+
+ Non-nil optional arg IN-DIRED-NOW-P means to use the current buffer
+ as the Dired buffer from which to pick up markings and switches.
+ Otherwise, pick them up from a Dired buffer for CHILD, if there is
+ exactly one such buffer."
+    (interactive (progn (diredp-ensure-mode)
+                        (list default-directory
+                              (completing-read
+                               "Insert this dir into ancestor dir: "
+                               (mapcar #'list (diredp-ancestor-dirs default-directory)))
+                              t)))
+    (let ((child-dired-buf  (if in-dired-now-p
+                                (current-buffer)
+                              (dired-buffers-for-dir (expand-file-name child))))
+          (switches         ())
+          (marked           ()))
+      (when (consp child-dired-buf)
+        (setq child-dired-buf  (and (= 1 (length child-dired-buf))  (car child-dired-buf))))
+      (when child-dired-buf
+        (with-current-buffer child-dired-buf
+          (setq switches  dired-actual-switches
+                marked    (dired-remember-marks (point-min) (point-max)))))
+      (dired-other-window ancestor)
+      (dired-insert-subdir child switches)
+      (when marked (let ((inhibit-read-only  t)) (dired-mark-remembered marked)))
+      (set-buffer-modified-p nil))))
+
+(defun diredp-ancestor-dirs (dir)
+  "Return a list of the ancestor directories of directory DIR."
+  (mapcar #'file-name-as-directory
+          (diredp-maplist (lambda (dd) (mapconcat #'identity (reverse dd) "/"))
+                          (cdr (nreverse (split-string dir "/" t))))))
+
+(defun diredp-maplist (function list)
+  "Map FUNCTION over LIST and its cdrs.
+A simple, recursive version of the classic `maplist'."
+  (and list  (cons (funcall function list) (diredp-maplist function (cdr list)))))
+
+(defun diredp-existing-dired-buffer-p (buffer-name)
+  "Return non-nil if BUFFER-NAME names a live, existing Dired buffer."
+  (let ((dbuf  (get-buffer buffer-name)))
+    (and dbuf  (buffer-live-p dbuf)  (rassq dbuf dired-buffers))))
+
+;; From `cl-seq.el', function `union', without keyword treatment.
+;; (Same as `icicle-set-union' in `icicles-fn.el'.)
+(defun diredp-set-union (list1 list2)
+  "Combine LIST1 and LIST2 using a set-union operation.
+The result list contains all items that appear in either LIST1 or
+LIST2.  Comparison is done using `equal'.  This is a non-destructive
+function; it copies the data if necessary."
+  (cond ((null list1)         list2)
+        ((null list2)         list1)
+        ((equal list1 list2)  list1)
+        (t
+         (unless (>= (length list1) (length list2))
+           (setq list1  (prog1 list2 (setq list2  list1)))) ; Swap them.
+         (while list2
+           (unless (member (car list2) list1)  (setq list1  (cons (car list2) list1)))
+           (setq list2  (cdr list2)))
+         list1)))
+
+(when (fboundp 'file-equal-p)           ; Emacs 24+
+  (defun diredp-move-file (file &optional prompt-anyway)
+    "Move FILE to associated directory in `diredp-move-file-dirs'.
+If no association, or if you use a prefix arg, prompt for directory."
+    (interactive (list (dired-get-filename) current-prefix-arg))
+    (unless file (error "No file specified"))
+    (let* ((file-sans  (file-name-nondirectory file))
+           (dir        (file-name-as-directory
+                        (or (and (not prompt-anyway)
+                                 (cdr (assoc file-sans diredp-move-file-dirs)))
+                            (read-directory-name "Move to: ")))))
+      (when (file-equal-p dir (file-name-directory file))
+        (error "Cannot move to same directory: %s" dir))
+      (dired-rename-file file dir nil)
+      (dired-add-file (expand-file-name file-sans dir))
+      (message "Moved `%s' to `%s'" file-sans dir))))
+
+(defvar diredp-last-copied-filenames ()
+  "String list of file names last copied to the `kill-ring'.
+Copying is done by `dired-copy-filename-as-kill' and related commands.")
+
+
+;; REPLACE ORIGINAL in `dired-x.el'.
+;;
+;; Put text copied to kill ring in variable `diredp-last-copied-filenames'.
+;;
+(defun dired-copy-filename-as-kill (&optional arg)
+  "Copy names of marked (or next ARG) files into the kill ring.
+The names are separated by a space.
+With a zero prefix arg, use the absolute file name of each marked file.
+With \\[universal-argument], use the file name relative to the Dired buffer's
+`default-directory'.  (This still may contain slashes if in a subdirectory.)
+
+If on a subdir headerline, use absolute subdirname instead;
+prefix arg and marked files are ignored in this case.
+
+You can then feed the file name(s) to other commands with \\[yank].
+
+The value of global variable `diredp-last-copied-filenames' is updated
+to the string list of file name(s), so you can obtain it even after
+the kill ring is modified."
+  (interactive "P")
+  (let* ((num-arg  (prefix-numeric-value arg))
+         (string  (or (dired-get-subdir)
+                      (mapconcat #'identity
+                                 (cond ((not arg)       (dired-get-marked-files 'no-dir))
+                                       ((zerop num-arg) (dired-get-marked-files))
+                                       ((consp arg)     (dired-get-marked-files t))
+                                       (t               (dired-get-marked-files 'no-dir num-arg)))
+                                 " "))))
+    (unless (string= "" string)
+      (if (eq last-command 'kill-region) (kill-append string nil) (kill-new string))
+      (setq diredp-last-copied-filenames  (car kill-ring-yank-pointer))
+      (message "%s" string))))
+
+(defun diredp-copy-abs-filenames-as-kill () ; Not bound.
+  "Copy absolute names of marked files in Dired to the kill ring.
+Also set variable `diredp-last-copied-filenames' to the string that
+lists the file names.
+
+This is the same as using a zero prefix arg with command
+`dired-copy-filename-as-kill', that is, \\<dired-mode-map>`M-0 \\[dired-copy-filename-as-kill]'."
+  (interactive (diredp-ensure-mode))
+  (dired-copy-filename-as-kill 0))
+
+;;;###autoload
+(defalias 'diredp-paste-files 'diredp-yank-files) ; Bound to `C-y'.
+;;;###autoload
+(defun diredp-yank-files (&optional dir no-confirm-p details)
+  "Paste files, whose absolute names you copied, to the current directory.
+With a non-negative prefix arg you are instead prompted for the target
+ directory.
+With a non-positive prefix arg you can see details about the files if
+ you hit `l' when prompted to confirm pasting.  Otherwise you see only
+ the file names.  The details you see are defined by option
+ `diredp-list-file-attributes'.
+
+You should have copied the list of file names as a string to the kill
+ring using \\<dired-mode-map>`M-0 \\[dired-copy-filename-as-kill]' or \
+\\[diredp-copy-abs-filenames-as-kill].
+Those commands also set variable `diredp-last-copied-filenames' to the
+same string.  `diredp-yank-files' uses the value of that variable, not
+whatever is currently at the head of the kill ring.
+
+When called from Lisp:
+
+Optional arg NO-CONFIRM-P means do not ask for confirmation to copy.
+Optional arg DETAILS is passed to `diredp-y-or-n-files-p'."
+  (interactive (list (and current-prefix-arg  (natnump (prefix-numeric-value current-prefix-arg))
+                          (expand-file-name (read-directory-name "Yank files to directory: ")))
+                     nil
+                     (and current-prefix-arg
+                          (<= (prefix-numeric-value current-prefix-arg) 0)
+                          diredp-list-file-attributes)))
+  (setq dir  (or dir  (and (derived-mode-p 'dired-mode)  (dired-current-directory))))
+  (unless (file-directory-p dir) (error "Not a directory: `%s'" dir))
+  (let ((files  diredp-last-copied-filenames))
+    (unless (stringp files)  (error "No copied file names"))
+    (setq files  (diredp-delete-if-not (lambda (file) (file-name-absolute-p file)) (split-string files)))
+    (unless files  (error "No copied *absolute* file names (Did you use `M-0 w'?)"))
+    (if (and (not no-confirm-p)
+             (diredp-y-or-n-files-p "Paste files whose names you copied? " files nil details))
+        (dired-create-files #'dired-copy-file "Copy" files
+                            (lambda (from) (expand-file-name (file-name-nondirectory from) dir)))
+      (message "OK, file-pasting canceled"))))
+
+;;;###autoload
+(defun diredp-move-files-named-in-kill-ring (&optional dir no-confirm-p details) ; Bound to `C-w'
+  "Move files, whose absolute names you copied, to the current directory.
+With a non-negative prefix arg you are instead prompted for the target
+ directory.
+With a non-positive prefix arg you can see details about the files if
+ you hit `l' when prompted to confirm pasting.  Otherwise you see only
+ the file names.  The details you see are defined by option
+ `diredp-list-file-attributes'.
+
+You should have copied the list of file names as a string to the kill
+ring using \\<dired-mode-map>`M-0 \\[dired-copy-filename-as-kill]' or \
+\\[diredp-copy-abs-filenames-as-kill].
+Those commands also set variable `diredp-last-copied-filenames' to the
+same string.  `diredp-move-files-named-in-kill-ring' uses the value of
+that variable, not whatever is currently at the head of the kill ring.
+
+When called from Lisp:
+
+Optional arg NO-CONFIRM-P means do not ask for confirmation to move.
+Optional arg DETAILS is passed to `diredp-y-or-n-files-p'."
+  (interactive (list (and current-prefix-arg  (natnump (prefix-numeric-value current-prefix-arg))
+                          (expand-file-name (read-directory-name "Move files to directory: ")))
+                     nil
+                     (and current-prefix-arg
+                          (<= (prefix-numeric-value current-prefix-arg) 0)
+                          diredp-list-file-attributes)))
+  (setq dir  (or dir  (and (derived-mode-p 'dired-mode)  (dired-current-directory))))
+  (unless (file-directory-p dir) (error "Not a directory: `%s'" dir))
+  (let ((files  diredp-last-copied-filenames))
+    (unless (stringp files)  (error "No copied file names"))
+    (setq files  (diredp-delete-if-not (lambda (file) (file-name-absolute-p file)) (split-string files)))
+    (unless files  (error "No copied (absolute* file names (Did you use `M-0 w'?)"))
+    (if (and (not no-confirm-p)
+             (diredp-y-or-n-files-p "MOVE files whose names you copied? " files nil details))
+        (dired-create-files #'dired-rename-file "Move" files
+                            (lambda (from) (expand-file-name (file-name-nondirectory from) dir)))
+      (message "OK, file-moves canceled"))))
+
+
+;;; Commands operating on marked at all levels below (recursively)
+
+(defun diredp-get-confirmation-recursive (&optional type)
+  "Get confirmation from user to act on all TYPE here and below.
+If TYPE is nil use \"files\" in the confirmation prompt, else use TYPE.
+Raise an error if not confirmed.
+Raise an error first if not in Dired mode."
+  (diredp-ensure-mode)
+  (unless (y-or-n-p (format "Act on ALL %s (or all marked if any) in and UNDER this dir? "
+                            (or type 'files)))
+    (error "OK, canceled")))
+
+;;;###autoload
+(when (> emacs-major-version 21)        ; Emacs 22+ has KILL-ROOT parameter.
+  (defun diredp-kill-this-tree ()
+    "Remove this subdir listing and lower listings."
+    (interactive)
+    (dired-kill-tree (dired-current-directory) nil 'KILL-ROOT)))
+
+;;;###autoload
+(defun diredp-insert-subdirs (&optional switches interactivep) ; Bound to `M-i'
+  "Insert the marked subdirectories.
+Like using \\<dired-mode-map>`\\[dired-maybe-insert-subdir]' at each marked directory line."
+  (interactive (list (and current-prefix-arg
+                          (read-string "Switches for listing: "
+                                       (or (and (boundp 'dired-subdir-switches)  dired-subdir-switches)
+                                           dired-actual-switches)))
+                     t))
+  (dolist (subdir  (dired-get-marked-files nil
+                                           nil
+                                           (lambda (fl) (and (file-directory-p fl) ; Exclude `.' and `..'
+                                                             (not (diredp-string-match-p "/[.][.]?\\'" fl))))
+                                           nil
+                                           interactivep))
+    (dired-maybe-insert-subdir subdir switches)))
+
+;;;###autoload
+(defun diredp-insert-subdirs-recursive (&optional ignore-marks-p details) ; Bound to `M-+ M-i'
+  "Insert the marked subdirs, including those in marked subdirs.
+Like `diredp-insert-subdirs', but act recursively on subdirs.
+The subdirs inserted are those that are marked in the current Dired
+buffer, or ALL subdirs in the directory if none are marked.  Marked
+subdirectories are handled recursively in the same way (their marked
+subdirs are inserted...).
+
+With a prefix argument, ignore all marks - include all files in this
+Dired buffer and all subdirs, recursively.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-get-files'."
+  (interactive (progn (diredp-get-confirmation-recursive 'subdirs)
+                      (list current-prefix-arg diredp-list-file-attributes)))
+  (dolist (subdir  (diredp-get-files ignore-marks-p #'file-directory-p 'INCLUDE-SUBDIRS-P nil nil details))
+    (dired-maybe-insert-subdir subdir)))
+
+;;;###autoload
+(defun diredp-do-shell-command-recursive (command &optional ignore-marks-p details) ; Bound to `M-+ !'
+  "Run shell COMMAND on the marked files, including those in marked subdirs.
+Like `dired-do-shell-command', but act recursively on subdirs.
+The files included are those that are marked in the current Dired
+buffer, or all files in the directory if none are marked.  Marked
+subdirectories are handled recursively in the same way.
+
+With a prefix argument, ignore all marks - include all files in this
+Dired buffer and all subdirs, recursively.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-get-files'."
+  (interactive
+   (progn (diredp-get-confirmation-recursive)
+          (let* ((prompt  "! on *: ")
+                 (cmd     (minibuffer-with-setup-hook
+                           (lambda ()
+                             (set (make-local-variable 'minibuffer-default-add-function)
+                                  'minibuffer-default-add-dired-shell-commands))
+                           (let ((dired-no-confirm  t))
+                             (if (functionp 'dired-guess-shell-command)
+                                 ;; Guess cmd based only on files marked in current (top) dir.
+                                 (dired-guess-shell-command prompt (dired-get-marked-files t))
+                               (read-shell-command prompt nil nil))))))
+            (list cmd current-prefix-arg diredp-list-file-attributes))))
+  (dired-do-shell-command command nil (diredp-get-files ignore-marks-p nil nil nil nil details)))
+
+(when (fboundp 'dired-do-async-shell-command) ; Emacs 23+
+
+  (defun diredp-do-async-shell-command-recursive (command &optional ignore-marks-p details)
+                                        ; Bound to `M-+ &'
+    "Run async shell COMMAND on marked files, including in marked subdirs.
+Like `dired-do-async-shell-command', but act recursively on subdirs.
+The files included are those that are marked in the current Dired
+buffer, or all files in the directory if none are marked.  Marked
+subdirectories are handled recursively in the same way.
+
+With a prefix argument, ignore all marks - include all files in this
+Dired buffer and all subdirs, recursively.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-get-files'."
+    (interactive
+     (progn (diredp-get-confirmation-recursive)
+            (let* ((prompt  "! on *: ")
+                   (cmd     (minibuffer-with-setup-hook
+                             (lambda ()
+                               (set (make-local-variable 'minibuffer-default-add-function)
+                                    'minibuffer-default-add-dired-shell-commands))
+                             (let ((dired-no-confirm  t))
+                               (if (functionp 'dired-guess-shell-command)
+                                   ;; Guess cmd based only on files marked in current (top) dir.
+                                   (dired-guess-shell-command prompt (dired-get-marked-files t))
+                                 (read-shell-command prompt nil nil))))))
+              (list cmd current-prefix-arg diredp-list-file-attributes))))
+    (dired-do-async-shell-command command nil (diredp-get-files ignore-marks-p nil nil nil nil details))))
+
+;;;###autoload
+(defun diredp-do-symlink-recursive (&optional ignore-marks-p details) ; Bound to `M-+ S'
+  "Make symbolic links to marked files, including those in marked subdirs.
+Like `dired-do-symlink', but act recursively on subdirs to pick up the
+files to link.
+
+The files included are those that are marked in the current Dired
+buffer, or all files in the directory if none are marked.  Marked
+subdirectories are handled recursively in the same way.
+
+With a prefix argument, ignore all marks - include all files in this
+Dired buffer and all subdirs, recursively.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-do-create-files-recursive'."
+  (interactive (progn (diredp-get-confirmation-recursive) (list current-prefix-arg diredp-list-file-attributes)))
+  (diredp-do-create-files-recursive #'make-symbolic-link "Symlink" ignore-marks-p details))
+
+(defun diredp-do-relsymlink-recursive (&optional ignore-marks-p details) ; Bound to `M-+ Y'
+  "Relative symlink all marked files, including those in marked subdirs into a dir.
+Like `dired-do-relsymlink', but act recursively on subdirs to pick up the
+files to link.
+
+The files included are those that are marked in the current Dired
+buffer, or all files in the directory if none are marked.  Marked
+subdirectories are handled recursively in the same way.
+
+With a prefix argument, ignore all marks - include all files in this
+Dired buffer and all subdirs, recursively.
+
+For absolute symlinks, use \\[diredp-do-symlink-recursive].
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-do-create-files-recursive'."
+  (interactive (progn (diredp-get-confirmation-recursive)
+                      (list current-prefix-arg diredp-list-file-attributes)))
+  (diredp-do-create-files-recursive #'dired-make-relative-symlink "RelSymLink" ignore-marks-p details))
+
+;;;###autoload
+(defun diredp-do-hardlink-recursive (&optional ignore-marks-p details) ; Bound to `M-+ H'
+  "Add hard links for marked files, including those in marked subdirs.
+Like `dired-do-hardlink', but act recursively on subdirs to pick up the
+files to link.
+
+The files included are those that are marked in the current Dired
+buffer, or all files in the directory if none are marked.  Marked
+subdirectories are handled recursively in the same way.
+
+With a prefix argument, ignore all marks - include all files in this
+Dired buffer and all subdirs, recursively.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-do-create-files-recursive'."
+  (interactive (progn (diredp-get-confirmation-recursive) (list current-prefix-arg diredp-list-file-attributes)))
+  (diredp-do-create-files-recursive #'dired-hardlink "Hardlink" ignore-marks-p details))
+
+;;;###autoload
+(defun diredp-do-print-recursive (&optional ignore-marks-p details) ; Bound to `M-+ P'
+  "Print the marked files, including those in marked subdirs.
+Like `dired-do-print', but act recursively on subdirs to pick up the
+files to print.
+
+The files included are those that are marked in the current Dired
+buffer, or all files in the directory if none are marked.  Marked
+subdirectories are handled recursively in the same way.
+
+With a prefix argument, ignore all marks - include all files in this
+Dired buffer and all subdirs, recursively.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-get-files'."
+  (interactive (progn (diredp-get-confirmation-recursive) (list current-prefix-arg diredp-list-file-attributes)))
+  (let* ((file-list  (diredp-get-files ignore-marks-p nil nil nil nil details))
+         (command    (dired-mark-read-string
+                      "Print %s with: "
+                      (mapconcat #'identity
+                                 (cons lpr-command (if (stringp lpr-switches) (list lpr-switches) lpr-switches))
+                                 " ")
+                      'print nil file-list)))
+    (dired-run-shell-command (dired-shell-stuff-it command file-list nil))))
+
+;;;###autoload
+(defun diredp-image-dired-display-thumbs-recursive (&optional ignore-marks-p append do-not-pop details)
+                                        ; Bound to `M-+ C-t d'
+  "Display thumbnails of marked files, including those in marked subdirs.
+Like `image-dired-display-thumbs', but act recursively on subdirs.
+Optional arguments APPEND and DO-NOT-POP are as for
+`image-dired-display-thumbs'.
+
+The files included are those that are marked in the current Dired
+buffer, or all files in the directory if none are marked.  Marked
+subdirectories are handled recursively in the same way.
+
+With a prefix argument, ignore all marks - include all files in this
+Dired buffer and all subdirs, recursively.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-get-files'."
+  (interactive (progn (diredp-image-dired-required-msg)
+                      (diredp-get-confirmation-recursive)
+                      (list current-prefix-arg nil nil diredp-list-file-attributes)))
+  (let ((buf  (image-dired-create-thumbnail-buffer))
+        thumb-name files dired-buf)
+    (setq files      (diredp-get-files ignore-marks-p nil nil nil nil details)
+          dired-buf  (current-buffer))
+    (with-current-buffer buf
+      (let ((inhibit-read-only  t))
+        (if append (goto-char (point-max)) (erase-buffer))
+        (mapc (lambda (curr-file)
+                (setq thumb-name  (image-dired-thumb-name curr-file))
+                (if (and (not (file-exists-p thumb-name))
+                         (not (= 0 (image-dired-create-thumb curr-file thumb-name))))
+                    (message "Thumb could not be created for file %s" curr-file)
+                  (image-dired-insert-thumbnail thumb-name curr-file dired-buf)))
+              files))
+      (case image-dired-line-up-method
+        (dynamic      (image-dired-line-up-dynamic))
+        (fixed        (image-dired-line-up))
+        (interactive  (image-dired-line-up-interactive))
+        (none         nil)
+        (t            (image-dired-line-up-dynamic))))
+    (if do-not-pop
+        (display-buffer image-dired-thumbnail-buffer)
+      (pop-to-buffer image-dired-thumbnail-buffer))))
+
+;;;###autoload
+(defun diredp-image-dired-tag-files-recursive (&optional ignore-marks-p details) ; Bound to `M-+ C-t t'
+  "Tag marked files with an `image-dired' tag, including in marked subdirs.
+Like `image-dired-tag-files', but act recursively on subdirs.
+The files included are those that are marked in the current Dired
+buffer, or all files in the directory if none are marked.  Marked
+subdirectories are handled recursively in the same way.
+
+With a prefix argument, ignore all marks - include all files in this
+Dired buffer and all subdirs, recursively.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-get-files'."
+  (interactive (progn (diredp-image-dired-required-msg)
+                      (diredp-get-confirmation-recursive)
+                      (list current-prefix-arg diredp-list-file-attributes)))
+  (let ((tag  (read-string "Tags to add (separate tags with a semicolon): ")))
+    (image-dired-write-tags (mapcar (lambda (x) (cons x tag))
+                                    (diredp-get-files ignore-marks-p nil nil nil nil details)))))
+
+;;;###autoload
+(defun diredp-image-dired-delete-tag-recursive (&optional ignore-marks-p details) ; Bound to `M-+ C-t r'
+  "Remove `image-dired' tag for marked files, including in marked subdirs.
+Like `image-dired-delete-tag', but act recursively on subdirs.
+The files included are those that are marked in the current Dired
+buffer, or all files in the directory if none are marked.  Marked
+subdirectories are handled recursively in the same way.
+
+With a prefix argument, ignore all marks - include all files in this
+Dired buffer and all subdirs, recursively.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-get-files'."
+  (interactive (progn (diredp-image-dired-required-msg)
+                      (diredp-get-confirmation-recursive)
+                      (list current-prefix-arg diredp-list-file-attributes)))
+  (image-dired-remove-tag (diredp-get-files ignore-marks-p nil nil nil nil details)
+                          (read-string "Tag to remove: ")))
+
+;;;###autoload
+(defun diredp-image-dired-comment-files-recursive (&optional ignore-marks-p details)
+                                        ; Bound to `M-+ C-t c'
+  "Add comment to marked files in dired, including those in marked subdirs.
+Like `image-dired-dired-comment-files' but act recursively on subdirs.
+The files included are those that are marked in the current Dired
+buffer, or all files in the directory if none are marked.  Marked
+subdirectories are handled recursively in the same way.
+
+With a prefix argument, ignore all marks - include all files in this
+Dired buffer and all subdirs, recursively.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-get-files'."
+  (interactive (progn (diredp-image-dired-required-msg)
+                      (diredp-get-confirmation-recursive)
+                      (list current-prefix-arg diredp-list-file-attributes)))
+  (let ((comment  (image-dired-read-comment)))
+    (image-dired-write-comments (mapcar (lambda (curr-file) (cons curr-file comment))
+                                        (diredp-get-files ignore-marks-p nil nil nil nil details)))))
+
+(when (> emacs-major-version 22)
+
+  (defun diredp-do-decrypt-recursive (&optional ignore-marks-p details) ; Bound to `M-+ : d'
+    "Decrypt marked files, including those in marked subdirs.
+Like `epa-dired-do-decrypt', but act recursively on subdirs to pick up
+the files to decrypt.
+
+The files included are those that are marked in the current Dired
+buffer, or all files in the directory if none are marked.  Marked
+subdirectories are handled recursively in the same way.
+
+With a prefix argument, ignore all marks - include all files in this
+Dired buffer and all subdirs, recursively.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-get-files'."
+    (interactive (progn (diredp-get-confirmation-recursive)
+                        (list current-prefix-arg diredp-list-file-attributes)))
+    (dolist (file  (diredp-get-files ignore-marks-p nil nil nil nil details))
+      (epa-decrypt-file (expand-file-name file)))
+    (revert-buffer))
+
+  (defun diredp-do-verify-recursive (&optional ignore-marks-p details) ; Bound to `M-+ : v'
+    "Verify marked files, including those in marked subdirs.
+Like `epa-dired-do-verify', but act recursively on subdirs to pick up
+the files to verify.
+
+The files included are those that are marked in the current Dired
+buffer, or all files in the directory if none are marked.  Marked
+subdirectories are handled recursively in the same way.
+
+With a prefix argument, ignore all marks - include all files in this
+Dired buffer and all subdirs, recursively.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-get-files'."
+    (interactive (progn (diredp-get-confirmation-recursive)
+                        (list current-prefix-arg diredp-list-file-attributes)))
+    (dolist (file  (diredp-get-files ignore-marks-p nil nil nil nil details))
+      (epa-verify-file (expand-file-name file)))
+    (revert-buffer))
+
+  (defun diredp-do-sign-recursive (&optional ignore-marks-p details) ; Bound to `M-+ : s'
+    "Sign marked files, including those in marked subdirs.
+Like `epa-dired-do-sign', but act recursively on subdirs to pick up
+the files to sign.
+
+The files included are those that are marked in the current Dired
+buffer, or all files in the directory if none are marked.  Marked
+subdirectories are handled recursively in the same way.
+
+With a prefix argument, ignore all marks - include all files in this
+Dired buffer and all subdirs, recursively.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-get-files'."
+    (interactive (progn (diredp-get-confirmation-recursive)
+                        (list current-prefix-arg diredp-list-file-attributes)))
+    (dolist (file  (diredp-get-files ignore-marks-p nil nil nil nil details))
+      (epa-sign-file (expand-file-name file)
+                     (epa-select-keys (epg-make-context) "Select keys for signing.
+If none are selected, the default secret key is used.  ")
+                     (y-or-n-p "Make a detached signature? ")))
+    (revert-buffer))
+
+  (defun diredp-do-encrypt-recursive (&optional ignore-marks-p details) ; Bound to `M-+ : e'
+    "Encrypt marked files, including those in marked subdirs.
+Like `epa-dired-do-encrypt', but act recursively on subdirs to pick up
+the files to encrypt.
+
+The files included are those that are marked in the current Dired
+buffer, or all files in the directory if none are marked.  Marked
+subdirectories are handled recursively in the same way.
+
+With a prefix argument, ignore all marks - include all files in this
+Dired buffer and all subdirs, recursively.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-get-files'."
+    (interactive (progn (diredp-get-confirmation-recursive)
+                        (list current-prefix-arg diredp-list-file-attributes)))
+    (dolist (file  (diredp-get-files ignore-marks-p nil nil nil nil details))
+      (epa-encrypt-file (expand-file-name file)
+                        (epa-select-keys (epg-make-context) "Select recipients for encryption.
+If none are selected, symmetric encryption is performed.  ")))
+    (revert-buffer)))
+
+;;;###autoload
+(defun diredp-do-bookmark-recursive (&optional ignore-marks-p prefix details) ; Bound to `M-+ M-b'
+  "Bookmark the marked files, including those in marked subdirs.
+Like `diredp-do-bookmark', but act recursively on subdirs.
+The files included are those that are marked in the current Dired
+buffer, or all files in the directory if none are marked.  Marked
+subdirectories are handled recursively in the same way.
+
+With a prefix argument, ignore all marks - include all files in this
+Dired buffer and all subdirs, recursively.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-get-files'."
+  (interactive (progn (diredp-get-confirmation-recursive)
+                      (list current-prefix-arg
+                            (and diredp-prompt-for-bookmark-prefix-flag
+                                 (read-string "Prefix for bookmark name: "))
+                            diredp-list-file-attributes)))
+  (dolist (file  (diredp-get-files ignore-marks-p nil nil nil nil details))
+    (diredp-bookmark prefix file 'NO-MSG-P)))
+
+;;;###autoload
+(defun diredp-do-bookmark-dirs-recursive (ignore-marks-p &optional details msgp)
+  "Bookmark this Dired buffer and marked subdirectory Dired buffers, recursively.
+Create a Dired bookmark for this directory and for each of its marked
+subdirectories.  Handle each of the marked subdirectory similarly:
+bookmark it and its marked subdirectories, and so on, recursively.
+Name each of these Dired bookmarks with the Dired buffer name.
+
+After creating the Dired bookmarks, create a sequence bookmark, named
+`DIRBUF and subdirs', where DIRBUF is the name of the original buffer.
+This bookmark represents the whole Dired tree rooted in the directory
+where you invoked the command.  Jumping to this sequence bookmark
+restores all of the Dired buffers making up the tree, by jumping to
+each of their bookmarks.
+
+With a prefix arg, bookmark the marked and unmarked subdirectory Dired
+buffers, recursively, that is, ignore markings.
+
+Note:
+
+* If there is more than one Dired buffer for a given subdirectory then
+  only the first such is used.
+
+* This command creates new bookmarks.  It never updates or overwrites
+  an existing bookmark.
+
+You need library `Bookmark+' for this command.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-get-subdirs'."
+  (interactive (progn (unless (featurep 'bookmark+)
+                        (error "You need library `Bookmark+' for this command"))
+                      (diredp-get-confirmation-recursive 'subdirs)
+                      (list current-prefix-arg diredp-list-file-attributes t)))
+  (diredp-ensure-mode)
+  (let ((sdirs   (diredp-get-subdirs ignore-marks-p nil details))
+        (snames  ())
+        dbufs)
+    (when (and msgp  sdirs) (message "Checking descendant directories..."))
+    (dolist (dir  (cons default-directory sdirs))
+      (when (setq dbufs  (dired-buffers-for-dir (expand-file-name dir))) ; Dirs with Dired buffers only.
+        (with-current-buffer (car dbufs)
+          (let ((bname  (bookmark-buffer-name))
+                (count  2))
+            (while (and (bmkp-get-bookmark-in-alist bname 'NOERROR)  (setq bname  (format "%s[%d]" bname count))))
+            (bookmark-set bname nil nil 'NO-UPDATE-P) ; Inhibit updating displayed list.
+            (push bname snames)))))
+    (let ((bname  (format "%s and subdirs" (bookmark-buffer-name)))
+          (count  2))
+      (while (and (bmkp-get-bookmark-in-alist bname 'NOERROR)  (setq bname  (format "%s[%d]" bname count))))
+      (bmkp-set-sequence-bookmark bname (nreverse snames) -1 'MSGP))
+    (bmkp-refresh/rebuild-menu-list nil)))
+
+;;;###autoload
+(defun diredp-do-bookmark-in-bookmark-file-recursive (bookmark-file ; Bound to `M-+ C-M-B', aka `M-+ C-M-S-b')
+                                                      &optional prefix ignore-marks-p bfile-bookmarkp details)
+  "Bookmark files here and below in BOOKMARK-FILE and save BOOKMARK-FILE.
+Like `diredp-do-bookmark-in-bookmark-file', but act recursively on
+subdirs.  The files included are those that are marked in the current
+Dired buffer, or all files in the directory if none are marked.
+Marked subdirectories are handled recursively in the same way.
+
+With a prefix argument, ignore all marks - include all files in this
+Dired buffer and all subdirs, recursively.
+
+When called from Lisp:
+ * Optional arg BFILE-BOOKMARKP non-nil means create a bookmark-file
+   bookmark for BOOKMARK-FILE.
+ * Optional arg DETAILS is passed to `diredp-get-files'."
+  (interactive
+   (progn (diredp-get-confirmation-recursive)
+          (let ((d-r-b-f-args  (diredp-read-bookmark-file-args)))
+            (list (car d-r-b-f-args)
+                  (cadr d-r-b-f-args)
+                  (car (cddr d-r-b-f-args))
+                  nil
+                  diredp-list-file-attributes))))
+  (diredp-do-bookmark-in-bookmark-file bookmark-file prefix nil bfile-bookmarkp
+                                       (diredp-get-files ignore-marks-p nil nil nil nil details)))
+
+;;;###autoload
+(defun diredp-set-bookmark-file-bookmark-for-marked-recursive (bookmark-file
+                                                               &optional prefix ignore-marks-p details)
+                                        ; Bound to `M-+ C-M-b'
+  "Bookmark the marked files and create a bookmark-file bookmark for them.
+Like `diredp-set-bookmark-file-bookmark-for-marked', but act
+recursively on subdirs.
+
+The files included are those that are marked in the current Dired
+buffer, or all files in the directory if none are marked.  Marked
+subdirectories are handled recursively in the same way.
+
+With a prefix argument, ignore all marks - include all files in this
+Dired buffer and all subdirs, recursively.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-do-bookmark-in-bookmark-file-recursive'."
+  (interactive (progn (diredp-get-confirmation-recursive)
+                      (let ((d-r-b-f-args  (diredp-read-bookmark-file-args)))
+                        (list (car d-r-b-f-args)
+                              (cadr d-r-b-f-args)
+                              (car (cddr d-r-b-f-args))
+                              diredp-list-file-attributes))))
+  (diredp-ensure-bookmark+)
+  (diredp-do-bookmark-in-bookmark-file-recursive
+   bookmark-file prefix ignore-marks-p 'CREATE-BOOKMARK-FILE-BOOKMARK details))
+
+;;;###autoload
+(defun diredp-do-find-marked-files-recursive (&optional arg details) ; Bound to `M-+ F'
+  "Find marked files simultaneously, including those in marked subdirs.
+Like `dired-do-find-marked-files', but act recursively on subdirs.
+The files included are those that are marked in the current Dired
+buffer, or all files in the directory if none are marked.  Marked
+subdirectories are handled recursively in the same way.
+
+With (explicit) numeric prefix ARG >= 0, find the files but do not
+display them.
+
+With numeric prefix ARG <= 0, ignore all marks - include all files in
+this Dired buffer and all subdirs, recursively.
+
+Note that prefix-argument behavior is different for this command than
+for `dired-do-find-marked-files'.  In particular, a negative numeric
+prefix arg does not cause the files to be shown in separate frames.
+Only non-nil `pop-up-frames' (or equivalent configuration) causes
+the files to be shown in separate frames.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-get-files'."
+  (interactive (progn (diredp-get-confirmation-recursive)
+                      (list current-prefix-arg diredp-list-file-attributes)))
+  (let ((narg  (prefix-numeric-value arg)))
+    (dired-simultaneous-find-file (diredp-get-files (<= narg 0) nil nil nil nil details)
+                                  (and arg  (>= narg 0)  narg))))
+
+(when (fboundp 'dired-do-isearch-regexp) ; Emacs 23+
+
+  (defun diredp-do-isearch-recursive (&optional ignore-marks-p details) ; Bound to `M-+ M-s a C-s'
+    "Isearch the marked files, including those in marked subdirs.
+With a prefix argument, ignore all marks - include all files in this
+Dired buffer and all subdirs, recursively.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-get-files'."
+    (interactive (progn (diredp-get-confirmation-recursive)
+                        (list current-prefix-arg diredp-list-file-attributes)))
+    (multi-isearch-files (diredp-get-files ignore-marks-p nil nil nil nil details)))
+
+  (defun diredp-do-isearch-regexp-recursive (&optional ignore-marks-p details) ; `M-+ M-s a C-M-s'
+    "Regexp-Isearch the marked files, including those in marked subdirs.
+With a prefix argument, ignore all marks - include all files in this
+Dired buffer and all subdirs, recursively.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-get-files'."
+    (interactive (progn (diredp-get-confirmation-recursive)
+                        (list current-prefix-arg diredp-list-file-attributes)))
+    (multi-isearch-files-regexp (diredp-get-files ignore-marks-p nil nil nil nil details))))
+
+(defun diredp-do-search-recursive (regexp &optional ignore-marks-p details) ; Bound to `M-+ A'
+  "Regexp-search the marked files, including those in marked subdirs.
+With a prefix argument, ignore all marks - include all files in this
+Dired buffer and all subdirs, recursively.
+
+Stops when a match is found.
+To continue searching for the next match, use `\\[tags-loop-continue]'.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-get-files'."
+  (interactive (progn (diredp-get-confirmation-recursive)
+                      (list (read-string "Search marked files (regexp): ")
+                            current-prefix-arg
+                            diredp-list-file-attributes)))
+  (tags-search regexp '(diredp-get-files ignore-marks-p nil nil nil nil details)))
+
+;;;###autoload
+(defun diredp-do-query-replace-regexp-recursive (from to &optional arg details)
+                                        ; Bound to `M-+ Q'
+  "Do `query-replace-regexp' on marked files, including in marked subdirs.
+Query-replace FROM with TO.
+
+Like `dired-do-query-replace', but act recursively on subdirs.
+The files included are those that are marked in the current Dired
+buffer, or all files in the directory if none are marked.  Marked
+subdirectories are handled recursively in the same way.
+
+With an (explicit) numeric prefix argument:
+
+* >= 0 means ignore all marks - include ALL files in this Dired buffer
+  and all subdirs, recursively.
+
+* <= 0 means replace only word-delimited matches.
+
+If you exit (`\\[keyboard-quit]', `RET' or `q'), you can resume the query replacement
+using `\\[tags-loop-continue]'.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-get-files'."
+  (interactive (progn (diredp-get-confirmation-recursive)
+                      (let ((common  (query-replace-read-args "Query replace regexp in marked files" t t)))
+                        (list (nth 0 common)
+                              (nth 1 common)
+                              current-prefix-arg
+                              diredp-list-file-attributes))))
+  (let* ((narg                  (and arg  (prefix-numeric-value arg)))
+         (delimited             (and narg  (<= narg 0)))
+         (ignore-marks-p        (and narg  (>= narg 0)))
+         (files                 (diredp-get-files ignore-marks-p nil nil nil nil details))
+         (fit-frame-min-width   30)
+         (fit-frame-min-height  15))
+    (dolist (file  files)
+      (let ((buffer  (get-file-buffer file)))
+        (when (and buffer  (with-current-buffer buffer buffer-read-only))
+          (error "File `%s' is visited read-only" file))))
+    (tags-query-replace from to delimited `',files)))
+
+;;;###autoload
+(defun diredp-do-grep-recursive (command-args &optional details) ; Bound to `M+ C-M-G'
+  "Run `grep' on marked files, including those in marked subdirs.
+Like `diredp-do-grep', but act recursively on subdirs.
+The files included are those that are marked in the current Dired
+buffer, or all files in the directory if none are marked.  Marked
+subdirectories are handled recursively in the same way.
+
+With a prefix argument, ignore all marks - include all files in this
+Dired buffer and all subdirs, recursively.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-get-files'."
+  (interactive (progn (diredp-get-confirmation-recursive)
+                      (unless (if (< emacs-major-version 22)
+                                  grep-command
+                                (and grep-command  (or (not grep-use-null-device)  (eq grep-use-null-device t))))
+                        (grep-compute-defaults))
+                      (list (diredp-do-grep-1
+                             (diredp-get-files current-prefix-arg nil nil nil nil diredp-list-file-attributes)))))
+  (grep command-args))
+
+;;;###autoload
+(defun diredp-marked-recursive (dirname &optional ignore-marks-p details) ; Not bound to a key
+  "Open Dired on marked files, including those in marked subdirs.
+Like `diredp-marked', but act recursively on subdirs.
+
+See `diredp-do-find-marked-files-recursive' for a description of the
+files included.  In particular, if no files are marked here or in a
+marked subdir, then all files in the directory are included.
+
+With a prefix argument, ignore all marks - include all files in this
+Dired buffer and all subdirs, recursively.
+
+When called from Lisp, DIRNAME here must be a string, not a cons.  It
+is used as the name of the new Dired buffer.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-get-files'."
+  (interactive (progn (diredp-get-confirmation-recursive)
+                      (list nil current-prefix-arg diredp-list-file-attributes)))
+  (dired (cons (or dirname  (generate-new-buffer-name (buffer-name)))
+               (diredp-get-files ignore-marks-p nil nil nil nil details))))
+
+;;;###autoload
+(defun diredp-marked-recursive-other-window (dirname &optional ignore-marks-p details) ; Bound to `M-+ C-M-*'
+  "Same as `diredp-marked-recursive', but uses a different window.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-get-files'."
+  (interactive (progn (diredp-get-confirmation-recursive)
+                      (list nil current-prefix-arg diredp-list-file-attributes)))
+  (dired-other-window
+   (cons (or dirname  (generate-new-buffer-name (buffer-name)))
+         (diredp-get-files ignore-marks-p nil nil nil nil details))))
+
+;;;###autoload
+(defun diredp-list-marked-recursive (&optional ignore-marks-p predicate details) ; Bound to `M-+ C-M-l'
+  "List the files marked here and in marked subdirs, recursively.
+The files included are those that are marked in the current Dired
+buffer, or all files in the directory if none are marked.  Marked
+subdirectories are handled recursively in the same way.
+
+With a prefix argument, all marks are ignored: all files in this Dired
+buffer and all descendant directories are included.
+
+You can use `RET' or `mouse-2' to visit any of the files.
+If `tooltip-mode' is on then moving the mouse over image-file names
+shows image previews.
+
+When called from Lisp:
+ Non-nil optional arg IGNORE-MARKS-P means ignore marks.
+ Non-nil optional arg PREDICATE is a file-name predicate.  List only
+  the files for which it returns non-nil.
+ Non-nil optional arg DETAILS is passed to `diredp-list-files'."
+  (interactive ; No need for `diredp-get-confirmation-recursive' here.
+   (progn (diredp-ensure-mode) (list current-prefix-arg nil diredp-list-file-attributes)))
+  (let ((files  (diredp-get-files ignore-marks-p predicate))) (diredp-list-files files nil nil nil details)))
+
+;;;###autoload
+(defun diredp-flag-auto-save-files-recursive (&optional arg details) ; `M-+ #'
+  "Flag all auto-save files for deletion, including in marked subdirs.
+A non-negative prefix arg means to unmark (unflag) them instead.
+
+A non-positive prefix arg means to ignore subdir markings and act
+instead on ALL subdirs.  That is, flag all in this directory and all
+descendant directories.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-mark-recursive-1'."
+  (interactive (list current-prefix-arg diredp-list-file-attributes))
+  (let ((dired-marker-char  dired-del-marker))
+    (diredp-mark-recursive-1 arg "auto-save files" "auto-save file" '(diredp-looking-at-p "^.* #.+#$") details)))
+
+(when (fboundp 'char-displayable-p)     ; Emacs 22+
+
+  (defun diredp-change-marks-recursive (old new &optional arg predicate details) ; `M-+ * c'
+    "Change all OLD marks to NEW marks, including those in marked subdirs.
+The files included are those that are marked in the current Dired
+buffer, or all files in the directory if none are marked.  Marked
+subdirectories are handled recursively in the same way.
+
+* A non-positive prefix arg means ignore subdir markings and act
+  instead on ALL subdirs.
+
+* A non-negative prefix arg means do not change marks on subdirs
+  themselves.
+
+Note: If there is more than one Dired buffer for a given subdirectory
+then only the first such is used.
+
+When called from Lisp:
+ Non-nil arg PREDICATE is a file-name predicate.  Act on only the
+  files for which it returns non-nil.
+ DETAILS is passed to `diredp-get-subdirs'."
+    (interactive
+     (progn (diredp-get-confirmation-recursive)
+            (let* ((cursor-in-echo-area  t)
+                   (old                  (progn (message "Change (old mark): ") (read-char)))
+                   (new                  (progn (message "Change `%c' marks to (new mark): " old) (read-char))))
+              (list old new current-prefix-arg nil diredp-list-file-attributes))))
+    (let* ((numarg             (and arg  (prefix-numeric-value arg)))
+           (nosubs             (natnump numarg))
+           (ignore-marks       (and numarg  (<= numarg 0)))
+           (dired-marker-char  new)
+           (sdirs              (diredp-get-subdirs ignore-marks predicate details))
+           (old-strg           (format "\n%c" old))
+           (count              0)
+           dbufs)
+      (unless (char-displayable-p old) (error "Not a displayable character: `%c'" old))
+      (unless (char-displayable-p new) (error "Not a displayable character: `%c'" new))
+      (message "Changing mark `%c' to `%c'..." old new)
+      (dolist (dir  (cons default-directory sdirs))
+        (when (setq dbufs  (dired-buffers-for-dir (expand-file-name dir))) ; Dirs with Dired buffers only.
+          (with-current-buffer (car dbufs)
+            (let ((inhibit-read-only  t)
+                  (file               nil))
+              (save-excursion
+                (goto-char (point-min))
+                (while (search-forward old-strg nil t)
+                  (save-match-data (setq file  (dired-get-filename 'no-dir t)))
+                  ;; Do nothing if changing from UNmarked and not on a file or dir name.
+                  (unless (and (= old ?   )  (not file))
+                    ;; Do nothing if marked subdir and not changing subdir marks.
+                    (unless (and nosubs  file  (file-directory-p file))
+                      (subst-char-in-region (match-beginning 0) (match-end 0) old new)
+                      (setq count  (1+ count))))))))))
+      (message "%d mark%s changed from `%c' to `%c'" count (dired-plural-s count) old new)))
+
+  (defun diredp-unmark-all-marks-recursive (&optional arg details) ; `M-+ U'
+    "Remove ALL marks everywhere, including in marked subdirs.
+A prefix arg is as for `diredp-unmark-all-files-recursive'.
+Note that a negative prefix arg (e.g. `C--') removes all marks from
+this Dired buffer and then does the same recursively for each of its
+subdirs.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-unmark-all-files-recursive'."
+    (interactive (progn (diredp-get-confirmation-recursive)
+                        (list current-prefix-arg diredp-list-file-attributes)))
+    (diredp-unmark-all-files-recursive ?\r arg details))
+
+  (defun diredp-unmark-all-files-recursive (mark &optional arg predicate details) ; `M-+ M-DEL'
+    "Remove a given mark (or ALL) everywhere, including in marked subdirs.
+You are prompted for the mark character to remove.  If you hit `RET'
+instead then ALL mark characters are removed.
+
+The files included are those that are marked in the current Dired
+buffer, or all files in the directory if none are marked.  Marked
+subdirectories are handled recursively in the same way.
+
+* A non-positive prefix arg means ignore subdir markings and act
+  instead on ALL subdirs.
+
+* A non-negative prefix arg means do not change marks on subdirs
+  themselves.
+
+Note: If there is more than one Dired buffer for a given subdirectory
+then only the first such is used.
+
+When called from Lisp:
+ Non-nil arg PREDICATE is a file-name predicate.  Act on only the
+  files for which it returns non-nil.
+ DETAILS is passed to `diredp-get-subdirs'."
+    (interactive
+     (progn (diredp-get-confirmation-recursive)
+            (let* ((cursor-in-echo-area  t)
+                   (mrk                  (progn (message "Remove marks (RET means all): ") (read-char))))
+              (list mrk current-prefix-arg nil diredp-list-file-attributes))))
+    (let* ((numarg             (and arg  (prefix-numeric-value arg)))
+           (nosubs             (natnump numarg))
+           (ignore-marks       (and numarg  (<= numarg 0)))
+           (dired-marker-char  ?\  )    ; Unmark
+           (sdirs              (diredp-get-subdirs ignore-marks predicate details))
+           (mrk-strg           (format "\n%c" mark))
+           (count              0)
+           dbufs)
+      (unless (char-displayable-p mark) (error "Not a displayable character: `%c'" mark))
+      (if (eq mark ?\r)
+          (message "Unmarking ALL marks here and below...")
+        (message "Unmarking mark `%c' here and below..." mark))
+      (dolist (dir  (cons default-directory sdirs))
+        (when (setq dbufs  (dired-buffers-for-dir (expand-file-name dir))) ; Dirs with Dired buffers only.
+          (with-current-buffer (car dbufs)
+            (let ((inhibit-read-only  t)
+                  (file               nil))
+              (save-excursion
+                (goto-char (point-min))
+                (while (if (eq mark ?\r)
+                           (re-search-forward dired-re-mark nil t)
+                         (search-forward mrk-strg nil t))
+                  (save-match-data (setq file  (dired-get-filename 'no-dir t)))
+                  ;; Do nothing if marked subdir and not changing subdir marks.
+                  (unless (and nosubs  file  (file-directory-p file))
+                    (subst-char-in-region (match-beginning 0) (match-end 0) (preceding-char) ?\   ))
+                  (setq count  (1+ count))))))))
+      (message "%d mark%s UNmarked" count (dired-plural-s count))))
+
+  )
+
+(when (and (memq system-type '(windows-nt ms-dos))  (fboundp 'w32-browser))
+
+  (defun diredp-multiple-w32-browser-recursive (&optional ignore-marks-p details)
+    "Run Windows apps for with marked files, including those in marked subdirs.
+Like `dired-multiple-w32-browser', but act recursively on subdirs.
+
+See `diredp-do-find-marked-files-recursive' for a description of the
+files included.  In particular, if no files are marked here or in a
+marked subdir, then all files in the directory are included.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-get-files'."
+    (interactive (progn (diredp-get-confirmation-recursive)
+                        (list current-prefix-arg diredp-list-file-attributes)))
+    (let ((files  (diredp-get-files ignore-marks-p nil nil nil nil details)))
+      (while files
+        (w32-browser (car files))
+        (sleep-for w32-browser-wait-time)
+        (setq files  (cdr files)))))
+
+  )
+
+;;;###autoload
+(defun diredp-copy-filename-as-kill-recursive (&optional arg details) ; Bound to `M-+ M-w'
+  "Copy names of marked files here and in marked subdirs, to `kill-ring'.
+The names are separated by a space.
+
+Like `dired-copy-filename-as-kill', but act recursively on subdirs.
+\(Do not copy subdir names themselves.)
+
+With no prefix arg, use relative file names.
+With a zero prefix arg, use absolute file names.
+With a plain prefix arg (`C-u'), use names relative to the current
+Dired directory.  (This might contain slashes if in a subdirectory.)
+
+If on a subdir headerline, use absolute subdir name instead - prefix
+arg and marked files are ignored in this case.
+
+The files included are those that are marked in the current Dired
+buffer, or all files in the directory if none are marked.  Marked
+subdirectories are handled recursively in the same way.
+
+The names are copied to the kill ring and to variable
+`diredp-last-copied-filenames'.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-get-files'."
+  (interactive                          ; No need for `diredp-get-confirmation-recursive' here.
+   (progn (diredp-ensure-mode) (list current-prefix-arg diredp-list-file-attributes)))
+  (let* ((files   (mapcar (cond ((zerop (prefix-numeric-value arg)) #'identity)
+                                ((consp arg) (lambda (fn) (concat (dired-current-directory t)
+                                                                  (file-name-nondirectory fn))))
+                                (t (lambda (fn) (file-name-nondirectory fn))))
+                          (diredp-get-files nil nil nil nil nil details)))
+         (string  (mapconcat #'identity files " ")))
+    (unless (string= "" string)
+      (if (eq last-command 'kill-region) (kill-append string nil) (kill-new string))
+      (setq diredp-last-copied-filenames  (car kill-ring-yank-pointer)))
+    (message "%s" string)))
+
+;;;###autoload
+(defun diredp-copy-abs-filenames-as-kill-recursive (&optional ignore-marks-p details) ; Not bound.
+  "Copy absolute names of files marked here and in marked subdirs, recursively.
+The names are copied to the kill ring and to variable
+`dired-copy-filename-as-kill'.
+
+The files whose names are copied are those that are marked in the
+current Dired buffer, or all files in the directory if none are
+marked.  Marked subdirectories are handled recursively in the same
+way.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-copy-filename-as-kill-recursive'."
+  (interactive                          ; No need for `diredp-get-confirmation-recursive' here.
+   (progn (diredp-ensure-mode) (list current-prefix-arg diredp-list-file-attributes)))
+  (diredp-copy-filename-as-kill-recursive 0 details)
+  (setq diredp-last-copied-filenames  (car kill-ring-yank-pointer)))
+
+;;;###autoload
+(defun diredp-mark-files-regexp-recursive (regexp
+                                           &optional marker-char ignore-marks-p details) ; Bound to `M-+ % m'
+  "Mark all files matching REGEXP, including those in marked subdirs.
+Like `dired-mark-files-regexp' but act recursively on marked subdirs.
+
+The file names to be matched by this command are always absolute -
+they include the full directory.  Note that this does NOT correspond
+to the default behavior for `dired-mark-files-regexp'.  The other
+matching possibilities offered by `dired-mark-files-regexp' are not
+available for this command.
+
+Directories `.' and `..' are never marked.
+
+A non-negative prefix arg means to UNmark the files instead.
+
+A non-positive prefix arg means to ignore subdir markings and act
+instead on ALL subdirs.  That is, mark all matching files in this
+directory and all descendant directories.
+
+REGEXP is an Emacs regexp, not a shell wildcard.  Thus, use `\\.o$' for
+object files--just `.o' will mark more than you might think.
+
+REGEXP is added to `regexp-search-ring', for regexp search.
+
+Note: If there is more than one Dired buffer for a given subdirectory
+then only the first such is used.
+
+When called from Lisp, DETAILS is passed to `diredp-get-subdirs'."
+  (interactive (let* ((numarg   (and current-prefix-arg  (prefix-numeric-value current-prefix-arg)))
+                      (unmark   (and numarg  (>= numarg 0)))
+                      (ignorep  (and numarg  (<= numarg 0))))
+                 (list (diredp-read-regexp (concat (if unmark "UNmark" "Mark") " files (regexp): "))
+                       (and unmark  ?\040)
+                       ignorep
+                       diredp-list-file-attributes)))
+  (add-to-list 'regexp-search-ring regexp) ; Add REGEXP to `regexp-search-ring'.
+  (let ((dired-marker-char  (or marker-char  dired-marker-char))
+        (sdirs              (diredp-get-subdirs ignore-marks-p nil details))
+        (matched            0)
+        (changed            0)
+        dbufs chg.mtch)
+    (message "%s files..." (if (eq ?\040 dired-marker-char) "UNmarking" "Marking"))
+    (dolist (dir  (cons default-directory sdirs))
+      (when (setq dbufs  (dired-buffers-for-dir (expand-file-name dir))) ; Dirs with Dired buffers only.
+        (with-current-buffer (car dbufs)
+          (setq chg.mtch  (diredp-mark-if (and (not (diredp-looking-at-p dired-re-dot))
+                                               (not (eolp)) ; Empty line
+                                               (let ((fn  (dired-get-filename nil 'NO-ERROR)))
+                                                 (and fn  (diredp-string-match-p regexp fn))))
+                                          "file")
+                changed   (+ changed (or (car chg.mtch)  0))
+                matched   (+ matched (or (cdr chg.mtch)  0))))))
+    (message "%s file%s%s%s newly %s"
+             matched
+             (dired-plural-s matched)
+             (if (not (= matched changed)) " matched, " "")
+             (if (not (= matched changed)) changed "")
+             (if (eq ?\040 dired-marker-char) "unmarked" "marked"))))
+
+;;;###autoload
+(defun diredp-mark-files-containing-regexp-recursive (regexp
+                                                      &optional marker-char ignore-marks-p details) ; `M-+ % g'
+  "Mark files with contents containing a REGEXP match, including in marked subdirs.
+Like `dired-mark-files-containing-regexp' but act recursively on
+marked subdirs.
+
+A non-negative prefix arg means to UNmark the files instead.
+
+A non-positive prefix arg means to ignore subdir markings and act
+instead on ALL subdirs.  That is, mark all matching files in this
+directory and all descendant directories.
+
+REGEXP is added to `regexp-search-ring', for regexp search.
+
+Note: If there is more than one Dired buffer for a given subdirectory
+then only the first such is used.
+
+If a file is visited in a buffer and `dired-always-read-filesystem' is
+nil, this looks in the buffer without revisiting the file, so the
+results might be inconsistent with the file on disk if its contents
+have changed since it was last visited.
+
+When called from Lisp, DETAILS is passed to `diredp-get-subdirs'."
+
+  (interactive (let* ((numarg   (and current-prefix-arg  (prefix-numeric-value current-prefix-arg)))
+                      (unmark   (and numarg  (>= numarg 0)))
+                      (ignorep  (and numarg  (<= numarg 0))))
+                 (list (diredp-read-regexp (concat (if unmark "UNmark" "Mark") " files containing (regexp): "))
+                       (and unmark  ?\040)
+                       ignorep
+                       diredp-list-file-attributes)))
+  (add-to-list 'regexp-search-ring regexp) ; Add REGEXP to `regexp-search-ring'.
+  (let ((dired-marker-char  (or marker-char  dired-marker-char))
+        (sdirs              (diredp-get-subdirs ignore-marks-p nil details))
+        (matched            0)
+        (changed            0)
+        dbufs chg.mtch)
+    (message "%s files..." (if (eq ?\040 dired-marker-char) "UNmarking" "Marking"))
+    (dolist (dir  (cons default-directory sdirs))
+      (when (setq dbufs  (dired-buffers-for-dir (expand-file-name dir))) ; Dirs with Dired buffers only.
+        (with-current-buffer (car dbufs)
+          (setq chg.mtch
+                (diredp-mark-if
+                 (and (not (diredp-looking-at-p dired-re-dot))
+                      (not (eolp))
+                      (let ((fname  (dired-get-filename nil t)))
+                                  
+                        (and fname
+                             (file-readable-p fname)
+                             (not (file-directory-p fname))
+                             (let ((prebuf  (get-file-buffer fname)))
+                               (message "Checking %s" fname)
+                               ;; For now, do it inside Emacs.  Grep might be better if there are lots of files.
+                               (if (and prebuf  (or (not (boundp 'dired-always-read-filesystem))
+                                                    (not dired-always-read-filesystem))) ; Emacs 26+
+                                   (with-current-buffer prebuf
+                                     (save-excursion (goto-char (point-min)) (re-search-forward regexp nil t)))
+                                 (with-temp-buffer
+                                   (insert-file-contents fname)
+                                   (goto-char (point-min))
+                                   (re-search-forward regexp nil t)))))))
+                 "file")
+                changed   (+ changed (or (car chg.mtch)  0))
+                matched   (+ matched (or (cdr chg.mtch)  0))))))
+    (message "%s file%s%s%s newly %s"
+             matched
+             (dired-plural-s matched)
+             (if (not (= matched changed)) " matched, " "")
+             (if (not (= matched changed)) changed "")
+             (if (eq ?\040 dired-marker-char) "unmarked" "marked"))))
+
+(defun diredp-mark-extension-recursive (extension &optional arg details) ; Bound to `M-+ * .'
+  "Mark all files with a certain EXTENSION, including in marked subdirs.
+A `.' is not automatically prepended to the string entered.
+
+This is like `diredp-mark/unmark-extension', but this acts recursively
+on marked subdirs, and a non-positive prefix arg acts differently.
+
+A non-negative prefix arg means to unmark them instead.
+
+A non-positive prefix arg means to ignore subdir markings and act
+instead on ALL subdirs.  That is, mark all in this directory and all
+descendant directories.
+
+Non-interactively, EXTENSION is the extension (a string).  It can also
+be a list of extension strings.
+Optional argument ARG is the prefix arg.
+
+When called from Lisp, DETAILS is passed to `diredp-mark-files-regexp-recursive'."
+  (interactive (let* ((numarg  (and current-prefix-arg  (prefix-numeric-value current-prefix-arg)))
+                      (unmark  (and numarg  (>= numarg 0))))
+                 (list (diredp-read-regexp (concat (if unmark "UNmark" "Mark") " extension: "))
+                       current-prefix-arg
+                       diredp-list-file-attributes)))
+  (let* ((numarg   (and arg  (prefix-numeric-value arg)))
+         (unmark   (and numarg  (>= numarg 0)))
+         (ignorep  (and numarg  (<= numarg 0))))
+    (or (listp extension)  (setq extension  (list extension)))
+    (diredp-mark-files-regexp-recursive (concat ".+[.]\\("
+                                                (mapconcat #'regexp-quote extension "\\|")
+                                                "\\)$")
+                                        (if unmark ?\040 dired-marker-char)
+                                        ignorep
+                                        details)))
+
+;; FIXME: Factor out code that is common with `dired-mark-sexp'.
+;;
+(when (fboundp 'minibuffer-with-setup-hook) ; Emacs 22+
+
+  (defun diredp-mark-sexp-recursive (predicate &optional arg details) ; Bound to `M-+ M-(', `M-+ * ('
+    "Mark files here and below for which PREDICATE returns non-nil.
+Like `diredp-mark-sexp', but act recursively on subdirs.
+
+A non-negative prefix arg means to unmark those files instead.
+
+A non-positive prefix arg means to ignore subdir markings and act
+instead on ALL subdirs.  That is, mark all in this directory and all
+descendant directories.
+
+PREDICATE is a lisp sexp that can refer to the following symbols as
+variables:
+
+    `mode'   [string]  file permission bits, e.g. \"-rw-r--r--\"
+    `nlink'  [integer] number of links to file
+    `size'   [integer] file size in bytes
+    `uid'    [string]  owner
+    `gid'    [string]  group (If the gid is not displayed by `ls',
+                       this will still be set (to the same as uid))
+    `time'   [string]  the time that `ls' displays, e.g. \"Feb 12 14:17\"
+    `name'   [string]  the name of the file
+    `sym'    [string]  if file is a symbolic link, the linked-to name,
+                       else \"\"
+    `inode'  [integer] the inode of the file (only for `ls -i' output)
+    `blks'   [integer] the size of the file for `ls -s' output
+                       (ususally in blocks or, with `-k', in Kbytes)
+Examples:
+  Mark zero-length files: `(equal 0 size)'
+  Mark files last modified on Feb 2: `(string-match \"Feb  2\" time)'
+  Mark uncompiled Emacs Lisp files (`.el' file without a `.elc' file):
+     First, Dired just the source files: `dired *.el'.
+     Then, use \\[diredp-mark-sexp-recursive] with this sexp:
+          (not (file-exists-p (concat name \"c\")))
+
+There's an ambiguity when a single integer not followed by a unit
+prefix precedes the file mode: It is then parsed as inode number
+and not as block size (this always works for GNU coreutils ls).
+
+Another limitation is that the uid field is needed for the
+function to work correctly.  In particular, the field is not
+present for some values of `ls-lisp-emulation'.
+
+This function operates only on the Dired buffer content.  It does not
+refer at all to the underlying file system.  Contrast this with
+`find-dired', which might be preferable for the task at hand.
+
+When called from Lisp, DETAILS is passed to `diredp-get-subdirs'."
+    ;; Using `sym' = "", instead of nil, for non-linked files avoids the trap of
+    ;; (string-match "foo" sym) into which a user would soon fall.
+    ;; Use `equal' instead of `=' in the example, as it works on integers and strings.
+    ;; (interactive "xMark if (vars: inode,blks,mode,nlink,uid,gid,size,time,name,sym): \nP")
+
+    (interactive
+     (let* ((numarg  (and current-prefix-arg  (prefix-numeric-value current-prefix-arg)))
+            (unmark  (and numarg  (>= numarg 0))))
+       (diredp-get-confirmation-recursive)
+       (list (diredp-read-expression (format "%s if (Lisp expr): " (if current-prefix-arg "UNmark" "Mark")))
+             current-prefix-arg
+             diredp-list-file-attributes)))
+    (message "%s" predicate)
+    (let* ((numarg             (and arg  (prefix-numeric-value arg)))
+           (unmark             (and numarg  (>= numarg 0)))
+           (ignorep            (and numarg  (<= numarg 0)))
+           (dired-marker-char  (if unmark ?\040 dired-marker-char))
+           (inode              nil)
+           (blks               ())
+           (matched            0)
+           (changed            0)
+           dbufs chg.mtch mode nlink uid gid size time name sym)
+      (dolist (dir  (cons default-directory (diredp-get-subdirs ignorep nil details)))
+        (when (setq dbufs  (dired-buffers-for-dir (expand-file-name dir))) ; Dirs with Dired buffers only.
+          (with-current-buffer (car dbufs)
+            (setq chg.mtch
+                  (diredp-mark-if
+                   (save-excursion
+                     (and
+                      ;; Sets vars INODE BLKS MODE NLINK UID GID SIZE TIME NAME and SYM
+                      ;; according to current file line.  Returns `t' for success, nil if
+                      ;; there is no file line.  Upon success, these vars are set, to either
+                      ;; nil or the appropriate value, so they need not be initialized.
+                      ;; Moves point within the current line.
+                      (dired-move-to-filename)
+                      (let ((mode-len             10) ; Length of `mode' string.
+                            ;; As in `dired.el', but with subexpressions \1=inode, \2=blks:
+                            ;; GNU `ls -hs' suffixes the block count with a unit and prints it as a float
+                            ;; FreeBSD does neither.
+                            ;; $$$$$$ (dired-re-inode-size  "\\s *\\([0-9]*\\)\\s *\\([0-9]*\\) ?")
+                            (dired-re-inode-size  (if (> emacs-major-version 24)
+                                                      "\\=\\s *\\([0-9]+\\s +\\)?\
+\\(?:\\([0-9]+\\(?:\\.[0-9]*\\)?[BkKMGTPEZY]?\\)? ?\\)"
+                                                    "\\s *\\([0-9]*\\)\\s *\\([0-9]*\\) ?"))
+                            pos)
+                        (beginning-of-line)
+                        (forward-char 2)
+                        (search-forward-regexp dired-re-inode-size nil t)
+                        ;; `INODE', `BLKS', `MODE'
+                        ;; XXX Might be a size not followed by a unit prefix.
+                        ;; Could set `blks' to `inode' if it were otherwise nil, with similar reasoning
+                        ;; as for setting `gid' to `uid', but it would be even more whimsical.
+                        (setq inode  (and (match-string 1)  (string-to-number (match-string 1)))
+                              blks   (and (match-string 2)  (if (fboundp 'dired-x--string-to-number) ; Emacs 25+
+                                                                (dired-x--string-to-number (match-string 2))
+                                                              (string-to-number (match-string 2))))
+                              mode   (buffer-substring (point) (+ mode-len (point))))
+                        (forward-char mode-len)
+                        ;; Skip any extended attributes marker ("." or "+").
+                        (unless (eq (char-after) ?\   ) (forward-char 1))
+                        (setq nlink  (read (current-buffer))) ; `NLINK'
+
+                        ;; `UID'
+                        ;; Another issue is that GNU `ls -n' right-justifies numerical UIDs and GIDs,
+                        ;; while FreeBSD left-justifies them, so do not rely on a specific whitespace
+                        ;; layout.  Both of them right-justify all other numbers, though.
+                        ;; XXX Return a number if the `uid' or `gid' seems to be numerical?
+                        ;; $$$$$$ (setq uid  (buffer-substring (+ (point) 1) (progn (forward-word 1) (point))))
+                        (setq uid  (buffer-substring (progn (skip-chars-forward " \t")  (point))
+                                                     (progn (skip-chars-forward "^ \t") (point))))
+                        (cond ((> emacs-major-version 24)
+                               (dired-move-to-filename)
+                               (save-excursion
+                                 (setq time ; `TIME'
+                                       ;; The regexp below tries to match from the last digit of the size
+                                       ;; field through a space after the date.  Also, dates may have
+                                       ;; different formats depending on file age, so the date column need
+                                       ;; not be aligned to the right.
+                                       (buffer-substring
+                                        (save-excursion (skip-chars-backward " \t") (point))
+                                        (progn (re-search-backward directory-listing-before-filename-regexp)
+                                               (skip-chars-forward "^ \t")
+                                               (1+ (point))))
+
+                                       size ; `SIZE'
+                                       (dired-x--string-to-number
+                                        ;; We know that there's some kind of number before point because
+                                        ;; the regexp search above succeeded.  Not worth doing an extra
+                                        ;; check for leading garbage.
+                                        (buffer-substring (point) (progn (skip-chars-backward "^ \t") (point))))
+                                       ;; If no `gid' is displayed, `gid' will be set to `uid' but user
+                                       ;; will then not reference it anyway in PREDICATE.
+
+                                       gid ; `GID'
+                                       (buffer-substring (progn (skip-chars-backward " \t") (point))
+                                                         (progn (skip-chars-backward "^ \t") (point)))))
+                               ;; `NAME', `SYM'
+                               (setq name  (buffer-substring (point)
+                                                             (or (dired-move-to-end-of-filename t)  (point)))
+                                     sym   (if (diredp-looking-at-p " -> ")
+                                               (buffer-substring (progn (forward-char 4) (point))
+                                                                 (line-end-position))
+                                             "")))
+                              (t
+                               (re-search-forward
+                                (if (< emacs-major-version 20)
+                                    "\\(Jan\\|Feb\\|Mar\\|Apr\\|May\\|Jun\\|Jul\\|Aug\\|Sep\\|Oct\\|Nov\\|Dec\\)"
+                                  dired-move-to-filename-regexp))
+                               (goto-char (match-beginning 1))
+                               (forward-char -1)
+                               (setq size ; `SIZE'
+                                     (string-to-number (buffer-substring (save-excursion (backward-word 1)
+                                                                                         (setq pos  (point)))
+                                                                         (point))))
+                               (goto-char pos)
+                               (backward-word 1)
+                               ;; `GID', `TIME', `NAME', `SYM'
+                               ;; if no `gid' is displayed, `gid' will be set to `uid' but user will then
+                               ;; not reference it anyway in PREDICATE.
+                               (setq gid   (buffer-substring (save-excursion (forward-word 1) (point)) (point))
+                                     time  (buffer-substring (match-beginning 1) (1- (dired-move-to-filename)))
+                                     name  (buffer-substring (point) (or (dired-move-to-end-of-filename t)
+                                                                         (point)))
+                                     sym   (if (diredp-looking-at-p " -> ")
+                                               (buffer-substring (progn (forward-char 4) (point))
+                                                                 (line-end-position))
+                                             "")))))
+                      ;; Vanilla Emacs uses `lexical-binding' = t, and it passes bindings to `eval'
+                      ;; as a second arg.  We use `lexical-binding' = nil, and anyway there should
+                      ;; be no need to pass the bindings.
+                      (eval predicate)))
+                   (format "'%s file" predicate)))
+            (setq changed   (+ changed (or (car chg.mtch)  0))
+                  matched   (+ matched (or (cdr chg.mtch)  0))))))
+      (message "%s file%s%s%s newly %s" matched (dired-plural-s matched)
+               (if (not (= matched changed)) " matched, " "")
+               (if (not (= matched changed)) changed "")
+               (if (eq ?\040 dired-marker-char) "unmarked" "marked"))))
+
+  (if (fboundp 'read--expression)       ; Emacs 24.4+
+      (defalias 'diredp-read-expression 'read--expression)
+    (defun diredp-read-expression (prompt &optional initial-contents)
+      (let ((minibuffer-completing-symbol  t))
+        (minibuffer-with-setup-hook
+            (lambda ()       ; Vanilla Emacs FIXME: call `emacs-lisp-mode'?
+              (add-function :before-until (local 'eldoc-documentation-function)
+                            #'elisp-eldoc-documentation-function)
+              (eldoc-mode 1)
+              (add-hook 'completion-at-point-functions #'elisp-completion-at-point nil t)
+              (run-hooks 'eval-expression-minibuffer-setup-hook))
+          (read-from-minibuffer
+           prompt initial-contents (if (boundp 'pp-read-expression-map)
+                                       pp-read-expression-map
+                                     read-expression-map)
+           t 'read-expression-history)))))
+
+  )
+
+;;;###autoload
+(defun diredp-mark-autofiles-recursive (&optional arg details) ; Bound to `M-+ * B'
+  "Mark all autofiles, including in marked subdirs.
+Autofiles are files that have an autofile bookmark.
+A non-negative prefix arg means to unmark them instead.
+
+A non-positive prefix arg means to ignore subdir markings and act
+instead on ALL subdirs.  That is, mark all in this directory and all
+descendant directories.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-mark-recursive-1'."
+  (interactive (list current-prefix-arg diredp-list-file-attributes))
+  (diredp-ensure-bookmark+)
+  (diredp-ensure-mode)
+  (diredp-mark-recursive-1 arg "autofiles" "autofile"
+                           '(and (not (diredp-looking-at-p dired-re-dot))  (not (eolp))
+                             (let ((fname  (dired-get-filename nil t)))
+                               (and fname  (bmkp-get-autofile-bookmark fname))))
+                           details))
+
+;;;###autoload
+(defun diredp-mark-executables-recursive (&optional arg details) ; Bound to `M-+ * *'
+  "Mark all executable files, including in marked subdirs.
+The files included are those that are marked in the current Dired
+buffer, or all files in the directory if none are marked.  Marked
+subdirectories are handled recursively in the same way.
+
+A non-negative prefix arg means to unmark them instead.
+
+A non-positive prefix arg means to ignore subdir markings and act
+instead on ALL subdirs.  That is, mark all in this directory and all
+descendant directories.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-mark-recursive-1'."
+  (interactive (list current-prefix-arg diredp-list-file-attributes))
+  (diredp-mark-recursive-1 arg "executable files" "executable file" '(diredp-looking-at-p dired-re-exe) details))
+
+;;;###autoload
+(defun diredp-mark-directories-recursive (&optional arg details) ; Bound to `M-+ * /'
+  "Mark all directories except `.' and `..', including in marked subdirs.
+The directories included are those that are marked in the current
+Dired buffer, or all subdirs in the directory if none are marked.
+Marked subdirectories are handled recursively in the same way.
+
+A non-negative prefix arg means to unmark them instead.
+
+A non-positive prefix arg means to ignore subdir markings and act
+instead on ALL subdirs.  That is, mark all in this directory and all
+descendant directories.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-mark-recursive-1'."
+  (interactive (list current-prefix-arg diredp-list-file-attributes))
+  (diredp-mark-recursive-1 arg "directories" "directory" '(and (diredp-looking-at-p dired-re-dir)
+                                                           (not (diredp-looking-at-p dired-re-dot)))
+                           details))
+;;;###autoload
+(defun diredp-mark-symlinks-recursive (&optional arg details) ; Bound to `M-+ * @'
+  "Mark all symbolic links, including in marked subdirs.
+The symlinks included are those that are marked in the current Dired
+buffer, or all symlinks in the directory if none are marked.  Marked
+subdirectories are handled recursively in the same way.
+
+A non-negative prefix arg means to unmark them instead.
+
+A non-positive prefix arg means to ignore subdir markings and act
+instead on ALL subdirs.  That is, mark all in this directory and all
+descendant directories.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-get-subdirs'."
+  (interactive (list current-prefix-arg diredp-list-file-attributes))
+  (diredp-mark-recursive-1 arg "symlinks" "symbolic link" '(diredp-looking-at-p dired-re-sym) details))
+
+(defun diredp-mark-recursive-1 (arg plural singular predicate-sexp details)
+  "Helper for `diredp-mark-*-recursive' commands."
+  (let* ((numarg             (and arg  (prefix-numeric-value arg)))
+         (unmark             (and numarg  (>= numarg 0)))
+         (ignorep            (and numarg  (<= numarg 0)))
+         (dired-marker-char  (if unmark ?\040 dired-marker-char))
+         (sdirs              (diredp-get-subdirs ignorep nil details))
+         (changed            0)
+         (matched            0)
+         dbufs chg.mtch)
+    (message "%s %s..." (if (eq ?\040 dired-marker-char) "UNmarking" "Marking") plural)
+    (dolist (dir  (cons default-directory sdirs))
+      (when (setq dbufs  (dired-buffers-for-dir (expand-file-name dir))) ; Dirs with Dired buffers only.
+        (with-current-buffer (car dbufs)
+          (setq chg.mtch  (diredp-mark-if (eval predicate-sexp) singular)
+                changed   (+ changed (or (car chg.mtch)  0))
+                matched   (+ matched (or (cdr chg.mtch)  0))))))
+    (message "%s %s%s%s newly %s"
+             matched
+             (if (= 1 matched) singular plural)
+             (if (not (= matched changed)) " matched, " "")
+             (if (not (= matched changed)) changed "")
+             (if (eq ?\040 dired-marker-char) "unmarked" "marked"))))
+
+;;;###autoload
+(defun diredp-capitalize-recursive (&optional ignore-marks-p details) ; Bound to `M-+ % c'
+  "Rename marked files, including in marked subdirs, by capitalizing them.
+Like `diredp-capitalize', but act recursively on subdirs.
+
+The files included are those that are marked in the current Dired
+buffer, or all files in the directory if none are marked.  Marked
+subdirectories are handled recursively in the same way.
+
+With a prefix argument, ignore all marks - include all files in this
+Dired buffer and all subdirs, recursively.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-create-files-non-directory-recursive'."
+  (interactive (progn (diredp-get-confirmation-recursive) (list current-prefix-arg diredp-list-file-attributes)))
+  (diredp-create-files-non-directory-recursive
+   #'dired-rename-file #'capitalize "Rename by capitalizing:" ignore-marks-p details))
+
+;;;###autoload
+(defun diredp-upcase-recursive (&optional ignore-marks-p details) ; Bound to `M-+ % u'
+  "Rename marked files, including in marked subdirs, making them uppercase.
+Like `dired-upcase', but act recursively on subdirs.
+
+The files included are those that are marked in the current Dired
+buffer, or all files in the directory if none are marked.  Marked
+subdirectories are handled recursively in the same way.
+
+With a prefix argument, ignore all marks - include all files in this
+Dired buffer and all subdirs, recursively.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-create-files-non-directory-recursive'."
+  (interactive (progn (diredp-get-confirmation-recursive) (list current-prefix-arg diredp-list-file-attributes)))
+  (diredp-create-files-non-directory-recursive
+   #'dired-rename-file #'upcase "Rename to uppercase:" ignore-marks-p details))
+
+;;;###autoload
+(defun diredp-downcase-recursive (&optional ignore-marks-p details) ; Bound to `M-+ % l'
+  "Rename marked files, including in marked subdirs, making them lowercase.
+Like `dired-downcase', but act recursively on subdirs.
+
+The files included are those that are marked in the current Dired
+buffer, or all files in the directory if none are marked.  Marked
+subdirectories are handled recursively in the same way.
+
+With a prefix argument, ignore all marks - include all files in this
+Dired buffer and all subdirs, recursively.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-create-files-non-directory-recursive'."
+  (interactive (progn (diredp-get-confirmation-recursive) (list current-prefix-arg diredp-list-file-attributes)))
+  (diredp-create-files-non-directory-recursive
+   #'dired-rename-file #'downcase "Rename to lowercase:" ignore-marks-p details))
+
+;;;###autoload
+(defun diredp-do-apply-function-recursive (function &optional arg details) ; Bound to `M-+ @'
+  "Apply FUNCTION to the marked files.
+Like `diredp-do-apply-function' but act recursively on subdirs and do
+no result or error logging or echoing.
+
+The files acted on are those that are marked in the current Dired
+buffer, or all files in the directory if none are marked.  Marked
+subdirectories are handled recursively in the same way.
+
+With a plain prefix ARG (`C-u'), visit each file and invoke FUNCTION
+ with no arguments.
+Otherwise, apply FUNCTION to each file name.
+
+Any other prefix arg behaves according to the ARG argument of
+`dired-get-marked-files'.  In particular, `C-u C-u' operates on all
+files in the Dired buffer.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-get-files'."
+  (interactive (progn (diredp-get-confirmation-recursive) 
+                      (list (read (completing-read "Function: " obarray 'functionp nil nil
+                                                   (and (boundp 'function-name-history)  'function-name-history)))
+                            current-prefix-arg
+                            diredp-list-file-attributes)))
+  (if (and (consp arg)  (< (car arg) 16))
+      (dolist (file  (diredp-get-files)) (with-current-buffer (find-file-noselect file) (funcall function)))
+    (dolist (file  (diredp-get-files arg nil nil nil nil details)) (funcall function file))))
+
+;;;###autoload
+(defun diredp-do-delete-recursive (arg &optional details) ; Bound to `M-+ D'
+  "Delete marked (not flagged) files, including in marked subdirs.
+Like `dired-do-delete' but act recursively on subdirs.
+
+The files to be deleted are those that are marked in the current Dired
+buffer, or all files in the directory if none are marked.  Marked
+subdirectories are handled recursively in the same way.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-get-files' and `diredp-get-subdirs'."
+  (interactive (progn (diredp-get-confirmation-recursive) (list current-prefix-arg diredp-list-file-attributes)))
+  (unless arg
+    (ding)
+    (message "NOTE: Deletion of files marked `%c' (not those flagged `%c')."
+             dired-marker-char dired-del-marker))
+  (let* ((files     (diredp-get-files nil nil nil nil 'ONLY-MARKED-P details))
+         (count     (length files))
+         (trashing  (and (boundp 'delete-by-moving-to-trash)  delete-by-moving-to-trash))
+         (succ      0))
+    (if (dired-mark-pop-up
+         " *Deletions*" 'delete files dired-deletion-confirmer
+         (format "%s %s " (if trashing "Trash" "Delete") (dired-mark-prompt arg files)))
+        (let ((progress-reporter  (and (fboundp 'make-progress-reporter)
+                                       (make-progress-reporter (if trashing "Trashing..." "Deleting...")
+                                                               succ
+                                                               count)))
+              (failures           ()))
+          (unless progress-reporter (message "Deleting..."))
+          (dolist (file  files)
+            (condition-case err
+                (progn (if (fboundp 'dired-delete-file) ; Emacs 22+
+                           (dired-delete-file file dired-recursive-deletes trashing)
+                         ;; This test is equivalent to (and (file-directory-p file)  (not (file-symlink-p file)))
+                         ;; but more efficient.
+                         (if (eq t (car (file-attributes file))) (delete-directory file) (delete-file file)))
+                       (setq succ  (1+ succ))
+                       (when (fboundp 'progress-reporter-update)
+                         (progress-reporter-update progress-reporter succ)))
+              (error (dired-log "%s\n" err) ; Catch errors from failed deletions.
+                     (setq failures  (cons file failures))))
+            (dired-clean-up-after-deletion file))
+          (if failures
+              (dired-log-summary (format "%d of %d deletion%s failed"
+                                         (length failures) count (dired-plural-s count))
+                                 failures)
+            (if (fboundp 'progress-reporter-done)
+                (progress-reporter-done progress-reporter)
+              (message "Deleting...done")))
+          (let ((sdirs  (diredp-get-subdirs nil nil details))
+                dbufs)
+            (dolist (dir  (cons default-directory sdirs))
+              (when (setq dbufs  (dired-buffers-for-dir (expand-file-name dir))) ; Dirs with Dired buffers only.
+                (with-current-buffer (car dbufs) (dired-revert))))))
+      (message "OK. NO deletions performed"))))
+
+;;;###autoload
+(defun diredp-do-move-recursive (&optional ignore-marks-p details) ; Bound to `M-+ R'
+  "Move marked files, including in marked subdirs, to a given directory.
+Like `dired-do-rename', but act recursively on subdirs to pick up the
+files to move.
+
+The files included are those that are marked in the current Dired
+buffer, or all files in the directory if none are marked.  Marked
+subdirectories are handled recursively in the same way.
+
+This means move the marked files of marked subdirs and their marked
+subdirs, etc.  It does not mean move or rename the subdirs themselves
+recursively.
+
+With a prefix argument, ignore all marks - include all files in this
+Dired buffer and all subdirs, recursively.
+
+Renames any buffers that are visiting the files.
+
+The default suggested for the target directory depends on the value of
+`dired-dwim-target', which see."
+  (interactive (progn (diredp-get-confirmation-recursive) (list current-prefix-arg diredp-list-file-attributes)))
+  (diredp-do-create-files-recursive #'dired-rename-file "Move" ignore-marks-p details))
+
+;;;###autoload
+(defun diredp-do-copy-recursive (&optional ignore-marks-p details) ; Bound to `M-+ C'
+  "Copy marked files, including in marked subdirs, to a given directory.
+Like `dired-do-copy', but act recursively on subdirs to pick up the
+files to copy.
+
+The files included are those that are marked in the current Dired
+buffer, or all files in the directory if none are marked.  Marked
+subdirectories are handled recursively in the same way.
+
+This means copy the marked files of marked subdirs and their marked
+subdirs, etc.  It does not mean copy the subdirs themselves
+recursively.
+
+With a prefix argument, ignore all marks - include all files in this
+Dired buffer and all subdirs, recursively.
+
+Preserves the last-modified date when copying, unless
+`dired-copy-preserve-time' is nil.
+
+The default suggested for the target directory depends on the value of
+`dired-dwim-target', which see.
+
+This command copies symbolic links by creating new ones, like UNIX
+command `cp -d'.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-do-create-files-recursive'."
+  (interactive (progn (diredp-get-confirmation-recursive) (list current-prefix-arg diredp-list-file-attributes)))
+  (let ((dired-recursive-copies  nil))  ; Doesn't have to be nil, but let's not go overboard now.
+    (diredp-do-create-files-recursive #'dired-copy-file "Copy" ignore-marks-p details)))
+
+(defun diredp-do-create-files-recursive (file-creator operation ignore-marks-p &optional details)
+  "Create a new file for each marked file, including those in marked subdirs.
+Like `dired-do-create-files', but act recursively on subdirs, and
+always keep markings.
+Prompts for the target directory, in which to create the files.
+FILE-CREATOR and OPERATION are as in `dired-create-files'.
+Non-nil IGNORE-MARKS-P means ignore all marks - include all files in this
+Dired buffer and all subdirs, recursively.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-get-files'."
+  (lexical-let* ((fn-list     (diredp-get-files ignore-marks-p nil nil nil nil details))
+                 (target-dir  (dired-dwim-target-directory))
+                 (defaults    (and (fboundp 'dired-dwim-target-defaults) ; Emacs 23+
+                                   (dired-dwim-target-defaults fn-list target-dir)))
+                 (target      (expand-file-name
+                               (if (fboundp 'minibuffer-with-setup-hook) ; Emacs 22+
+                                   (minibuffer-with-setup-hook
+                                    (lambda ()
+                                      (set (make-local-variable 'minibuffer-default-add-function)
+                                           nil)
+                                      (setq minibuffer-default  defaults))
+                                    (funcall (if (fboundp 'read-directory-name)
+                                                 #'read-directory-name
+                                               #'read-file-name)
+                                             (concat operation " files to: ")
+                                             default-directory default-directory))
+                                 (funcall (if (fboundp 'read-directory-name)
+                                              #'read-directory-name
+                                            #'read-file-name)
+                                          (concat operation "files to: ")
+                                          default-directory default-directory)))))
+    (unless (file-directory-p target) (error "Target is not a directory: `%s'" target))
+    (dired-create-files
+     file-creator operation fn-list
+     #'(lambda (from) (expand-file-name (file-name-nondirectory from) target))
+     ;; Hard-code `*' marker, or else it will be removed in lower dirs because the code uses
+     ;; `dired-file-marker', which only works in the current Dired directory.
+     ?*)))
+
+(defun diredp-create-files-non-directory-recursive (file-creator basename-constructor operation
+                                                    &optional ignore-marks-p details)
+  "Apply FILE-CREATOR + BASENAME-CONSTRUCTOR to non-dir part of marked names.
+Like `dired-create-files-non-directory', but act recursively on subdirs.
+
+The files acted on are those marked in the current Dired buffer, or
+all files in the directory if none are marked.  Marked subdirectories
+are handled recursively in the same way.
+
+With non-nil IGNORE-MARKS-P, ignore all marks - include all files in
+this Dired buffer and all subdirs, recursively.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-get-files'."
+  (let (rename-non-directory-query)
+    (dired-create-files
+     file-creator
+     operation
+     (diredp-get-files ignore-marks-p nil nil nil nil details)
+     #'(lambda (from)
+         (let ((to  (concat (file-name-directory from)
+                            (funcall basename-constructor (file-name-nondirectory from)))))
+           (and (let ((help-form  (format "\
+Type SPC or `y' to %s one file, DEL or `n' to skip to next,
+`!' to %s all remaining matches with no more questions."
+                                          (downcase operation)
+                                          (downcase operation))))
+                  (dired-query 'rename-non-directory-query (concat operation " `%s' to `%s'")
+                               (dired-make-relative from) (dired-make-relative to)))
+                to)))
+     ;; Hard-code `*' marker, or else it will be removed in lower dirs because the code uses
+     ;; `dired-file-marker', which only works in the current Dired directory.
+     ?*)))
+
+(defun diredp-do-chxxx-recursive (attribute-name program op-symbol &optional ignore-marks-p default details)
+  "Change attributes of the marked files, including those in marked subdirs.
+Refresh their file lines.
+
+Like `dired-do-chxxx', but act recursively on subdirs.  The subdirs
+acted on are those that are marked in the current Dired buffer, or all
+subdirs in the directory if none are marked.  Marked subdirectories
+are handled recursively in the same way.
+
+ATTRIBUTE-NAME is a string describing the attribute to the user.
+PROGRAM is the program used to change the attribute.
+OP-SYMBOL is the type of operation (for use in `dired-mark-pop-up').
+Non-nil IGNORE-MARKS-P means ignore all marks - include all files in this
+ Dired buffer and all subdirs, recursively.
+DEFAULT is the default value for reading the mark string.
+DETAILS is passed to `diredp-get-files' and
+ `diredp-do-redisplay-recursive'."
+  (let* ((this-buff      (current-buffer))
+         (files          (diredp-get-files ignore-marks-p nil nil nil nil details))
+         (prompt         (concat "Change " attribute-name " of %s to: "))
+         (new-attribute  (if (> emacs-major-version 22)
+                             (dired-mark-read-string prompt nil op-symbol ignore-marks-p files default)
+                           (dired-mark-read-string prompt nil op-symbol ignore-marks-p files)))
+         (operation      (concat program " " new-attribute))
+         failures)
+    (setq failures  (dired-bunch-files 10000 (function dired-check-process)
+                                       (append (list operation program)
+                                               (unless (string-equal new-attribute "")
+                                                 (if (equal attribute-name "Timestamp")
+                                                     (list "-t" new-attribute)
+                                                   (list new-attribute)))
+                                               (and (diredp-string-match-p "gnu" system-configuration)
+                                                    '("--"))) ; --------------------------------
+                                       files))
+    (with-current-buffer this-buff (diredp-do-redisplay-recursive details 'MSGP))
+    (when failures (dired-log-summary (format "%s: error" operation) nil))))
+
+;;;###autoload
+(defun diredp-do-chmod-recursive (&optional ignore-marks-p details) ; Bound to `M-+ M'
+  "Change the mode of the marked files, including those in marked subdirs.
+Symbolic modes like `g+w' are allowed.
+
+Note that marked subdirs are not changed.  Their markings are used only
+to indicate that some of their files are to be changed.
+
+With a prefix argument, ignore all marks - include all files in this
+Dired buffer and all subdirs, recursively.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-get-files' and `diredp-do-redisplay-recursive'."
+  (interactive (progn (diredp-get-confirmation-recursive) (list current-prefix-arg diredp-list-file-attributes)))
+  (let* ((files    (diredp-get-files ignore-marks-p nil nil nil nil details))
+         (modestr  (and (stringp (car files))  (nth 8 (file-attributes (car files)))))
+         (default  (and (stringp modestr)
+                        (string-match "^.\\(...\\)\\(...\\)\\(...\\)$" modestr)
+                        (replace-regexp-in-string "-" "" (format "u=%s,g=%s,o=%s"
+                                                                 (match-string 1 modestr)
+                                                                 (match-string 2 modestr)
+                                                                 (match-string 3 modestr)))))
+         (modes    (if (> emacs-major-version 22)
+                       (dired-mark-read-string
+                        "Change mode of marked files here and below to: " nil 'chmod
+                        nil files default)
+                     (dired-mark-read-string
+                      "Change mode of marked files here and below to: " nil 'chmod
+                      nil files))))
+    (when (equal modes "") (error "No file mode specified"))
+    (dolist (file  files)
+      (set-file-modes file (or (and (diredp-string-match-p "^[0-7]+" modes)  (string-to-number modes 8))
+                               (file-modes-symbolic-to-number modes (file-modes file)))))
+    (diredp-do-redisplay-recursive details 'MSGP)))
+
+(unless (memq system-type '(windows-nt ms-dos))
+  (defun diredp-do-chgrp-recursive (&optional ignore-marks-p details)
+    "Change the group of the marked (or next ARG) files.
+With a prefix argument, ignore all marks - include all files in this
+Dired buffer and all subdirs, recursively.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-do-chxxx-recursive'."
+    (interactive (list current-prefix-arg diredp-list-file-attributes))
+    (diredp-do-chxxx-recursive "Group" "chgrp" 'chgrp ignore-marks-p nil details)))
+
+(unless (memq system-type '(windows-nt ms-dos))
+  (defun diredp-do-chown-recursive (&optional ignore-marks-p details)
+    "Change the owner of the marked (or next ARG) files.
+With a prefix argument, ignore all marks - include all files in this
+Dired buffer and all subdirs, recursively.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-do-chxxx-recursive'."
+    (interactive (list current-prefix-arg diredp-list-file-attributes))
+    (diredp-do-chxxx-recursive "Owner" dired-chown-program 'chown ignore-marks-p nil details)))
+
+;;;###autoload
+(defun diredp-do-touch-recursive (&optional ignore-marks-p details)
+  "Change the timestamp of marked files, including those in marked subdirs.
+This calls `touch'.  Like `dired-do-touch', but act recursively on
+subdirs.  The subdirs inserted are those that are marked in the
+current Dired buffer, or all subdirs in the directory if none are
+marked.  Marked subdirectories are handled recursively in the same
+way.
+
+With a prefix argument, ignore all marks - include all files in this
+Dired buffer and all subdirs, recursively.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-do-chxxx-recursive'."
+  (interactive (progn (diredp-get-confirmation-recursive) (list current-prefix-arg diredp-list-file-attributes)))
+  (diredp-do-chxxx-recursive "Timestamp" (if (boundp 'dired-touch-program)
+                                             dired-touch-program ; Emacs 22+
+                                           "touch")
+                             'touch
+                             ignore-marks-p
+                             (format-time-string "%Y%m%d%H%M.%S" (current-time))
+                             details))
+
+;;;###autoload
+(defun diredp-do-redisplay-recursive (&optional details msgp)
+  "Redisplay marked file lines, including those in marked subdirs.
+Non-nil MSGP means show status messages.
+Like `dired-do-redisplay' with no args, but act recursively on
+subdirs.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-get-files'."
+  (interactive (progn (diredp-ensure-mode)
+                      (unless (y-or-n-p "Act on all marked file lines in and UNDER this dir? ")
+                        (error "OK, canceled"))
+                      (list diredp-list-file-attributes t)))
+  (when msgp (message "Redisplaying..."))
+  (dolist (dir  (cons default-directory
+                      (diredp-get-files nil #'file-directory-p 'INCLUDE-SUBDIRS 'DONT-ASK nil details)))
+    (with-current-buffer (dired-noselect dir)
+      ;; `message' is much faster than making `dired-map-over-marks' show progress
+      (dired-uncache (if (consp dired-directory) (car dired-directory) dired-directory))
+      (dired-map-over-marks
+       (let ((fname                    (dired-get-filename))
+             ;; Postpone readin hook till we map over all marked files (Bug#6810).
+             (dired-after-readin-hook  nil))
+         (message "Redisplaying... %s" fname)
+         (dired-update-file-line fname))
+       nil)
+      (run-hooks 'dired-after-readin-hook)
+      (dired-move-to-filename)))
+  (when msgp (message "Redisplaying...done")))
+
+
+;;; `diredp-marked(-other-window)' tries to treat SWITCHES, but SWITCHES seems to be ignored
+;;; by `dired' when the DIRNAME arg is a cons, at least on MS Windows.  I filed Emacs bug #952
+;;; on 2008-09-10, but this doesn't work in Emacs 20, 21, 22, or 23, so I don't know if it will
+;;; ever be fixed.  If it is declared a non-bug and it doesn't work on any platforms, then I'll
+;;; remove SWITCHES here, alas.
+
+;;;###autoload
+(defun diredp-marked (dirname &optional n switches) ; Not bound
+  "Open Dired on only the marked files or the next N files.
+With a non-zero numeric prefix arg N, use the next abs(N) files.
+A plain (`C-u'), zero, or negative prefix arg prompts for listing
+switches as in command `dired'.
+
+Note that the marked files can include files in inserted
+subdirectories, so the Dired buffer that is opened can contain files
+from multiple directories in the same tree."
+  (interactive (progn (diredp-ensure-mode)
+                      (let ((num  (and current-prefix-arg
+                                       (atom current-prefix-arg)
+                                       (not (zerop (prefix-numeric-value current-prefix-arg)))
+                                       (abs (prefix-numeric-value current-prefix-arg)))))
+                        (list (cons (generate-new-buffer-name (buffer-name)) (dired-get-marked-files t num))
+                              num
+                              (and current-prefix-arg ; Switches
+                                   (or (consp current-prefix-arg)
+                                       (< (prefix-numeric-value current-prefix-arg) 0))
+                                   (read-string "Dired listing switches: " dired-listing-switches))))))
+  (unless (or n  (save-excursion (goto-char (point-min))
+                                 (and (re-search-forward (dired-marker-regexp) nil t)
+                                      (re-search-forward (dired-marker-regexp) nil t))))
+    (error "No marked files"))
+  (dired dirname switches))
+
+;;;###autoload
+(defun diredp-marked-other-window (dirname &optional n switches) ; Bound to `C-M-*'
+  "Same as `diredp-marked', but uses a different window."
+  (interactive (progn (diredp-ensure-mode)
+                      (let ((num  (and current-prefix-arg
+                                       (atom current-prefix-arg)
+                                       (not (zerop (prefix-numeric-value current-prefix-arg)))
+                                       (abs (prefix-numeric-value current-prefix-arg)))))
+                        (list (cons (generate-new-buffer-name (buffer-name)) (dired-get-marked-files t num))
+                              num
+                              (and current-prefix-arg ; Switches
+                                   (or (consp current-prefix-arg)
+                                       (< (prefix-numeric-value current-prefix-arg) 0))
+                                   (read-string "Dired listing switches: " dired-listing-switches))))))
+  (unless (or n  (save-excursion (goto-char (point-min))
+                                 (and (re-search-forward (dired-marker-regexp) nil t)
+                                      (re-search-forward (dired-marker-regexp) nil t))))
+    (error "No marked files"))
+  (dired-other-window dirname switches))
+
+
+;; Similar to `dired-mark-extension' in `dired-x.el'.
+;; The difference is that this uses prefix arg to unmark, not to determine the mark character.
+;;;###autoload
+(defun diredp-mark/unmark-extension (extension &optional unmark-p) ; Bound to `* .'
+  "Mark all files with a certain EXTENSION for use in later commands.
+A `.' is not automatically prepended to the string entered.
+Non-nil prefix argument UNMARK-P means unmark instead of mark.
+
+Non-interactively, EXTENSION is the extension (a string).  It can also
+  be a list of extension strings.
+Optional argument UNMARK-P is the prefix arg."
+  (interactive (list (diredp-read-regexp (concat (if current-prefix-arg "UNmark" "Mark") "ing extension: "))
+                     current-prefix-arg))
+  (or (listp extension)  (setq extension  (list extension)))
+  (dired-mark-files-regexp (concat ".";; Do not match names with nothing but an extension
+                                   "\\("
+                                   (mapconcat #'regexp-quote extension "\\|")
+                                   "\\)$")
+                           (and current-prefix-arg  ?\040)))
+
+(defun diredp-mark-files-tagged-all/none (tags &optional none-p unmarkp prefix)
+  "Mark or unmark files tagged with all or none of TAGS.
+TAGS is a list of strings, the tag names.
+NONEP non-nil means mark/unmark files that have none of the TAGS.
+UNMARKP non-nil means unmark; nil means mark.
+PREFIX non-nil is the prefix of the autofile bookmarks to check.
+
+As a special case, if TAGS is empty, then mark or unmark the files
+that have any tags at all, or if NONEP is non-nil then mark or unmark
+those that have no tags at all."
+  (let ((dired-marker-char  (if unmarkp ?\040 dired-marker-char)))
+    (diredp-mark-if (and (not (diredp-looking-at-p dired-re-dot))  (not (eolp))
+                         (let* ((fname     (dired-get-filename nil t))
+                                (bmk       (and fname  (bmkp-get-autofile-bookmark fname nil prefix)))
+                                (btgs      (and bmk  (bmkp-get-tags bmk)))
+                                (presentp  nil)
+                                (allp      (and btgs  (catch 'diredp-m-f-t-an
+                                                        (dolist (tag  tags)
+                                                          (setq presentp  (assoc-default tag btgs nil t))
+                                                          (unless (if none-p (not presentp) presentp)
+                                                            (throw 'diredp-m-f-t-an nil)))
+                                                        t))))
+                           (if (null tags)
+                               (if none-p (not btgs) btgs)
+                             allp)))
+                    (if none-p "no-tags-matching file" "all-tags-matching file"))))
+
+(defun diredp-mark-files-tagged-some/not-all (tags &optional notallp unmarkp prefix)
+  "Mark or unmark files tagged with any or not all of TAGS.
+TAGS is a list of strings, the tag names.
+NOTALLP non-nil means mark/unmark files that do not have all TAGS.
+UNMARKP non-nil means unmark; nil means mark.
+PREFIX non-nil is the prefix of the autofile bookmarks to check.
+
+As a special case, if TAGS is empty, then mark or unmark the files
+that have any tags at all, or if NOTALLP is non-nil then mark or
+unmark those that have no tags at all."
+  (let ((dired-marker-char  (if unmarkp ?\040 dired-marker-char)))
+    (diredp-mark-if (and (not (diredp-looking-at-p dired-re-dot))  (not (eolp))
+                         (let* ((fname     (dired-get-filename nil t))
+                                (bmk       (and fname
+                                                (bmkp-get-autofile-bookmark fname nil prefix)))
+                                (btgs      (and bmk  (bmkp-get-tags bmk)))
+                                (presentp  nil)
+                                (allp      (and btgs  (catch 'diredp-m-f-t-sna
+                                                        (dolist (tag  tags)
+                                                          (setq presentp  (assoc-default tag btgs nil t))
+                                                          (when (if notallp (not presentp) presentp)
+                                                            (throw 'diredp-m-f-t-sna t)))
+                                                        nil))))
+                           (if (null tags) (if notallp (not btgs) btgs) allp)))
+                    (if notallp "some-tags-not-matching file" "some-tags-matching file"))))
+
+;;;###autoload
+(defun diredp-mark-files-tagged-all (tags &optional none-p prefix) ; `T m *'
+  "Mark all files that are tagged with *each* tag in TAGS.
+As a special case, if TAGS is empty, then mark the files that have
+ any tags at all (i.e., at least one tag).
+With a prefix arg, mark all that are *not* tagged with *any* TAGS.
+You need library `bookmark+.el' to use this command."
+  (interactive (list (and (fboundp 'bmkp-read-tags-completing)  (bmkp-read-tags-completing))
+                     current-prefix-arg
+                     (and diredp-prompt-for-bookmark-prefix-flag
+                          (read-string "Prefix for autofile bookmark names: "))))
+  (diredp-ensure-bookmark+)
+  (diredp-ensure-mode)
+  (diredp-mark-files-tagged-all/none tags none-p nil prefix))
+
+;;;###autoload
+(defun diredp-mark-files-tagged-none (tags &optional allp prefix) ; `T m ~ +'
+  "Mark all files that are not tagged with *any* tag in TAGS.
+As a special case, if TAGS is empty, then mark the files that have
+ no tags at all.
+With a prefix arg, mark all that are tagged with *each* tag in TAGS.
+You need library `bookmark+.el' to use this command."
+  (interactive (list (and (fboundp 'bmkp-read-tags-completing)  (bmkp-read-tags-completing))
+                     current-prefix-arg
+                     (and diredp-prompt-for-bookmark-prefix-flag
+                          (read-string "Prefix for autofile bookmark names: "))))
+  (diredp-ensure-bookmark+)
+  (diredp-ensure-mode)
+  (diredp-mark-files-tagged-all/none tags (not allp) nil prefix))
+
+;;;###autoload
+(defun diredp-mark-files-tagged-some (tags &optional somenotp prefix) ; `T m +'
+  "Mark all files that are tagged with *some* tag in TAGS.
+As a special case, if TAGS is empty, then mark the files that have
+ any tags at all (i.e., at least one tag).
+With a prefix arg, mark all that are *not* tagged with *all* TAGS.
+You need library `bookmark+.el' to use this command."
+  (interactive (list (and (fboundp 'bmkp-read-tags-completing)  (bmkp-read-tags-completing))
+                     current-prefix-arg
+                     (and diredp-prompt-for-bookmark-prefix-flag
+                          (read-string "Prefix for autofile bookmark names: "))))
+  (diredp-ensure-bookmark+)
+  (diredp-ensure-mode)
+  (diredp-mark-files-tagged-some/not-all tags somenotp nil prefix))
+
+;;;###autoload
+(defun diredp-mark-files-tagged-not-all (tags &optional somep prefix) ; `T m ~ *'
+  "Mark all files that are not tagged with *all* TAGS.
+As a special case, if TAGS is empty, then mark the files that have
+ no tags at all.
+With a prefix arg, mark all that are tagged with *some* TAGS.
+You need library `bookmark+.el' to use this command."
+  (interactive (list (and (fboundp 'bmkp-read-tags-completing)  (bmkp-read-tags-completing))
+                     current-prefix-arg
+                     (and diredp-prompt-for-bookmark-prefix-flag
+                          (read-string "Prefix for autofile bookmark names: "))))
+  (diredp-ensure-bookmark+)
+  (diredp-ensure-mode)
+  (diredp-mark-files-tagged-some/not-all tags (not somep) nil prefix))
+
+;;;###autoload
+(defun diredp-mark-files-tagged-regexp (regexp &optional notp prefix) ; `T m %'
+  "Mark files that have at least one tag that matches REGEXP.
+With a prefix arg, mark all that are tagged but have no matching tags.
+You need library `bookmark+.el' to use this command."
+  (interactive (list (read-string "Regexp: ")
+                     current-prefix-arg
+                     (and diredp-prompt-for-bookmark-prefix-flag
+                          (read-string "Prefix for autofile bookmark names: "))))
+  (diredp-ensure-bookmark+)
+  (diredp-ensure-mode)
+  (diredp-mark-if (and (not (diredp-looking-at-p dired-re-dot))  (not (eolp))
+                       (lexical-let* ((fname  (dired-get-filename nil t))
+                                      (bmk    (and fname
+                                                   (bmkp-get-autofile-bookmark fname nil prefix)))
+                                      (btgs   (and bmk  (bmkp-get-tags bmk)))
+                                      (anyp   (and btgs  (bmkp-some #'(lambda (tag)
+                                                                        (diredp-string-match-p
+                                                                         regexp
+                                                                         (bmkp-tag-name tag)))
+                                                                    btgs))))
+                         (and btgs  (if notp (not anyp) anyp))))
+                  "some-tag-matching-regexp file"))
+
+;;;###autoload
+(defun diredp-unmark-files-tagged-regexp (regexp &optional notp prefix) ; `T u %'
+  "Unmark files that have at least one tag that matches REGEXP.
+With a prefix arg, unmark all that are tagged but have no matching tags.
+You need library `bookmark+.el' to use this command."
+  (interactive (list (read-string "Regexp: ")
+                     current-prefix-arg
+                     (and diredp-prompt-for-bookmark-prefix-flag
+                          (read-string "Prefix for autofile bookmark names: "))))
+  (diredp-ensure-bookmark+)
+  (diredp-ensure-mode)
+  (let ((dired-marker-char  ?\040))
+    (diredp-mark-if (and (not (diredp-looking-at-p dired-re-dot))  (not (eolp))
+                         (lexical-let* ((fname  (dired-get-filename nil t))
+                                        (bmk    (and fname  (bmkp-get-autofile-bookmark fname nil prefix)))
+                                        (btgs   (and bmk  (bmkp-get-tags bmk)))
+                                        (anyp   (and btgs (bmkp-some #'(lambda (tag)
+                                                                         (diredp-string-match-p
+                                                                          regexp
+                                                                          (bmkp-tag-name tag)))
+                                                                     btgs))))
+                           (and btgs  (if notp (not anyp) anyp))))
+                    "some-tag-matching-regexp file")))
+
+;;;###autoload
+(defun diredp-unmark-files-tagged-all (tags &optional none-p prefix) ; `T u *'
+  "Unmark all files that are tagged with *each* tag in TAGS.
+As a special case, if TAGS is empty, then unmark the files that have
+ any tags at all (i.e., at least one tag).
+With a prefix arg, unmark all that are *not* tagged with *any* TAGS.
+You need library `bookmark+.el' to use this command."
+  (interactive (list (and (fboundp 'bmkp-read-tags-completing)  (bmkp-read-tags-completing))
+                     current-prefix-arg
+                     (and diredp-prompt-for-bookmark-prefix-flag
+                          (read-string "Prefix for autofile bookmark names: "))))
+  (diredp-ensure-bookmark+)
+  (diredp-ensure-mode)
+  (diredp-mark-files-tagged-all/none tags none-p 'UNMARK prefix))
+
+;;;###autoload
+(defun diredp-unmark-files-tagged-none (tags &optional allp prefix) ; `T u ~ +'
+  "Unmark all files that are *not* tagged with *any* tag in TAGS.
+As a special case, if TAGS is empty, then unmark the files that have
+ no tags at all.
+With a prefix arg, unmark all that are tagged with *each* tag in TAGS.
+You need library `bookmark+.el' to use this command."
+  (interactive (list (and (fboundp 'bmkp-read-tags-completing)  (bmkp-read-tags-completing))
+                     current-prefix-arg
+                     (and diredp-prompt-for-bookmark-prefix-flag
+                          (read-string "Prefix for autofile bookmark names: "))))
+  (diredp-ensure-bookmark+)
+  (diredp-ensure-mode)
+  (diredp-mark-files-tagged-all/none tags (not allp) 'UNMARK prefix))
+
+;;;###autoload
+(defun diredp-unmark-files-tagged-some (tags &optional somenotp prefix) ; `T u +'
+  "Unmark all files that are tagged with *some* tag in TAGS.
+As a special case, if TAGS is empty, then unmark the files that have
+ any tags at all.
+With a prefix arg, unmark all that are *not* tagged with *all* TAGS.
+You need library `bookmark+.el' to use this command."
+  (interactive (list (and (fboundp 'bmkp-read-tags-completing)  (bmkp-read-tags-completing))
+                     current-prefix-arg
+                     (and diredp-prompt-for-bookmark-prefix-flag
+                          (read-string "Prefix for autofile bookmark names: "))))
+  (diredp-ensure-bookmark+)
+  (diredp-ensure-mode)
+  (diredp-mark-files-tagged-some/not-all tags somenotp 'UNMARK prefix))
+
+;;;###autoload
+(defun diredp-unmark-files-tagged-not-all (tags &optional somep prefix) ; `T u ~ *'
+  "Unmark all files that are *not* tagged with *all* TAGS.
+As a special case, if TAGS is empty, then unmark the files that have
+ no tags at all.
+With a prefix arg, unmark all that are tagged with *some* TAGS.
+You need library `bookmark+.el' to use this command."
+  (interactive (list (and (fboundp 'bmkp-read-tags-completing)  (bmkp-read-tags-completing))
+                     current-prefix-arg
+                     (and diredp-prompt-for-bookmark-prefix-flag
+                          (read-string "Prefix for autofile bookmark names: "))))
+  (diredp-ensure-bookmark+)
+  (diredp-ensure-mode)
+  (diredp-mark-files-tagged-some/not-all tags (not somep) 'UNMARK prefix))
+
+;;;###autoload
+(defun diredp-do-tag (tags &optional prefix arg) ; `T > +'
+  "Tag the marked (or the next prefix argument) files.
+You need library `bookmark+.el' to use this command.
+
+Hit `RET' to enter each tag, then hit `RET' again after the last tag.
+You can use completion to enter each tag.  Completion is lax: you are
+not limited to existing tags.
+
+TAGS is a list of strings.  PREFIX is as for `diredp-do-bookmark'.
+
+A prefix argument ARG specifies files to use instead of those marked.
+ An integer means use the next ARG files (previous -ARG, if < 0).
+ `C-u': Use the current file (whether or not any are marked).
+ `C-u C-u': Use all files in Dired, except directories.
+ `C-u C-u C-u': Use all files and directories, except `.' and `..'.
+ `C-u C-u C-u C-u': Use all files and all directories."
+  (interactive (progn (diredp-ensure-bookmark+)
+                      (diredp-ensure-mode)
+                      (list (bmkp-read-tags-completing)
+                            (and diredp-prompt-for-bookmark-prefix-flag
+                                 (read-string "Prefix for autofile bookmark name: "))
+                            current-prefix-arg)))
+  (dired-map-over-marks-check (lexical-let ((pref  prefix)) #'(lambda () (diredp-tag tags pref)))
+                              arg 'tag (diredp-fewer-than-2-files-p arg)))
+
+(defun diredp-tag (tags &optional prefix)
+  "Add tags to the file or directory named on the current line.
+You need library `bookmark+.el' to use this function.
+The bookmark name is the non-directory portion of the file name,
+ prefixed by PREFIX if it is non-nil.
+Return nil for success, file name otherwise."
+  (bookmark-maybe-load-default-file)
+  (let ((file  (dired-get-file-for-visit))
+        failure)
+    (condition-case err
+        (bmkp-autofile-add-tags file tags nil prefix)
+      (error (setq failure  (error-message-string err))))
+    (if (not failure)
+        nil                             ; Return nil for success.
+      (dired-log failure)
+      (dired-make-relative file))))     ; Return file name for failure.
+
+;;;###autoload
+(defun diredp-mouse-do-tag (event)      ; Not bound
+  "In Dired, add some tags to this file.
+You need library `bookmark+.el' to use this command."
+  (interactive "e")
+  (diredp-ensure-bookmark+)
+  (diredp-ensure-mode)
+  (lexical-let ((mouse-pos         (event-start event))
+                (dired-no-confirm  t)
+                (prefix            (and diredp-prompt-for-bookmark-prefix-flag
+                                        (read-string "Prefix for bookmark name: "))))
+    (select-window (posn-window mouse-pos))
+    (goto-char (posn-point mouse-pos))
+    (dired-map-over-marks-check #'(lambda () (diredp-tag (bmkp-read-tags-completing) prefix))
+                                1 'tag t))
+  (diredp-previous-line 1))
+
+;;;###autoload
+(defun diredp-do-untag (tags &optional prefix arg) ; `T > -'
+  "Remove some tags from the marked (or the next prefix arg) files.
+You need library `bookmark+.el' to use this command.
+
+Hit `RET' to enter each tag, then hit `RET' again after the last tag.
+You can use completion to enter each tag.  Completion is lax: you are
+not limited to existing tags.
+
+TAGS is a list of strings.  PREFIX is as for `diredp-do-bookmark'.
+
+A prefix argument ARG specifies files to use instead of those marked.
+ An integer means use the next ARG files (previous -ARG, if < 0).
+ `C-u': Use the current file (whether or not any are marked).
+ `C-u C-u': Use all files in Dired, except directories.
+ `C-u C-u C-u': Use all files and directories, except `.' and `..'.
+ `C-u C-u C-u C-u': Use all files and all directories."
+  (interactive (progn (diredp-ensure-bookmark+)
+                      (diredp-ensure-mode)
+                      (list (bmkp-read-tags-completing)
+                            (and diredp-prompt-for-bookmark-prefix-flag
+                                 (read-string "Prefix for bookmark name: "))
+                            current-prefix-arg)))
+  (dired-map-over-marks-check (lexical-let ((pref  prefix))
+                                #'(lambda () (diredp-untag tags pref)))
+                              arg 'untag (diredp-fewer-than-2-files-p arg)))
+
+(defun diredp-untag (tags &optional prefix)
+  "Remove some tags from the file or directory named on the current line.
+You need library `bookmark+.el' to use this function.
+The bookmark name is the non-directory portion of the file name,
+ prefixed by PREFIX if it is non-nil.
+Return nil for success, file name otherwise."
+  (bookmark-maybe-load-default-file)
+  (let ((file  (dired-get-file-for-visit))
+        failure)
+    (condition-case err
+        (bmkp-autofile-remove-tags file tags nil prefix)
+      (error (setq failure  (error-message-string err))))
+    (if (not failure)
+        nil                             ; Return nil for success.
+      (dired-log failure)
+      (dired-make-relative file))))     ; Return file name for failure.
+
+;;;###autoload
+(defun diredp-mouse-do-untag (event)    ; Not bound
+  "In Dired, remove some tags from this file.
+You need library `bookmark+.el' to use this command."
+  (interactive "e")
+  (diredp-ensure-bookmark+)
+  (diredp-ensure-mode)
+  (lexical-let ((mouse-pos         (event-start event))
+                (dired-no-confirm  t)
+                (prefix            (and diredp-prompt-for-bookmark-prefix-flag
+                                        (read-string "Prefix for bookmark name: "))))
+    (select-window (posn-window mouse-pos))
+    (goto-char (posn-point mouse-pos))
+    (lexical-let* ((bmk   (bmkp-get-autofile-bookmark  (dired-get-filename) nil prefix))
+                   (btgs  (and bmk  (bmkp-get-tags bmk))))
+      (unless btgs (error "File has no tags to remove"))
+      (dired-map-over-marks-check
+       #'(lambda () (diredp-untag (bmkp-read-tags-completing btgs) prefix)) 1 'untag t)))
+  (diredp-previous-line 1))
+
+;;;###autoload
+(defun diredp-do-remove-all-tags (&optional prefix arg) ; `T > 0'
+  "Remove all tags from the marked (or the next prefix arg) files.
+You need library `bookmark+.el' to use this command.
+
+PREFIX is as for `diredp-do-bookmark'.
+
+A prefix argument ARG specifies files to use instead of those marked.
+ An integer means use the next ARG files (previous -ARG, if < 0).
+ `C-u': Use the current file (whether or not any are marked).
+ `C-u C-u': Use all files in Dired, except directories.
+ `C-u C-u C-u': Use all files and directories, except `.' and `..'.
+ `C-u C-u C-u C-u': Use all files and all directories."
+  (interactive (progn (diredp-ensure-bookmark+)
+                      (diredp-ensure-mode)
+                      (list (and diredp-prompt-for-bookmark-prefix-flag
+                                 (read-string "Prefix for bookmark name: "))
+                            current-prefix-arg)))
+  (lexical-let ((pref  prefix))
+    (dired-map-over-marks-check #'(lambda () (diredp-remove-all-tags pref)) arg 'remove-all-tags
+                                (diredp-fewer-than-2-files-p arg))))
+
+(defun diredp-remove-all-tags (&optional prefix)
+  "Remove all tags from the file or directory named on the current line.
+You need library `bookmark+.el' to use this function.
+The bookmark name is the non-directory portion of the file name,
+ prefixed by PREFIX if it is non-nil.
+Return nil for success, file name otherwise."
+  (bookmark-maybe-load-default-file)
+  (let ((file  (dired-get-file-for-visit))
+        failure)
+    (condition-case err
+        (bmkp-remove-all-tags (bmkp-autofile-set file nil prefix))
+      (error (setq failure  (error-message-string err))))
+    (if (not failure)
+        nil                             ; Return nil for success.
+      (dired-log failure)
+      (dired-make-relative file))))     ; Return file name for failure.
+
+;;;###autoload
+(defun diredp-mouse-do-remove-all-tags (event) ; Not bound
+  "In Dired, remove all tags from the marked (or next prefix arg) files.
+You need library `bookmark+.el' to use this command."
+  (interactive "e")
+  (diredp-ensure-bookmark+)
+  (diredp-ensure-mode)
+  (lexical-let ((mouse-pos         (event-start event))
+                (dired-no-confirm  t)
+                (prefix            (and diredp-prompt-for-bookmark-prefix-flag
+                                        (read-string "Prefix for bookmark name: "))))
+    (select-window (posn-window mouse-pos))
+    (goto-char (posn-point mouse-pos))
+    (dired-map-over-marks-check #'(lambda () (diredp-remove-all-tags prefix))
+                                1 'remove-all-tags t))
+  (diredp-previous-line 1))
+
+;;;###autoload
+(defun diredp-do-paste-add-tags (&optional prefix arg) ; `T > p', `T > C-y'
+  "Add previously copied tags to the marked (or next prefix arg) files.
+The tags were previously copied from a file to `bmkp-copied-tags'.
+You need library `bookmark+.el' to use this command.
+
+A prefix argument ARG specifies files to use instead of those marked.
+ An integer means use the next ARG files (previous -ARG, if < 0).
+ `C-u': Use the current file (whether or not any are marked).
+ `C-u C-u': Use all files in Dired, except directories.
+ `C-u C-u C-u': Use all files and directories, except `.' and `..'.
+ `C-u C-u C-u C-u': Use all files and all directories."
+  (interactive (progn (diredp-ensure-bookmark+)
+                      (diredp-ensure-mode)
+                      (list (and diredp-prompt-for-bookmark-prefix-flag
+                                 (read-string "Prefix for autofile bookmark name: "))
+                            current-prefix-arg)))
+  (dired-map-over-marks-check (lexical-let ((pref  prefix))
+                                #'(lambda () (diredp-paste-add-tags pref)))
+                              arg 'paste-add-tags
+                              (diredp-fewer-than-2-files-p arg)))
+
+(defun diredp-paste-add-tags (&optional prefix)
+  "Add previously copied tags to the file or directory on the current line.
+The tags were previously copied from a file to `bmkp-copied-tags'.
+You need library `bookmark+.el' to use this function.
+The bookmark name is the non-directory portion of the file name,
+ prefixed by PREFIX if it is non-nil.
+Return nil for success, file name otherwise."
+  (bookmark-maybe-load-default-file)
+  (let ((file  (dired-get-file-for-visit))
+        failure)
+    (condition-case err
+        (bmkp-autofile-add-tags file bmkp-copied-tags nil prefix)
+      (error (setq failure  (error-message-string err))))
+    (if (not failure)
+        nil                             ; Return nil for success.
+      (dired-log failure)
+      (dired-make-relative file))))     ; Return file name for failure.
+
+;;;###autoload
+(defun diredp-mouse-do-paste-add-tags (event) ; Not bound
+  "In Dired, add previously copied tags to this file.
+The tags were previously copied from a file to `bmkp-copied-tags'.
+You need library `bookmark+.el' to use this command."
+  (interactive "e")
+  (diredp-ensure-bookmark+)
+  (diredp-ensure-mode)
+  (lexical-let ((mouse-pos         (event-start event))
+                (dired-no-confirm  t)
+                (prefix            (and diredp-prompt-for-bookmark-prefix-flag
+                                        (read-string "Prefix for bookmark name: "))))
+    (select-window (posn-window mouse-pos))
+    (goto-char (posn-point mouse-pos))
+    (dired-map-over-marks-check #'(lambda () (diredp-paste-add-tags prefix))
+                                1 'paste-add-tags t))
+  (diredp-previous-line 1))
+
+;;;###autoload
+(defun diredp-do-paste-replace-tags (&optional prefix arg) ; `T > q'
+  "Replace tags for marked (or next prefix arg) files with copied tags.
+The tags were previously copied from a file to `bmkp-copied-tags'.
+You need library `bookmark+.el' to use this command.
+
+A prefix argument ARG specifies files to use instead of those marked.
+ An integer means use the next ARG files (previous -ARG, if < 0).
+ `C-u': Use the current file (whether or not any are marked).
+ `C-u C-u': Use all files in Dired, except directories.
+ `C-u C-u C-u': Use all files and directories, except `.' and `..'.
+ `C-u C-u C-u C-u': Use all files and all directories."
+  (interactive (progn (diredp-ensure-bookmark+)
+                      (diredp-ensure-mode)
+                      (list (and diredp-prompt-for-bookmark-prefix-flag
+                                 (read-string "Prefix for autofile bookmark name: "))
+                            current-prefix-arg)))
+  (dired-map-over-marks-check (lexical-let ((pref  prefix))
+                                #'(lambda () (diredp-paste-replace-tags pref)))
+                              arg 'paste-replace-tags (diredp-fewer-than-2-files-p arg)))
+
+(defun diredp-paste-replace-tags (&optional prefix)
+  "Replace tags for this file or dir with tags copied previously.
+The tags were previously copied from a file to `bmkp-copied-tags'.
+You need library `bookmark+.el' to use this function.
+The bookmark name is the non-directory portion of the file name,
+ prefixed by PREFIX if it is non-nil.
+Return nil for success, file name otherwise."
+  (bookmark-maybe-load-default-file)
+  (let ((file  (dired-get-file-for-visit))
+        failure)
+    (condition-case err
+        (progn (bmkp-remove-all-tags (bmkp-autofile-set file nil prefix))
+               (bmkp-autofile-add-tags file bmkp-copied-tags nil prefix))
+      (error (setq failure  (error-message-string err))))
+    (if (not failure)
+        nil                             ; Return nil for success.
+      (dired-log failure)
+      (dired-make-relative file))))
+
+;;;###autoload
+(defun diredp-mouse-do-paste-replace-tags (event) ; Not bound
+  "In Dired, replace tags for this file with tags copied previously.
+The tags were previously copied from a file to `bmkp-copied-tags'.
+You need library `bookmark+.el' to use this command."
+  (interactive "e")
+  (diredp-ensure-bookmark+)
+  (diredp-ensure-mode)
+  (lexical-let ((mouse-pos         (event-start event))
+                (dired-no-confirm  t)
+                (prefix            (and diredp-prompt-for-bookmark-prefix-flag
+                                        (read-string "Prefix for bookmark name: "))))
+    (select-window (posn-window mouse-pos))
+    (goto-char (posn-point mouse-pos))
+    (dired-map-over-marks-check #'(lambda () (diredp-paste-replace-tags prefix))
+                                1 'paste-replace-tags t))
+  (diredp-previous-line 1))
+
+;;;###autoload
+(defun diredp-do-set-tag-value (tag value &optional prefix arg) ; `T > v'
+  "Set TAG value to VALUE, for the marked (or next prefix arg) files.
+This does not change the TAG name.
+You need library `bookmark+.el' to use this command.
+
+PREFIX is as for `diredp-do-bookmark'.
+
+A prefix argument ARG specifies files to use instead of those marked.
+ An integer means use the next ARG files (previous -ARG, if < 0).
+ `C-u': Use the current file (whether or not any are marked).
+ `C-u C-u': Use all files in Dired, except directories.
+ `C-u C-u C-u': Use all files and directories, except `.' and `..'.
+ `C-u C-u C-u C-u': Use all files and all directories."
+  (interactive (progn (diredp-ensure-bookmark+)
+                      (diredp-ensure-mode)
+                      (list (bmkp-read-tag-completing)
+                            (read (read-string "Value: "))
+                            (and diredp-prompt-for-bookmark-prefix-flag
+                                 (read-string "Prefix for bookmark name: "))
+                            current-prefix-arg)))
+  (dired-map-over-marks-check (lexical-let ((tg    tag)
+                                            (val   value)
+                                            (pref  prefix))
+                                #'(lambda () (diredp-set-tag-value tg val pref)))
+                              arg 'set-tag-value (diredp-fewer-than-2-files-p arg)))
+
+(defun diredp-set-tag-value (tag value &optional prefix)
+  "Set TAG value to VALUE for this file or directory.
+This does not change the TAG name.
+You need library `bookmark+.el' to use this function.
+The bookmark name is the non-directory portion of the file name,
+ prefixed by PREFIX if it is non-nil.
+Return nil for success, file name otherwise."
+  (bookmark-maybe-load-default-file)
+  (let ((file  (dired-get-file-for-visit))
+        failure)
+    (condition-case err
+        (bmkp-set-tag-value (bmkp-autofile-set file nil prefix) tag value)
+      (error (setq failure  (error-message-string err))))
+    (if (not failure)
+        nil                             ; Return nil for success.
+      (dired-log failure)
+      (dired-make-relative file))))     ; Return file name for failure.
+
+;;;###autoload
+(defun diredp-mouse-do-set-tag-value (event) ; Not bound
+  "In Dired, set the value of a tag for this file.
+This does not change the tag name.
+You need library `bookmark+.el' to use this command."
+  (interactive "e")
+  (diredp-ensure-bookmark+)
+  (diredp-ensure-mode)
+  (lexical-let ((mouse-pos         (event-start event))
+                (dired-no-confirm  t)
+                (prefix            (and diredp-prompt-for-bookmark-prefix-flag
+                                        (read-string "Prefix for bookmark name: "))))
+    (select-window (posn-window mouse-pos))
+    (goto-char (posn-point mouse-pos))
+    (dired-map-over-marks-check #'(lambda () (diredp-set-tag-value (bmkp-read-tag-completing)
+                                                                   (read (read-string "Value: "))
+                                                                   prefix))
+                                1 'set-tag-value t))
+  (diredp-previous-line 1))
+
+
+;; Define these even if `Bookmark+' is not loaded.
+;;;###autoload
+(defun diredp-mark-autofiles ()         ; Bound to `* B'
+  "Mark all autofiles, that is, files that have an autofile bookmark."
+  (interactive)
+  (diredp-ensure-bookmark+)
+  (diredp-ensure-mode)
+  (diredp-mark/unmark-autofiles))
+
+;;;###autoload
+(defun diredp-unmark-autofiles ()
+  "Unmark all autofiles, that is, files that have an autofile bookmark."
+  (interactive)
+  (diredp-ensure-bookmark+)
+  (diredp-ensure-mode)
+  (diredp-mark/unmark-autofiles t))
+
+;;;###autoload
+(defun diredp-mark/unmark-autofiles (&optional unmarkp)
+  "Mark all autofiles, or unmark if UNMARKP is non-nil."
+  (let ((dired-marker-char  (if unmarkp ?\040 dired-marker-char)))
+    (diredp-mark-if (and (not (diredp-looking-at-p dired-re-dot))  (not (eolp))
+                         (let ((fname  (dired-get-filename nil t)))
+                           (and fname  (bmkp-get-autofile-bookmark fname))))
+                    "autofile")))
+
+(when (and (fboundp 'bmkp-get-autofile-bookmark) ; Defined in `bookmark+-1.el'.
+           (fboundp 'hlt-highlight-region)) ; Defined in `highlight.el'.
+
+  (defun diredp-highlight-autofiles ()
+    "Highlight files that are autofile bookmarks.
+Highlighting uses face `diredp-autofile-name'."
+    (save-excursion
+      (goto-char (point-min))
+      (while (re-search-forward dired-move-to-filename-regexp nil t)
+        ;; If Dired details are hidden the match data gets changed.
+        (let* ((bmk    (save-match-data
+                         (bmkp-get-autofile-bookmark (buffer-substring (match-end 0) (line-end-position)))))
+               (tags  (and bmk  (bmkp-get-tags bmk))))
+          (when bmk
+            (hlt-highlight-region (match-end 0) (line-end-position)
+                                  (if tags
+                                      'diredp-tagged-autofile-name
+                                    'diredp-autofile-name)))))))
+
+  (cond ((fboundp 'define-minor-mode)
+         ;; Emacs 21+.  Use `eval' so that even if the library is byte-compiled with Emacs 20,
+         ;; loading it into Emacs 21+ will define variable `diredp-highlight-autofiles-mode'.
+         (eval '(define-minor-mode diredp-highlight-autofiles-mode
+                 "Toggle automatic highlighting of autofile bookmarks.
+When you turn this on, it ensures that your bookmark file is loaded.
+
+NOTE: This mode is ON BY DEFAULT.  More precisely, when `dired+.el' is
+loaded (for the first time per Emacs session), the mode is turned ON.
+To prevent this and have the mode OFF by default, you must do one of
+the following:
+
+ * Put (diredp-highlight-autofiles-mode -1) in your init file, AFTER
+   it loads `dired+.el'.
+
+ * Customize option `diredp-highlight-autofiles-mode' to `nil', AND
+   ensure that your `custom-file' (or the `custom-saved-variables'
+   part of your init file) is evaluated before `dired+.el' is loaded.
+
+You need libraries `Bookmark and `highlight.el' for this command."
+                 :init-value t :global t :group 'Dired-Plus :require 'dired+
+                 (if (not diredp-highlight-autofiles-mode)
+                     (remove-hook 'dired-after-readin-hook #'diredp-highlight-autofiles)
+                   (add-hook 'dired-after-readin-hook #'diredp-highlight-autofiles)
+                   (bookmark-maybe-load-default-file))
+                 (when (derived-mode-p 'dired-mode) (dired-revert nil nil))
+                 (when (interactive-p)
+                   (message "Dired highlighting of autofile bookmarks is now %s"
+                            (if diredp-highlight-autofiles-mode "ON" "OFF"))))))
+        (t;; Emacs 20.
+         (defun diredp-highlight-autofiles-mode (&optional arg)
+           "Toggle automatic highlighting of autofile bookmarks.
+When you turn this on, it ensures that your bookmark file is loaded.
+
+NOTE: This mode is ON BY DEFAULT.  More precisely, when `dired+.el' is
+loaded (for the first time per Emacs session), the mode is turned ON.
+To prevent this and have the mode OFF by default, you must do one of
+the following:
+
+ * Put (diredp-highlight-autofiles-mode -1) in your init file, AFTER
+   it loads `dired+.el'.
+
+ * Customize option `diredp-highlight-autofiles-mode' to `nil', AND
+   ensure that your `custom-file' (or the `custom-saved-variables'
+   part of your init file) is evaluated before `dired+.el' is loaded.
+
+You need libraries `Bookmark and `highlight.el' for this command."
+           (interactive (list (or current-prefix-arg  'toggle)))
+           (setq diredp-highlight-autofiles-mode  (if (eq arg 'toggle)
+                                                      (not diredp-highlight-autofiles-mode)
+                                                    (> (prefix-numeric-value arg) 0)))
+           (if (not diredp-highlight-autofiles-mode)
+               (remove-hook 'dired-after-readin-hook #'diredp-highlight-autofiles)
+             (add-hook 'dired-after-readin-hook #'diredp-highlight-autofiles)
+             (bookmark-maybe-load-default-file))
+           (when (derived-mode-p 'dired-mode) (dired-revert nil nil))
+           (when (interactive-p) (message "Dired highlighting of autofile bookmarks is now %s"
+                                          (if diredp-highlight-autofiles-mode "ON" "OFF"))))))
+
+  ;; Turn it ON BY DEFAULT.
+  (unless (or (boundp 'diredp-loaded-p)  (get 'diredp-highlight-autofiles-mode 'saved-value))
+    (diredp-highlight-autofiles-mode 1))
+  )
+
+;;;###autoload
+(defun diredp-do-bookmark (&optional prefix arg) ; Bound to `M-b'
+  "Bookmark the marked (or the next prefix argument) files.
+Each bookmark name is the non-directory portion of the file name,
+ prefixed by PREFIX if it is non-nil.
+Interactively, you are prompted for the PREFIX if
+ `diredp-prompt-for-bookmark-prefix-flag' is non-nil.
+The bookmarked position is the beginning of the file.
+If you use library `bookmark+.el' then the bookmark is an autofile.
+
+A prefix argument ARG specifies files to use instead of those marked.
+ An integer means use the next ARG files (previous -ARG, if < 0).
+ `C-u': Use the current file (whether or not any are marked).
+ `C-u C-u': Use all files in Dired, except directories.
+ `C-u C-u C-u': Use all files and directories, except `.' and `..'.
+ `C-u C-u C-u C-u': Use all files and all directories."
+  (interactive (progn (diredp-ensure-mode)
+                      (list (and diredp-prompt-for-bookmark-prefix-flag
+                                 (read-string "Prefix for bookmark name: "))
+                            current-prefix-arg)))
+  (dired-map-over-marks-check (lexical-let ((pref  prefix))
+                                #'(lambda () (diredp-bookmark pref nil 'NO-MSG-P)))
+                              arg 'bookmark (diredp-fewer-than-2-files-p arg)))
+
+;;;###autoload
+(defun diredp-mouse-do-bookmark (event) ; Not bound
+  "In Dired, bookmark this file.  See `diredp-do-bookmark'."
+  (interactive "e")
+  (lexical-let ((mouse-pos         (event-start event))
+                (dired-no-confirm  t)
+                (prefix            (and diredp-prompt-for-bookmark-prefix-flag
+                                        (read-string "Prefix for bookmark name: "))))
+    (select-window (posn-window mouse-pos))
+    (goto-char (posn-point mouse-pos))
+    (dired-map-over-marks-check #'(lambda () (diredp-bookmark prefix nil)) nil 'bookmark t))
+  (diredp-previous-line 1))
+
+(defun diredp-bookmark (&optional prefix file no-msg-p)
+  "Bookmark the file or directory FILE.
+If you use library `bookmark+.el' then the bookmark is an autofile.
+Return nil for success or the file name otherwise.
+
+The bookmark name is the (non-directory) file name, prefixed by
+ optional arg PREFIX (a string) if non-nil.
+
+FILE defaults to the file name on the current Dired line.
+
+Non-nil optional arg NO-MSG-P means do not show progress messages."
+  (bookmark-maybe-load-default-file)
+  (let ((fil      (or file  (dired-get-file-for-visit)))
+        (failure  nil))
+    (condition-case err
+        (if (fboundp 'bmkp-autofile-set) ; Bookmark+ - just set an autofile bookmark.
+            (bmkp-autofile-set fil nil prefix nil (not no-msg-p))
+          ;; Vanilla `bookmark.el' (or very old Bookmark+ version).
+          (let ((bookmark-make-record-function
+                 (cond ((and (require 'image nil t)  (require 'image-mode nil t)
+                             (condition-case nil (image-type fil) (error nil)))
+                        ;; Last two lines of function are from `image-bookmark-make-record'.
+                        ;; But don't use that directly, because it uses
+                        ;; `bookmark-make-record-default', which gets nil for `filename'.
+                        (lambda ()
+                          `((filename   . ,fil)
+                            (position   . 0)
+                            ;; NEED to keep this part of code sync'd with `bmkp-make-record-for-target-file'.
+                            (image-type . ,(image-type fil))
+                            (handler    . image-bookmark-jump)))) ; In `image-mode.el'.
+                       (t
+                        (lambda ()
+                          `((filename . ,fil)
+                            (position . 0)))))))
+            (bookmark-store (concat prefix (file-name-nondirectory fil)) (cdr (bookmark-make-record)) nil)))
+      (error (setq failure  (error-message-string err))))
+    (if (not failure)
+        nil                             ; Return nil for success.
+      (if (fboundp 'bmkp-autofile-set)
+          (dired-log failure)
+        (dired-log "Failed to create bookmark for `%s':\n%s\n" fil failure))
+      (dired-make-relative fil))))      ; Return file name for failure.
+
+;;;###autoload
+(defun diredp-set-bookmark-file-bookmark-for-marked (bookmark-file ; Bound to `C-M-b'
+                                                     &optional prefix arg)
+  "Bookmark the marked files and create a bookmark-file bookmark for them.
+The bookmarked position is the beginning of the file.
+Jumping to the bookmark-file bookmark loads the set of file bookmarks.
+You need library `bookmark+.el' to use this command.
+
+Each bookmark name is the non-directory portion of the file name,
+ prefixed by PREFIX if it is non-nil.
+Interactively, you are prompted for PREFIX if
+ `diredp-prompt-for-bookmark-prefix-flag' is non-nil.
+
+A prefix argument ARG specifies files to use instead of those marked.
+ An integer means use the next ARG files (previous -ARG, if < 0).
+ `C-u': Use the current file (whether or not any are marked).
+ `C-u C-u': Use all files in Dired, except directories.
+ `C-u C-u C-u': Use all files and directories, except `.' and `..'.
+ `C-u C-u C-u C-u': Use all files and all directories.
+
+You are also prompted for the bookmark file, BOOKMARK-FILE.  The
+default is `.emacs.bmk' in the current directory, but you can enter
+any file name, anywhere.
+
+The marked-file bookmarks are added to file BOOKMARK-FILE, but this
+command does not make BOOKMARK-FILE the current bookmark file.  To
+make it current, just jump to the bookmark-file bookmark created by
+this command.  That bookmark (which bookmarks BOOKMARK-FILE) is
+defined in that current bookmark file.
+
+Example:
+
+ Bookmark file `~/.emacs.bmk' is current before invoking this command.
+ The current (Dired) directory is `/foo/bar'.
+ The marked files are bookmarked in the (possibly new) bookmark file
+   `/foo/bar/.emacs.bmk'.
+ The bookmarks for the marked files have names prefixed by `FOOBAR '.
+ The name of the bookmark-file bookmark is `Foobar Files'.
+ Bookmark `Foobar Files' is itself in bookmark file `~/.emacs.bmk'.
+ Bookmark file `~/.emacs.bmk' is current after invoking this command.
+
+You are prompted for the name of the bookmark-file bookmark, the
+BOOKMARK-FILE for the marked-file bookmarks, and a PREFIX string for
+each of the marked-file bookmarks.
+
+See also command `diredp-do-bookmark-in-bookmark-file'."
+  (interactive (diredp-read-bookmark-file-args))
+  (diredp-ensure-bookmark+)
+  (diredp-do-bookmark-in-bookmark-file bookmark-file prefix arg 'CREATE-BOOKMARK-FILE-BOOKMARK))
+
+;;;###autoload
+(defun diredp-do-bookmark-in-bookmark-file (bookmark-file ; Bound to `C-M-B' (aka `C-M-S-b')
+                                            &optional prefix arg bfile-bookmarkp files)
+  "Bookmark marked files in BOOKMARK-FILE and save BOOKMARK-FILE.
+The files bookmarked are the marked files, by default.
+The bookmarked position is the beginning of the file.
+You are prompted for BOOKMARK-FILE.  The default is `.emacs.bmk' in
+the current directory, but you can enter any file name, anywhere.
+You need library `bookmark+.el' to use this command.
+
+The marked files are bookmarked in file BOOKMARK-FILE, but this
+command does not make BOOKMARK-FILE the current bookmark file.  To
+make it current, use `\\[bmkp-switch-bookmark-file]' (`bmkp-switch-bookmark-file').
+
+Each bookmark name is the non-directory portion of the file name,
+ prefixed by PREFIX if it is non-nil.
+Interactively, you are prompted for PREFIX if
+ `diredp-prompt-for-bookmark-prefix-flag' is non-nil.
+
+Interactively, a prefix argument ARG specifies the files to use
+instead of those marked.
+
+ An integer means use the next ARG files (previous -ARG, if < 0).
+ `C-u': Use the current file (whether or not any are marked).
+ `C-u C-u': Use all files in Dired, except directories.
+ `C-u C-u C-u': Use all files and directories, except `.' and `..'.
+ `C-u C-u C-u C-u': Use all files and all directories.
+
+See also command `diredp-set-bookmark-file-bookmark-for-marked'.
+
+Non-interactively:
+
+ * Non-nil BFILE-BOOKMARKP means create a bookmark-file bookmark for
+   BOOKMARK-FILE.
+ * Non-nil FILES is the list of files to bookmark."
+  (interactive (diredp-read-bookmark-file-args))
+  (diredp-ensure-bookmark+)
+  (let ((bfile-exists-p  (file-readable-p bookmark-file)))
+    (unless bfile-exists-p (bmkp-empty-file bookmark-file))
+    (unless bmkp-current-bookmark-file (setq bmkp-current-bookmark-file  bookmark-default-file))
+    (let ((old-bmkp-current-bookmark-file  bmkp-current-bookmark-file))
+      (unwind-protect
+           (progn (bmkp-switch-bookmark-file bookmark-file) ; Changes `*-current-bookmark-file'.
+                  (if files
+                      (dolist (file  files)  (diredp-bookmark prefix file 'NO-MSG-P))
+                    (dired-map-over-marks-check
+                     (lexical-let ((pref  prefix)) #'(lambda () (diredp-bookmark pref nil 'NO-MSG-P)))
+                     arg 'bookmark (diredp-fewer-than-2-files-p arg)))
+                  (bookmark-save)
+                  (unless bfile-exists-p (revert-buffer)))
+        (unless (bmkp-same-file-p old-bmkp-current-bookmark-file  bmkp-current-bookmark-file)
+          (bmkp-switch-bookmark-file old-bmkp-current-bookmark-file 'NO-MSG))))
+    (when bfile-bookmarkp (bmkp-set-bookmark-file-bookmark bookmark-file))))
+
+(defun diredp-read-bookmark-file-args ()
+  "Read args for `diredp-do-bookmark-in-bookmark-file' and similar."
+  (diredp-ensure-bookmark+)
+  (diredp-ensure-mode)
+  (list (let* ((insert-default-directory  t)
+               (bmk-file                  (expand-file-name
+                                           (read-file-name
+                                            "Use bookmark file (default is in CURRENT dir): " nil
+                                            (if (or (> emacs-major-version 23)
+                                                    (and (= emacs-major-version 23)  (> emacs-minor-version 1)))
+                                                (list ".emacs.bmk" bookmark-default-file)
+                                              ".emacs.bmk")))))
+          bmk-file)
+        (and diredp-prompt-for-bookmark-prefix-flag  (read-string "Prefix for autofile bookmark names: "))
+        current-prefix-arg))
+
+
+;; REPLACE ORIGINAL in `dired.el'.
+;;
+;; Allows for consp `dired-directory' too.
+;;
+(defun dired-buffers-for-dir (dir &optional file)
+  "Return a list of buffers that Dired DIR (top level or in-situ subdir).
+If FILE is non-nil, include only those whose wildcard pattern (if any)
+matches FILE.
+The list is in reverse order of buffer creation, most recent last.
+As a side effect, killed Dired buffers for DIR are removed from
+`dired-buffers'."
+  (setq dir  (file-name-as-directory dir))
+  (let (result buf)
+    (dolist (elt  dired-buffers)
+      (setq buf  (cdr elt))
+      (cond ((null (buffer-name buf))   ; Buffer is killed - clean up.
+             (setq dired-buffers  (delq elt dired-buffers)))
+            ((dired-in-this-tree dir (car elt))
+             (with-current-buffer buf
+               (and (assoc dir dired-subdir-alist)
+                    (or (null file)
+                        (if (stringp dired-directory)
+                            ;; Allow for consp `dired-directory' too.
+                            (let ((wildcards  (file-name-nondirectory (if (consp dired-directory)
+                                                                          (car dired-directory)
+                                                                        dired-directory))))
+                              (or (zerop (length wildcards))
+                                  (diredp-string-match-p (dired-glob-regexp wildcards) file)))
+                          (member (expand-file-name file dir) (cdr dired-directory))))
+                    (setq result  (cons buf result)))))))
+    result))
+
+
+;; If you use library `files+.el', you need not use these commands
+;; explicitly, because that library redefines `find-file-read-args' to
+;; do the same thing, in Dired mode.  These are provided here in case
+;; you want to bind them directly - for example, in case your code
+;; does not use `find-file-read-args'.
+;;
+;;;###autoload
+(defun diredp-find-a-file (filename &optional wildcards) ; Not bound
+  "`find-file', but use file on current line as default (`M-n')."
+  (interactive (diredp-find-a-file-read-args "Find file: " nil))
+  (find-file filename wildcards))
+
+;;;###autoload
+(defun diredp-find-a-file-other-frame (filename &optional wildcards) ; Not bound
+  "`find-file-other-frame', but use file under cursor as default (`M-n')."
+  (interactive (diredp-find-a-file-read-args "Find file: " nil))
+  (find-file-other-frame filename wildcards))
+
+;;;###autoload
+(defun diredp-find-a-file-other-window (filename &optional wildcards) ; Not bound
+  "`find-file-other-window', but use file under cursor as default (`M-n')."
+  (interactive (diredp-find-a-file-read-args "Find file: " nil))
+  (find-file-other-window filename wildcards))
+
+;;;###autoload
+(defun diredp-find-a-file-read-args (prompt mustmatch) ; Not bound
+  (list (lexical-let ((find-file-default  (abbreviate-file-name (dired-get-file-for-visit))))
+          (minibuffer-with-setup-hook (lambda ()
+                                        (setq minibuffer-default  find-file-default))
+                                      (read-file-name prompt nil default-directory mustmatch)))
+        t))
+
+;;;###autoload
+(defun diredp-find-file-reuse-dir-buffer () ; Not bound
+  "Like `dired-find-file', but reuse Dired buffers.
+Unlike `dired-find-alternate-file' this does not use
+`find-alternate-file' unless (1) the target is a directory that is not
+yet visited as a Dired buffer, and (2) the current (Dired) buffer is
+not visited also in some other window (possibly in an iconified
+frame)."
+  (interactive)
+  (set-buffer-modified-p nil)
+  (let ((file  (dired-get-file-for-visit)))
+    (diredp--reuse-dir-buffer-helper file)))
+
+;;;###autoload
+(defun diredp-mouse-find-file-reuse-dir-buffer (event &optional find-file-func find-dir-func) ; Not bound
+  "Like `dired-mouse-find-file', but reuse Dired buffers.
+Unlike `dired-find-alternate-file' this does not use
+`find-alternate-file' unless (1) the target is a directory that is not
+yet visited as a Dired buffer, and (2) the current (Dired) buffer is
+not visited also in some other window (possibly in an iconified
+frame).
+
+Non-nil optional args FIND-FILE-FUNC and FIND-DIR-FUNC specify
+functions to visit the file and directory, respectively.
+Defaults: `find-file' and `dired', respectively."
+  (interactive "e")
+  (let (window pos file)
+    (save-excursion
+      (setq window  (posn-window (event-end event))
+	    pos     (posn-point (event-end event)))
+      (unless (windowp window) (error "No file chosen"))
+      (set-buffer (window-buffer window))
+      (goto-char pos)
+      (setq file  (dired-get-file-for-visit)))
+    (select-window window)
+    (diredp--reuse-dir-buffer-helper file find-file-func find-dir-func)))
+
+(defun diredp--reuse-dir-buffer-helper (file &optional find-file-func find-dir-func other-window)
+  "Helper for commands `diredp-*-reuse-dir-buffer' commands.
+Non-nil optional args FIND-FILE-FUNC and FIND-DIR-FUNC specify
+functions to visit the file and directory, respectively.
+Defaults: `find-file' and `dired', respectively.
+
+Unlike `dired-find-alternate-file' this does not use
+`find-alternate-file' unless (1) the target is a directory that is not
+yet visited as a Dired buffer, and (2) the current (Dired) buffer is
+not visited also in some other window (possibly in an iconified
+frame)."
+  (setq find-file-func  (or find-file-func (if other-window #'find-file-other-window #'find-file))
+        find-dir-func   (or find-dir-func  (if other-window #'dired-other-window #'dired)))
+  (let (;; This binding prevents problems with preserving point in windows displaying Dired buffers, because
+        ;; reverting a Dired buffer empties it, which changes the places where the markers used by
+        ;; `switch-to-buffer-preserve-window-point' point.
+        (switch-to-buffer-preserve-window-point  (and (boundp 'switch-to-buffer-preserve-window-point) ; Emacs 24+
+                                                      (or (not (boundp 'dired-auto-revert-buffer))
+                                                          (not dired-auto-revert-buffer))
+                                                      switch-to-buffer-preserve-window-point))
+        (find-file-run-dired                     t)
+        (wins                                    ())
+        (alt-find-file-func                      (if other-window
+                                                     #'find-alternate-file-other-window
+                                                   #'find-alternate-file))
+        dir-bufs)
+    (if (or (not (file-directory-p file)) ; New is a not a directory
+            (dired-buffers-for-dir file) ; or there is a Dired buffer for it, even as a subdir.
+            (and (setq dir-bufs  (dired-buffers-for-dir default-directory)) ; Dired bufs for current (old).
+                 (progn
+                   (dolist (buf  dir-bufs)
+                     (setq wins  (append wins (get-buffer-window-list buf 'NOMINI 0))))
+                   (setq wins  (delq nil wins))
+                   (cdr wins))))        ; More than one window showing current Dired buffer.
+        (if (file-directory-p file)
+	    (or (and (cdr dired-subdir-alist)  (dired-goto-subdir file)) ; New is a subdir inserted in current
+	        (funcall find-dir-func file))
+          (funcall find-file-func (file-name-sans-versions file t)))
+      (funcall alt-find-file-func (file-name-sans-versions file t)))))
+
+;;;###autoload
+(defalias 'toggle-diredp-find-file-reuse-dir 'diredp-toggle-find-file-reuse-dir)
+;;;###autoload
+(defun diredp-toggle-find-file-reuse-dir (force-p) ; Bound to `C-M-R' (aka `C-M-S-r')
+  "Toggle whether Dired `find-file' commands reuse directories.
+This applies also to `dired-w32-browser' commands and
+`diredp-up-directory'.
+
+A prefix arg specifies directly whether or not to reuse.
+ If its numeric value is non-negative then reuse; else do not reuse.
+
+To set the behavior as a preference (default behavior), put this in
+your ~/.emacs, where VALUE is 1 to reuse or -1 to not reuse:
+
+ (diredp-toggle-find-file-reuse-dir VALUE)
+
+Note: This affects only these commands:
+
+  `dired-find-file'
+  `dired-mouse-find-file'
+
+It does not affect the corresponding `-other-window' commands.  Note
+too that, by default, mouse clicks to open files or directories open
+in another window: command `diredp-mouse-find-file-other-window', not
+`dired-mouse-find-file'.  If you want a mouse click to reuse a
+directory then bind `mouse-2' to `dired-mouse-find-file' instead."
+  (interactive "P")
+  (if force-p                           ; Force.
+      (if (natnump (prefix-numeric-value force-p))
+          (diredp-make-find-file-keys-reuse-dirs)
+        (diredp-make-find-file-keys-not-reuse-dirs))
+    (if (where-is-internal 'dired-find-file dired-mode-map 'ascii)
+        (diredp-make-find-file-keys-reuse-dirs)
+      (diredp-make-find-file-keys-not-reuse-dirs))))
+
+(defun diredp-make-find-file-keys-reuse-dirs ()
+  "Make find-file keys reuse Dired buffers."
+  (substitute-key-definition 'diredp-up-directory 'diredp-up-directory-reuse-dir-buffer dired-mode-map)
+  (substitute-key-definition 'dired-find-file 'diredp-find-file-reuse-dir-buffer dired-mode-map)
+  (substitute-key-definition 'dired-mouse-find-file 'diredp-mouse-find-file-reuse-dir-buffer dired-mode-map)
+  ;; These commands are defined in `w32-browser.el' (for use with MS Windows).
+  (substitute-key-definition 'dired-w32-browser 'dired-w32-browser-reuse-dir-buffer dired-mode-map)
+  (substitute-key-definition 'dired-mouse-w32-browser 'dired-mouse-w32-browser-reuse-dir-buffer dired-mode-map)
+  (message "Reusing Dired buffers is now ON"))
+
+(defun diredp-make-find-file-keys-not-reuse-dirs ()
+  "Make find-file keys not reuse Dired buffers (i.e. act normally)."
+  (substitute-key-definition 'diredp-up-directory-reuse-dir-buffer 'diredp-up-directory dired-mode-map)
+  (substitute-key-definition 'diredp-find-file-reuse-dir-buffer 'dired-find-file dired-mode-map)
+  (substitute-key-definition 'diredp-mouse-find-file-reuse-dir-buffer 'dired-mouse-find-file dired-mode-map)
+  ;; These commands are defined in `w32-browser.el' (for use with MS Windows).
+  (substitute-key-definition 'dired-w32-browser-reuse-dir-buffer 'dired-w32-browser dired-mode-map)
+  (substitute-key-definition 'dired-mouse-w32-browser-reuse-dir-buffer 'dired-mouse-w32-browser dired-mode-map)
+  (message "Reusing Dired buffers is now OFF"))
+
+;;;###autoload
+(defun diredp-omit-marked ()            ; Not bound
+  "Omit lines of marked files.  Return the number of lines omitted."
+  (interactive)
+  (let ((old-modified-p  (buffer-modified-p))
+        count)
+    (when (interactive-p) (message "Omitting marked lines..."))
+    (setq count  (dired-do-kill-lines nil "Omitted %d line%s."))
+    (set-buffer-modified-p old-modified-p) ; So no `%*' appear in mode-line.
+    count))
+
+;;;###autoload
+(defun diredp-omit-unmarked ()          ; Not bound
+  "Omit lines of unmarked files.  Return the number of lines omitted."
+  (interactive)
+  (let ((old-modified-p  (buffer-modified-p))
+        count)
+    (dired-toggle-marks)
+    (message "Omitting unmarked lines...")
+    (setq count  (diredp-omit-marked))
+    (dired-toggle-marks)                ; Marks all except `.', `..'
+    (set-buffer-modified-p old-modified-p) ; So no `%*' appear in mode-line.
+    count))
+
+;;;###autoload
+(defun diredp-ediff (file2)             ; Bound to `='
+  "Compare file at cursor with file FILE2 using `ediff'.
+FILE2 defaults to the file at the cursor as well.  If you enter just a
+directory name for FILE2, then the file at the cursor is compared with
+a file of the same name in that directory.  FILE2 is the second file
+given to `ediff'; the file at the cursor is the first.
+
+Try to guess a useful default value for FILE2, as follows:
+
+* If the mark is active, use the file at mark.
+* Else if the file at cursor is a autosave file or a backup file, use
+  the corresponding base file.
+* Else if there is any backup file for the file at point, use the
+  newest backup file for it.
+* Else use the file at point."
+  (interactive (progn (require 'ediff)
+                      (list (ediff-read-file-name ; In `ediff-util.el'.
+                             (format "Compare %s with" (dired-get-filename t))
+                             (dired-current-directory)
+                             (let* ((file           (dired-get-filename))
+                                    (file-sans-dir  (file-name-nondirectory file))
+                                    (file-dir       (file-name-directory file))
+                                    (file-at-mark   (and transient-mark-mode
+                                                         mark-active
+                                                         (save-excursion (goto-char (mark t))
+                                                                         (dired-get-filename t t))))
+                                    (last-backup    (file-newest-backup file)))
+                               (cond
+                                 (file-at-mark)
+                                 ((auto-save-file-name-p file-sans-dir)
+                                  (expand-file-name (substring file-sans-dir 1 -1) file-dir))
+                                 ((backup-file-name-p file-sans-dir)
+                                  (expand-file-name (file-name-sans-versions file-sans-dir) file-dir))
+                                 (last-backup)
+                                 (t file)))))))
+  (ediff-files (dired-get-filename) file2)) ; In `ediff.el'.
+
+(defun diredp-fewer-than-N-files-p (arg n)
+  "Return non-nil iff fewer than N files are to be treated by dired.
+More precisely, return non-nil iff ARG is nil and fewer than N
+files are marked, or the absolute value of ARG is less than N."
+  (if arg
+      (and (integerp arg)  (< (abs arg) n)) ; Next or previous file (or none).
+    (not (save-excursion                ; Fewer than two marked files.
+           (goto-char (point-min))
+           (re-search-forward (dired-marker-regexp) nil t n)))))
+
+(defun diredp-fewer-than-2-files-p (arg)
+  "Return non-nil iff fewer than two files are to be treated by dired.
+More precisely, return non-nil iff ARG is nil and fewer than two
+files are marked, or ARG is -1, 0 or 1."
+  (diredp-fewer-than-N-files-p arg 2))
+
+(defun diredp-fewer-than-echo-limit-files-p (arg)
+  "Return non-nil iff < `diredp-do-report-echo-limit' files marked.
+More precisely, return non-nil iff ARG is nil and fewer than two
+files are marked, or ARG is -1, 0 or 1."
+  (diredp-fewer-than-N-files-p arg diredp-do-report-echo-limit))
+
+;;;###autoload
+(defun diredp-do-apply-function (function &optional arg) ; Bound to `@'
+  "Apply FUNCTION to the marked files.
+You are prompted for the FUNCTION.
+
+With a plain prefix ARG (`C-u'), visit each file and invoke FUNCTION
+ with no arguments.
+Otherwise, apply FUNCTION to each file name.
+
+Any prefix arg other than single `C-u' behaves according to the ARG
+argument of `dired-get-marked-files'.  In particular, `C-u C-u'
+operates on all files in the Dired buffer.
+
+The result returned for each file is logged by `dired-log'.  Use `?'
+to see all such results and any error messages.  If there are fewer
+marked files than `diredp-do-report-echo-limit' then each result is
+also echoed momentarily."
+  (interactive (progn (diredp-ensure-mode)
+                      (list (read (completing-read "Function: " obarray 'functionp nil nil
+                                                   (and (boundp 'function-name-history)
+                                                        'function-name-history)))
+                            current-prefix-arg)))
+  (let ((use-no-args-p  (and (consp arg)  (< (car arg) 16))))
+    (when use-no-args-p (setq arg  ()))
+    (save-selected-window
+      (diredp-map-over-marks-and-report
+       (if use-no-args-p #'diredp-invoke-function-no-args #'diredp-apply-function-to-file-name)
+       arg
+       'apply\ function (diredp-fewer-than-2-files-p arg)
+       function
+       (diredp-fewer-than-echo-limit-files-p arg)))))
+
+(defun diredp-invoke-function-no-args (fun &optional echop)
+  "Visit file of this line at its beginning, then invoke function FUN.
+No arguments are passed to FUN.
+Log the result returned or any error.
+Non-nil optional arg ECHOP means also echo the result."
+  (let* ((file     (dired-get-filename))
+         (failure  (not (file-exists-p file)))
+         result)
+    (unless failure
+      (condition-case err
+          (with-current-buffer (find-file-noselect file)
+            (save-excursion
+              (goto-char (point-min))
+              (setq result  (funcall fun))))
+        (error (setq failure  err))))
+    (diredp-report-file-result file result failure echop)))
+
+(defun diredp-apply-function-to-file-name (fun &optional echop)
+  "Apply function FUN to (absolute) file name on this line.
+Log the result returned or any error.
+Non-nil optional arg ECHOP means also echo the result."
+  (let ((file     (dired-get-filename))
+        (failure  nil)
+        result)
+    (condition-case err
+        (setq result  (funcall fun file))
+      (error (setq failure  err)))
+    (diredp-report-file-result file result failure echop)))
+
+
+;; REPLACE ORIGINAL in `dired-aux.el'.
+;;
+;; 1. Redisplay only if at most one file is being treated.
+;; 2. Doc string reflects `Dired+'s version of `dired-map-over-marks-check'.
+;;
+;;;###autoload
+(defun dired-do-compress (&optional arg) ; Bound to `Z'
+  "Compress or uncompress marked (or next prefix argument) files.
+A prefix argument ARG specifies files to use instead of marked.
+ An integer means use the next ARG files (previous -ARG, if < 0).
+ `C-u': Use the current file (whether or not any are marked).
+ `C-u C-u': Use all files in Dired, except directories.
+ `C-u C-u C-u': Use all files and directories, except `.' and `..'.
+ `C-u C-u C-u C-u': Use all files and all directories."
+  (interactive "P")
+  (dired-map-over-marks-check #'dired-compress arg 'compress (diredp-fewer-than-2-files-p arg)))
+
+
+;; REPLACE ORIGINAL in `dired-aux.el'.
+;;
+;; 1. Redisplay only if at most one file is being treated.
+;; 2. Doc string reflects `Dired+'s version of `dired-map-over-marks-check'.
+;;
+;;;###autoload
+(defun dired-do-byte-compile (&optional arg) ; Bound to `B'
+  "Byte compile marked Emacs Lisp files.
+A prefix argument ARG specifies files to use instead of those marked.
+ * An integer means use the next ARG files (previous -ARG, if < 0).
+ * Two or more `C-u' (e.g. `C-u C-u') means ignore any marks and use
+   all files in the Dired buffer.
+ * Any other prefix arg means use the current file."
+  (interactive (let* ((arg  current-prefix-arg)
+                      (C-u  (and (consp arg)  arg)))
+                 (when (and C-u  (> (prefix-numeric-value arg) 16)) (setq arg  '(16)))
+                 (list arg)))
+  (dired-map-over-marks-check #'dired-byte-compile arg 'byte-compile
+                              (diredp-fewer-than-2-files-p arg)))
+
+
+;; REPLACE ORIGINAL in `dired-aux.el'.
+;;
+;; 1. Redisplay only if at most one file is being treated.
+;; 2. Doc string reflects `Dired+' version of `dired-map-over-marks-check'.
+;;
+;;;###autoload
+(defun dired-do-load (&optional arg)    ; Bound to `L'
+  "Load the marked Emacs Lisp files.
+A prefix argument ARG specifies files to use instead of those marked.
+ * An integer means use the next ARG files (previous -ARG, if < 0).
+ * Two or more `C-u' (e.g. `C-u C-u') means ignore any marks and use
+   all files in the Dired buffer.
+ * Any other prefix arg means use the current file."
+  (interactive (let* ((arg  current-prefix-arg)
+                      (C-u  (and (consp arg)  arg)))
+                 (when (and C-u  (> (prefix-numeric-value arg) 16)) (setq arg  '(16)))
+                 (list arg)))
+  (dired-map-over-marks-check #'dired-load arg 'load (diredp-fewer-than-2-files-p arg)))
+
+
+(when (fboundp 'multi-isearch-files)
+
+  ;; REPLACE ORIGINAL in `dired.el':
+  ;;
+  ;; 1. Added optional arg ARG, so you can act on next ARG files or on all files.
+  ;; 2. Added optional arg INTERACTIVEP.
+  ;; 3. Do not raise error if no files when not INTERACTIVEP.
+  ;;
+  (defun dired-do-isearch (&optional arg interactivep)
+    "Search for a string through all marked files using Isearch.
+A prefix argument ARG specifies files to use instead of those marked.
+ * An integer means use the next ARG files (previous -ARG, if < 0).
+ * Two or more `C-u' (e.g. `C-u C-u') means ignore any marks and use
+   all files in the Dired buffer.
+ * Any other prefix arg means use the current file.
+When invoked interactively, raise an error if no files are marked."
+    (interactive (let* ((arg  current-prefix-arg)
+                        (C-u  (and (consp arg)  arg)))
+                   (when (and C-u  (> (prefix-numeric-value arg) 16)) (setq arg  '(16)))
+                   (list arg t)))
+    (multi-isearch-files (dired-get-marked-files nil arg 'dired-nondirectory-p nil interactivep)))
+
+
+  ;; REPLACE ORIGINAL in `dired.el':
+  ;;
+  ;; 1. Added optional arg ARG, so you can act on next ARG files or on all files.
+  ;; 2. Added optional arg INTERACTIVEP.
+  ;; 3. Do not raise error if no files when not INTERACTIVEP.
+  ;;
+  (defun dired-do-isearch-regexp (&optional arg interactivep)
+    "Search for a regexp through all marked files using Isearch.
+A prefix arg behaves as follows:
+ * An integer means use the next ARG files (previous -ARG, if < 0).
+ * Two or more `C-u' (e.g. `C-u C-u') means ignore any marks and use
+   all files in the Dired buffer.
+ * Any other prefix arg means use the current file.
+When invoked interactively, raise an error if no files are marked."
+    (interactive (let* ((arg  current-prefix-arg)
+                        (C-u  (and (consp arg)  arg)))
+                   (when (and C-u  (> (prefix-numeric-value arg) 16)) (setq arg  '(16)))
+                   (list arg t)))
+    (multi-isearch-files-regexp (dired-get-marked-files nil arg 'dired-nondirectory-p nil interactivep)))
+
+  )
+
+
+;; REPLACE ORIGINAL in `dired-aux.el':
+;;
+;; 1. Added optional arg ARG, so you can act on next ARG files or on all files.
+;; 2. Added optional arg INTERACTIVEP.
+;; 3. Do not raise error if no files when not INTERACTIVEP.
+;;
+;;;###autoload
+(defun dired-do-search (regexp &optional arg interactivep)
+  "Search through all marked files for a match for REGEXP.
+Stops when a match is found.
+To continue searching for next match, use command \\[tags-loop-continue].
+
+A prefix arg behaves as follows:
+ * An integer means use the next ARG files (previous -ARG, if < 0).
+ * Two or more `C-u' (e.g. `C-u C-u') means ignore any marks and use
+   all files in the Dired buffer.
+ * Any other prefix arg means use the current file.
+
+When invoked interactively, raise an error if no files are marked."
+  (interactive (let* ((arg  current-prefix-arg)
+                      (C-u  (and (consp arg)  arg)))
+                 (when (and C-u  (> (prefix-numeric-value arg) 16)) (setq arg  '(16)))
+                 (list (diredp-read-regexp "Search marked files (regexp): ")
+                       arg
+                       t)))
+  (tags-search regexp `(dired-get-marked-files nil ',arg 'dired-nondirectory-p nil ,interactivep)))
+
+
+;; REPLACE ORIGINAL in `dired-aux.el':
+;;
+;; 1. Added optional arg ARG, so you can act on next ARG files or on all files.
+;; 2. Added optional arg INTERACTIVEP.
+;; 3. Do not raise error if no files when not INTERACTIVEP.
+;;
+;;;###autoload
+(defun dired-do-query-replace-regexp (from to &optional arg interactivep)
+  "Do `query-replace-regexp' of FROM with TO, on all marked files.
+NOTE: A prefix arg for this command acts differently than for other
+commands, so that you can use it to request word-delimited matches.
+
+With a prefix argument:
+ * An odd number of plain `C-u': act on the marked files, but replace
+   only word-delimited matches.
+ * More than one plain `C-u': act on all files, ignoring whether any
+   are marked.
+ * Any other prefix arg: Act on the next numeric-prefix files.
+
+So for example:
+ * `C-u C-u C-u': act on all files, replacing word-delimited matches.
+ * `C-u 4': act on the next 4 files.  `C-4' means the same thing.
+ * `C-u': act on the marked files, replacing word-delimited matches.
+
+When invoked interactively, raise an error if no files are marked.
+
+If you exit (\\[keyboard-quit], RET or q), you can resume the query replace
+with the command \\[tags-loop-continue]."
+  (interactive (let ((common  (query-replace-read-args "Query replace regexp in marked files" t t)))
+                 (list (nth 0 common)
+                       (nth 1 common)
+                       current-prefix-arg
+                       t)))
+  (let* ((argnum     (and (consp arg)  (prefix-numeric-value arg)))
+         (delimited  (and argnum  (eq (logand (truncate (log argnum 4)) 1) 1))) ; Odd number of plain `C-u'.
+         (all        (and argnum  (> argnum 4))) ; At least 3 plain `C-u'.
+         (dgmf-arg   (dired-get-marked-files nil
+                                             (if (and arg  (atom arg)) (abs arg) (and all  '(16)))
+                                             'dired-nondirectory-p
+                                             nil
+                                             interactivep)))
+    (dolist (file  dgmf-arg)
+      (let ((buffer  (get-file-buffer file)))
+        (when (and buffer  (with-current-buffer buffer buffer-read-only))
+          (error "File `%s' is visited read-only" file))))
+    (tags-query-replace from to delimited `',dgmf-arg)))
+
+
+(when (fboundp 'xref-collect-matches)   ; Emacs 25+
+
+
+  ;; REPLACE ORIGINAL in `dired-aux.el':
+  ;;
+  ;; 1. Added optional arg ARG, so you can act on next ARG files or on all files.
+  ;; 2. Added optional arg INTERACTIVEP.
+  ;; 3. Do not raise error if no files when not INTERACTIVEP.
+  ;;
+  (defun dired-do-find-regexp (regexp &optional arg interactivep)
+    "Find all matches for REGEXP in all marked files.
+For any marked directory, all of its files are searched recursively.
+However, files matching `grep-find-ignored-files' and subdirectories
+matching `grep-find-ignored-directories' are skipped in the marked
+directories.
+
+A prefix arg behaves as follows:
+ * An integer means use the next ARG files (previous -ARG, if < 0).
+ * Two or more `C-u' (e.g. `C-u C-u') means ignore any marks and use
+   all files in the Dired buffer.
+ * Any other prefix arg means use the current file.
+
+When invoked interactively, raise an error if no files are marked.
+
+REGEXP should use constructs supported by your local `grep' command."
+    (interactive (let* ((arg  current-prefix-arg)
+                        (C-u  (and (consp arg)  arg)))
+                   (when (and C-u  (> (prefix-numeric-value arg) 16)) (setq arg  '(16)))
+                   (list (diredp-read-regexp "Search marked files (regexp): ")
+                         arg
+                         t)))
+    (require 'grep)
+    (defvar grep-find-ignored-files)
+    (defvar grep-find-ignored-directories)
+    (let* ((files    (dired-get-marked-files nil arg nil nil interactivep))
+           (ignores  (nconc (mapcar (lambda (s) (concat s "/")) grep-find-ignored-directories)
+                            grep-find-ignored-files))
+           (xrefs    (mapcan (lambda (file)
+                               (xref-collect-matches
+                                regexp "*" file (and (file-directory-p file)  ignores)))
+                             files)))
+      (if xrefs
+          (xref--show-xrefs xrefs nil t)
+        (when interactivep (diredp-user-error "No matches for: %s" regexp)))))
+
+
+  ;; REPLACE ORIGINAL in `dired-aux.el':
+  ;;
+  ;; 1. Added optional arg ARG, so you can act on next ARG files or on all files.
+  ;; 2. Added optional arg INTERACTIVEP.
+  ;; 3. Do not raise error if no files when not INTERACTIVEP.
+  ;;
+;;;###autoload
+  (defun dired-do-find-regexp-and-replace (from to &optional arg interactivep)
+    "Replace matches of FROM with TO, in all marked files.
+For any marked directory, matches in all of its files are replaced,
+recursively.  However, files matching `grep-find-ignored-files'
+and subdirectories matching `grep-find-ignored-directories' are skipped
+in the marked directories.
+
+A prefix arg behaves as follows:
+ * An integer means use the next ARG files (previous -ARG, if < 0).
+ * Two or more `C-u' (e.g. `C-u C-u') means ignore any marks and use
+   all files in the Dired buffer.
+ * Any other prefix arg means use the current file.
+
+When invoked interactively, raise an error if no files are marked.
+
+REGEXP should use constructs supported by your local `grep' command."
+    (interactive (let ((common  (query-replace-read-args "Query replace regexp in marked files" t t))
+                       (arg     current-prefix-arg)
+                       (C-u     (and (consp arg)  arg)))
+                   (when (and C-u  (> (prefix-numeric-value arg) 16)) (setq arg  '(16)))
+                   (list (nth 0 common)
+                         (nth 1 common)
+                         arg
+                         t)))
+    (with-current-buffer (dired-do-find-regexp from arg interactivep)
+      (xref-query-replace-in-results from to)))
+
+  )
+
+;;;###autoload
+(defun diredp-do-grep (command-args)    ; Bound to `C-M-G'
+  "Run `grep' on marked (or next prefix arg) files.
+A prefix argument behaves according to the ARG argument of
+`dired-get-marked-files'.  In particular, `C-u C-u' operates on all
+files in the Dired buffer."
+  (interactive (progn (unless (if (< emacs-major-version 22)
+                                  grep-command
+                                (and grep-command  (or (not grep-use-null-device)  (eq grep-use-null-device t))))
+                        (grep-compute-defaults))
+                      (list (diredp-do-grep-1))))
+  (grep command-args))
+
+;; Optional arg FILES is no longer used.  It was used in `diredp-do-grep' before the
+;; new `dired-get-marked-files'.
+(defun diredp-do-grep-1 (&optional files)
+  "Helper function for `diredp-do-grep'.
+Non-nil optional arg FILES are the files to grep, overriding the files
+choice described for `diredp-do-grep'."
+  (let ((default  (and (fboundp 'grep-default-command)
+                       (if (fboundp 'grepp-default-regexp-fn) ; In `grep+.el'.
+                           (grep-default-command (funcall (grepp-default-regexp-fn)))
+                         (grep-default-command)))))
+    (read-from-minibuffer
+     "grep <pattern> <files> :  "
+     (let ((up-to-files  (concat grep-command "   ")))
+       (cons (concat up-to-files
+                     (mapconcat #'identity
+                                (or files  (mapcar 'shell-quote-argument
+                                                   (dired-get-marked-files nil current-prefix-arg)))
+                                " "))
+             (- (length up-to-files) 2)))
+     nil nil 'grep-history default)))
+
+(when (memq system-type '(windows-nt ms-dos))
+  (define-derived-mode diredp-w32-drives-mode fundamental-mode "Drives"
+    "Mode for Dired buffer listing MS Windows drives (local or remote)."
+    (setq buffer-read-only  t)))
+
+;; The next two commands were originally taken from Emacs Wiki, page WThirtyTwoBrowseNetDrives:
+;; https://www.emacswiki.org/emacs/WThirtyTwoBrowseNetDrives.  They are referred to there as
+;; commands `show-net-connections' and `netdir'.  I am hoping that the contributor (anonymous)
+;; does not mind my adapting them and including them in `Dired+'.
+
+(when (memq system-type '(windows-nt ms-dos))
+  (defun diredp-w32-list-mapped-drives () ; Not bound
+    "List network connection information for shared MS Windows resources.
+This just invokes the Windows `NET USE' command."
+    (interactive)
+    (shell-command "net use")
+    (display-buffer "*Shell Command Output*")))
+
+(when (memq system-type '(windows-nt ms-dos))
+  (defun diredp-w32-drives (&optional other-window-p) ; Bound to `:/'
+    "Visit a list of MS Windows drives for use by Dired.
+With a prefix argument use another window for the list.
+In the list, use `mouse-2' or `RET' to open Dired for a given drive.
+
+The drives listed are the remote drives currently available, as
+determined by the Windows command `NET USE', plus the local drives
+specified by option `diredp-w32-local-drives', which you can
+customize.
+
+Note: When you are in Dired at the root of a drive (e.g. directory
+      `C:/'), command `diredp-up-directory' invokes this command.
+      So you can use `\\[diredp-up-directory]' to go up to the list of drives."
+    (interactive "P")
+    (require 'widget)
+    (let ((drive              (copy-sequence diredp-w32-local-drives))
+          (inhibit-read-only  t))
+      (with-temp-buffer
+        (insert (shell-command-to-string "net use"))
+        (goto-char (point-min))
+        (while (re-search-forward "[A-Z]: +\\\\\\\\[^ ]+" nil t nil)
+          (setq drive  (cons (split-string (match-string 0)) drive))))
+      (if other-window-p
+          (pop-to-buffer "*Windows Drives*")
+        (if (fboundp 'pop-to-buffer-same-window)
+            (pop-to-buffer-same-window "*Windows Drives*")
+          (switch-to-buffer "*Windows Drives*")))
+      (erase-buffer)
+      (widget-minor-mode 1)
+      (dolist (drv  (sort drive (lambda (a b) (string-lessp (car a) (car b)))))
+        (lexical-let ((drv  drv))
+          (widget-create 'push-button
+                         :notify (lambda (widget &rest ignore) (dired (car drv)))
+                         (concat (car drv) "  " (cadr drv))))
+        (widget-insert "\n"))
+      (goto-char (point-min))
+      (diredp-w32-drives-mode))))
+
+;; $$$$$$ NO LONGER USED.  Was used in `diredp-do-grep(-1)' before new `dired-get-marked-files'.
+(defun diredp-all-files ()
+  "List of all files shown in current Dired buffer.
+Directories are not included."
+  (let ((pos    (make-marker))
+        (files  ())
+        file)
+    (save-excursion
+      (goto-char (point-min)) (beginning-of-line)
+      (while (not (eobp))
+        (beginning-of-line)
+        (while (and (not (eobp))  (dired-between-files))  (forward-line 1))
+        (save-excursion (forward-line 1) (move-marker pos (1+ (point))))
+        (setq file  (dired-get-filename nil t)) ; Non-nil second arg means "also . and ..".
+        (when file                      ; Remove directory portion if in same directory.
+          (setq file  (dired-get-filename (dired-in-this-tree file default-directory) t)))
+        (unless (or (not file)  (file-directory-p file))  (push file files))
+        (goto-char pos))
+      (move-marker pos nil))
+    (setq files  (sort files (if (and (featurep 'ls-lisp)
+                                      (not (symbol-value 'ls-lisp-use-insert-directory-program)))
+                                 'ls-lisp-string-lessp
+                               (if case-fold-search
+                                   (lambda (s1 s2) (string-lessp (upcase s1) (upcase s2)))
+                                 'string-lessp))))))
+
+(when (fboundp 'read-char-choice)       ; Emacs 24+
+
+
+  ;; REPLACE ORIGINAL in `dired-aux.el'
+  ;;
+  ;; `l' lists the files involved and prompts again.
+  ;;
+  (defun dired-query (sym prompt &rest args)
+    "Format PROMPT with ARGS, query user, and store the result in SYM.
+The return value is either nil or t.
+
+The user can type:
+ `y' or `SPC' to accept once
+ `n' or `DEL' to skip once
+ `!' to accept this and subsequent queries
+ `l' list the files, showing details per `diredp-list-file-attributes'
+ `q' or `ESC' to decline this and subsequent queries
+
+If SYM is already bound to a non-nil value, this function may return
+automatically without querying the user.  If SYM is `!', return t; if
+SYM is `q' or ESC, return nil."
+    (let* ((char            (symbol-value sym))
+           (char-choices    '(?y ?\   ?n ?\177 ?! ?l ?q ?\e)) ; Use ?\  , not ?\s, for Emacs 20 byte-compiler.
+           (list-buf        (generate-new-buffer-name "*Files*"))
+           (list-was-shown  nil))
+      (unwind-protect
+           (cond ((eq char ?!) t)       ; Accept, and don't ask again.
+                 ((memq char '(?q ?\e)) nil) ; Skip, and don't ask again.
+                 (t                     ; No previous answer - ask now
+                  (setq prompt  (concat (apply (if (fboundp 'format-message) #'format-message #'format)
+                                               prompt
+                                               args)
+                                        (if help-form
+                                            (format " [Type ynlq! or %s] " (key-description (vector help-char)))
+                                          " [Type y, n, l, q or !] ")))
+                  (set sym (setq char  (read-char-choice prompt char-choices)))
+                  (when (eq char ?l)    ; List files and prompt again.
+                    (diredp-list-files args nil nil nil diredp-list-file-attributes)
+                    (set sym (setq char  (read-char-choice prompt char-choices))))
+                  (and (memq char '(?y ?\   ?!))  t))) ; Use ?\  , not ?\s, for Emacs 20.
+        (when (get-buffer list-buf)
+          (save-window-excursion
+            (pop-to-buffer list-buf)
+            (condition-case nil         ; Ignore error if user already deleted.
+                (if (one-window-p) (delete-frame) (delete-window))
+              (error nil))
+            (if list-was-shown (bury-buffer list-buf) (kill-buffer list-buf)))))))
+
+  )
+
+(unless (fboundp 'read-char-choice)     ; Emacs 20-23 (modified the Emacs 23 version).  Needs `dired-query-alist'.
+
+
+  ;; REPLACE ORIGINAL in `dired-aux.el'
+  ;;
+  ;; 1. `l' lists the files involved and prompts again.
+  ;; 2. Compatible with older Emacs versions (before Emacs 24): can use `dired-query-alist'.
+  ;;
+  (defun dired-query (qs-var qs-prompt &rest qs-args)
+    "Query user and return nil or t.
+The user can type:
+ `y' or `SPC' to accept once
+ `n' or `DEL' to skip once
+ `!' to accept this and subsequent queries
+ `l' list the files, showing details per `diredp-list-file-attributes'
+ `q' or `ESC' to decline this and subsequent queries
+
+Store answer in symbol VAR (which must initially be bound to nil).
+Format PROMPT with ARGS.
+Binding variable `help-form' will help the user who types the help key."
+    (let* ((char               (symbol-value qs-var))
+           (dired-query-alist  (cons '(?l . l) dired-query-alist))
+           (action             (cdr (assoc char dired-query-alist))))
+      (cond ((eq 'yes action) t)        ; Accept, and don't ask again.
+            ((eq 'no action) nil)       ; Skip, and don't ask again.
+            (t                          ; No lasting effects from last time we asked - ask now.
+             (let ((cursor-in-echo-area  t)
+                   (executing-kbd-macro  executing-kbd-macro)
+                   (qprompt              (concat qs-prompt
+                                                 (if help-form
+                                                     (format " [Type ynl!q or %s] "
+                                                             (key-description (char-to-string help-char)))
+                                                   " [Type y, n, l, q or !] ")))
+                   done result elt)
+               (while (not done)
+                 (apply #'message qprompt qs-args)
+                 (setq char  (set qs-var (read-event)))
+                 (when (eq char ?l)     ; List files and prompt again.
+                   (diredp-list-files qs-args nil nil nil diredp-list-file-attributes)
+                   (apply #'message qprompt qs-args)
+                   (setq char  (set qs-var (read-event))))
+                 (if (numberp char)
+                     (cond ((and executing-kbd-macro (= char -1))
+                            ;; `read-event' returns -1 if we are in a keyboard macro and there are no more
+                            ;; events in the macro.  Try to get an event interactively.
+                            (setq executing-kbd-macro  nil))
+                           ((eq (key-binding (vector char)) 'keyboard-quit) (keyboard-quit))
+                           (t (setq done  (setq elt  (assoc char dired-query-alist)))))))
+               ;; Display the question with the answer.
+               (message "%s" (concat (apply #'format qprompt qs-args) (char-to-string char)))
+               (memq (cdr elt) '(t y yes)))))))
+
+  )
+
+
+;; REPLACE ORIGINAL in `dired-aux.el'.
+;;
+;; 1. Use `diredp-this-subdir' instead of `dired-get-filename'.
+;; 2. If on a subdir listing header line or a non-dir file in a subdir listing, go to
+;;    the line for the subdirectory in the parent directory listing.
+;; 3. Fit one-window frame after inserting subdir.
+;;
+;;;###autoload
+(defun dired-maybe-insert-subdir (dirname &optional switches no-error-if-not-dir-p)
+                                        ; Bound to `i'
+  "Move to Dired subdirectory line or subdirectory listing.
+This bounces you back and forth between a subdirectory line and its
+inserted listing header line.  Using it on a non-directory line in a
+subdirectory listing acts the same as using it on the subdirectory
+header line.
+
+* If on a subdirectory line, then go to the subdirectory's listing,
+  creating it if not yet present.
+
+* If on a subdirectory listing header line or a non-directory file in
+  a subdirectory listing, then go to the line for the subdirectory in
+  the parent directory listing.
+
+* If on a non-directory file in the top Dired directory listing, do
+  nothing.
+
+Subdirectories are listed in the same position as for `ls -lR' output.
+
+With a prefix arg, you can edit the `ls' switches used for this
+listing.  Add `R' to the switches to expand the directory tree under a
+subdirectory.
+
+Dired remembers the switches you specify with a prefix arg, so
+reverting the buffer does not reset them.  However, you might
+sometimes need to reset some subdirectory switches after a
+`dired-undo'.  You can reset all subdirectory switches to the
+default value using \\<dired-mode-map>\\[dired-reset-subdir-switches].  See \
+Info node
+`(emacs)Subdir switches' for more details."
+  (interactive (list (diredp-this-subdir)
+                     (and current-prefix-arg
+                          (read-string "Switches for listing: "
+                                       (or (and (boundp 'dired-subdir-switches)  dired-subdir-switches)
+                                           dired-actual-switches)))))
+  (let ((opoint    (point))
+        (filename  dirname))
+    (cond ((consp filename)             ; Subdir header line or non-directory file.
+           (setq filename  (car filename))
+           (if (assoc filename dired-subdir-alist)
+               (dired-goto-file filename) ;  Subdir header line.
+             (dired-insert-subdir (substring (file-name-directory filename) 0 -1))))
+          (t
+           ;; We don't need a marker for opoint as the subdir is always
+           ;; inserted *after* opoint.
+           (setq dirname  (file-name-as-directory dirname))
+           (or (and (not switches)  (dired-goto-subdir dirname))
+               (dired-insert-subdir dirname switches no-error-if-not-dir-p))
+           ;; Push mark so that it's easy to go back.  Do this after the
+           ;; insertion message so that the user sees the `Mark set' message.
+           (push-mark opoint)
+           (when (and (get-buffer-window (current-buffer)) ; Fit one-window frame.
+                      (fboundp 'fit-frame-if-one-window)) ; In `autofit-frame.el'.
+             (fit-frame-if-one-window))))))
+
+(defun diredp-this-subdir ()
+  "This line's filename, if directory, or `dired-current-directory' list.
+If on a directory line, then return the directory name.
+Else return a singleton list of a directory name, which is as follows:
+  If on a subdirectory header line (either of the two lines), then use
+  that subdirectory name.  Else use the parent directory name."
+  (or (let ((file  (dired-get-filename nil t)))
+        (and file
+             (file-directory-p file)
+             (not (member (file-relative-name file (file-name-directory (directory-file-name file)))
+                          '("." ".." "./" "../")))
+             file))
+      (list (dired-current-directory))))
+
+
+;; REPLACE ORIGINAL in `dired-aux.el'
+;;
+;; 1. Added optional arg FROM, which is also listed by `l' when prompted.
+;; 2. Added missing doc string.
+;;
+(defun dired-handle-overwrite (to &optional from)
+  "Save old version of file TO that is to be overwritten.
+`dired-overwrite-confirmed' and `overwrite-backup-query' are fluid vars
+from `dired-create-files'.
+
+Optional arg FROM is a file being copied or renamed to TO.  It is used
+only when a user hits `l' to list files when asked whether to
+overwrite."
+  (let (backup)
+    (when (and dired-backup-overwrite
+               dired-overwrite-confirmed
+               (setq backup (car (find-backup-file-name to)))
+               (or (eq 'always dired-backup-overwrite)
+                   (dired-query 'overwrite-backup-query "Make backup for existing file `%s'? " to from)))
+      (rename-file to backup 0)         ; Confirm overwrite of old backup.
+      (dired-relist-entry backup))))
+
+
+(when (fboundp 'dired-copy-file-recursive) ; Emacs 22+
+
+
+  ;; REPLACE ORIGINAL in `dired-aux.el'
+  ;;
+  ;; 1. Pass also FROM to `dired-handle-overwrite', so `l' lists it too.
+  ;; 2. Added missing doc string.
+  ;;
+  (defun dired-copy-file (from to ok-if-already-exists)
+    "Copy file FROM to location TO.
+Non-nil arg OK-IF-ALREADY-EXISTS is passed to `copy-file' or
+ `make-symbolic-link'.
+Preserves the last-modified date when copying, unless
+`dired-copy-preserve-time' is nil."
+    (dired-handle-overwrite to from)
+    (dired-copy-file-recursive from to ok-if-already-exists dired-copy-preserve-time t dired-recursive-copies))
+
+
+  ;; REPLACE ORIGINAL in `dired-aux.el'
+  ;;
+  ;; 1. Pass also FROM to `dired-handle-overwrite', so `l' lists it too.
+  ;; 2. Added missing doc string.
+  ;;
+  (defun dired-copy-file-recursive (from to ok-if-already-exists &optional keep-time top recursive)
+    "Copy file FROM to location TO, handling directories in FROM recursively.
+Non-nil arg OK-IF-ALREADY-EXISTS is passed to `copy-file' or
+ `make-symbolic-link'.
+Non-nil optional arg KEEP-TIME is passed to `copy-file' or
+ `copy-directory'.
+Non-nil optional arg TOP means do not bother with `dired-handle-overwrite'.
+Non-nil optional arg RECURSIVE means recurse on any directories in
+ FROM, after confirmation if RECURSIVE is not `always'."
+    (when (and (eq t (car (file-attributes from)))  (file-in-directory-p to from))
+      (error "Cannot copy `%s' into its subdirectory `%s'" from to))
+    (let ((attrs  (file-attributes from)))
+      (if (and recursive
+               (eq t (car attrs))
+               (or (eq recursive 'always)  (yes-or-no-p (format "Recursive copies of %s? " from))))
+          (copy-directory from to keep-time)
+        (or top  (dired-handle-overwrite to from))
+        (condition-case err
+            (if (stringp (car attrs))   ; It is a symlink
+                (make-symbolic-link (car attrs) to ok-if-already-exists)
+              (copy-file from to ok-if-already-exists keep-time))
+          (file-date-error
+           (push (dired-make-relative from) dired-create-files-failures)
+           (dired-log "Can't set date on %s:\n%s\n" from err))))))
+
+  )
+
+
+;; REPLACE ORIGINAL in `dired-aux.el'
+;;
+;; 1. Pass also FILE to `dired-handle-overwrite', so `l' lists it too.
+;; 2. Added missing doc string.
+;;
+(defun dired-rename-file (file newname ok-if-already-exists)
+  "Rename FILE to NEWNAME.
+Non-nil arg OK-IF-ALREADY-EXISTS is passed to `rename-file'."
+  (dired-handle-overwrite newname file)
+  (rename-file file newname ok-if-already-exists) ; Error is caught in `-create-files'.
+  ;; Silently rename the visited file of any buffer visiting this file.
+  (and (get-file-buffer file)  (with-current-buffer (get-file-buffer file) (set-visited-file-name newname nil t)))
+  (dired-remove-file file)
+  ;; See if it's an inserted subdir, and rename that, too.
+  (dired-rename-subdir file newname))
+
+
+;; REPLACE ORIGINAL in `dired-aux.el'
+;;
+;; Pass also FILE to `dired-handle-overwrite', so `l' lists it too.
+;;
+(defun dired-hardlink (file newname &optional ok-if-already-exists)
+  "Give FILE additional name NEWNAME.
+Non-nil arg OK-IF-ALREADY-EXISTS is passed to `add-name-to-file'."
+  (dired-handle-overwrite newname file)
+  (add-name-to-file file newname ok-if-already-exists) ; Error is caught in -create-files'.
+  (dired-relist-file file))             ; Update the link count.
+
+
+;; REPLACE ORIGINAL in `dired.el'.
+;;
+;; No-op: does nothing now.
+;;
+(defun dired-insert-subdir-validate (dirname &optional switches))
+
+
+;;; $$$$$$$$
+;;; ;; REPLACE ORIGINAL in `dired-aux.el'.
+;;; ;;
+;;; ;; 1. Do not require that DIRNAME be in the current directory tree (no error if not).
+;;; ;; 2. Use `dolist' instead of `mapcar'.
+;;; ;;
+;;; (defun dired-insert-subdir-validate (dirname &optional switches)
+;;;   "Raise an error if it is invalid to insert DIRNAME with SWITCHES."
+;;; ;;; (or (dired-in-this-tree dirname (expand-file-name default-directory)) ; REMOVED
+;;; ;;;     (error  "%s: not in this directory tree" dirname))
+;;;   (let ((real-switches  (or switches  (and (boundp 'dired-subdir-switches) ; Emacs 22+
+;;;                                            dired-subdir-switches))))
+;;;     (when real-switches
+;;;       (let (case-fold-search)
+;;;         (dolist (switchs  '("F" "b"))   ; Switches that matter for `dired-get-filename'.
+;;;           (unless (eq (null (diredp-string-match-p switchs real-switches))
+;;;                       (null (diredp-string-match-p switchs dired-actual-switches)))
+;;;             (error "Can't have dirs with and without `-%s' switches together" switchs)))))))
+
+
+;; REPLACE ORIGINAL in `dired-aux.el'.
+;;
+;; If NEW-DIR is not a descendant of a directory in the buffer, put it at eob.
+;;
+(defun dired-insert-subdir-newpos (new-dir)
+  "Move to the proper position for inserting NEW-DIR, and return it.
+Respect the order within each directory tree.  But if NEW-DIR is not a
+descendant of any directory in the buffer, then put it at the end."
+  (let ((alist  dired-subdir-alist)
+        elt dir new-pos)
+    (while alist
+      (setq elt    (car alist)
+            alist  (cdr alist)
+            dir    (car elt))
+      (if (dired-tree-lessp dir new-dir)
+          (setq new-pos  (dired-get-subdir-max elt) ; Position NEW-DIR after DIR.
+                alist    ())
+        (setq new-pos  (point-max))))
+    (goto-char new-pos))
+  (unless (eobp) (forward-line -1))
+  (insert "\n")
+  (point))
+
+
+;; This is like original `dired-hide-subdir' in `dired-aux.el', except:
+;;
+;; 1. Plain prefix arg means invoke `dired-hide-all'.  Added optional arg NEXT.
+;; 2. Do not move to the next subdir.
+;; 3. Modified to work with also with older Emacs versions.
+;;
+(defun diredp-hide-subdir-nomove (arg &optional next)
+  "Hide or unhide the current directory.
+Unlike `dired-hide-subdir', this does not advance the cursor to the
+next directory header line.
+
+With a plain prefix arg (`C-u'), invoke `dired-hide-all' to hide or
+ show everything.
+With a numeric prefix arg N, hide this subdirectory and the next N-1
+ subdirectories."
+  (interactive "P")
+  (dired-hide-check)
+  (if (consp arg)
+      (dired-hide-all 'IGNORED)         ; Arg needed for older Emacs versions.
+    (setq arg  (prefix-numeric-value arg))
+    (let ((modflag  (buffer-modified-p)))
+      (while (>=  (setq arg  (1- arg)) 0)
+        (let* ((cur-dir   (dired-current-directory))
+               (hidden-p  (dired-subdir-hidden-p cur-dir))
+               (elt       (assoc cur-dir dired-subdir-alist))
+               (end-pos   (1- (dired-get-subdir-max elt)))
+               buffer-read-only)
+          (goto-char (dired-get-subdir-min elt)) ; Keep header line visible, hide rest
+          (skip-chars-forward "^\n\r")
+          (if hidden-p
+              (subst-char-in-region (point) end-pos ?\r ?\n)
+            (subst-char-in-region (point) end-pos ?\n ?\r)))
+        (when next (dired-next-subdir 1 t)))
+      (if (fboundp 'restore-buffer-modified-p)
+          (restore-buffer-modified-p modflag)
+        (set-buffer-modified-p modflag)))))
+
+;;; ----------------------
+;;; If we instead renamed `diredp-hide-subdir-nomove' to `dired-hide-subdir' as a replacement,
+;;; then we would define things this way:
+;;;
+;;;
+;;; ;; REPLACE ORIGINAL in `dired-aux.el'.
+;;; ;;
+;;; ;; 1. Plain prefix arg means invoke `dired-hide-all'.  Added optional arg NEXT.
+;;; ;;
+;;; ;; 2. Do not move to the next subdir.
+;;; ;;
+;;; ;; 3. Modified to work with also with older Emacs versions.
+;;; ;;
+;;; (defun dired-hide-subdir (arg &optional next)
+;;;   "Hide or unhide the current directory.
+;;; Unlike `diredp-hide-subdir-goto-next', this does not advance the
+;;; cursor to the next directory header line.
+;;;
+;;; With a plain prefix arg (`C-u'), invoke `dired-hide-all' to hide or
+;;;  show everything.
+;;; With a numeric prefix arg N, hide this subdirectory and the next N-1
+;;;  subdirectories."
+;;;   (interactive "P")
+;;;   (dired-hide-check)
+;;;   (if (consp arg)
+;;;       (dired-hide-all 'IGNORED)         ; Arg needed for older Emacs versions.
+;;;     (setq arg  (prefix-numeric-value arg))
+;;;     (let ((modflag  (buffer-modified-p)))
+;;;       (while (>=  (setq arg  (1- arg)) 0)
+;;;         (let* ((cur-dir   (dired-current-directory))
+;;;                (hidden-p  (dired-subdir-hidden-p cur-dir))
+;;;                (elt       (assoc cur-dir dired-subdir-alist))
+;;;                (end-pos   (1- (dired-get-subdir-max elt)))
+;;;                buffer-read-only)
+;;;           (goto-char (dired-get-subdir-min elt)) ; Keep header line visible, hide rest
+;;;           (skip-chars-forward "^\n\r")
+;;;           (if hidden-p
+;;;               (subst-char-in-region (point) end-pos ?\r ?\n)
+;;;             (subst-char-in-region (point) end-pos ?\n ?\r)))
+;;;         (when next (dired-next-subdir 1 t)))
+;;;       (if (fboundp 'restore-buffer-modified-p)
+;;;           (restore-buffer-modified-p modflag)
+;;;         (set-buffer-modified-p modflag)))))
+;;;
+;;; (defun diredp-hide-subdir-goto-next (arg)
+;;;   "Hide or unhide current directory and move to next directory header line."
+;;;   (interactive "P")
+;;;   (dired-hide-subdir arg 'NEXT))
+;;; ----------------------
+
+
+;; REPLACE ORIGINAL in `dired-x.el'.
+;;
+;; Fix the `interactive' spec.  This is the Emacs 24+ version, provided for earlier versions.
+;;
+(unless (> emacs-major-version 23)
+  (defun dired-mark-unmarked-files (regexp msg &optional unflag-p localp)
+    "Mark unmarked files matching REGEXP, displaying MSG.
+REGEXP is matched against the entire file name.  When called
+interactively, prompt for REGEXP.
+With prefix argument, unflag all those files.
+
+Non-interactively:
+ Returns t if any work was done, nil otherwise.
+ Optional fourth argument LOCALP is as in `dired-get-filename'."
+    (interactive (list (diredp-read-regexp "Mark unmarked files matching regexp (default all): ")
+                       nil
+                       current-prefix-arg
+                       nil))
+    (let ((dired-marker-char  (if unflag-p ?\   dired-marker-char))
+          (unmarkedp          (eq (char-after) ?\   )))
+      (diredp-mark-if (and (if unflag-p (not unmarkedp) unmarkedp) ; Fixes Emacs bug #27465.
+                           (let ((fn  (dired-get-filename localp 'NO-ERROR))) ; Uninteresting
+                             (and fn  (diredp-string-match-p regexp fn))))
+                      msg))))
+
+
+;; REPLACE ORIGINAL in `dired-x.el'.
+;;
+;; 1. Call `dired-get-marked-files' with original ARG, to get its multi-`C-u' behavior.
+;; 2. Doc string updated to reflect change to `dired-simultaneous-find-file'.
+;; 3. Added optional arg INTERACTIVEP.
+;; 4. Do not raise error if no files when not INTERACTIVEP.
+;;
+;;;###autoload
+(defun dired-do-find-marked-files (&optional arg interactivep) ; Bound to `F'
+  "Find marked files, displaying all of them simultaneously.
+With no prefix argument:
+
+* If `pop-up-frames' is nil then split the current window across all
+  marked files, as evenly as possible.  Remaining lines go to the
+  bottom-most window.  The number of files that can be displayed this
+  way is restricted by the height of the current window and
+  `window-min-height'.
+
+* If `pop-up-frames' is non-nil then show each marked file in a
+  separate frame (not window).
+
+With a prefix argument:
+
+* One or more plain `C-u' behaves as for `dired-get-marked-files'.
+  In particular, `C-u C-u' means ignore any markings and operate on
+  ALL files and directories (except `.' and `..') in the Dired buffer.
+
+* A numeric prefix arg >= 0 means just find (visit) the marked files -
+  do not show them.
+
+* A numeric prefix arg < 0 means show each marked file in a separate
+  frame (not window).  (This is the same behavior as no prefix arg
+  with non-nil `pop-up-frames'.)
+
+Note that a numeric prefix argument acts differently with this command
+than it does with other `dired-do-*' commands: it does NOT act on the
+next or previous (abs ARG) files, ignoring markings.
+
+To keep the Dired buffer displayed, split the window (e.g., `C-x 2')
+first.  To show only the marked files, type `\\[delete-other-windows]' first.
+
+When invoked interactively, raise an error if no files are marked."
+  (interactive "P\np")
+  (dired-simultaneous-find-file
+   (dired-get-marked-files nil (and (consp arg)  arg) nil nil interactivep)
+   (and arg  (prefix-numeric-value arg))))
+
+
+;; REPLACE ORIGINAL in `dired-x.el'.
+;;
+;; Use separate frames instead of windows if `pop-up-frames' is non-nil,
+;; or if prefix arg is negative.
+;;
+(defun dired-simultaneous-find-file (file-list option)
+  "Visit all files in list FILE-LIST and display them simultaneously.
+With non-nil OPTION >= 0, the files are found (visited) but not shown.
+
+If `pop-up-frames' is non-nil or if OPTION < 0, use a separate frame
+for each file.  (See also option `diredp-max-frames'.)
+
+Otherwise, the current window is split across all files in FILE-LIST,
+as evenly as possible.  Remaining lines go to the bottom-most window.
+The number of files that can be displayed this way is restricted by
+the height of the current window and the value of variable
+`window-min-height'."
+  ;; This is not interactive because it is usually too clumsy to specify FILE-LIST interactively unless via dired.
+  (let (size)
+    (cond ((and option  (natnump option))
+           (while file-list (find-file-noselect (car file-list)) (pop file-list)))
+          ((or pop-up-frames  option)
+           (let ((nb-files  (length file-list)))
+             (when (and (> nb-files diredp-max-frames)
+                        (not (y-or-n-p (format "Really show %d files in separate frames? " nb-files))))
+               (error "OK, canceled"))
+             (while file-list (find-file-other-frame (car file-list)) (pop file-list))))
+          (t
+           (setq size  (/ (window-height) (length file-list)))
+           (when (> window-min-height size) (error "Too many files to show simultaneously"))
+           (find-file (car file-list))
+           (pop file-list)
+           (while file-list
+             ;; Vertically split off a window of desired size. Upper window will have SIZE lines.
+             ;; Select lower (larger) window.  We split it again.
+             (select-window (split-window nil size))
+             (find-file (car file-list))
+             (pop file-list))))))
+
+
+;;;;;; REPLACE ORIGINAL in both `dired.el' and `dired-x.el':
+;;;;;;
+;;;;;; 1. This incorporates the `dired-x.el' change to the `dired.el'
+;;;;;;    definition.  This version works with or without using dired-x.
+;;;;;;    The `dired-x.el' version respects the var `dired-find-subdir'.
+;;;;;;    When `dired-find-subdir' is non-nil, this version is the same
+;;;;;;    as the `dired-x.el' version, except that a bug is corrected:
+;;;;;;    Whenever the argument to `dired-find-buffer-nocreate' is a cons,
+;;;;;;    the call to `dired-buffers-for-dir' gave a wrong type error.
+;;;;;;    This has been avoided by not respecting `dired-find-subdir'
+;;;;;;    whenever `dired-find-buffer-nocreate' is a cons.
+;;;;;;    For the case when `dired-find-subdir' is nil, see #2, below.
+;;;;;;
+;;;;;; 2. Unless `dired-find-subdir' is bound and non-nil:
+;;;;;;    If both DIRNAME and `dired-directory' are conses, then only
+;;;;;;    compare their cars (directories), not their explicit file lists
+;;;;;;    too.  If equal, then update `dired-directory's file list to that
+;;;;;;    of DIRNAME.
+;;;;;;
+;;;;;;    This prevents `dired-internal-noselect' (which is currently
+;;;;;;    `dired-find-buffer-nocreate's only caller) from creating a new
+;;;;;;    buffer in this case whenever a different set of files is present
+;;;;;;    in the cdr of DIRNAME and DIRNAME represents the same buffer as
+;;;;;;    `dired-directory'.
+;;;;;;
+;;;;;;    If only one of DIRNAME and `dired-directory' is a cons, then
+;;;;;;    this returns nil.
+;;;;;;;###autoload
+;;;;(defun dired-find-buffer-nocreate (dirname &optional mode)
+;;;;  (let ((atomic-dirname-p  (atom dirname)))
+;;;;    (if (and (boundp 'dired-find-subdir) dired-find-subdir atomic-dirname-p)
+;;;;        ;; This is the `dired-x.el' change:
+;;;;        (let* ((cur-buf (current-buffer))
+;;;;               (buffers (nreverse (dired-buffers-for-dir dirname)))
+;;;;               (cur-buf-matches (and (memq cur-buf buffers)
+;;;;                                     ;; Files list (wildcards) must match, too:
+;;;;                                     (equal dired-directory dirname))))
+;;;;          (setq buffers  (delq cur-buf buffers)) ; Avoid using same buffer---
+;;;;          (or (car (sort buffers (function dired-buffer-more-recently-used-p)))
+;;;;              (and cur-buf-matches cur-buf))) ; ---unless no other possibility.
+;;;;      ;; Comment from `dired.el':
+;;;;      ;;  This differs from `dired-buffers-for-dir' in that it doesn't consider
+;;;;      ;;  subdirs of `default-directory' and searches for the first match only.
+;;;;      (let ((blist dired-buffers)       ; was (buffer-list)
+;;;;            found)
+;;;;        (or mode (setq mode  'dired-mode))
+;;;;        (while blist
+;;;;          (if (null (buffer-name (cdr (car blist))))
+;;;;              (setq blist  (cdr blist))
+;;;;            (save-excursion
+;;;;              (set-buffer (cdr (car blist)))
+;;;;              (if (not (and (eq major-mode mode)
+;;;;                            ;; DIRNAME and `dired-directory' have the same dir,
+;;;;                            ;; and if either of them has an explicit file list,
+;;;;                            ;; then both of them do.  In that case, update
+;;;;                            ;; `dired-directory's file list from DIRNAME.
+;;;;                            (if atomic-dirname-p
+;;;;                                (and (atom dired-directory) ; Both are atoms.
+;;;;                                     (string= (file-truename dirname)
+;;;;                                              (file-truename dired-directory)))
+;;;;                              (and (consp dired-directory) ; Both are conses.
+;;;;                                   (string=
+;;;;                                    (file-truename (car dirname))
+;;;;                                    (file-truename (car dired-directory)))
+;;;;                                   ;; Update `dired-directory's file list.
+;;;;                                   (setq dired-directory  dirname)))))
+;;;;                  (setq blist  (cdr blist))
+;;;;                (setq found  (cdr (car blist)))
+;;;;                (setq blist  nil)))))
+;;;;        found))))
+
+
+;; REPLACE ORIGINAL in `dired-x.el'.
+;;
+;; Require confirmation.  Fixes Emacs bug #13561.
+;;
+(defun dired-do-run-mail ()
+  "If `dired-bind-vm' is non-nil, call `dired-vm', else call `dired-rmail'."
+  (interactive)
+  (unless (y-or-n-p "Read all marked mail folders? ") (error "OK, canceled"))
+  (if dired-bind-vm
+      ;; Read mail folder using vm.
+      (dired-vm)
+    ;; Read mail folder using rmail.
+    (dired-rmail)))
+
+
+;; REPLACE ORIGINAL in `dired.el'.
+;;
+;; 1. Put `mouse-face' on whole line, not just file name.
+;; 2. Add text property `dired-filename' to only the file name.
+;; 3. Show image-file preview on mouseover, if `tooltip-mode'
+;;    and if `diredp-image-preview-in-tooltip'.
+;;
+(defun dired-insert-set-properties (beg end)
+  "Add various text properties to the lines in the region.
+Highlight entire line upon mouseover.
+Add text property `dired-filename' to the file name.
+Handle `dired-hide-details-mode' invisibility spec (Emacs 24.4+)."
+  (let ((inhibit-field-text-motion  t)) ; Just in case.
+    (save-excursion
+      (goto-char beg)
+      (while (< (point) end)
+        (condition-case nil
+            (cond ((dired-move-to-filename)
+                   (add-text-properties (line-beginning-position) (line-end-position)
+                                        '(mouse-face highlight help-echo diredp-mouseover-help))
+                   (put-text-property
+                    (point) (save-excursion (dired-move-to-end-of-filename) (point))
+                    'dired-filename t)
+                   (when (fboundp 'dired-hide-details-mode) ; Emacs 24.4+
+                     (put-text-property (+ (line-beginning-position) 1) (1- (point))
+                                        'invisible 'dired-hide-details-detail)
+                     (dired-move-to-end-of-filename)
+                     (when (< (+ (point) 4) (line-end-position))
+                       (put-text-property (+ (point) 4) (line-end-position)
+                                          'invisible 'dired-hide-details-link))))
+                  ((fboundp 'dired-hide-details-mode) ; Emacs 24.4+
+                   (unless (or (diredp-looking-at-p "^$")  (diredp-looking-at-p dired-subdir-regexp))
+                     (put-text-property (line-beginning-position) (1+ (line-end-position))
+                                        'invisible 'dired-hide-details-information))))
+          (error nil))
+        (forward-line 1)))))
+
+(defun diredp-mouseover-help (window buffer pos)
+  "Show `help-echo' help for a file name, in Dired.
+If `tooltip-mode' is on and `diredp-image-preview-in-tooltip' says to
+show an image preview, then do so.  Otherwise, show text help."
+  (let ((image-dired-thumb-width   (or (and (wholenump diredp-image-preview-in-tooltip)
+                                            diredp-image-preview-in-tooltip)
+                                       image-dired-thumb-width))
+        (image-dired-thumb-height  (or (and (wholenump diredp-image-preview-in-tooltip)
+                                            diredp-image-preview-in-tooltip)
+                                       image-dired-thumb-height))
+        file)
+    (or (and (boundp 'tooltip-mode)  tooltip-mode
+             (fboundp 'image-file-name-regexp) ; Emacs 22+, `image-file.el'.
+             diredp-image-preview-in-tooltip
+             (condition-case nil
+                 (and (with-current-buffer buffer
+                        (save-excursion (goto-char pos)
+                                        (diredp-string-match-p
+                                         (image-file-name-regexp)
+                                         (setq file  (if (derived-mode-p 'dired-mode)
+                                                         (dired-get-filename nil 'NO-ERROR)
+                                                       ;; Make it work also for `diredp-list-files' listings.
+                                                       (buffer-substring-no-properties (line-beginning-position)
+                                                                                       (line-end-position)))))))
+                      (or (not diredp-auto-focus-frame-for-thumbnail-tooltip-flag)
+                          (progn (select-frame-set-input-focus (window-frame window)) t))
+                      (let ((img-file  (if (eq 'full diredp-image-preview-in-tooltip)
+                                           file
+                                         (diredp-image-dired-create-thumb file))))
+                        (propertize " " 'display (create-image img-file))))
+               (error nil)))
+        (if (fboundp 'describe-file)    ; Library `help-fns+.el'
+            "mouse-2: visit in another window, C-h RET: describe"
+          "mouse-2: visit this file/dir in another window"))))
+
+;; `dired-hide-details-mode' enhancements.
+(when (fboundp 'dired-hide-details-mode) ; Emacs 24.4+
+
+  (defun diredp-hide-details-if-dired ()
+    "In Dired mode hide details.  Outside Dired, do nothing."
+    (when (derived-mode-p 'dired-mode) (dired-hide-details-mode 1)))
+
+  ;; Use `eval' of list so file byte-compiled in Emacs 20 will be OK in later versions.
+  (eval '(define-globalized-minor-mode global-dired-hide-details-mode
+          dired-hide-details-mode diredp-hide-details-if-dired))
+
+  (eval '(define-minor-mode dired-hide-details-mode
+          "Hide details in Dired mode."
+          (and diredp-hide-details-propagate-flag  diredp-hide-details-last-state)
+          :group 'dired
+          (unless (derived-mode-p 'dired-mode) (error "Not a Dired buffer"))
+          (dired-hide-details-update-invisibility-spec)
+          (setq diredp-hide-details-toggled  t)
+          (when diredp-hide-details-propagate-flag
+            (setq diredp-hide-details-last-state  dired-hide-details-mode))
+          (if dired-hide-details-mode
+              (add-hook 'wdired-mode-hook 'dired-hide-details-update-invisibility-spec nil t)
+            (remove-hook 'wdired-mode-hook 'dired-hide-details-update-invisibility-spec t))))
+
+  (defun diredp-hide/show-details ()
+    "Hide/show details according to user options.
+If `diredp-hide-details-propagate-flag' is non-nil and details have
+never been hidden in the buffer, then hide/show according to your last
+hide/show choice in any other Dired buffer or, if no last choice,
+according to option `diredp-hide-details-initially-flag'."
+    (unless (or diredp-hide-details-toggled ; No op if hide/show already set.
+                (buffer-narrowed-p))    ; No-op when showing just newly copied file etc.
+      (cond (diredp-hide-details-propagate-flag
+             (dired-hide-details-mode (if diredp-hide-details-last-state 1 -1)))
+            (diredp-hide-details-initially-flag
+             (dired-hide-details-mode 1)))))
+
+  (add-hook 'dired-after-readin-hook #'diredp-hide/show-details)
+
+  (defun diredp-fit-frame-unless-buffer-narrowed ()
+    "Fit frame unless Dired buffer is narrowed.
+Requires library `autofit-frame.el'."
+    (when (and (get-buffer-window (current-buffer))  (not (buffer-narrowed-p)))
+      (fit-frame-if-one-window)))
+
+  ;; Fit frame only if not narrowed.  Put it on this hook because `dired-hide-details-mode' is
+  ;; invoked from `dired-after-readin-hook' via `diredp-hide/show-details', even for an update
+  ;; such as copying a file, where buffer is narrowed when invoked.
+  (when (fboundp 'fit-frame-if-one-window) ; In `autofit-frame.el'.
+    (add-hook 'dired-hide-details-mode-hook #'diredp-fit-frame-unless-buffer-narrowed)))
+
+
+;; REPLACE ORIGINAL in `dired.el'.
+;;
+;; Reset `mode-line-process' to nil.
+;;
+(when (< emacs-major-version 21)
+  (or (fboundp 'old-dired-revert)  (fset 'old-dired-revert (symbol-function 'dired-revert)))
+  (defun dired-revert (&optional arg noconfirm)
+    (setq mode-line-process  nil)        ; Set by, e.g., `find-dired'.
+    (old-dired-revert arg noconfirm)))
+
+;; Like `dired-up-directory', but go up to MS Windows drive if in top-level directory.
+;;
+;;;###autoload
+(defun diredp-up-directory (&optional other-window) ; Bound to `^'
+  "Run Dired on parent directory of current directory.
+Find the parent directory either in this buffer or another buffer.
+Creates a buffer if necessary.
+
+With a prefix arg, Dired the parent directory in another window.
+
+On MS Windows, if you are already at the root directory, invoke
+`diredp-w32-drives' to visit a navigable list of Windows drives."
+  (interactive "P")
+  (let* ((dir  (dired-current-directory))
+         (up   (file-name-directory (directory-file-name dir))))
+    (or (dired-goto-file (directory-file-name dir))
+        ;; Only try `dired-goto-subdir' if buffer has more than one dir.
+        (and (cdr dired-subdir-alist)  (dired-goto-subdir up))
+        (progn (if other-window (dired-other-window up) (dired up))
+               (dired-goto-file dir))
+        (and (memq system-type '(windows-nt ms-dos))  (diredp-w32-drives other-window)))))
+
+;;;###autoload
+(defun diredp-up-directory-reuse-dir-buffer (&optional other-window) ; Not bound
+  "Like `diredp-up-directory', but reuse Dired buffers.
+With a prefix arg, Dired the parent directory in another window.
+
+On MS Windows, moving up from a root Dired buffer does not kill that
+buffer (the Windows drives buffer is not really a Dired buffer)."
+  (interactive "P")
+  (let* ((dir      (dired-current-directory))
+         (dirfile  (directory-file-name dir))
+         (up       (file-name-directory dirfile)))
+    (or (dired-goto-file dirfile)
+        ;; Only try `dired-goto-subdir' if buffer has more than one dir.
+        (and (cdr dired-subdir-alist)  (dired-goto-subdir up)) ; It is a subdir inserted in current Dired.
+        (progn (diredp--reuse-dir-buffer-helper up nil nil other-window)
+               (dired-goto-file dir))
+        (and (memq system-type '(windows-nt ms-dos))  (diredp-w32-drives other-window)))))
+
+;; Differs from `dired-next-line' in both wraparound and respect of `goal-column'.
+;;
+;;;###autoload
+(defun diredp-next-line (arg)           ; Bound to `SPC', `n', `C-n', `down'
+  "Move down lines then position cursor at filename.
+If `goal-column' is non-nil then put the cursor at that column.
+Optional prefix ARG says how many lines to move; default is one line.
+
+If `diredp-wrap-around-flag' is non-nil then wrap around if none is
+found before the buffer end (buffer beginning, if ARG is negative).
+Otherwise, just move to the buffer limit."
+  (interactive (let ((narg  (prefix-numeric-value current-prefix-arg)))
+                 (when (and (boundp 'shift-select-mode)  shift-select-mode) (handle-shift-selection)) ; Emacs 23+
+                 (list narg)))          ; Equivalent to "^p"
+  (let* ((line-move-visual  nil)
+         ;; (goal-column       nil)
+
+         ;; Use `condition-case' and `(progn... t)' because Emacs < 22 `line-move' has no
+         ;; NO-ERROR arg and it always returns nil.
+         (no-more           (or (not (condition-case nil (progn (line-move arg) t) (error nil)))
+                                (if (< arg 0) (bobp) (eobp)))))
+    (when (and diredp-wrap-around-flag  no-more)
+      (let ((diredp-wrap-around-flag  nil))
+        (goto-char (if (< arg 0) (point-max) (point-min)))
+        (diredp-next-line arg)))
+    ;; We never want to move point into an invisible line.
+    (while (and (fboundp 'invisible-p)  ; Emacs 22+
+                (invisible-p (point))
+                (not (if (and arg  (< arg 0)) (bobp) (eobp))))
+      (forward-char (if (and arg  (< arg 0)) -1 1)))
+    (unless goal-column (dired-move-to-filename))))
+
+;; In Emacs < 22, `C-p' does not wrap around, because it never moves to the first header line.
+;;;###autoload
+(defun diredp-previous-line (arg)       ; Bound to `p', `C-p', `up'
+  "Move up lines then position cursor at filename.
+If `goal-column' is non-nil then put the cursor at that column.
+Optional prefix ARG says how many lines to move; default is one line.
+
+If `diredp-wrap-around-flag' is non-nil then wrap around if none is
+found before the buffer beginning (buffer end, if ARG is negative).
+Otherwise, just move to the buffer limit."
+  (interactive (let ((narg  (prefix-numeric-value current-prefix-arg)))
+                 (when (and (boundp 'shift-select-mode)  shift-select-mode) (handle-shift-selection)) ; Emacs 23+
+                 (list narg)))          ; Equivalent to "^p"
+  (diredp-next-line (- (or arg  1))))
+  
+;;;###autoload
+(defun diredp-next-dirline (arg &optional opoint) ; Bound to `>'
+  "Goto ARGth next directory file line.
+If `diredp-wrap-around-flag' is non-nil then wrap around if none is
+found before the buffer beginning (buffer end, if ARG is negative).
+Otherwise, raise an error or, if NO-ERROR-IF-NOT-FOUND is nil, return
+nil."
+  (interactive (let ((narg  (prefix-numeric-value current-prefix-arg)))
+                 (when (and (boundp 'shift-select-mode)  shift-select-mode) (handle-shift-selection)) ; Emacs 23+
+                 (list narg)))          ; Equivalent to "^p"
+  (or opoint  (setq opoint  (point)))
+  (if (if (> arg 0)
+          (re-search-forward dired-re-dir nil t arg)
+        (beginning-of-line)
+        (re-search-backward dired-re-dir nil t (- arg)))
+      (dired-move-to-filename)          ; user may type `i' or `f'
+    (if diredp-wrap-around-flag
+        (let ((diredp-wrap-around-flag  nil))
+          (goto-char (if (< arg 0) (point-max) (point-min)))
+          (diredp-next-dirline arg opoint))
+      (goto-char opoint)
+      (error "No more subdirectories"))))
+
+;;;###autoload
+(defun diredp-prev-dirline (arg)        ; Bound to `<'
+  "Goto ARGth previous directory file line."
+  (interactive (let ((narg  (prefix-numeric-value current-prefix-arg)))
+                 (when (and (boundp 'shift-select-mode)  shift-select-mode) (handle-shift-selection)) ; Emacs 23+
+                 (list narg)))          ; Equivalent to "^p"
+  (diredp-next-dirline (- arg)))
+
+;;;###autoload
+(defun diredp-next-subdir (arg &optional no-error-if-not-found no-skip) ; Bound to `C-M-n'
+  "Go to the next subdirectory, regardless of level.
+If ARG = 0 then go to this directory's header line.
+
+If `diredp-wrap-around-flag' is non-nil then wrap around if none is
+found before the buffer end (buffer beginning, if ARG is negative).
+Otherwise, raise an error or, if NO-ERROR-IF-NOT-FOUND is nil, return
+nil.
+
+Non-nil NO-SKIP means do not move to end of header line, and return
+the position moved to so far."
+  (interactive (let ((narg  (prefix-numeric-value current-prefix-arg)))
+                 (when (and (boundp 'shift-select-mode)  shift-select-mode) (handle-shift-selection)) ; Emacs 23+
+                 (list narg)))          ; Equivalent to "^p"
+  (let ((this-dir  (dired-current-directory))
+        pos index)
+    ;; `nth' with negative arg does not return nil but the first element
+    (setq index  (if diredp-wrap-around-flag
+                     (mod (- (dired-subdir-index this-dir) arg) (length dired-subdir-alist))
+                   (- (dired-subdir-index this-dir) arg))
+          pos    (and (>= index 0)  (dired-get-subdir-min (nth index dired-subdir-alist))))
+    (if pos
+        (progn (goto-char pos)
+               (or no-skip  (skip-chars-forward "^\n\r"))
+               (point))
+      (if no-error-if-not-found
+          nil                           ; Return nil if not found
+        (error "%s directory" (if (> arg 0) "Last" "First"))))))
+
+;;;###autoload
+(defun diredp-prev-subdir (arg &optional no-error-if-not-found no-skip) ; Bound to `C-M-p'
+  "Go to the previous subdirectory, regardless of level.
+When called interactively and not on a subdir line, go to this subdir's line.
+Otherwise, this is a mirror image of `diredp-next-subdir'."
+  ;;(interactive "^p")
+  (interactive
+   (list (if current-prefix-arg
+             (let ((narg  (prefix-numeric-value current-prefix-arg)))
+               (when (and (boundp 'shift-select-mode)  shift-select-mode) (handle-shift-selection)) ; Emacs 23+
+               narg)                    ; Equivalent to "^p"
+           ;; If on subdir start already then do not stay there.
+           (if (dired-get-subdir) 1 0))))
+  (diredp-next-subdir (- arg) no-error-if-not-found no-skip))
+
+
+;; REPLACE ORIGINAL in `dired.el'.
+;;
+;; 1. Test also ./ and ../, in addition to . and .., for error "Cannot operate on `.' or `..'".
+;; 2. Hack for Emacs 20-22, to expand `~/...'.
+;;
+(defun dired-get-filename (&optional localp no-error-if-not-filep)
+  "In Dired, return name of file mentioned on this line.
+Value returned normally includes the directory name.
+
+Optional arg LOCALP:
+ `no-dir' means do not include directory name in result.
+ `verbatim' means  return the name exactly as it occurs in the buffer.
+ Any other non-nil value means construct the name relative to
+  `default-directory', which still might contain slashes if point is
+  in a subdirectory.
+
+Non-nil optional arg NO-ERROR-IF-NOT-FILEP means treat `.' and `..' as
+regular filenames and return nil if there is no filename on this line.
+Otherwise, an error occurs in these cases."
+  (let ((case-fold-search  nil)
+        (already-absolute  nil)
+        file p1 p2)
+    (save-excursion (when (setq p1  (dired-move-to-filename (not no-error-if-not-filep)))
+                      (setq p2  (dired-move-to-end-of-filename no-error-if-not-filep))))
+    ;; nil if no file on this line but `no-error-if-not-filep' is t:
+    (when (setq file  (and p1  p2  (buffer-substring p1 p2)))
+      ;; Get rid of the mouse-face property that file names have.
+      (set-text-properties 0 (length file) nil file)
+
+      ;; Unquote names quoted by `ls' or by `dired-insert-directory'.
+      ;; Prior to Emacs 23.3, this code was written using `read' (see commented code below),
+      ;; because that is faster than substituting \007 (4 chars) -> ^G (1 char) etc. in a loop.
+      ;; Unfortunately, that implementation required hacks such as dealing with filenames
+      ;; with quotation marks in their names.
+      (while (string-match (if (> emacs-major-version 21)
+                               "\\(?:[^\\]\\|\\`\\)\\(\"\\)" ; Shy group: Emacs 22+.
+                             "\\([^\\]\\|\\`\\)\\(\"\\)")
+                           file)
+        (setq file  (replace-match "\\\"" nil t file 1)))
+
+      ;; $$$ This was the code for that unquoting prior to Emacs 23.3:
+      ;; (setq file  (read (concat "\"" ; Some `ls -b' do not escape quotes.  But GNU `ls' is OK.
+      ;;                           (or (dired-string-replace-match
+      ;;                                "\\([^\\]\\|\\`\\)\"" file "\\1\\\\\"" nil t)
+      ;;                               file)
+      ;;                           "\"")))
+
+      ;; This sexp was added by Emacs 24, to fix bug #10469:
+      ;; Unescape any spaces escaped by `ls -b'.
+      ;; Other `-b' quotes, such as \t and \n, work transparently.
+      (when (dired-switches-escape-p dired-actual-switches)
+        (let ((start  0)
+              (rep    "")
+              (shift  -1))
+          (when (eq localp 'verbatim)  (setq rep    "\\\\"
+                                             shift  +1))
+          (while (string-match "\\(\\\\\\) " file start)
+            (setq file   (replace-match rep nil t file 1)
+                  start  (+ shift (match-end 0))))))
+
+      ;; $$$ This sexp was added by Emacs 23.3.
+      (when (memq system-type '(windows-nt ms-dos))
+        (save-match-data
+          (let ((start  0))
+            (while (string-match "\\\\" file start)
+              (aset file (match-beginning 0) ?/)
+              (setq start  (match-end 0))))))
+
+      ;; $$$ This sexp was added by Emacs 23.3.
+      ;; Hence we don't need to worry about converting `\\' back to `\'.
+      (setq file  (read (concat "\"" file "\"")))
+
+      ;; Above `read' returns a unibyte string if FILE contains eight-bit-control/graphic chars.
+      (when (and (fboundp 'string-to-multibyte) ; Emacs 22
+                 enable-multibyte-characters
+                 (not (multibyte-string-p file)))
+        (setq file  (string-to-multibyte file))))
+    (and file
+         (file-name-absolute-p file)
+         ;; A relative file name can start with ~.  Do not treat it as absolute in this context.
+         (not (eq (aref file 0) ?~))
+         (setq already-absolute  t))
+    (cond ((null file) nil)
+          ((eq localp 'verbatim) file)
+          ;; This is the essential `Dired+' change: Added ./ and ../, not just . and ..
+          ((and (not no-error-if-not-filep)  (member file '("." ".." "./" "../")))
+           (error "Cannot operate on `.' or `..'"))
+          ((and (eq localp 'no-dir)  already-absolute)
+           (file-name-nondirectory file))
+          (already-absolute
+           (let ((handler  (find-file-name-handler file nil)))
+             ;; check for safe-magic property so that we won't
+             ;; put /: for names that don't really need them.
+             ;; For instance, .gz files when auto-compression-mode is on.
+             (if (and handler  (not (get handler 'safe-magic)))
+                 (concat "/:" file)
+               file)))
+          ((eq localp 'no-dir) file)
+          ((equal (dired-current-directory) "/")
+           (setq file  (concat (dired-current-directory localp) file))
+           (let ((handler  (find-file-name-handler file nil)))
+             ;; check for safe-magic property so that we won't
+             ;; put /: for names that don't really need them.
+             ;; For instance, .gz files when auto-compression-mode is on.
+             (if (and handler  (not (get handler 'safe-magic)))
+                 (concat "/:" file)
+               file)))
+          ;; Ugly hack for Emacs < 23, for which `ls-lisp-insert-directory' can insert a subdir
+          ;; using `~/...'.  Expand `~/' for return value.
+          ((and (< emacs-major-version 23)  file  (file-name-absolute-p file)
+                (eq (aref file 0) ?~))
+           (expand-file-name file))
+          (t
+           (concat (dired-current-directory localp) file)))))
+
+
+;; REPLACE ORIGINAL in `dired.el'.
+;;
+;; 1. Fixes Emacs bug #7126: Did not work with arbitrary file list (cons arg to `dired').
+;; 2. Remove `/' from directory name before comparing with BASE.
+;;
+(when (< emacs-major-version 24)
+  (defun dired-goto-file (file)         ; Bound to `j'
+    "Go to line describing file FILE in this Dired buffer.
+FILE must be an absolute file name.
+Return buffer position on success, else nil."
+    ;; Loses if FILE contains control chars like "\007" for which `ls' inserts "?" or "\\007"
+    ;; into the buffer, so we won't find it in the buffer.
+    (interactive (prog1                 ; Let push-mark display its message
+                     (list (expand-file-name (read-file-name "Goto file: " (dired-current-directory))))
+                   (push-mark)))
+    (unless (file-name-absolute-p file) (error "File name `%s' is not absolute" file))
+    (setq file  (directory-file-name file)) ; does no harm if no directory
+    (let* ((case-fold-search  nil)
+           (dir               (file-name-directory file))
+           (found             nil))
+      ;; `Dired+': Added this sexp.
+      (save-excursion
+        (goto-char (point-min))
+        (let ((search-string  (replace-regexp-in-string "\^m" "\\^m" file nil t))
+              (here           nil))
+          (setq search-string  (replace-regexp-in-string "\\\\" "\\\\" search-string nil t))
+
+          ;; Escape whitespace.  Added per Emacs 24 addition in `unless' code below:
+          (when (and (dired-switches-escape-p dired-actual-switches)
+                     (diredp-string-match-p "[ \t\n]" search-string))
+            ;; FIXME: fix this for all possible file names (embedded control chars etc).
+            ;;        Need to escape everything that `ls -b' escapes.
+            (setq search-string  (replace-regexp-in-string " " "\\ "  search-string nil t)
+                  search-string  (replace-regexp-in-string "\t" "\\t" search-string nil t)
+                  search-string  (replace-regexp-in-string "\n" "\\n" search-string nil t)))
+
+          ;; Use HERE to ensure we do not keep searching for a directory entry.
+          (while (and (not (eobp))  (not found)  (not (equal here (point))))
+            (setq here  (point))
+            (if (search-forward (concat " " search-string) nil 'NO-ERROR)
+                ;; Must move to filename since an (actually correct) match could have been
+                ;; elsewhere on the line (e.g. "-" would match somewhere in permission bits).
+                (setq found  (dired-move-to-filename))
+              ;; If this isn't the right line, move forward to avoid trying this line again.
+              (forward-line 1)))))
+
+      (unless found
+        (save-excursion
+          ;; The difficulty here is to get the result of `dired-goto-subdir' without really
+          ;; calling it, if we don't have any subdirs.
+          (when (if (string= dir (expand-file-name default-directory))
+                    (goto-char (point-min))
+                  (and (cdr dired-subdir-alist)  (dired-goto-subdir dir)))
+            (let ((base      (file-name-nondirectory file))
+                  (boundary  (dired-subdir-max))
+                  search-string)
+              (setq search-string  (replace-regexp-in-string "\^m" "\\^m" base nil t)
+                    search-string  (replace-regexp-in-string "\\\\" "\\\\" search-string nil t))
+            
+              ;; Escape whitespace.  Sexp added by Emacs 24:
+              (when (and (dired-switches-escape-p dired-actual-switches)
+                         (diredp-string-match-p "[ \t\n]" search-string))
+                ;; FIXME: fix this for all possible file names (embedded control chars etc).
+                ;;        Need to escape everything that `ls -b' escapes.
+                (setq search-string  (replace-regexp-in-string " " "\\ " search-string nil t)
+                      search-string  (replace-regexp-in-string "\t" "\\t" search-string nil t)
+                      search-string  (replace-regexp-in-string "\n" "\\n" search-string nil t)))
+              (while (and (not found)
+                          ;; Filenames are preceded by SPC.  This makes the search faster
+                          ;; (e.g. for the filename "-"!).
+                          (search-forward (concat " " search-string) boundary 'move))
+                ;; `Dired+': Remove `/' from filename, then compare with BASE.
+                ;; Match could have BASE just as initial substring or
+                ;; or in permission bits or date or not be a proper filename at all.
+                (if (and (dired-get-filename 'no-dir t)
+                         (equal base (directory-file-name (dired-get-filename 'no-dir t))))
+                    ;; Must move to filename since an (actually correct) match could have been
+                    ;; elsewhere on the line (e.g. "-" would match somewhere in permission bits).
+                    (setq found  (dired-move-to-filename))
+                  ;; If this is not the right line, move forward to avoid trying this line again.
+                  (forward-line 1)))))))
+      (and found  (goto-char found))))) ; Return buffer position, or nil if not found.
+
+
+;; REPLACE ORIGINAL in `dired.el'.
+;;
+;; If destination is in a hidden dir listing, open that listing and move to destination in it.
+;;
+(unless (< emacs-major-version 24)
+  (defun dired-goto-file (file)
+    "Go to line describing file FILE in this Dired buffer.
+FILE must be an absolute file name.
+Return buffer position on success, else nil."
+    ;; Loses if FILE contains control chars like "\007" for which `ls' inserts "?" or "\\007"
+    ;; into the buffer, so we won't find it in the buffer.
+    (interactive (prog1 (list (expand-file-name (read-file-name "Goto file: " (dired-current-directory))))
+                   (push-mark)))        ; Let push-mark display its message.
+    (unless (file-name-absolute-p file) (error "File name `%s' is not absolute" file))
+    (setq file  (directory-file-name file)) ; Does no harm if not a directory
+    (let* ((case-fold-search  nil)
+           (dir               (file-name-directory file))
+           (found
+            (or
+             ;; First, look for a listing under the absolute name.
+             (save-excursion (goto-char (point-min)) (dired-goto-file-1 file file (point-max)))
+             ;; Else look for it as a relative name.  The difficulty is to get the result
+             ;; of `dired-goto-subdir' without calling it, if we don't have any subdirs.
+             (save-excursion
+               (when (if (string= dir (expand-file-name default-directory))
+                         (goto-char (point-min))
+                       (and (cdr dired-subdir-alist)  (dired-goto-subdir dir)))
+                 (when (dired-subdir-hidden-p (dired-current-directory))
+                   (diredp-hide-subdir-nomove 1)) ; Open hidden parent directory.
+                 (dired-goto-file-1 (file-name-nondirectory file) file (dired-subdir-max)))))))
+      (and found  (goto-char found))))) ; Return buffer position, or nil if not found.
+
+
+;; REPLACE ORIGINAL in `dired.el':
+;;
+;; 1. Display a message to warn that flagged, not marked, files will be deleted.
+;; 2. Use `diredp-internal-do-deletions', so it works with all Emacs versions.
+;;
+;;;###autoload
+(defun dired-do-flagged-delete (&optional no-msg) ; Bound to `x'
+  "In Dired, delete the files flagged for deletion.
+NOTE: This deletes flagged, not marked, files.
+If arg NO-MSG is non-nil, no message is displayed.
+
+User option `dired-recursive-deletes' controls whether deletion of
+non-empty directories is allowed."
+  (interactive)
+  (unless no-msg
+    (ding)
+    (message "NOTE: Deletion of files flagged `%c' (not those marked `%c')"
+             dired-del-marker dired-marker-char)
+    ;; Too slow/annoying, but without it the message is never seen: (sit-for 2)
+    )
+  (let* ((dired-marker-char  dired-del-marker)
+         (regexp             (dired-marker-regexp))
+         (case-fold-search   nil))
+    (if (save-excursion (goto-char (point-min)) (re-search-forward regexp nil t))
+        (diredp-internal-do-deletions
+         ;; This cannot move point since last arg is nil.
+         (dired-map-over-marks (cons (dired-get-filename) (point)) nil)
+         nil
+         'USE-TRASH-CAN)                ; This arg is for Emacs 24+ only.
+      (unless no-msg (message "(No deletions requested.)")))))
+
+
+;; REPLACE ORIGINAL in `dired.el':
+;;
+;; 1. Display a message to warn that marked, not flagged, files will be deleted.
+;; 2. Use `diredp-internal-do-deletions', so it works with all Emacs versions.
+;;
+;;;###autoload
+(defun dired-do-delete (&optional arg)  ; Bound to `D'
+  "Delete all marked (or next ARG) files.
+NOTE: This deletes marked, not flagged, files.
+`dired-recursive-deletes' controls whether deletion of
+non-empty directories is allowed."
+  (interactive "P")
+  ;; This is more consistent with the file-marking feature than
+  ;; `dired-do-flagged-delete'.  But it can be confusing to the user,
+  ;; especially since this is usually bound to `D', which is also the
+  ;; `dired-del-marker'.  So offer this warning message:
+  (unless arg
+    (ding)
+    (message "NOTE: Deletion of files marked `%c' (not those flagged `%c')."
+             dired-marker-char dired-del-marker))
+  (diredp-internal-do-deletions
+   ;; This can move point if ARG is an integer.
+   (dired-map-over-marks (cons (dired-get-filename) (point)) arg)
+   arg
+   'USE-TRASH-CAN))                     ; This arg is for Emacs 24+ only.
+
+(defun diredp-internal-do-deletions (file-alist arg &optional trash)
+  "`dired-internal-do-deletions', but for any Emacs version.
+FILE-ALIST is an alist of files to delete, with their buffer positions.
+ARG is the prefix arg.  Filenames are absolute.
+Non-nil TRASH means use the trash can."
+  ;; \(car FILE-ALIST) *must* be the *last* (bottommost) file in the dired
+  ;; buffer.  That way as changes are made in the buffer they do not shift
+  ;; the lines still to be changed, so the (point) values in FILE-ALIST
+  ;; stay valid.  Also, for subdirs in natural order, a subdir's files are
+  ;; deleted before the subdir itself - the other way around would not work."
+  (setq file-alist  (delq nil file-alist)) ; nils could come from `dired-map-over-marks'.
+  (if (> emacs-major-version 23)
+      (dired-internal-do-deletions file-alist arg trash)
+    (dired-internal-do-deletions file-alist arg)))
+
+
+;; REPLACE ORIGINAL in `dired.el':
+;;
+;; Put window point at bob.  Fixes bug #12281.
+;;
+(when (and (> emacs-major-version 22)  (or (< emacs-major-version 24)
+                                           (and (= emacs-major-version 24)  (= emacs-minor-version 1))))
+  (defun dired-pop-to-buffer (buf)
+    "Pop up buffer BUF in a way suitable for Dired."
+    (let ((split-window-preferred-function
+           (lambda (window)
+             (or (and (let ((split-height-threshold  0)) (window-splittable-p (selected-window)))
+                      ;; Try to split the selected window vertically if that's possible.  (Bug#1806)
+                      (if (fboundp 'split-window-below) (split-window-below) (split-window-vertically)))
+                 (split-window-sensibly window))))
+          pop-up-frames)
+      (pop-to-buffer (get-buffer-create buf)))
+    (set-window-start (selected-window) (point-min))
+    (when dired-shrink-to-fit
+      ;; Try to not delete window when we want to display less than `window-min-height' lines.
+      (fit-window-to-buffer (get-buffer-window buf) nil 1))))
+
+
+;; REPLACE ORIGINAL in `dired.el':
+;;
+;; 1. Delete the window or frame popped up, afterward, and bury its buffer.
+;;    Fixes Emacs bug #7533.
+;;
+;; 2, If buffer is shown in a separate frame, do not show a menu bar for that frame.
+;;
+(defun dired-mark-pop-up (buffer-or-name op-symbol files function &rest args)
+  "Return FUNCTION's result on ARGS after showing which files are marked.
+Displays the file names in a buffer named BUFFER-OR-NAME, the default
+name being \" *Marked Files*\".  The buffer is not shown if there is
+just one file, `dired-no-confirm' is t, or OP-SYMBOL is a member of
+the list in `dired-no-confirm'.  Uses function `dired-pop-to-buffer'
+to show the buffer.
+
+The window is not shown if there is just one file, `dired-no-confirm'
+is `t', or OP-SYMBOL is a member of `dired-no-confirm'.
+
+FILES is the list of marked files.  It can also be (t FILENAME)
+in the case of one marked file, to distinguish that from using
+just the current file.
+
+FUNCTION should not manipulate the files.  It should just read input
+\(an argument or confirmation)."
+  (unless buffer-or-name (setq buffer-or-name  " *Marked Files*"))
+  (let (result)
+    (if (or (eq dired-no-confirm t)
+            (memq op-symbol dired-no-confirm)
+            ;; If FILES defaulted to the current line's file.
+            (= (length files) 1))
+        (setq result  (apply function args))
+      (with-current-buffer (get-buffer-create buffer-or-name)
+        (erase-buffer)
+        ;; Handle (t FILE) just like (FILE), here.  That value is used (only in some cases),
+        ;; to mean just one file that was marked, rather than the current-line file.
+        (dired-format-columns-of-files (if (eq (car files) t) (cdr files) files))
+        (remove-text-properties (point-min) (point-max)
+                                '(mouse-face nil help-echo nil)))
+      (unwind-protect
+           (save-window-excursion
+             ;; Do not show menu bar, if buffer is popped up in a separate frame.
+             (let ((special-display-frame-alist  (cons '(menu-bar-lines . 0)
+                                                       special-display-frame-alist))
+                   (default-frame-alist          (cons '(menu-bar-lines . 0)
+                                                       default-frame-alist)))
+               (dired-pop-to-buffer buffer-or-name)
+               ;; Work around Emacs 22 bug in `dired-pop-to-buffer', which can exit with Dired buffer current.
+               (set-buffer buffer-or-name)
+               (goto-char (point-min)))
+             (setq result  (apply function args)))
+        (save-excursion
+          (condition-case nil           ; Ignore error if user already deleted window.
+              (progn (select-window (get-buffer-window buffer-or-name 0))
+                     (if (one-window-p) (delete-frame) (delete-window)))
+            (error nil)))
+        (bury-buffer buffer-or-name)))
+    result))
+
+
+;; REPLACE ORIGINAL in `dired.el':
+;;
+;; 1. Prefix arg has more possibilities.
+;; 2, Added optional arg LOCALP, so you can mark/unmark matching different file-name forms.
+;; 3. Push REGEXP onto `regexp-search-ring'.
+;;
+;;;###autoload
+(defun dired-mark-files-regexp (regexp &optional marker-char localp)
+  "Mark all file names matching REGEXP for use in later commands.
+`.' and `..' are never marked or unmarked by this command.
+
+Whether to mark or unmark, and what form of file name to match, are
+governed by the prefix argument.  For this, a plain (`C-u') or a
+double-plain (`C-u C-u') prefix arg is considered only as such - it is
+not considered numerically.
+
+Whether to mark or unmark:
+
+ - No prefix arg, a positive arg, or a negative arg means mark.
+
+ - Plain (`C-u'), double-plain (`C-u C-u'), or zero (e.g. `M-0' means
+   unmark.
+
+The form of a file name used for matching:
+
+ - No prefix arg (to mark) or a plain prefix arg (`C-u', to unmark)
+   means use the relative file name (no directory part).
+
+ - A negative arg (e.g. `M--', to mark) or a zero arg (e.g. `M-0', to
+   unmark) means use the absolute file name, that is, including all
+   directory components.
+
+ - A positive arg (e.g. `M-+', to mark) or a double plain arg (`C-u
+   C-u', to unmark) means construct the name relative to
+   `default-directory'.  For an entry in an inserted subdir listing,
+   this means prefix the relative file name (no directory part) with
+   the subdir name relative to `default-directory'.
+
+Note that the default matching behavior of this command is different
+for Dired+ than it is for vanilla Emacs.  Using a positive prefix arg
+or a double plain prefix arg (`C-u C-u') gives you the same behavior
+as vanilla Emacs (marking or unmarking, respectively): matching
+against names that are relative to the `default-directory'.
+
+What Dired+ offers in addition is the possibility to match against
+names that are relative (have no directory part - no prefix arg or
+`C-u' to mark and unmark, respectively) or absolute (`M--' or `M-0',
+respectively).  The default behavior uses relative names because this
+is likely to be the more common use case.  But matching against
+absolute names gives you more flexibility.
+
+REGEXP is an Emacs regexp, not a shell wildcard.  Thus, use `\\.o$'
+for object files--just `.o' might mark more than you might expect.
+
+REGEXP is added to `regexp-search-ring', for regexp search.
+
+Non-interactively:
+ MARKER-CHAR is the marker character - used for `dired-marker-char'.
+ LOCALP is passed to `dired-get-filename'.  It determines the form of
+   filename that is matched against REGEXP."
+  (interactive (let* ((raw      current-prefix-arg)
+                      (C-u      (and (consp raw)  (= 4 (car raw))))
+                      (C-u-C-u  (and (consp raw)  (= 16 (car raw))))
+                      (num      (and raw  (prefix-numeric-value raw))))
+                 (list (diredp-read-regexp (concat (if (or (consp raw)  (and num  (zerop num)))
+                                                       "UNmark"
+                                                     "Mark")
+                                                   " files (regexp): "))
+                       (and raw  (or C-u  C-u-C-u  (zerop num))  ?\040)
+                       (cond ((or (not raw)  C-u)  t) ; none, `C-u' 
+                             ((> num 0)            nil) ; `M-+', `C-u C-u'
+                             (t                    'no-dir))))) ; `M--', `M-0'
+  (add-to-list 'regexp-search-ring regexp) ; Add REGEXP to `regexp-search-ring'.
+  (let ((dired-marker-char  (or marker-char  dired-marker-char)))
+    (diredp-mark-if (and (not (diredp-looking-at-p dired-re-dot))
+                         (not (eolp))   ; Empty line
+                         (let ((fn  (dired-get-filename localp t)))
+                           (and fn  (diredp-string-match-p regexp fn))))
+                    "file")))
+
+
+;; REPLACE ORIGINAL in `dired.el':
+;;
+;; Use `diredp-mark-if', not `dired-mark-if'.
+;;
+;;;###autoload
+(defun dired-mark-files-containing-regexp (regexp &optional marker-char)
+  "Mark files with contents containing a REGEXP match.
+A prefix argument means unmark them instead.
+`.' and `..' are never marked.
+
+If a file is visited in a buffer and `dired-always-read-filesystem' is
+nil, this looks in the buffer without revisiting the file, so the
+results might be inconsistent with the file on disk if its contents
+have changed since it was last visited."
+  (interactive
+   (list (diredp-read-regexp (concat (if current-prefix-arg "Unmark" "Mark") " files containing (regexp): ")
+                             nil 'dired-regexp-history)
+	 (and current-prefix-arg  ?\040)))
+  (let ((dired-marker-char  (or marker-char  dired-marker-char)))
+    (diredp-mark-if (and (not (diredp-looking-at-p dired-re-dot))
+                         (not (eolp))
+                         (let ((fname  (dired-get-filename nil t)))
+                           (when (and fname  (file-readable-p fname)  (not (file-directory-p fname)))
+                             (let ((prebuf  (get-file-buffer fname)))
+                               (message "Checking %s" fname)
+                               ;; For now, do it inside Emacs.  Grep might be better if there are lots of files.
+                               (if (and prebuf  (or (not (boundp 'dired-always-read-filesystem))
+                                                    (not dired-always-read-filesystem))) ; Emacs 26+
+                                   (with-current-buffer prebuf
+                                     (save-excursion (goto-char (point-min)) (re-search-forward regexp nil t)))
+                                 (with-temp-buffer
+                                   (insert-file-contents fname)
+                                   (goto-char (point-min))
+                                   (re-search-forward regexp nil t)))))))
+                    "file")))
+
+
+;; REPLACE ORIGINAL in `dired.el':
+;;
+;; Use `diredp-mark-if', not `dired-mark-if'.
+;;
+;;;###autoload
+(defun dired-mark-symlinks (unflag-p)
+  "Mark all symbolic links.
+With prefix argument, unmark or unflag all those files."
+  (interactive "P")
+  (let ((dired-marker-char  (if unflag-p ?\040 dired-marker-char)))
+    (diredp-mark-if (diredp-looking-at-p dired-re-sym) "symbolic link")))
+
+
+;; REPLACE ORIGINAL in `dired.el':
+;;
+;; Use `diredp-mark-if', not `dired-mark-if'.
+;;
+;;;###autoload
+(defun dired-mark-directories (unflag-p)
+  "Mark all directory file lines except `.' and `..'.
+With prefix argument, unmark or unflag the files instead."
+  (interactive "P")
+  (let ((dired-marker-char  (if unflag-p ?\040 dired-marker-char)))
+    (diredp-mark-if (and (diredp-looking-at-p dired-re-dir)  (not (diredp-looking-at-p dired-re-dot)))
+                    "directory" "directories")))
+
+
+;; REPLACE ORIGINAL in `dired.el':
+;;
+;; Use `diredp-mark-if', not `dired-mark-if'.
+;;
+;;;###autoload
+(defun dired-mark-executables (unflag-p)
+  "Mark all executable files.
+With prefix argument, unmark or unflag the files instead."
+  (interactive "P")
+  (let ((dired-marker-char  (if unflag-p ?\040 dired-marker-char)))
+    (diredp-mark-if (diredp-looking-at-p dired-re-exe) "executable file")))
+
+
+;; REPLACE ORIGINAL in `dired.el':
+;;
+;; Use `diredp-mark-if', not `dired-mark-if'.
+;;
+;;;###autoload
+(defun dired-flag-auto-save-files (&optional unflag-p)
+  "Flag for deletion files whose names suggest they are auto save files.
+A prefix argument says to unmark or unflag the files instead."
+  (interactive "P")
+  (let ((dired-marker-char  (if unflag-p ?\040 dired-del-marker)))
+    (diredp-mark-if
+     ;; It is less than general to check for # here, but it's the only way this runs fast enough.
+     (and (save-excursion (end-of-line)
+                          (or (eq (preceding-char) ?#)
+                              ;; Handle executables in case of -F option.  Need not worry about the other kinds
+                              ;; of markings that -F makes, since they won't appear on real auto-save files.
+                              (and (eq (preceding-char) ?*)
+                                   (progn (forward-char -1) (eq (preceding-char) ?#)))))
+	  (not (diredp-looking-at-p dired-re-dir))
+	  (let ((fname  (dired-get-filename t t)))
+	    (and fname  (auto-save-file-name-p (file-name-nondirectory fname)))))
+     "auto-save file")))
+
+;;;###autoload
+(defun diredp-capitalize (&optional arg) ; Bound to `% c'
+  "Rename all marked (or next ARG) files by capitalizing them.
+Makes the first char of the name uppercase and the others lowercase."
+  (interactive "P")
+  (dired-rename-non-directory #'capitalize "Rename by capitalizing:" arg))
+
+;; This is more useful than a single-file version of `dired-do-delete'.
+;;;###autoload
+(defun diredp-delete-this-file (&optional use-trash-can) ; Bound to `C-k', `delete'
+  "In Dired, delete the file on the cursor line, upon confirmation.
+This uses `delete-file'.
+If the file is a symlink, remove the symlink.  If the file has
+multiple names, it continues to exist with the other names.
+
+For Emacs 24 and later, a prefix arg means that if
+`delete-by-moving-to-trash' is non-nil then trash the file instead of
+deleting it."
+  (interactive "P")
+  (let ((file  (dired-get-filename)))
+    (if (not (yes-or-no-p (format "%s file `%s'? " (if (and use-trash-can  delete-by-moving-to-trash)
+                                                       "Trash"
+                                                     "Permanently delete")
+                                  file)))
+        (message "OK - canceled")
+      (if (> emacs-major-version 23) (delete-file file use-trash-can) (delete-file file))
+      (revert-buffer))))
+
+;;; Versions of `dired-do-*' commands for just this line's file.
+;;;###autoload
+(defun diredp-capitalize-this-file ()   ; Bound to `M-c'
+  "In Dired, rename the file on the cursor line by capitalizing it.
+Makes the first char of the name uppercase and the others lowercase."
+  (interactive) (diredp-capitalize 1))
+
+;;;###autoload
+(defun diredp-downcase-this-file ()     ; Bound to `M-l'
+  "In Dired, rename the file on the cursor line to lower case."
+  (interactive) (dired-downcase 1))
+
+;;;###autoload
+(defun diredp-upcase-this-file ()       ; Bound to `M-u'
+  "In Dired, rename the file on the cursor line to upper case."
+  (interactive) (dired-upcase 1))
+
+;;;###autoload
+(defun diredp-rename-this-file ()       ; Bound to `r'
+  "In Dired, rename the file on the cursor line."
+  (interactive)
+  (let ((use-file-dialog  nil)) (dired-do-rename 1)))
+
+(when (fboundp 'epa-dired-do-encrypt)   ; Emacs 23+
+  (defun diredp-decrypt-this-file ()
+    "In Dired, decrypt the file on the cursor line."
+    (interactive)
+    (let ((use-file-dialog  nil)) (epa-dired-do-decrypt 1)))
+
+  (defun diredp-encrypt-this-file ()
+    "In Dired, encrypt the file on the cursor line."
+    (interactive)
+    (let ((use-file-dialog  nil)) (epa-dired-do-encrypt 1)))
+
+  (defun diredp-verify-this-file ()
+    "In Dired, verify the file on the cursor line."
+    (interactive)
+    (let ((use-file-dialog  nil)) (epa-dired-do-verify 1)))
+
+  (defun diredp-sign-this-file ()
+    "In Dired, sign the file on the cursor line."
+    (interactive)
+    (let ((use-file-dialog  nil)) (epa-dired-do-sign 1))))
+
+;;;###autoload
+(defun diredp-copy-this-file ()         ; Not bound
+  "In Dired, copy the file on the cursor line."
+  (interactive)
+  (let ((use-file-dialog  nil)) (dired-do-copy 1)))
+
+;;;###autoload
+(defun diredp-relsymlink-this-file ()   ; Bound to `y'
+  "In Dired, make a relative symbolic link to file on cursor line."
+  (interactive)
+  (let ((use-file-dialog  nil)) (dired-do-relsymlink 1)))
+
+;;;###autoload
+(defun diredp-symlink-this-file ()      ; Not bound
+  "In Dired, make a symbolic link to the file on the cursor line."
+  (interactive)
+  (let ((use-file-dialog  nil)) (dired-do-symlink 1)))
+
+;;;###autoload
+(defun diredp-hardlink-this-file ()     ; Not bound
+  "In Dired, add a name (hard link) to the file on the cursor line."
+  (interactive)
+  (let ((use-file-dialog  nil)) (dired-do-hardlink 1)))
+
+;;;###autoload
+(defun diredp-print-this-file ()        ; Bound to `M-p'
+  "In Dired, print the file on the cursor line."
+  (interactive) (dired-do-print 1))
+
+;;;###autoload
+(defun diredp-grep-this-file ()         ; Not bound
+  "In Dired, grep the file on the cursor line."
+  (interactive)
+  (unless (and grep-command  (or (< emacs-major-version 22)
+                                 (not grep-use-null-device)
+                                 (eq grep-use-null-device t)))
+    (grep-compute-defaults))
+  (grep (diredp-do-grep-1 (list (dired-get-filename t)))))
+
+;;;###autoload
+(defun diredp-compress-this-file ()     ; Bound to `z'
+  "In Dired, compress or uncompress the file on the cursor line."
+  (interactive) (dired-do-compress 1))
+
+;;;###autoload
+(defun diredp-async-shell-command-this-file (command filelist) ; Not bound
+  "Run a shell COMMAND asynchronously on the file on the Dired cursor line.
+Like `diredp-shell-command-this-file', but adds `&' at the end of
+COMMAND to execute it asynchronously.  The command output appears in
+buffer `*Async Shell Command*'."
+  (interactive (list (dired-read-shell-command (concat "& on " "%s: ") 1 (list (dired-get-filename t)))
+                     (list (dired-get-filename t))))
+  (unless (diredp-string-match-p "&[ \t]*\\'" command) (setq command  (concat command " &")))
+  (dired-do-shell-command command 1 filelist))
+
+;;;###autoload
+(defun diredp-shell-command-this-file (command filelist) ; Not bound
+  "In Dired, run a shell COMMAND on the file on the cursor line."
+  (interactive (list (dired-read-shell-command (concat "! on " "%s: ") 1 (list (dired-get-filename t)))
+                     (list (dired-get-filename t))))
+  (dired-do-shell-command command 1 filelist))
+
+;;;###autoload
+(defun diredp-bookmark-this-file (&optional prefix) ; Bound to `C-B' (`C-S-b')
+  "In Dired, bookmark the file on the cursor line.
+See `diredp-do-bookmark'."
+  (interactive (progn (diredp-ensure-mode)
+                      (list (and diredp-prompt-for-bookmark-prefix-flag
+                                 (read-string "Prefix for bookmark name: ")))))
+  (diredp-do-bookmark prefix 1))
+
+;;;###autoload
+(defun diredp-tag-this-file (tags &optional prefix) ; Bound to `T +'
+  "In Dired, add some tags to the file on the cursor line.
+You need library `bookmark+.el' to use this command."
+  (interactive (progn (diredp-ensure-bookmark+)
+                      (diredp-ensure-mode)
+                      (list (bmkp-read-tags-completing)
+                            (and diredp-prompt-for-bookmark-prefix-flag
+                                 (read-string "Prefix for bookmark name: ")))))
+  (diredp-do-tag tags prefix 1))
+
+;;;###autoload
+(defun diredp-untag-this-file (tags &optional prefix arg) ; Bound to `T -'
+  "In Dired, remove some tags from the file on the cursor line.
+With a prefix arg, remove all tags from the file.
+You need library `bookmark+.el' to use this command."
+  (interactive (progn (diredp-ensure-bookmark+)
+                      (diredp-ensure-mode)
+                      (let* ((pref  (and diredp-prompt-for-bookmark-prefix-flag
+                                         (read-string "Prefix for bookmark name: ")))
+                             (bmk   (bmkp-get-autofile-bookmark (dired-get-filename) nil pref))
+                             (btgs  (and bmk  (bmkp-get-tags bmk))))
+                        (unless btgs (error "File has no tags to remove"))
+                        (list (if current-prefix-arg btgs (bmkp-read-tags-completing btgs))
+                              pref
+                              current-prefix-arg))))
+  (diredp-do-untag tags prefix 1))
+
+;;;###autoload
+(defun diredp-remove-all-tags-this-file (&optional prefix msgp) ; Bound to `T 0'
+  "In Dired, remove all tags from this file.
+You need library `bookmark+.el' to use this command."
+  (interactive (progn (diredp-ensure-bookmark+)
+                      (diredp-ensure-mode)
+                      (list (and diredp-prompt-for-bookmark-prefix-flag
+                                 (read-string "Prefix for bookmark name: "))
+                            'MSG)))
+  (bookmark-maybe-load-default-file)
+  (diredp-do-remove-all-tags prefix 1))
+
+;;;###autoload
+(defun diredp-paste-add-tags-this-file (&optional prefix msgp) ; Bound to `T p', `T C-y'
+  "In Dired, add previously copied tags to this file.
+See `diredp-paste-add-tags'.
+You need library `bookmark+.el' to use this command."
+  (interactive (progn (diredp-ensure-bookmark+)
+                      (diredp-ensure-mode)
+                      (list (and diredp-prompt-for-bookmark-prefix-flag
+                                 (read-string "Prefix for bookmark name: "))
+                            'MSG)))
+  (bookmark-maybe-load-default-file)
+  (diredp-do-paste-add-tags prefix 1))
+
+;;;###autoload
+(defun diredp-paste-replace-tags-this-file (&optional prefix msgp) ; Bound to `T q'
+  "In Dired, replace tags for this file with previously copied tags.
+See `diredp-paste-replace-tags'.
+You need library `bookmark+.el' to use this command."
+  (interactive (progn (diredp-ensure-bookmark+)
+                      (diredp-ensure-mode)
+                      (list (and diredp-prompt-for-bookmark-prefix-flag
+                                 (read-string "Prefix for bookmark name: "))
+                            'MSG)))
+  (bookmark-maybe-load-default-file)
+  (diredp-do-paste-add-tags prefix 1))
+
+;;;###autoload
+(defun diredp-set-tag-value-this-file (tag value &optional prefix msgp) ; Bound to `T v'
+  "In Dired, Set value of TAG to VALUE for this file.
+See `diredp-set-tag-value'.
+You need library `bookmark+.el' to use this command."
+  (interactive (progn (diredp-ensure-bookmark+)
+                      (diredp-ensure-mode)
+                      (list (bmkp-read-tag-completing)
+                            (read (read-string "Value: "))
+                            (and diredp-prompt-for-bookmark-prefix-flag
+                                 (read-string "Prefix for bookmark name: "))
+                            'MSG)))
+  (bookmark-maybe-load-default-file)
+  (diredp-do-set-tag-value tag value prefix 1))
+
+;;;###autoload
+(defun diredp-copy-tags-this-file (&optional prefix msgp) ; Bound to `T c', `T M-w'
+  "In Dired, copy the tags from this file, so you can paste them to another.
+See `diredp-copy-tags'.
+You need library `bookmark+.el' to use this command."
+  (interactive (progn (diredp-ensure-bookmark+)
+                      (diredp-ensure-mode)
+                      (list (and diredp-prompt-for-bookmark-prefix-flag
+                                 (read-string "Prefix for bookmark name: "))
+                            'MSG)))
+  (bookmark-maybe-load-default-file)
+  (let ((bmk  (bmkp-get-autofile-bookmark  (dired-get-filename) nil prefix)))
+    (and bmk  (bmkp-copy-tags bmk msgp))))
+
+;;;###autoload
+(defun diredp-mouse-copy-tags (event)   ; Not bound
+  "In Dired, copy the tags from this file, so you can paste them to another.
+You need library `bookmark+.el' to use this command."
+  (interactive "e")
+  (let ((mouse-pos         (event-start event))
+        (dired-no-confirm  t)
+        (prefix            (and diredp-prompt-for-bookmark-prefix-flag
+                                (read-string "Prefix for bookmark name: "))))
+    (select-window (posn-window mouse-pos))
+    (goto-char (posn-point mouse-pos))
+    (diredp-copy-tags-this-file prefix 'MSG))
+  (diredp-previous-line 1))
+
+(when (fboundp 'describe-file)          ; In `help-fns+.el' or `help+20.el'.
+  (defun diredp-describe-file (&optional internal-form-p) ; Bound to `C-h RET', `C-h C-RET'
+    "In Dired, describe this file or directory.
+You need library `help-fns+.el' to use this command.
+If the file has an autofile bookmark and you use library `Bookmark+',
+then show also the bookmark information (tags etc.).  In this case, a
+prefix arg shows the internal form of the bookmark."
+    (interactive "P")
+    (describe-file (dired-get-filename nil t) internal-form-p))
+
+  (defun diredp-mouse-describe-file (event &optional internal-form-p) ; Not bound
+    "Describe the clicked file.
+You need library `help-fns+.el' to use this command.
+If the file has an autofile bookmark and you use library `Bookmark+',
+then show also the bookmark information (tags etc.).  In this case, a
+prefix arg shows the internal form of the bookmark."
+    (interactive "e\nP")
+    (let (file)
+      (with-current-buffer (window-buffer (posn-window (event-end event)))
+        (save-excursion (goto-char (posn-point (event-end event)))
+                        (setq file  (dired-get-filename nil t))))
+      (describe-file file internal-form-p))))
+
+;; Define these even if `Bookmark+' is not loaded.
+;;;###autoload
+(defalias 'diredp-show-metadata 'diredp-describe-autofile)
+;;;###autoload
+(defun diredp-describe-autofile (&optional internal-form-p)
+  "Show the metadata for the file of the current line.
+The file must name an autofile bookmark.  The metadata is the bookmark
+information.
+
+With a prefix argument, show the internal definition of the bookmark.
+
+You need library `bookmark+.el' for this command."
+  (interactive "P")
+  (diredp-ensure-bookmark+)
+  (diredp-ensure-mode)
+  (let ((bmk  (save-match-data
+                (bmkp-get-autofile-bookmark (dired-get-filename nil t)))))
+    (unless bmk (error "Not on an autofile bookmark"))
+    (save-selected-window (if internal-form-p
+                              (bmkp-describe-bookmark-internals bmk)
+                            (bmkp-describe-bookmark bmk)))))
+
+(defun diredp-mouse-describe-autofile (event &optional internal-form-p) ; Not bound
+  "Show the metadata for the file whose name you click.
+The file must name an autofile bookmark.  The metadata is the bookmark
+information.
+
+With a prefix argument, show the internal definition of the bookmark.
+
+You need library `bookmark+.el' for this command."
+  (interactive "e\nP")
+  (diredp-ensure-bookmark+)
+  (let (file)
+    (with-current-buffer (window-buffer (posn-window (event-end event)))
+      (diredp-ensure-mode)
+      (save-excursion (goto-char (posn-point (event-end event)))
+                      (setq file  (dired-get-filename nil t))))
+    (let ((bmk  (save-match-data (bmkp-get-autofile-bookmark file))))
+      (unless bmk (error "Not an autofile bookmark"))
+      (save-selected-window (if internal-form-p
+                                (bmkp-describe-bookmark-internals bmk)
+                              (bmkp-describe-bookmark bmk))))))
+
+;;;###autoload
+(defalias 'diredp-show-metadata-for-marked 'diredp-describe-marked-autofiles)
+;;;###autoload
+(defun diredp-describe-marked-autofiles (&optional internal-form-p interactivep details)
+  "Show metadata for the marked files.
+If no file is marked, describe ALL autofiles in this directory.
+With a prefix argument, show the internal (Lisp) form of the metadata.
+When invoked interactively, raise an error if no files are marked.
+You need library `bookmark+.el' for this command.
+
+When called from Lisp, optional arg DETAILS is passed to
+`diredp-get-files'."
+  (interactive (list current-prefix-arg t diredp-list-file-attributes))
+  (diredp-ensure-bookmark+)
+  (let ((help-xref-following  nil))
+    (help-setup-xref (list `(lambda (_buf)
+                             (with-current-buffer ,(current-buffer) (diredp-describe-marked-autofiles)))
+                           internal-form-p)
+                     (if (or (> emacs-major-version 23)
+                             (and (= emacs-major-version 23)  (> emacs-minor-version 1)))
+                         (called-interactively-p 'interactive)
+                       (interactive-p))))
+  (diredp-with-help-window "*Help*"
+    (let ((marked  (dired-get-marked-files nil nil nil 'DISTINGUISH-ONE-MARKED interactivep)))
+      (unless (cdr marked)
+        (message "Describing ALL autofiles here (none are marked)...")
+        (setq marked  (diredp-get-files 'IGNORE-MARKS-P nil nil nil nil details)))
+      (if (eq t (car marked))
+          (diredp-describe-autofile internal-form-p)
+        (dolist (bmk  (delq nil (mapcar #'bmkp-get-autofile-bookmark marked)))
+          (if internal-form-p
+              (let* ((bname      (bmkp-bookmark-name-from-record bmk))
+                     (help-text  (format "%s\n%s\n\n%s"
+                                         bname (make-string (length bname) ?-) (pp-to-string bmk))))
+                (princ help-text) (terpri))
+            (princ (bmkp-bookmark-description bmk)) (terpri)))))))
+
+;;;###autoload
+(defun diredp-byte-compile-this-file () ; Bound to `b'
+  "In Dired, byte compile the (Lisp source) file on the cursor line."
+  (interactive) (dired-do-byte-compile 1))
+
+;;;###autoload
+(defun diredp-load-this-file ()         ; Not bound
+  "In Dired, load the file on the cursor line."
+  (interactive) (dired-do-load 1))
+
+;;;###autoload
+(defun diredp-chmod-this-file ()        ; Bound to `M-m'
+  "In Dired, change the mode of the file on the cursor line."
+  (interactive) (dired-do-chmod 1))
+
+(unless (memq system-type '(windows-nt ms-dos))
+  (defun diredp-chgrp-this-file ()      ; Not bound
+    "In Dired, change the group of the file on the cursor line."
+    (interactive) (dired-do-chgrp 1)))
+
+(unless (memq system-type '(windows-nt ms-dos))
+  (defun diredp-chown-this-file ()      ; Not bound
+    "In Dired, change the owner of the file on the cursor line."
+    (interactive) (dired-do-chown 1)))
+
+(when (fboundp 'dired-do-touch)
+  (defun diredp-touch-this-file ()        ; Not bound
+    "In Dired, `touch' (change the timestamp of) the file on the cursor line."
+    (interactive) (dired-do-touch 1)))
+
+
+;; REPLACE ORIGINAL in `dired-x.el'.
+;;
+;; 1. Variable (symbol) `s' -> `blks'.
+;; 2. Fixes to remove leading space from `uid' and allow `.' in `gid'.
+;; 3. Cleaned up doc string and code a bit.
+;;
+;;;###autoload
+(defun dired-mark-sexp (predicate &optional unmark-p) ; Bound to `M-(', `* ('
+  "Mark files for which PREDICATE returns non-nil.
+With a prefix arg, unmark or unflag those files instead.
+
+PREDICATE is a lisp sexp that can refer to the following symbols as
+variables:
+
+    `mode'   [string]  file permission bits, e.g. \"-rw-r--r--\"
+    `nlink'  [integer] number of links to file
+    `size'   [integer] file size in bytes
+    `uid'    [string]  owner
+    `gid'    [string]  group (If the gid is not displayed by `ls',
+                       this will still be set (to the same as uid))
+    `time'   [string]  the time that `ls' displays, e.g. \"Feb 12 14:17\"
+    `name'   [string]  the name of the file
+    `sym'    [string]  if file is a symbolic link, the linked-to name,
+                       else \"\"
+    `inode'  [integer] the inode of the file (only for `ls -i' output)
+    `blks'   [integer] the size of the file for `ls -s' output
+                       (ususally in blocks or, with `-k', in Kbytes)
+Examples:
+  Mark zero-length files: `(equal 0 size)'
+  Mark files last modified on Feb 2: `(string-match \"Feb  2\" time)'
+  Mark uncompiled Emacs Lisp files (`.el' file without a `.elc' file):
+     First, Dired just the source files: `dired *.el'.
+     Then, use \\[dired-mark-sexp] with this sexp:
+          (not (file-exists-p (concat name \"c\")))
+
+There's an ambiguity when a single integer not followed by a unit
+prefix precedes the file mode: It is then parsed as inode number
+and not as block size (this always works for GNU coreutils ls).
+
+Another limitation is that the uid field is needed for the
+function to work correctly.  In particular, the field is not
+present for some values of `ls-lisp-emulation'.
+
+This function operates only on the Dired buffer content.  It does not
+refer at all to the underlying file system.  Contrast this with
+`find-dired', which might be preferable for the task at hand."
+  ;; Using `sym' = "", instead of nil, for non-linked files avoids the trap of
+  ;; (string-match "foo" sym) into which a user would soon fall.
+  ;; Use `equal' instead of `=' in the example, as it works on integers and strings.
+  (interactive "xMark if (vars: inode,blks,mode,nlink,uid,gid,size,time,name,sym): \nP")
+  (message "%s" predicate)
+  (let ((dired-marker-char  (if unmark-p ?\040 dired-marker-char))
+        (inode              nil)
+        (blks               ())
+        mode nlink uid gid size time name sym)
+    (diredp-mark-if
+     (save-excursion
+       (and
+        ;; Sets vars INODE BLKS MODE NLINK UID GID SIZE TIME NAME and SYM
+        ;; according to current file line.  Returns `t' for success, nil if
+        ;; there is no file line.  Upon success, these vars are set, to either
+        ;; nil or the appropriate value, so they need not be initialized.
+        ;; Moves point within the current line.
+        (dired-move-to-filename)
+        (let ((mode-len             10) ; Length of mode string.
+              ;; As in `dired.el', but with subexpressions \1=inode, \2=blks:
+              ;; GNU `ls -hs' suffixes the block count with a unit and prints it as a float; FreeBSD does neither.
+              ;; $$$$$$ (dired-re-inode-size  "\\s *\\([0-9]*\\)\\s *\\([0-9]*\\) ?")
+              (dired-re-inode-size (if (> emacs-major-version 24)
+                                       "\\=\\s *\\([0-9]+\\s +\\)?\
+\\(?:\\([0-9]+\\(?:\\.[0-9]*\\)?[BkKMGTPEZY]?\\)? ?\\)"
+                                     "\\s *\\([0-9]*\\)\\s *\\([0-9]*\\) ?"))
+              pos)
+          (beginning-of-line)
+          (forward-char 2)
+          (search-forward-regexp dired-re-inode-size nil t)
+          ;; XXX Might be a size not followed by a unit prefix.  Could set `blks' to `inode' if it were otherwise
+          ;; nil, with similar reasoning as for setting `gid' to `uid', but it would be even more whimsical.
+          (setq inode  (and (match-string 1)  (string-to-number (match-string 1)))
+                blks   (and (match-string 2)  (if (fboundp 'dired-x--string-to-number)
+                                                  (dired-x--string-to-number (match-string 2)) ; Emacs 25+
+                                                (string-to-number (match-string 2))))
+                mode   (buffer-substring (point) (+ mode-len (point))))
+          (forward-char mode-len)
+          (unless (eq (char-after) ?\   ) (forward-char 1)) ; Skip any extended attributes marker ("." or "+").
+          (setq nlink  (read (current-buffer)))
+          ;; Karsten Wenger <kw@cis.uni-muenchen.de> fixed uid.
+
+          ;; Another issue is that GNU `ls -n' right-justifies numerical UIDs and GIDs, while FreeBSD
+          ;; left-justifies them, so do not rely on a specific whitespace layout.  Both of them right-justify all
+          ;; other numbers, though.
+          ;; XXX Return a number if the `uid' or `gid' seems to be numerical?
+          ;; $$$$$$ (setq uid  (buffer-substring (+ (point) 1) (progn (forward-word 1) (point))))
+          (setq uid  (buffer-substring (progn (skip-chars-forward " \t")  (point))
+                                       (progn (skip-chars-forward "^ \t") (point))))
+          (cond ((> emacs-major-version 24)
+                 (dired-move-to-filename)
+                 (save-excursion
+                   (setq time
+                         ;; The regexp below tries to match from the last digit of the size field through a
+                         ;; space after the date.  Also, dates may have different formats depending on file age,
+                         ;; so the date column need not be aligned to the right.
+                         (buffer-substring (save-excursion (skip-chars-backward " \t") (point))
+                                           (progn (re-search-backward directory-listing-before-filename-regexp)
+                                                  (skip-chars-forward "^ \t")
+                                                  (1+ (point))))
+                         size
+                         (dired-x--string-to-number
+                          ;; We know that there's some kind of number before point because the regexp search
+                          ;; above succeeded.  Not worth doing an extra check for leading garbage.
+                          (buffer-substring (point) (progn (skip-chars-backward "^ \t") (point))))
+                         ;; If no `gid' is displayed, `gid' will be set to `uid' but user will then not reference
+                         ;; it anyway in PREDICATE.
+                         gid
+                         (buffer-substring (progn (skip-chars-backward " \t") (point))
+                                           (progn (skip-chars-backward "^ \t") (point)))))
+                 (setq name  (buffer-substring (point) (or (dired-move-to-end-of-filename t)  (point)))
+                       sym   (if (diredp-looking-at-p " -> ")
+                                 (buffer-substring (progn (forward-char 4) (point)) (line-end-position))
+                               "")))
+                (t
+                 (re-search-forward
+                  (if (< emacs-major-version 20)
+                      "\\(Jan\\|Feb\\|Mar\\|Apr\\|May\\|Jun\\|Jul\\|Aug\\|Sep\\|Oct\\|Nov\\|Dec\\)"
+                    dired-move-to-filename-regexp))
+                 (goto-char (match-beginning 1))
+                 (forward-char -1)
+                 (setq size  (string-to-number (buffer-substring (save-excursion (backward-word 1)
+                                                                                 (setq pos  (point)))
+                                                                 (point))))
+                 (goto-char pos)
+                 (backward-word 1)
+                 ;; if no `gid' is displayed, `gid' will be set to `uid' but user will then not reference
+                 ;; it anyway in PREDICATE.
+                 (setq gid   (buffer-substring (save-excursion (forward-word 1) (point)) (point))
+                       time  (buffer-substring (match-beginning 1) (1- (dired-move-to-filename)))
+                       name  (buffer-substring (point) (or (dired-move-to-end-of-filename t)  (point)))
+                       sym   (if (diredp-looking-at-p " -> ")
+                                 (buffer-substring (progn (forward-char 4) (point)) (line-end-position))
+                               "")))))
+        ;; Vanilla Emacs uses `lexical-binding' = t, and it passes bindings to `eval' as a second arg.
+        ;; We use `lexical-binding' = nil, and anyway there should be no need to pass the bindings.
+        (eval predicate)))
+     (format "'%s file" predicate))))
+
+(defun diredp-this-file-marked-p (&optional mark-char)
+  "Return non-nil if the file on this line is marked.
+Optional arg MARK-CHAR is the type of mark to check.
+ If nil, then if the file has any mark, including `D', it is marked."
+  (and (dired-get-filename t t)  (save-excursion
+                                   (beginning-of-line)
+                                   (if mark-char
+                                       (diredp-looking-at-p
+                                        (concat "^" (regexp-quote (char-to-string mark-char))))
+                                     (not (diredp-looking-at-p "^ "))))))
+
+(defun diredp-this-file-unmarked-p (&optional mark-char)
+  "Return non-nil if the file on this line is unmarked.
+Optional arg MARK-CHAR is the type of mark to check.
+ If nil, then if the file has no mark, including `D', it is unmarked.
+ If non-nil, then it is unmarked for MARK-CHAR if it has no mark or
+ it has any mark except MARK-CHAR."
+  (and (dired-get-filename t t)  (save-excursion
+                                   (beginning-of-line)
+                                   (if mark-char
+                                       (not (diredp-looking-at-p
+                                             (concat "^" (regexp-quote (char-to-string mark-char)))))
+                                     (diredp-looking-at-p "^ ")))))
+
+;;;###autoload
+(defun diredp-mark-region-files (&optional unmark-p) ; Not bound
+  "Mark all of the files in the current region (if it is active).
+With non-nil prefix arg, unmark them instead."
+  (interactive "P")
+  (let ((beg                        (min (point) (mark)))
+        (end                        (max (point) (mark)))
+        (inhibit-field-text-motion  t)) ; Just in case.
+    (setq beg  (save-excursion (goto-char beg) (line-beginning-position))
+          end  (save-excursion (goto-char end) (line-end-position)))
+    (let ((dired-marker-char  (if unmark-p ?\040 dired-marker-char)))
+      (diredp-mark-if (and (<= (point) end)  (>= (point) beg)  (diredp-this-file-unmarked-p)) "region file"))))
+
+;;;###autoload
+(defun diredp-unmark-region-files (&optional mark-p) ; Not bound
+  "Unmark all of the files in the current region (if it is active).
+With non-nil prefix arg, mark them instead."
+  (interactive "P")
+  (let ((beg                        (min (point) (mark)))
+        (end                        (max (point) (mark)))
+        (inhibit-field-text-motion  t)) ; Just in case.
+    (setq beg  (save-excursion (goto-char beg) (line-beginning-position))
+          end  (save-excursion (goto-char end) (line-end-position)))
+    (let ((dired-marker-char  (if mark-p dired-marker-char ?\040)))
+      (diredp-mark-if (and (<= (point) end)  (>= (point) beg)  (diredp-this-file-marked-p)) "region file"))))
+
+;;;###autoload
+(defun diredp-flag-region-files-for-deletion () ; Not bound
+  "Flag all of the files in the current region (if it is active) for deletion."
+  (interactive)
+  (let ((beg                        (min (point) (mark)))
+        (end                        (max (point) (mark)))
+        (inhibit-field-text-motion  t)) ; Just in case.
+    (setq beg  (save-excursion (goto-char beg) (line-beginning-position))
+          end  (save-excursion (goto-char end) (line-end-position)))
+    (let ((dired-marker-char  dired-del-marker))
+      (diredp-mark-if (and (<= (point) end)  (>= (point) beg)  (diredp-this-file-unmarked-p ?\D))
+                      "region file"))))
+
+;;;###autoload
+(defun diredp-toggle-marks-in-region (start end) ; Not bound
+  "Toggle marks in the region."
+  (interactive "r")
+  (save-excursion
+    (save-restriction
+      (if (not (fboundp 'dired-toggle-marks))
+          ;; Pre-Emacs 22.  Use bol, eol.  If details hidden, show first.
+          (let ((details-hidden-p  (and (boundp 'dired-details-state)  (eq 'hidden dired-details-state))))
+            (widen)
+            (when details-hidden-p (dired-details-show))
+            (goto-char start)
+            (setq start  (line-beginning-position))
+            (goto-char end)
+            (setq end    (line-end-position))
+            (narrow-to-region start end)
+            (dired-toggle-marks)
+            (when details-hidden-p (dired-details-hide)))
+        (narrow-to-region start end)
+        (dired-toggle-marks))))
+  (when (and (get-buffer-window (current-buffer))  (fboundp 'fit-frame-if-one-window))
+    (fit-frame-if-one-window)))
+
+
+;;; Mouse 3 menu.
+;;;;;;;;;;;;;;;;;
+
+(defvar diredp-file-line-overlay nil)
+
+;;;###autoload
+(defun diredp-mouse-3-menu (event)      ; Bound to `mouse-3'
+  "Dired pop-up `mouse-3' menu, for files in selection or current line."
+  (interactive "e")
+  (if (not (and (fboundp 'mouse3-dired-use-menu)  (diredp-nonempty-region-p)))
+      ;; No `mouse3.el' or no region.
+      (if (diredp-nonempty-region-p)
+          ;; Region
+          (let ((reg-choice  (x-popup-menu
+                              event
+                              (list "Files in Region"
+                                    (list ""
+                                          '("Mark" . diredp-mark-region-files)
+                                          '("Unmark" . diredp-unmark-region-files)
+                                          '("Toggle Marked/Unmarked" .
+                                            diredp-toggle-marks-in-region)
+                                          '("Flag for Deletion" .
+                                            diredp-flag-region-files-for-deletion))))))
+            (when reg-choice (call-interactively reg-choice)))
+        ;; Single file/dir (no region).
+        (let ((mouse-pos                  (event-start event))
+              ;; Do not use `save-excursion', because some commands will move point on purpose.
+              ;; Just save original point and return to it unless MOVEP is set to non-nil.
+              (opoint                     (point))
+              (movep                      nil)
+              (inhibit-field-text-motion  t) ; Just in case.
+              choice bol  eol  file/dir-name)
+          (with-current-buffer (window-buffer (posn-window mouse-pos))
+            (goto-char (posn-point mouse-pos))
+            (setq bol  (line-beginning-position)
+                  eol  (line-end-position))
+            (unwind-protect
+                 (when (setq file/dir-name  (and (not (eobp))  (dired-get-filename nil t)))
+                   (if diredp-file-line-overlay ; Don't re-create if exists.
+                       (move-overlay diredp-file-line-overlay bol eol (current-buffer))
+                     (setq diredp-file-line-overlay  (make-overlay bol eol))
+                     (overlay-put diredp-file-line-overlay 'face 'region))
+                   (sit-for 0)
+                   (let ((map
+                          (easy-menu-create-menu
+                           "This File"
+                           `(
+                             ("Bookmark" :visible (featurep 'bookmark+)
+                              ["Bookmark..." diredp-bookmark-this-file]
+                              ["Add Tags..." diredp-tag-this-file
+                               :visible (featurep 'bookmark+)]
+                              ["Remove Tags..." diredp-untag-this-file
+                               :visible (featurep 'bookmark+)]
+                              ["Remove All Tags" diredp-remove-all-tags-this-file
+                               :visible (featurep 'bookmark+)]
+                              ["Copy Tags" diredp-copy-tags-this-file
+                               :visible (featurep 'bookmark+)]
+                              ["Paste Tags (Add)" diredp-paste-add-tags-this-file
+                               :visible (featurep 'bookmark+)]
+                              ["Paste Tags (Replace)" diredp-paste-replace-tags-this-file
+                               :visible (featurep 'bookmark+)]
+                              ["Set Tag Value..." diredp-set-tag-value-this-file
+                               :visible (featurep 'bookmark+)]
+                              )
+                             ["Describe" ',(if (if (> emacs-major-version 21)
+                                                   (require 'help-fns+ nil t)
+                                                 (require 'help+20 nil t))
+                                               'diredp-describe-file
+                                               'diredp-describe-autofile)] ; Requires `bookmark+.el'
+                             ;; Stuff from `Marks' menu.
+                             ["Mark"  dired-mark
+                              :visible (not (eql (dired-file-marker file/dir-name)
+                                             dired-marker-char))]
+                             ["Unmark" dired-unmark
+                              :visible (dired-file-marker file/dir-name)]
+                             ["Flag for Deletion" dired-flag-file-deletion
+                              :visible (not (eql (dired-file-marker file/dir-name)
+                                             dired-del-marker))]
+                             ["Delete..." diredp-delete-this-file]
+                             "--"       ; ------------------------------------------------------
+                             ;; Stuff from `Single' / `Multiple' menus.
+                             ["Open" dired-find-file]
+                             ["Open in Other Window" dired-find-file-other-window]
+                             ["Open in Other Frame" diredp-find-file-other-frame]
+                             ["Open Associated Windows App" dired-w32-browser
+                              :visible (featurep 'w32-browser)]
+                             ["Open in Windows Explorer" dired-w32explore
+                              :visible (featurep 'w32-browser)]
+                             ["View (Read Only)" dired-view-file]
+                             ["--" 'ignore ; -------------------------------------------------
+                              :visible (or (atom (diredp-this-subdir)) ; Subdir line.
+                                        (not (equal (expand-file-name (dired-current-directory))
+                                              (expand-file-name default-directory))))] ; Not top.
+                             ["Insert This Subdir"
+                              (lambda () (interactive)
+                                      (call-interactively #'dired-maybe-insert-subdir)
+                                      (setq movep  t))
+                              :visible (and (atom (diredp-this-subdir))
+                                        (not (assoc (file-name-as-directory (diredp-this-subdir))
+                                              dired-subdir-alist)))
+                              :enable (atom (diredp-this-subdir))]
+                             ["Go To Inserted Subdir"
+                              (lambda () (interactive)
+                                      (call-interactively #'dired-maybe-insert-subdir)
+                                      (setq movep  t))
+                              :visible (and (atom (diredp-this-subdir))
+                                        (assoc (file-name-as-directory (diredp-this-subdir))
+                                         dired-subdir-alist))
+                              :enable (atom (diredp-this-subdir))
+                              :keys "i"]
+                             ["Remove This Inserted Subdir" dired-kill-subdir
+                              :visible (not (equal
+                                             (expand-file-name (dired-current-directory))
+                                             (expand-file-name default-directory)))] ; In subdir, not top.
+                             ["Remove This Inserted Subdir and Lower" diredp-kill-this-tree
+                              :visible (and (fboundp 'diredp-kill-this-tree)
+                                        (not (equal
+                                              (expand-file-name (dired-current-directory))
+                                              (expand-file-name default-directory))))] ; In subdir, not top.
+                             ["Dired This Inserted Subdir (Tear Off)"
+                              (lambda () (interactive) (diredp-dired-this-subdir t))
+                              :visible (not (equal (expand-file-name (dired-current-directory))
+                                             (expand-file-name default-directory)))] ; In subdir, not top.
+                             "--"       ; ------------------------------------------------------
+                             ["Compare..." diredp-ediff]
+                             ["Diff..." dired-diff]
+                             ["Diff with Backup" dired-backup-diff]
+
+                             ["Bookmark..." diredp-bookmark-this-file
+                              :visible (not (featurep 'bookmark+))]
+                             "--"       ; ------------------------------------------------------
+                             ["Rename to..." diredp-rename-this-file]
+                             ["Capitalize" diredp-capitalize-this-file]
+                             ["Upcase" diredp-upcase-this-file]
+                             ["Downcase" diredp-downcase-this-file]
+                             "--"       ; ------------------------------------------------------
+                             ["Copy to..." diredp-copy-this-file]
+                             ["Symlink to (Relative)..." diredp-relsymlink-this-file]
+                             ["Symlink to..." diredp-symlink-this-file]
+                             ["Hardlink to..." diredp-hardlink-this-file]
+                             "--"       ; ------------------------------------------------------
+                             ["Shell Command..." diredp-shell-command-this-file]
+                             ["Asynchronous Shell Command..."
+                              diredp-async-shell-command-this-file]
+                             ["Print..." diredp-print-this-file]
+                             ["Grep" diredp-grep-this-file]
+                             ["Compress/Uncompress" diredp-compress-this-file]
+                             ["Byte-Compile" diredp-byte-compile-this-file]
+                             ["Load" diredp-load-this-file]
+                             "--"       ; ------------------------------------------------------
+                             ["Change Timestamp..." diredp-touch-this-file]
+                             ["Change Mode..." diredp-chmod-this-file]
+                             ["Change Group..." diredp-chgrp-this-file
+                              :visible (fboundp 'diredp-chgrp-this-file)]
+                             ["Change Owner..." diredp-chown-this-file
+                              :visible (fboundp 'diredp-chown-this-file)]))))
+                     (when diredp-file-line-overlay
+                       (delete-overlay diredp-file-line-overlay))
+                     (setq choice  (x-popup-menu event map))
+                     (when choice (call-interactively (lookup-key map (apply 'vector choice))))))
+              (unless movep (goto-char opoint))))))
+    ;; `mouse3.el' and active region.
+    (unless (eq mouse3-dired-function 'mouse3-dired-use-menu)
+      (funcall #'mouse3-dired-use-menu)
+      (revert-buffer))
+    (let ((last-command  'mouse-save-then-kill)) (mouse-save-then-kill event))))
+
+
+;; REPLACE ORIGINAL in `dired.el' for Emacs 20.
+;;
+;; Allow `.' and `..', by using non-nil second arg to `dired-get-filename'.
+;;
+(when (< emacs-major-version 21)
+  (defun dired-find-file ()             ; Bound to `RET'
+    "In Dired, visit the file or directory named on this line."
+    (interactive)
+    (let* ((dgf-result  (or (dired-get-filename nil t)  (error "No file on this line")))
+           (file-name   (file-name-sans-versions dgf-result t)))
+      (if (file-exists-p file-name)
+          (find-file file-name)
+        (if (file-symlink-p file-name)
+            (error "File is a symlink to a nonexistent target")
+          (error "File no longer exists; type `g' to update Dired buffer"))))))
+
+;;;###autoload
+(defun diredp-find-file-other-frame ()  ; Bound to `C-o'
+  "In Dired, visit this file or directory in another frame."
+  (interactive)
+  (find-file-other-frame (file-name-sans-versions (dired-get-filename nil t) t)))
+
+;;;###autoload
+(defun diredp-mouse-find-file-other-frame (event) ; Bound to `M-mouse-2'
+  "In Dired, visit file or directory clicked on in another frame."
+  (interactive "e")
+  (let ((pop-up-frames  t)) (dired-mouse-find-file-other-window event)))
+
+
+;; REPLACE ORIGINAL in `dired.el'.
+;;
+;; Allow `.' and `..', by using non-nil second arg to `dired-get-filename'.
+;;
+;;;###autoload
+(defun dired-mouse-find-file-other-window (event) ; Bound to `mouse-2'
+  "In Dired, visit the file or directory name you click on."
+  (interactive "e")
+  (let (file)
+    (with-current-buffer (window-buffer (posn-window (event-end event)))
+      (save-excursion (goto-char (posn-point (event-end event)))
+                      (setq file  (dired-get-filename nil t))))
+    (unless (stringp file) (error "No file here"))
+    (select-window (posn-window (event-end event)))
+    (find-file-other-window (file-name-sans-versions file t))))
+
+;;;###autoload
+(defun diredp-mouse-view-file (event)   ; Not bound
+  "Examine this file in view mode, returning to Dired when done.
+When file is a directory, show it in this buffer if it is inserted;
+otherwise, display it in another buffer."
+  (interactive "e")
+  (let (file)
+    (with-current-buffer (window-buffer (posn-window (event-end event)))
+      (save-excursion (goto-char (posn-point (event-end event)))
+                      (setq file  (dired-get-filename nil t))))
+    (select-window (posn-window (event-end event)))
+    (if (file-directory-p file)
+        (or (and (cdr dired-subdir-alist)  (dired-goto-subdir file))  (dired file))
+      (view-file file))))               ; In `view.el'.
+
+;;;###autoload
+(defun diredp-mouse-ediff (event)       ; Not bound
+  "Compare this file (pointed by mouse) with file FILE2 using `ediff'.
+FILE2 defaults to this file as well.  If you enter just a directory
+name for FILE2, then this file is compared with a file of the same
+name in that directory.  FILE2 is the second file given to `ediff';
+this file is the first given to it."
+  (interactive "e")
+  (require 'ediff)
+  (let ((mouse-pos  (event-start event)))
+    (select-window (posn-window mouse-pos))
+    (goto-char (posn-point mouse-pos))
+    (call-interactively 'diredp-ediff)))
+
+;;;###autoload
+(defun diredp-mouse-diff (event &optional switches) ; Not bound
+  "Compare this file (pointed by mouse) with file FILE2 using `diff'.
+FILE2 defaults to the file at the mark.  This file is the first file
+given to `diff'.  With prefix arg, prompt for second arg SWITCHES,
+which are options for `diff'."
+  (interactive "e")
+  (let ((default    (and (mark t)  (save-excursion (goto-char (mark t))
+                                                   (dired-get-filename t t))))
+        (mouse-pos  (event-start event)))
+    (require 'diff)
+    (select-window (posn-window mouse-pos))
+    (goto-char (posn-point mouse-pos))
+    (let ((file2  (read-file-name (format "Diff %s with: %s"
+                                          (dired-get-filename t)
+                                          (if default (concat "(default " default ") ") ""))
+                                  (dired-current-directory) default t)))
+      (setq switches  (and current-prefix-arg
+                           (if (fboundp 'icicle-read-string-completing) ; In `icicles-fn.el'
+                               (icicle-read-string-completing "Options for diff: "
+                                                              (if (stringp diff-switches)
+                                                                  diff-switches
+                                                                (mapconcat #'identity diff-switches " "))
+                                                              (lambda (c)
+                                                                (diredp-string-match-p "switches"
+                                                                                       (symbol-name c))))
+                             (read-string "Options for diff: " (if (stringp diff-switches)
+                                                                   diff-switches
+                                                                 (mapconcat #'identity diff-switches " "))))))
+      (diff file2 (dired-get-filename t) switches))))
+
+;;;###autoload
+(defun diredp-mouse-backup-diff (event) ; Not bound
+  "Diff this file with its backup file or vice versa.
+Use the latest backup, if there are several numerical backups.
+If this file is a backup, diff it with its original.
+The backup file is the first file given to `diff'.
+With prefix arg, prompt for SWITCHES which are the options for `diff'."
+  (interactive "e")
+  (let ((switches   (and current-prefix-arg
+                         (if (fboundp 'icicle-read-string-completing) ; In `icicles-fn.el'
+                             (icicle-read-string-completing "Options for diff: "
+                                                            (if (stringp diff-switches)
+                                                                diff-switches
+                                                              (mapconcat #'identity diff-switches " "))
+                                                            (lambda (c)
+                                                              (diredp-string-match-p "switches"
+                                                                                     (symbol-name c))))
+                           (read-string "Options for diff: " (if (stringp diff-switches)
+                                                                 diff-switches
+                                                               (mapconcat #'identity diff-switches " "))))))
+        (mouse-pos  (event-start event)))
+    (select-window (posn-window mouse-pos))
+    (goto-char (posn-point mouse-pos))
+    (diff-backup (dired-get-filename) switches)))
+
+;;;###autoload
+(defun diredp-mouse-mark (event)        ; Not bound
+  "In Dired, mark this file.
+If on a subdir headerline, mark all its files except `.' and `..'.
+
+Use \\[dired-unmark-all-files] to remove all marks,
+and \\[dired-unmark] on a subdir to remove the marks in this subdir."
+  (interactive "e")
+  (let ((mouse-pos  (event-start event)))
+    (select-window (posn-window mouse-pos))
+    (goto-char (posn-point mouse-pos)))
+  (if (and (cdr dired-subdir-alist)  (dired-get-subdir))
+      (save-excursion (dired-mark-subdir-files))
+    (let ((buffer-read-only  nil))
+      (dired-repeat-over-lines 1 #'(lambda () (delete-char 1) (insert dired-marker-char)))
+      (diredp-previous-line 1))))
+
+;;;###autoload
+(defun diredp-mouse-unmark (event)      ; Not bound
+  "In Dired, unmark this file.
+If looking at a subdir, unmark all its files except `.' and `..'."
+  (interactive "e")
+  (let ((mouse-pos  (event-start event)))
+    (select-window (posn-window mouse-pos))
+    (goto-char (posn-point mouse-pos)))
+  (let ((dired-marker-char  ?\040)) (dired-mark nil))
+  (diredp-previous-line 1))
+
+;;; This can be bound to [C-down-mouse-1] to give behavior similar to Windows Explorer.
+;;; However, Emacs generally uses [C-down-mouse-1] for `mouse-buffer-menu'.
+;;;###autoload
+(defun diredp-mouse-mark/unmark (event) ; Not bound
+  "Mark/unmark file or directory at mouse EVENT."
+  (interactive "e")
+  (let* ((mouse-pos                  (event-start event))
+         (inhibit-field-text-motion  t) ; Just in case.
+         (file/dir-name              (with-current-buffer (window-buffer (posn-window mouse-pos))
+                                       (save-excursion
+                                         (goto-char (posn-point mouse-pos))
+                                         (and (not (eobp))  (dired-get-filename nil t))))))
+    ;; Return nil iff not on a file or directory name.
+    (and file/dir-name  (cond ((dired-file-marker file/dir-name)
+                               (diredp-mouse-unmark event)
+                               (message "Unmarked: %s" file/dir-name))
+                              (t
+                               (diredp-mouse-mark event)
+                               (message "Marked: %s" file/dir-name))))))
+
+;; This can be bound to [S-mouse-1] to give behavior similar to Windows Explorer.
+;; If you do that, consider binding `diredp-mouse-mark/unmark' to `C-mouse-1'.
+;; Alternatively, just bind `diredp-mouse-mark/unmark-mark-region-files' to [S-mouse-1].
+;;;###autoload
+(defun diredp-mouse-mark-region-files (event) ; Bound to `S-mouse-1'
+  "Mark files between point and the mouse."
+  (interactive "e")
+  (call-interactively 'mouse-save-then-kill)
+  (diredp-mark-region-files))
+
+;; This can be bound to [S-mouse-1] to give behavior similar to Windows Explorer.
+;; If you don't bind `diredp-mouse-mark/unmark' to, for instance, `C-mouse-1', then
+;; Consider binding this to [S-mouse-1].
+;;;###autoload
+(defun diredp-mouse-mark/unmark-mark-region-files (event) ; Not bound
+  "Mark/unmark file or mark files in region.
+If the file the cursor is on is marked, then mark all files between it
+ and the line clicked (included).
+Otherwise (cursor's file is unmarked):
+ If the file clicked is marked, then unmark it.
+ If it is unmarked, then mark it."
+  (interactive "e")
+  (let ((mouse-pos  (event-start event)))
+    ;; If same click same line as cursor, or cursor's line is marked,
+    ;; Then toggle the clicked line's mark.
+    ;; Else mark all files in region between point and clicked line (included).
+    (if (or (eq (count-lines (point-min) (posn-point mouse-pos))
+                (count-lines (point-min) (point)))
+            (equal dired-marker-char (dired-file-marker (dired-get-filename nil t))))
+        (diredp-mouse-mark/unmark event)
+      (call-interactively 'mouse-save-then-kill)
+      (diredp-mark-region-files))))
+
+;;;###autoload
+(defun diredp-mouse-flag-file-deletion (event) ; Not bound
+  "In Dired, flag this file for deletion.
+If on a subdir headerline, mark all its files except `.' and `..'."
+  (interactive "e")
+  (let ((mouse-pos  (event-start event)))
+    (select-window (posn-window mouse-pos))
+    (goto-char (posn-point mouse-pos)))
+  (let ((dired-marker-char  dired-del-marker)) (dired-mark 1))
+  (diredp-previous-line 1))
+
+;;;###autoload
+(defun diredp-mouse-do-copy (event)     ; Not bound
+  "In Dired, copy this file.
+This normally preserves the last-modified date when copying."
+  (interactive "e")
+  (let ((mouse-pos  (event-start event)))
+    (select-window (posn-window mouse-pos))
+    (goto-char (posn-point mouse-pos)))
+  (dired-do-create-files 'copy #'dired-copy-file (if dired-copy-preserve-time "Copy [-p]" "Copy")
+                         1 dired-keep-marker-copy))
+
+;;;###autoload
+(defun diredp-mouse-do-rename (event)   ; Not bound
+  "In Dired, rename this file."
+  (interactive "e")
+  (let ((mouse-pos  (event-start event)))
+    (select-window (posn-window mouse-pos))
+    (goto-char (posn-point mouse-pos)))
+  (dired-do-create-files 'move #'dired-rename-file "Move" 1 dired-keep-marker-rename "Rename"))
+
+;;;###autoload
+(defun diredp-mouse-upcase (event)      ; Not bound
+  "In Dired, rename this file to upper case."
+  (interactive "e")
+  (let ((mouse-pos  (event-start event)))
+    (select-window (posn-window mouse-pos))
+    (goto-char (posn-point mouse-pos)))
+  (dired-rename-non-directory #'upcase "Rename to uppercase:" nil))
+
+;;;###autoload
+(defun diredp-mouse-downcase (event)    ; Not bound
+  "In Dired, rename this file to lower case."
+  (interactive "e")
+  (let ((mouse-pos  (event-start event)))
+    (select-window (posn-window mouse-pos))
+    (goto-char (posn-point mouse-pos)))
+  (dired-rename-non-directory #'downcase "Rename to lowercase:" nil))
+
+;;;###autoload
+(defun diredp-mouse-do-delete (event)   ; Not bound
+  "In Dired, delete this file, upon confirmation."
+  (interactive "e")
+  (let ((mouse-pos  (event-start event)))
+    (select-window (posn-window mouse-pos))
+    (goto-char (posn-point mouse-pos)))
+  (diredp-internal-do-deletions (dired-map-over-marks (cons (dired-get-filename) (point)) 1)
+                                1
+                                'USE-TRASH-CAN) ; This arg is for Emacs 24+ only.
+  (diredp-previous-line 1))
+
+;;;###autoload
+(defun diredp-mouse-do-shell-command (event) ; Not bound
+  "Run a shell COMMAND on this file.
+If there is output, it goes to a separate buffer.
+
+No automatic redisplay of Dired buffers is attempted, as there's no
+telling what files the command may have changed.  Type
+\\[dired-do-redisplay] to redisplay.
+
+The shell command has the top level directory as working directory, so
+output files usually are created there instead of in a subdir."
+  ;;Functions dired-run-shell-command and dired-shell-stuff-it do the
+  ;;actual work and can be redefined for customization.
+  (interactive "e")
+  (lexical-let ((mouse-pos  (event-start event))
+                (command    (dired-read-shell-command "! on %s: " nil (dired-get-marked-files t nil))))
+    (select-window (posn-window mouse-pos))
+    (goto-char (posn-point mouse-pos))
+    (dired-bunch-files (- 10000 (length command))
+                       (lambda (&rest files) (dired-run-shell-command (dired-shell-stuff-it command files t 1)))
+                       nil
+                       (dired-get-marked-files t 1))))
+
+;;;###autoload
+(defun diredp-mouse-do-symlink (event)  ; Not bound
+  "Make symbolic link to this file."
+  (interactive "e")
+  (let ((mouse-pos  (event-start event)))
+    (select-window (posn-window mouse-pos))
+    (goto-char (posn-point mouse-pos)))
+  (dired-do-create-files 'symlink #'make-symbolic-link "Symlink" 1 dired-keep-marker-symlink))
+
+;;;###autoload
+(defun diredp-mouse-do-hardlink (event) ; Not bound
+  "Make hard link (alias) to this file."
+  (interactive "e")
+  (let ((mouse-pos  (event-start event)))
+    (select-window (posn-window mouse-pos))
+    (goto-char (posn-point mouse-pos)))
+  (dired-do-create-files 'hardlink #'add-name-to-file "Hardlink" 1 dired-keep-marker-hardlink))
+
+;;;###autoload
+(defun diredp-mouse-do-print (event)    ; Not bound
+  "Print this file.
+Uses the shell command coming from variables `lpr-command' and
+`lpr-switches' as default."
+  (interactive "e")
+  (let ((mouse-pos  (event-start event)))
+    (select-window (posn-window mouse-pos))
+    (goto-char (posn-point mouse-pos)))
+  (let* ((file     (dired-get-filename))
+         (command  (dired-mark-read-string "Print %s with: "
+                                           (apply 'concat lpr-command " " lpr-switches)
+                                           'print 1 (list file))))
+    (dired-run-shell-command (dired-shell-stuff-it command (list file) nil))))
+
+;;;###autoload
+(defun diredp-mouse-do-grep (event)     ; Not bound
+  "Run grep against this file."
+  (interactive "e")
+  (let ((mouse-pos  (event-start event)))
+    (select-window (posn-window mouse-pos))
+    (goto-char (posn-point mouse-pos)))
+  (unless grep-command (grep-compute-defaults))
+  (grep (diredp-do-grep-1 (list (dired-get-filename t)))))
+
+;;;###autoload
+(defun diredp-mouse-do-compress (event) ; Not bound
+  "Compress or uncompress this file."
+  (interactive "e")
+  (let ((mouse-pos         (event-start event))
+        (dired-no-confirm  t))
+    (select-window (posn-window mouse-pos))
+    (goto-char (posn-point mouse-pos))
+    (dired-map-over-marks-check #'dired-compress 1 'compress t))
+  (diredp-previous-line 1))
+
+;;;###autoload
+(defun diredp-mouse-do-byte-compile (event) ; Not bound
+  "Byte compile this file."
+  (interactive "e")
+  (let ((mouse-pos         (event-start event))
+        (dired-no-confirm  t))
+    (select-window (posn-window mouse-pos))
+    (goto-char (posn-point mouse-pos))
+    (dired-map-over-marks-check #'dired-byte-compile 1 'byte-compile t))
+  (diredp-previous-line 1))
+
+;;;###autoload
+(defun diredp-mouse-do-load (event)     ; Not bound
+  "Load this Emacs Lisp file."
+  (interactive "e")
+  (let ((mouse-pos         (event-start event))
+        (dired-no-confirm  t))
+    (select-window (posn-window mouse-pos))
+    (goto-char (posn-point mouse-pos))
+    (dired-map-over-marks-check #'dired-load 1 'load t))
+  (diredp-previous-line 1))
+
+;;;###autoload
+(defun diredp-mouse-do-chmod (event)    ; Not bound
+  "Change the mode of this file.
+This calls chmod, so symbolic modes like `g+w' are allowed."
+  (interactive "e")
+  (let ((mouse-pos  (event-start event)))
+    (select-window (posn-window mouse-pos))
+    (goto-char (posn-point mouse-pos)))
+  (dired-do-chxxx "Mode" "chmod" 'chmod 1)
+  (diredp-previous-line 1))
+
+(unless (memq system-type '(windows-nt ms-dos))
+  (defun diredp-mouse-do-chgrp (event)  ; Not bound
+    "Change the group of this file."
+    (interactive "e")
+    (let ((mouse-pos  (event-start event)))
+      (select-window (posn-window mouse-pos))
+      (goto-char (posn-point mouse-pos)))
+    (dired-do-chxxx "Group" "chgrp" 'chgrp 1)
+    (diredp-previous-line 1)))
+
+(unless (memq system-type '(windows-nt ms-dos))
+  (defun diredp-mouse-do-chown (event)  ; Not bound
+    "Change the owner of this file."
+    (interactive "e")
+    (let ((mouse-pos  (event-start event)))
+      (select-window (posn-window mouse-pos))
+      (goto-char (posn-point mouse-pos)))
+    (dired-do-chxxx "Owner" dired-chown-program 'chown 1)
+    (diredp-previous-line 1)))
+
+
+;;; Breadcrumbs
+
+(when (fboundp 'define-minor-mode)
+
+  ;; Macro `define-minor-mode' is not defined in Emacs 20, so in order to be able to byte-compile
+  ;; this file in Emacs 20, prohibit byte-compiling of the `define-minor-mode' call.
+  ;;
+  (eval '(define-minor-mode diredp-breadcrumbs-in-header-line-mode
+          "Toggle the use of breadcrumbs in Dired header line.
+With arg, show breadcrumbs iff arg is positive."
+          :init-value nil :group 'header-line :group 'Dired-Plus
+          (unless (derived-mode-p 'dired-mode)
+            (error "You must be in Dired or a mode derived from it to use this command"))
+          (if diredp-breadcrumbs-in-header-line-mode
+              (diredp-set-header-line-breadcrumbs)
+            (setq header-line-format  (default-value 'header-line-format)))))
+
+  (defun diredp-set-header-line-breadcrumbs ()
+    "Show a header line with breadcrumbs to parent directories."
+    (let ((parent  (diredp-parent-dir default-directory))
+          (dirs    ())
+          (text    ""))
+      (while parent
+        (push parent dirs)
+        (setq parent  (diredp-parent-dir parent)))
+      (dolist (dir  dirs)
+        (let* ((crumbs-map    (make-sparse-keymap))
+               (menu-map      (make-sparse-keymap "Breadcrumbs in Header Line"))
+               ;; The next three are for showing the root as absolute and the rest as relative.
+               (rootp         (diredp-root-directory-p dir))
+               (parent-rootp  (and (not rootp)  (diredp-root-directory-p (diredp-parent-dir dir))))
+               (rdir          dir))
+          ;; (define-key crumbs-map [header-line mouse-3] menu-map)
+          (unless rootp (setq rdir  (file-name-nondirectory (directory-file-name dir))))
+          (when dir
+            (setq rdir  (propertize rdir
+                                    'local-map (progn (define-key crumbs-map [header-line mouse-1]
+                                                        `(lambda () (interactive)
+                                                          (dired ,dir dired-actual-switches)))
+                                                      (define-key crumbs-map [header-line mouse-2]
+                                                        `(lambda () (interactive)
+                                                          (dired-other-window ,dir dired-actual-switches)))
+                                                      crumbs-map)
+                                    'mouse-face 'mode-line-highlight
+                                    ;;'help-echo "mouse-1: Dired; mouse-2: Dired in other window; mouse-3: Menu"))
+                                    'help-echo "mouse-1: Dired; mouse-2: Dired in other window"))
+            (setq text  (concat text (if (or rootp  parent-rootp) " "  " / ") rdir)))))
+      (make-local-variable 'header-line-format)
+      (setq header-line-format  text)))
+
+  ;; Users can do this.
+  ;;
+  ;; (add-hook 'dired-before-readin-hook 'diredp-breadcrumbs-in-header-line-mode)
+
+  )
+
+
+;;; `Dired+' Help
+
+;;;###autoload
+(defun diredp-describe-mode (&optional buffer)
+  "Describe Dired mode, including Dired+ features.
+This is `describe-mode' plus a description of Dired+ features.
+For just the latter, use \\<dired-mode-map>`\\[diredp-dired-plus-help]'."
+  (interactive "@")
+  (unless (derived-mode-p 'dired-mode)
+    (error "Use `diredp-dired-plus-help' if you want information about Dired+"))
+  (with-current-buffer (or buffer  (current-buffer)) (describe-mode))
+  (with-current-buffer (get-buffer-create "*Help*")
+    (save-excursion
+      (goto-char (point-min))
+      (diredp-dired-plus-help-link)
+      (let ((buffer-read-only  nil)) (insert "\n"))
+      (when (re-search-forward "Keybindings:\nkey\\s-+binding\n---\\s-+-------" nil t)
+        (goto-char (match-beginning 0))
+        (let ((buffer-read-only  nil))
+          (insert "\f\n")
+          (diredp-dired-plus-description+links)
+          (insert "\f\n"))))))
+
+;;;###autoload
+(defun diredp-dired-plus-help ()
+  "Describe Dired+."
+  (interactive "@")
+  (diredp-with-help-window "*Help*" (diredp-dired-plus-description+links)))
+
+(defun diredp-dired-plus-description+links ()
+  "Insert Dired+ help text in `*Help*'."
+  (with-current-buffer (get-buffer-create "*Help*")
+    (let ((buffer-read-only  nil))
+      (save-restriction
+        (narrow-to-region (point) (point))
+        (diredp-dired-plus-help-link)
+        (insert (diredp-dired-plus-description))
+        (goto-char (point-max))
+        (insert "\n")
+        (diredp-dired-plus-help-link)))))
+
+(when (and (> emacs-major-version 21)
+           (require 'help-mode nil t)
+           (get 'help-xref 'button-category-symbol)) ; `button.el'
+  (define-button-type 'diredp-help-button
+      :supertype 'help-xref
+      'help-function #'(lambda () (browse-url "https://www.emacswiki.org/emacs/DiredPlus"))
+      'help-echo
+      (purecopy "mouse-2, RET: Dired+ documentation on the Emacs Wiki (requires \
+Internet access)")))
+
+(defun diredp-dired-plus-help-link ()
+  "Add Web link for Dired+ help, and reminder about sending bug report."
+  ;; Don't bother to do this for Emacs 21.3.  Its `help-insert-xref-button' is different.
+  (when (and (> emacs-major-version 21)
+             (require 'help-mode nil t)
+             (fboundp 'help-insert-xref-button)) ; `help-mode.el'.
+    (let ((buffer-read-only  nil))
+      (help-insert-xref-button "[Dired+ Help on the Web]" 'diredp-help-button)
+      (insert (substitute-command-keys
+               "\t\tSend a Dired+ bug report:\n\t\t\t\t\t`\\[diredp-send-bug-report]'\n")))))
+
+(defun diredp-dired-plus-description ()
+  "Dired+ description."
+  (substitute-command-keys
+   (concat
+    "\\<dired-mode-map>\
+              Dired+ Features
+              ---------------
+
+To see or customize the  Dired+ options or faces, use
+`M-x customize-option diredp TAB' or `M-x customize-face diredp TAB'.
+
+Most keys listed here are in addition to those for vanilla Dired.
+
+Menus
+-----
+
+Many Dired+ actions are available from the menu-bar menus and the
+`mouse-3' context menu.  This may include commands shown here as not
+being bound to keys (i.e., listed as `M-x ...').
+
+General Here
+------------
+
+"
+    (and (fboundp 'diredp-w32-drives)
+         "  \\[diredp-w32-drives]\t\t- Go up to a list of MS Windows drives
+")
+    (and (fboundp 'dired-hide-details-mode)
+         "  \\[dired-hide-details-mode]\t\t- Hide/show details
+")
+
+    "  \\[revert-buffer]\t\t- Refresh (sync and show all)
+  \\[diredp-toggle-find-file-reuse-dir]\t- Toggle reusing directories
+"
+    "  \\[diredp-marked-other-window]\t\t- Open Dired on marked files here
+  \\[diredp-dired-inserted-subdirs]\t\t- Dired separately each subdir inserted here
+"    
+    (and (featurep 'bookmark+)
+         "  \\[diredp-highlight-autofiles-mode]\t- Toggle autofile highlighting
+
+")
+
+    "General Globally
+----------------
+
+\\<global-map>\
+  \\[diredp-add-to-dired-buffer]\t- Add files to a Dired buffer
+  \\[diredp-fileset]\t- Open Dired on files in a fileset
+  \\[diredp-dired-recent-dirs]\t- Open Dired on recently used dirs
+  \\[diredp-dired-union]\t- Create union of some Dired buffers
+  \\[diredp-dired-for-files]\t- Open Dired on files located anywhere
+\\<dired-mode-map>\
+
+Mouse
+-----
+
+  \\[diredp-mouse-3-menu]\t- Context-sensitive menu
+"
+
+    (and (where-is-internal 'diredp-mouse-describe-file dired-mode-map)
+         "  \\[diredp-mouse-describe-file]\t- Describe file
+")
+
+    (and (where-is-internal 'diredp-mouse-describe-autofile dired-mode-map)
+         "  \\[diredp-mouse-describe-autofile]\t- Describe autofile
+")
+
+    "  \\[diredp-mouse-mark-region-files]\t\t- Mark all in region
+"
+
+    (and (fboundp 'dired-mouse-w32-browser) ; In `w32-browser.el'.
+         (where-is-internal 'dired-mouse-w32-browser dired-mode-map)
+         "  \\[dired-mouse-w32-browser]\t\t- MS Windows `Open' action
+")
+    (and (fboundp 'dired-mouse-w32-browser-reuse-dir-buffer) ; In `w32-browser.el'.
+         (where-is-internal 'dired-mouse-w32-browser-reuse-dir-buffer dired-mode-map)
+         "  \\[dired-mouse-w32-browser-reuse-dir-buffer]\t- MS Windows `Open' action
+")
+
+    (and (where-is-internal 'dired-mouse-find-file dired-mode-map)
+         "  \\[dired-mouse-find-file]\t- Open in this window
+")
+    (and (where-is-internal 'diredp-mouse-find-file-reuse-dir-buffer dired-mode-map)
+         "  \\[diredp-mouse-find-file-reuse-dir-buffer]\t- Open in this window
+")
+
+    (and (where-is-internal 'dired-mouse-find-file-other-window dired-mode-map)
+         "  \\[dired-mouse-find-file-other-window]\t\t- Open in another window
+")
+
+    "  \\[diredp-mouse-find-file-other-frame]\t\t- Open in another frame
+"
+
+    "
+Marking
+-------
+
+  \\[dired-mark]\t\t- Mark this file/dir
+  \\[dired-unmark]\t\t- Unmark this file/dir
+  \\[dired-toggle-marks]\t\t- Toggle marked/unmarked
+  \\[dired-mark-sexp]\t\t- Mark all satisfying a predicate
+  \\[dired-unmark-all-marks]\t\t- Unmark all
+  \\[diredp-mark/unmark-extension]\t\t- Mark/unmark all that have a given extension
+"
+
+    (and (fboundp 'dired-mark-omitted)  ; In `dired-x.el' Emacs 22+.
+         "  \\[dired-mark-omitted]\t\t- Mark omitted
+")
+
+    "  \\[diredp-mark-files-tagged-regexp]\t\t- Mark those with a tag that matches a regexp
+  \\[diredp-unmark-files-tagged-regexp]\t\t- Unmark those with a tag that matches a regexp
+  \\[diredp-mark-files-tagged-all]\t\t- Mark those with all of the given tags
+  \\[diredp-unmark-files-tagged-all]\t\t- Unmark those with all of the given tags
+  \\[diredp-mark-files-tagged-some]\t\t- Mark those with some of the given tags
+  \\[diredp-unmark-files-tagged-some]\t\t- Unmark those with some of the given tags
+  \\[diredp-mark-files-tagged-not-all]\t- Mark those without some of the given tags
+  \\[diredp-unmark-files-tagged-not-all]\t- Unmark those without some of the given tags
+  \\[diredp-mark-files-tagged-none]\t- Mark those with none of the given tags
+  \\[diredp-unmark-files-tagged-none]\t- Unmark those with none of the given tags
+"
+
+    "
+Current file/subdir (current line)
+----------------------------------
+
+  \\[diredp-describe-file]\t- Describe
+  \\[dired-find-file]\t\t- Open
+"
+    (and (fboundp 'dired-mouse-w32-browser) ; In `w32-browser.el'.
+         (where-is-internal 'dired-mouse-w32-browser dired-mode-map)
+         "  \\[dired-mouse-w32-browser]\t- MS Windows `Open' action
+  \\[dired-w32explore]\t- MS Windows Explorer
+")
+
+    "  \\[diredp-byte-compile-this-file]\t\t- Byte-compile
+  \\[diredp-compress-this-file]\t\t- Compress/uncompress
+  \\[diredp-print-this-file]\t\t- Print
+  \\[diredp-relsymlink-this-file]\t\t- Create relative symlink
+  \\[diredp-delete-this-file]\t\t- Delete (with confirmation)
+  \\[diredp-rename-this-file]\t\t- Rename
+  \\[diredp-capitalize-this-file]\t\t- Capitalize (rename)
+  \\[diredp-upcase-this-file]\t\t- Rename to uppercase
+  \\[diredp-downcase-this-file]\t\t- Rename to lowercase
+  \\[diredp-ediff]\t\t- Ediff
+  \\[diredp-bookmark-this-file]\t\t- Bookmark
+"
+    (and (featurep 'bookmark+)
+         "  \\[diredp-tag-this-file]\t\t- Add some tags to this file/dir
+  \\[diredp-untag-this-file]\t\t- Remove some tags from this file/dir
+  \\[diredp-remove-all-tags-this-file]\t\t- Remove all tags from this file/dir
+  \\[diredp-copy-tags-this-file]\t\t- Copy the tags from this file/dir
+  \\[diredp-paste-add-tags-this-file]\t\t- Paste (add) copied tags to this file/dir
+  \\[diredp-paste-replace-tags-this-file]\t\t- Paste (replace) tags for this file/dir
+  \\[diredp-set-tag-value-this-file]\t\t- Set a tag value for this file/dir
+")
+
+    (and (fboundp 'dired-mouse-w32-browser-reuse-dir-buffer) ; In `w32-browser.el'.
+         (where-is-internal 'dired-mouse-w32-browser-reuse-dir-buffer dired-mode-map)
+         "  \\[dired-mouse-w32-browser-reuse-dir-buffer]\t- MS Windows `Open' action
+  \\[dired-w32explore]\t- MS Windows Explorer
+")
+
+    "
+Marked (or next prefix arg) files & subdirs here
+------------------------------------------------
+"
+    (and (fboundp 'dired-multiple-w32-browser) ; In `w32-browser.el'.
+         "
+  \\[dired-multiple-w32-browser]\t- MS Windows `Open' action
+")
+
+
+    "  \\[diredp-list-marked]\t\t- List marked files and directories
+  \\[diredp-insert-subdirs]\t\t- Insert marked subdirectories
+  \\[dired-copy-filename-as-kill]\t\t- Copy names for pasting
+  M-o \\[dired-copy-filename-as-kill]\t\t- Copy absolute names for pasting
+  \\[diredp-yank-files]\t\t- Paste files whose absolute names you copied
+  \\[dired-do-find-marked-files]\t\t- Visit
+  \\[dired-do-copy]\t\t- Copy
+  \\[dired-do-rename]\t\t- Rename/move
+  \\[diredp-do-grep]\t\t- Run `grep'
+  \\[dired-do-search]\t\t- Search
+"
+    (and (fboundp 'dired-do-find-regexp) ; Emacs 25+
+         "  \\[dired-do-find-regexp]\t\t- Search using `find'
+")
+
+    (if (fboundp 'dired-do-query-replace-regexp) ; Emacs 22+
+        "  \\[dired-do-query-replace-regexp]\t\t- Query-replace
+"
+      "  \\[dired-do-query-replace]\t\t- Query-replace
+")
+
+    (and (fboundp 'dired-do-find-regexp-and-replace)
+         "  \\[dired-do-find-regexp-and-replace]\t\t- Query-replace using `find'
+")
+
+    (and (fboundp 'dired-do-isearch)
+         "  \\[dired-do-isearch]\t- Isearch
+  \\[dired-do-isearch-regexp]\t- Regexp isearch
+")
+
+    (and (fboundp 'dired-do-async-shell-command)
+         "  \\[dired-do-async-shell-command]\t\t- Run shell command asynchronously
+")
+
+    "  \\[dired-do-shell-command]\t\t- Run shell command
+  \\[diredp-marked-other-window]\t\t- Dired
+  \\[dired-do-compress]\t\t- Compress
+  \\[dired-do-byte-compile]\t\t- Byte-compile
+  \\[dired-do-load]\t\t- Load (Emacs Lisp)
+  \\[diredp-do-apply-function]\t\t- Apply Lisp function
+  \\[diredp-do-emacs-command]\t\t- Invoke Emacs command
+"
+    (and (fboundp 'diredp-read-expression) ; Emacs 22+
+         "  \\[diredp-do-lisp-sexp]\t\t- Evaluate Lisp sexp
+")
+
+    "  \\[diredp-omit-marked]\t- Omit
+  \\[diredp-omit-unmarked]\t- Omit unmarked
+"
+
+    (and (featurep 'bookmark+)
+         "
+  \\[diredp-do-tag]\t\t- Add some tags to marked
+  \\[diredp-do-untag]\t\t- Remove some tags from marked
+  \\[diredp-do-remove-all-tags]\t\t- Remove all tags from marked
+  \\[diredp-do-paste-add-tags]\t- Paste (add) copied tags to marked
+  \\[diredp-do-paste-replace-tags]\t\t- Paste (replace) tags for marked
+  \\[diredp-do-set-tag-value]\t\t- Set a tag value for marked
+  \\[diredp-mark-files-tagged-regexp]\t\t- Mark those with a tag that matches a regexp
+  \\[diredp-mark-files-tagged-all]\t\t- Mark those with all of the given tags
+  \\[diredp-mark-files-tagged-some]\t\t- Mark those with some of the given tags
+  \\[diredp-mark-files-tagged-not-all]\t- Mark those without some of the given tags
+  \\[diredp-mark-files-tagged-none]\t- Mark those with none of the given tags
+  \\[diredp-unmark-files-tagged-regexp]\t\t- Unmark those with a tag that matches a regexp
+  \\[diredp-unmark-files-tagged-all]\t\t- Unmark those with all of the given tags
+  \\[diredp-unmark-files-tagged-some]\t\t- Unmark those with some of the given tags
+  \\[diredp-unmark-files-tagged-not-all]\t- Unmark those without some of the given tags
+  \\[diredp-unmark-files-tagged-none]\t- Unmark those with none of the given tags")
+
+    "
+
+  \\[diredp-do-bookmark]\t\t- Bookmark
+"
+
+    (and (featurep 'bookmark+)
+         "  \\[diredp-set-bookmark-file-bookmark-for-marked]\t\t- \
+Bookmark and create bookmark-file bookmark
+  \\[diredp-do-bookmark-in-bookmark-file]\t- Bookmark in specific bookmark file
+")
+
+    "
+Here and below (in marked subdirs)
+----------------------------------
+"
+    (and (fboundp 'dired-multiple-w32-browser) ; In `w32-browser.el'.
+         "
+  \\[diredp-multiple-w32-browser-recursive]\t- MS Windows `Open' action
+")
+
+    "  \\[diredp-list-marked-recursive]\t\t- List marked files and directories
+  \\[diredp-insert-subdirs-recursive]\t\t- Insert marked subdirectories
+  \\[diredp-copy-filename-as-kill-recursive]\t\t- Copy names for pasting
+  \\[diredp-do-find-marked-files-recursive]\t\t\t- Visit
+  \\[diredp-do-print-recursive]\t\t\t- Print
+  \\[diredp-do-copy-recursive]\t\t\t- Copy
+  \\[diredp-do-move-recursive]\t\t\t- Move
+  \\[diredp-do-touch-recursive]\t\t- Touch (update timestamp)
+  \\[diredp-do-chmod-recursive]\t\t\t- Change mode
+
+  \\[diredp-do-symlink-recursive]\t\t\t- Add symbolic links
+  \\[diredp-do-relsymlink-recursive]\t\t\t- Add relative symbolic links
+  \\[diredp-do-hardlink-recursive]\t\t\t- Add hard links
+
+  \\[diredp-capitalize-recursive]\t\t- Capitalize
+  \\[diredp-downcase-recursive]\t\t- Downcase
+  \\[diredp-upcase-recursive]\t\t- Upcase
+"
+  (and (fboundp 'epa-dired-do-encrypt)   ; Emacs 23+
+       "
+  \\[diredp-do-encrypt-recursive]\t\t- Encrypt
+  \\[diredp-do-decrypt-recursive]\t\t- Decrypt
+  \\[diredp-do-sign-recursive]\t\t- Sign
+  \\[diredp-do-verify-recursive]\t\t- Verify
+")
+
+  "
+  \\[diredp-do-grep-recursive]\t\t- `grep'
+  \\[diredp-do-search-recursive]\t\t\t- Search
+  \\[diredp-do-query-replace-regexp-recursive]\t\t\t- Query-replace
+  \\[diredp-do-isearch-recursive]\t\t- Isearch
+  \\[diredp-do-isearch-regexp-recursive]\t- Regexp isearch
+"
+    (and (fboundp 'diredp-do-async-shell-command-recursive) ; Emacs 23+
+         "
+  \\[diredp-do-async-shell-command-recursive]\t\t\t- Run shell command asynchronously
+")
+
+    "  \\[diredp-do-shell-command-recursive]\t\t\t- Run shell command
+  \\[diredp-do-apply-function-recursive]\t\t\t- Apply Lisp function
+
+  \\[diredp-marked-recursive-other-window]\t\t- Dired
+  \\[diredp-list-marked-recursive]\t\t- List
+
+  \\[diredp-image-dired-comment-files-recursive]\t\t- Add image comment
+  \\[diredp-image-dired-display-thumbs-recursive]\t\t- Show thumbnail images
+  \\[diredp-image-dired-tag-files-recursive]\t\t- Tag images
+  \\[diredp-image-dired-delete-tag-recursive]\t\t- Delete image tags
+
+  \\[diredp-do-bookmark-recursive]\t\t- Bookmark
+"
+    (and (featurep 'bookmark+)
+         "  \\[diredp-do-bookmark-in-bookmark-file-recursive]\t\t- Bookmark in bookmark file
+  \\[diredp-set-bookmark-file-bookmark-for-marked-recursive]\t\t- Create bookmark-file bookmark
+")
+
+    "
+  \\[diredp-mark-directories-recursive]\t\t- Mark directories
+  \\[diredp-mark-executables-recursive]\t\t- Mark executables
+  \\[diredp-mark-symlinks-recursive]\t\t- Mark symbolic links
+  \\[diredp-mark-files-containing-regexp-recursive]\t\t- Mark content regexp matches
+  \\[diredp-mark-files-regexp-recursive]\t\t- Mark filename regexp matches
+"
+    (and (featurep 'bookmark+)
+         "  \\[diredp-mark-autofiles-recursive]\t\t- Mark autofiles
+")
+    "  \\[diredp-flag-auto-save-files-recursive]\t\t\t- Flag auto-save
+  \\[diredp-do-delete-recursive]\t\t\t- Delete marked (not flagged)
+  \\[diredp-change-marks-recursive]\t\t- Change marks
+  \\[diredp-unmark-all-files-recursive]\t\t- Remove a given mark
+  \\[diredp-unmark-all-marks-recursive]\t\t\t- Remove all marks
+"
+    (and (featurep 'bookmark+)
+"
+
+Tagging
+-------
+
+  \\[diredp-tag-this-file]\t\t- Add some tags to this file/dir
+  \\[diredp-untag-this-file]\t\t- Remove some tags from this file/dir
+  \\[diredp-remove-all-tags-this-file]\t\t- Remove all tags from this file/dir
+  \\[diredp-copy-tags-this-file]\t\t- Copy the tags from this file/dir
+  \\[diredp-paste-add-tags-this-file]\t\t- Paste (add) copied tags to this file/dir
+  \\[diredp-paste-replace-tags-this-file]\t\t- Paste (replace) tags for this file/dir
+  \\[diredp-set-tag-value-this-file]\t\t- Set a tag value for this file/dir
+  \\[diredp-do-tag]\t\t- Add some tags to marked
+  \\[diredp-do-untag]\t\t- Remove some tags from marked
+  \\[diredp-do-remove-all-tags]\t\t- Remove all tags from marked
+  \\[diredp-do-paste-add-tags]\t- Paste (add) copied tags to marked
+  \\[diredp-do-paste-replace-tags]\t\t- Paste (replace) tags for marked
+  \\[diredp-do-set-tag-value]\t\t- Set a tag value for marked
+  \\[diredp-mark-files-tagged-regexp]\t\t- Mark those with a tag that matches a regexp
+  \\[diredp-mark-files-tagged-all]\t\t- Mark those with all of the given tags
+  \\[diredp-mark-files-tagged-some]\t\t- Mark those with some of the given tags
+  \\[diredp-mark-files-tagged-not-all]\t- Mark those without some of the given tags
+  \\[diredp-mark-files-tagged-none]\t- Mark those with none of the given tags
+  \\[diredp-unmark-files-tagged-regexp]\t\t- Unmark those with a tag that matches a regexp
+  \\[diredp-unmark-files-tagged-all]\t\t- Unmark those with all of the given tags
+  \\[diredp-unmark-files-tagged-some]\t\t- Unmark those with some of the given tags
+  \\[diredp-unmark-files-tagged-not-all]\t- Unmark those without some of the given tags
+  \\[diredp-unmark-files-tagged-none]\t- Unmark those with none of the given tags
+")
+
+    "
+Bookmarking
+-----------
+
+  \\[diredp-bookmark-this-file]\t\t- Bookmark this file/dir
+  \\[diredp-do-bookmark]\t\t- Bookmark marked"
+
+    (and (featurep 'bookmark+)
+         "
+  \\[diredp-set-bookmark-file-bookmark-for-marked]\t\t- \
+Bookmark marked and create bookmark-file bookmark
+  \\[diredp-do-bookmark-in-bookmark-file]\t- Bookmark marked, in specific bookmark file
+")
+
+    "  \\[diredp-do-bookmark-recursive]\t- Bookmark marked, here and below
+"
+    (and (featurep 'bookmark+)
+         "  \\[diredp-do-bookmark-in-bookmark-file-recursive]\t- \
+Bookmark marked, here and below, in specific file
+  \\[diredp-set-bookmark-file-bookmark-for-marked-recursive]\t- \
+Set bookmark-file bookmark for marked here and below
+")
+
+    )))
+
+(when (> emacs-major-version 21)
+  (defun diredp-nb-marked-in-mode-name ()
+    "Show number of marked, flagged, and current-list lines in mode-line.
+\(Flagged means flagged for deletion.)
+If the current line is marked/flagged and there are others
+marked/flagged after it then show `N/M', where `N' is the number
+marked/flagged through the current line and `M' is the total number
+marked/flagged.
+
+If the current line is for a file then show `L/T', where `L' is the
+line number in the current listing and `T' is the number of files in
+that listing.  If option `diredp-count-.-and-..-flag' is non-nil then
+count also `.' and `..'.
+
+Also abbreviate `mode-name', using \"Dired/\" instead of \"Dired by\"."
+    (let ((mname  (format-mode-line mode-name)))
+      ;; Property `dired+-mode-name' indicates whether `mode-name' has been changed.
+      (unless (get-text-property 0 'dired+-mode-name mname)
+        (save-match-data
+          (setq mode-name
+                `(,(propertize (if (string-match "^[dD]ired \\(by \\)?\\(.*\\)" mname)
+                                   (format "Dired/%s" (match-string 2 mname))
+                                 mname)
+                               'dired+-mode-name t)
+                  (:eval (let* ((dired-marker-char  (if (eq ?D dired-marker-char)
+                                                        ?* ; `dired-do-flagged-delete' binds it.
+                                                      dired-marker-char))
+                                (marked-regexp      (dired-marker-regexp))
+                                (nb-marked          (count-matches marked-regexp
+                                                                   (point-min) (point-max))))
+                           (if (not (> nb-marked 0))
+                               ""
+                             (propertize
+                              (format " %s%d%c"
+                                      (save-excursion
+                                        (forward-line 0)
+                                        (if (diredp-looking-at-p (concat marked-regexp ".*"))
+                                            (format "%d/" (1+ (count-matches
+                                                               marked-regexp
+                                                               (point-min) (point))))
+                                          ""))
+                                      nb-marked dired-marker-char)
+                              'face 'diredp-mode-line-marked 'dired+-mode-name t))))
+                  (:eval (let* ((flagged-regexp  (let ((dired-marker-char  dired-del-marker))
+                                                   (dired-marker-regexp)))
+                                (nb-flagged      (count-matches flagged-regexp
+                                                                (point-min) (point-max))))
+                           (if (not (> nb-flagged 0))
+                               ""
+                             (propertize
+                              (format " %s%dD"
+                                      (save-excursion
+                                        (forward-line 0)
+                                        (if (diredp-looking-at-p (concat flagged-regexp ".*"))
+                                            (format "%d/" (1+ (count-matches
+                                                               flagged-regexp
+                                                               (point-min) (point))))
+                                          ""))
+                                      nb-flagged)
+                              'face 'diredp-mode-line-flagged))))
+                  (:eval (save-excursion
+                           (let ((this   0)
+                                 (total  0)
+                                 (o-pt   (line-beginning-position))
+                                 (e-pt   (or (condition-case nil
+                                                 (let ((diredp-wrap-around-flag  nil))
+                                                   (save-excursion
+                                                     (diredp-next-subdir 1)
+                                                     (line-beginning-position)))
+                                               (error nil))
+                                             (save-excursion (goto-char (point-max)) (line-beginning-position)))))
+                             (when dired-subdir-alist (dired-goto-subdir (dired-current-directory)))
+                             (while (and (<= (point) e-pt)
+                                         (< (point) (point-max))) ; Hack to work around Emacs display-engine bug.
+                               (when (condition-case nil
+                                         (dired-get-filename nil diredp-count-.-and-..-flag)
+                                       (error nil))
+                                 (when (<= (line-beginning-position) o-pt) (setq this  (1+ this)))
+                                 (setq total  (1+ total)))
+                               (forward-line 1))
+                             (if (not (> this 0)) (format " %d" total) (format " %d/%d" this total)))))))))))
+
+  (add-hook 'dired-after-readin-hook 'diredp-nb-marked-in-mode-name)
+  ;; This one is needed for `find-dired', because it does not call `dired-readin'.
+  (add-hook 'dired-mode-hook         'diredp-nb-marked-in-mode-name))
+
+;;;###autoload
+(defun diredp-send-bug-report ()
+  "Send a bug report about a Dired+ problem."
+  (interactive)
+  (browse-url (format (concat "mailto:" "drew.adams" "@" "oracle" ".com?subject=\
+Dired+ bug: \
+&body=Describe bug below, using a precise recipe that starts with `emacs -Q' or `emacs -q'.  \
+File `dired+.el' has a header `Update #' that you can use to identify it.\
+%%0A%%0AEmacs version: %s.")
+                      (emacs-version))))
+
+(defun diredp-visit-ignore-regexp ()    ; Taken from `image-file-name-regexp'.
+  "Return a regular expression matching file names to skip.
+This is used by `dired-visit-(next|previous)'."
+  (let ((exts-regexp  (and diredp-visit-ignore-extensions
+                           (concat "\\." (regexp-opt (nconc (mapcar #'upcase diredp-visit-ignore-extensions)
+                                                            diredp-visit-ignore-extensions)
+                                                     t)
+                                   "\\'"))))
+    (if diredp-visit-ignore-regexps
+	(mapconcat #'identity (if exts-regexp
+                                  (cons exts-regexp diredp-visit-ignore-regexps)
+                                diredp-visit-ignore-regexps)
+		   "\\|")
+      exts-regexp)))
+
+;;;###autoload
+(defun diredp-visit-next-file (&optional arg) ; Bound to `C-down'
+  "Move down a line and visit its file in another window.
+With numeric prefix arg N, move down N-1 lines first.
+
+After moving N lines, skip any lines with file names that match either
+`diredp-visit-ignore-extensions' or `diredp-visit-ignore-regexps'. 
+
+Kill the last buffer visited by a `dired-visit-*' command."
+  (interactive "p")
+  (dired-next-line arg)
+  (while (diredp-string-match-p (diredp-visit-ignore-regexp) (dired-get-file-for-visit))
+    (dired-next-line 1))
+  (diredp-visit-this-file))
+
+;;;###autoload
+(defun diredp-visit-previous-file (&optional arg) ; Bound to `C-up'
+  "Move up a line and visit its file in another window.
+With numeric prefix arg N, move up N-1 lines first.
+
+After moving N lines, skip any lines with file names that match either
+`diredp-visit-ignore-extensions' or `diredp-visit-ignore-regexps'. 
+
+Kill the last buffer visited by a `dired-visit-*' command."
+  (interactive "p")
+  (dired-previous-line arg)
+  (while (diredp-string-match-p (diredp-visit-ignore-regexp) (dired-get-file-for-visit))
+    (dired-previous-line 1))
+  (diredp-visit-this-file))
+
+;;;###autoload
+(defun diredp-visit-this-file ()        ; Bound to `e' (replaces `dired-find-file' binding)
+  "View the file on this line in another window in the same frame.
+If it was not already shown there then kill the previous buffer
+visited by a `dired-visit-*' command.
+
+If it was already shown there, and if it and Dired are the only
+windows there, then delete its window (toggle : show/hide the file)."
+  (interactive)
+  (let ((file   (dired-get-file-for-visit))
+        (obuf   (current-buffer))
+        (shown  nil)
+        fwin)
+    (unless (or (and (fboundp 'window-parent)  (window-parent))
+                (not (one-window-p 'NOMINI)))
+      (split-window))
+    (save-selected-window
+      (other-window 1)
+      (setq fwin  (selected-window))
+      (unless (or (setq shown  (or (equal (current-buffer) (get-file-buffer file))
+                                   (memq (current-buffer) (dired-buffers-for-dir file))))
+                  (equal obuf (current-buffer)))
+        (kill-buffer (current-buffer))))
+    (if shown
+        (when (= 2 (count-windows 'NOMINI)) (delete-window fwin))
+      (set-window-buffer fwin (find-file-noselect file)))))
+ 
+;;; Key Bindings.
+
+
+;; Menu Bar.
+;; New order is (left -> right):
+;;
+;;     Dir  Regexp  Mark  Multiple  Single
+
+;; Get rid of menu bar predefined in `dired.el'.
+(define-key dired-mode-map [menu-bar] nil)
+;; Get rid of Edit menu bar menu to save space.
+(define-key dired-mode-map [menu-bar edit] 'undefined)
+
+
+;; `Single' menu.
+;;
+;; REPLACE ORIGINAL `Immediate' menu in `dired.el'.
+;;
+(defvar diredp-menu-bar-single-menu (make-sparse-keymap "Single"))
+(define-key dired-mode-map [menu-bar immediate] (cons "Single" diredp-menu-bar-single-menu))
+
+;; We don't use `define-obsolete-variable-alias' so that byte-compilation in older Emacs
+;; works for newer Emacs too.
+(when (fboundp 'defvaralias)            ; Emacs 22+
+  (defvaralias 'diredp-menu-bar-immediate-menu 'diredp-menu-bar-single-menu))
+(make-obsolete-variable 'diredp-menu-bar-immediate-menu 'diredp-menu-bar-single-menu) ; 2017-04-09
+
+(if (fboundp 'diredp-describe-file)
+    (define-key diredp-menu-bar-single-menu [diredp-describe-file]
+      '(menu-item "Describe" diredp-describe-file
+        :help "Describe the file or directory at cursor"))
+  (define-key diredp-menu-bar-single-menu [diredp-describe-autofile]
+    '(menu-item "Describe" diredp-describe-autofile
+      :help "Describe the autofile at cursor"
+      :enable (featurep 'bookmark+))))
+(define-key diredp-menu-bar-single-menu [separator-describe] '("--")) ; ---------------------
+
+(when (fboundp 'diredp-chown-this-file)
+  (define-key diredp-menu-bar-single-menu [chown]
+    '(menu-item "Change Owner..." diredp-chown-this-file
+      :help "Change the owner of file at cursor")))
+(when (fboundp 'diredp-chgrp-this-file)
+  (define-key diredp-menu-bar-single-menu [chgrp]
+    '(menu-item "Change Group..." diredp-chgrp-this-file
+      :help "Change the group of file at cursor")))
+(define-key diredp-menu-bar-single-menu [chmod]
+  '(menu-item "Change Mode..." diredp-chmod-this-file
+    :help "Change mode (attributes) of file at cursor"))
+(when (fboundp 'dired-do-touch)         ; Emacs 22+
+  (define-key diredp-menu-bar-single-menu [touch]
+    '(menu-item "Change Timestamp (`touch')..." diredp-touch-this-file
+      :help "Change the timestamp of file at cursor, using `touch'")))
+(define-key diredp-menu-bar-single-menu [separator-change] '("--")) ; -----------------------
+
+(define-key diredp-menu-bar-single-menu [print]
+  '(menu-item "Print..." diredp-print-this-file
+    :help "Print file at cursor, supplying print command"))
+(define-key diredp-menu-bar-single-menu [grep]
+  '(menu-item "Grep..." diredp-grep-this-file :help "Grep file at cursor"))
+(define-key diredp-menu-bar-single-menu [compress]
+  '(menu-item "Compress/Uncompress" diredp-compress-this-file
+    :help "Compress/uncompress file at cursor"))
+(define-key diredp-menu-bar-single-menu [command]
+  '(menu-item "Shell Command..." diredp-shell-command-this-file
+    :help "Run a shell command on file at cursor"))
+(define-key diredp-menu-bar-single-menu [diredp-async-shell-command-this-file]
+  '(menu-item "Asynchronous Shell Command..." diredp-async-shell-command-this-file
+    :help "Run a shell command asynchronously on file at cursor"))
+(define-key diredp-menu-bar-single-menu [compile]
+  '(menu-item "Byte Compile" diredp-byte-compile-this-file
+    :help "Byte-compile this Emacs Lisp file"))
+(define-key diredp-menu-bar-single-menu [load]
+  '(menu-item "Load" diredp-load-this-file
+    :help "Load this Emacs Lisp file"))
+
+(when (fboundp 'mkhtml-dired-files)     ; In `mkhtml.el'.
+  (define-key diredp-menu-bar-single-menu [mkhtml-dired-files]
+    '(menu-item "Create HTML" mkhtml-dired-files
+      :help "Create an HTML file corresponding to file at cursor")))
+(define-key diredp-menu-bar-single-menu [separator-misc] '("--")) ; -------------------------
+
+(define-key diredp-menu-bar-single-menu [delete]
+  '(menu-item "Delete" diredp-delete-this-file :help "Delete file at cursor"))
+(define-key diredp-menu-bar-single-menu [separator-delete] '("--")) ; -----------------------
+
+(define-key diredp-menu-bar-single-menu [backup-diff]
+  '(menu-item "Diff with Backup" dired-backup-diff
+    :help "Diff file at cursor with its latest backup"))
+(define-key diredp-menu-bar-single-menu [diff]
+  '(menu-item "Diff..." dired-diff
+    :help "Compare file at cursor with another file using `diff'"))
+(define-key diredp-menu-bar-single-menu [ediff]
+  '(menu-item "Compare..." diredp-ediff :help "Compare file at cursor with another file"))
+(define-key diredp-menu-bar-single-menu [separator-diff] '("--")) ; -------------------------
+
+(define-key diredp-menu-bar-single-menu [diredp-kill-this-tree]
+  '(menu-item "Remove This Inserted Subdir and Lower" diredp-kill-this-tree
+    :visible (and (fboundp 'diredp-kill-this-tree)
+              (not (equal
+                    (expand-file-name (dired-current-directory))
+                    (expand-file-name default-directory)))))) ; In subdir, not top.
+(define-key diredp-menu-bar-single-menu [dired-kill-subdir]
+  '(menu-item "Remove This Inserted Subdir" dired-kill-subdir
+    :visible (not (equal (expand-file-name (dired-current-directory))
+                         (expand-file-name default-directory))))) ; In subdir, not top.
+(define-key diredp-menu-bar-single-menu [diredp-dired-this-subdir]
+  '(menu-item "Dired This Inserted Subdir (Tear Off)"
+    (lambda () (interactive) (diredp-dired-this-subdir t))
+    :visible (and (cdr dired-subdir-alist) ; First is current dir.  Must have at least one more.
+              (not (equal (expand-file-name (dired-current-directory))
+                          (expand-file-name default-directory)))) ; Must be sub, not top.
+    :help "Open Dired for subdir at or above point, tearing it off if inserted"))
+(define-key diredp-menu-bar-single-menu [insert-subdir]
+  '(menu-item "Insert This Subdir" dired-maybe-insert-subdir
+    :visible (and (atom (diredp-this-subdir))
+              (not (assoc (file-name-as-directory (diredp-this-subdir)) dired-subdir-alist)))
+    :enable (atom (diredp-this-subdir))
+    :help "Insert a listing of this subdirectory"))
+(define-key diredp-menu-bar-single-menu [goto-subdir]
+  '(menu-item "Go To Inserted Subdir" dired-maybe-insert-subdir
+    :visible (and (atom (diredp-this-subdir))
+              (assoc (file-name-as-directory (diredp-this-subdir)) dired-subdir-alist))
+    :enable (atom (diredp-this-subdir))
+    :help "Go to the inserted listing of this subdirectory"))
+(define-key diredp-menu-bar-single-menu [separator-subdir] '("--" ; ------------------------
+            :visible (or (atom (diredp-this-subdir)) ; Subdir line.
+                         (not (equal (expand-file-name (dired-current-directory))
+                                     (expand-file-name default-directory)))))) ; Not top.
+
+(define-key diredp-menu-bar-single-menu [view]
+  '(menu-item "View (Read Only)" dired-view-file
+    :help "Examine file at cursor in read-only mode"))
+(define-key diredp-menu-bar-single-menu [display]
+  '(menu-item "Display in Other Window" dired-display-file
+    :help "Display file at cursor in a different window"))
+
+
+;; `Single' > `Open' menu.
+;;
+(defvar diredp-single-open-menu (make-sparse-keymap "Rename")
+  "`Open' submenu for Dired menu-bar `Single' menu.")
+(define-key diredp-menu-bar-single-menu [multiple-open] (cons "Open" diredp-single-open-menu))
+
+;; On Windows, bind more.
+(eval-after-load "w32-browser"
+  '(progn
+    (define-key diredp-single-open-menu [dired-w32-browser]
+      '(menu-item "Open Associated Windows App" dired-w32-browser
+        :help "Open file using the Windows app associated with its file type"))
+    (define-key diredp-single-open-menu [dired-w32explore]
+      '(menu-item "Open in Windows Explorer" dired-w32explore
+        :help "Open file in Windows Explorer"))))
+(define-key diredp-single-open-menu [find-file-other-frame]
+  '(menu-item "Open in Other Frame" diredp-find-file-other-frame
+    :help "Edit file at cursor in a different frame"))
+(define-key diredp-single-open-menu [find-file-other-window]
+  '(menu-item "Open in Other Window" dired-find-file-other-window
+    :help "Edit file at cursor in a different window"))
+(define-key diredp-single-open-menu [find-file]
+  '(menu-item "Open" dired-find-file :help "Edit file at cursor"))
+
+
+;; `Single' > `Rename' menu.
+;;
+(defvar diredp-single-rename-menu (make-sparse-keymap "Rename")
+  "`Rename' submenu for Dired menu-bar `Single' menu.")
+(define-key diredp-menu-bar-single-menu [multiple-case] (cons "Rename" diredp-single-rename-menu))
+
+(define-key diredp-single-rename-menu [single-rename-capitalize]
+  '(menu-item "Capitalize" diredp-capitalize-this-file
+    :help "Capitalize (initial caps) name of file at cursor"))
+(define-key diredp-single-rename-menu [single-rename-downcase]
+  '(menu-item "Downcase" diredp-downcase-this-file
+    ;; When running on plain MS-DOS, there is only one letter-case for file names.
+    :enable (or (not (fboundp 'msdos-long-file-names))  (msdos-long-file-names))
+    :help "Rename file at cursor to a lower-case name"))
+(define-key diredp-single-rename-menu [single-rename-upcase]
+  '(menu-item "Upcase" diredp-upcase-this-file
+    :enable (or (not (fboundp 'msdos-long-file-names))  (msdos-long-file-names))
+    :help "Rename file at cursor to an upper-case name"))
+
+
+;; `Single' > `Move / Copy / Link' menu.
+;;
+(defvar diredp-single-move-copy-link-menu (make-sparse-keymap "Move / Copy / Link")
+  "`Move / Copy / Link' submenu for Dired menu-bar `Single' menu.")
+(define-key diredp-menu-bar-single-menu [multiple-move-copy-link]
+  (cons "Move / Copy / Link" diredp-single-move-copy-link-menu))
+
+(define-key diredp-single-move-copy-link-menu [single-hardlink]
+  '(menu-item "Hardlink to..." diredp-hardlink-this-file
+    :help "Make hard links for current or marked files"))
+(define-key diredp-single-move-copy-link-menu [single-symlink]
+  '(menu-item "Symlink to (Absolute)..." diredp-symlink-this-file
+              :help "Make absolute symbolic link for file at cursor"))
+(define-key diredp-single-move-copy-link-menu [single-relsymlink]
+  '(menu-item "Symlink to (Relative)..." diredp-relsymlink-this-file
+              :help "Make relative symbolic link for file at cursor"))
+(define-key diredp-single-move-copy-link-menu [single-copy]
+  '(menu-item "Copy to..." diredp-copy-this-file :help "Copy file at cursor"))
+(define-key diredp-single-move-copy-link-menu [single-rename]
+  '(menu-item "Move to..." diredp-rename-this-file
+    :help "Rename file at cursor, or move it to a different directory"))
+
+
+;; `Single' > `Image' menu.
+;;
+(defvar diredp-single-image-menu (make-sparse-keymap "Image"))
+(defalias 'diredp-single-image-menu diredp-single-image-menu)
+(define-key diredp-menu-bar-single-menu [image]
+  '(menu-item "Image" diredp-single-image-menu
+    :enable (let ((img-file  (diredp-get-image-filename 'LOCALP 'NO-ERROR)))
+              (and (fboundp 'image-dired-dired-display-image)  img-file))))
+
+(define-key diredp-single-image-menu [diredp-image-dired-display-thumb]
+  '(menu-item "Go To Thumbnail" diredp-image-dired-display-thumb
+    :help "Pop to buffer showing the thumbnail of this image file"))
+(define-key diredp-single-image-menu [diredp-image-dired-create-thumb]
+  '(menu-item "Create Thumbnail" diredp-image-dired-create-thumb
+    :help "Create a thumbnail image for this image file"))
+(define-key diredp-single-image-menu [diredp-image-dired-edit-comment-and-tags]
+  '(menu-item "Edit Comment and Tags..." diredp-image-dired-edit-comment-and-tags
+    :help "Edit comment and tags for this image file"))
+(define-key diredp-single-image-menu [diredp-image-dired-delete-tag]
+  '(menu-item "Delete Image Tag..." diredp-image-dired-delete-tag
+    :help "Remove an `image-dired' tag from this image file"))
+(define-key diredp-single-image-menu [diredp-image-dired-tag-file]
+  '(menu-item "Add Tags..." diredp-image-dired-tag-file
+    :help "Add tags to this image file"))
+(define-key diredp-single-image-menu [diredp-image-dired-comment-file]
+  '(menu-item "Add Comment..." diredp-image-dired-comment-file
+    :help "Add a comment to this image file"))
+(define-key diredp-single-image-menu [diredp-image-dired-copy-with-exif-name]
+  '(menu-item "Copy with EXIF Name" diredp-image-dired-copy-with-exif-name
+    :help "Copy this image file to main image dir using EXIF name"))
+(define-key diredp-single-image-menu [image-dired-dired-display-external]
+  '(menu-item "Display Externally" image-dired-dired-display-external
+    :help "Display image using external viewer"))
+(define-key diredp-single-image-menu [image-dired-dired-display-image]
+  '(menu-item "Display to Fit Other Window" image-dired-dired-display-image
+    :help "Display scaled image to fit a separate window"))
+(define-key diredp-single-image-menu [diredp-image-show-this-file]
+  '(menu-item "Display Full Size Or Smaller" diredp-image-show-this-file
+    :help "Display image full size or at least prefix-arg lines high"))
+(define-key diredp-single-image-menu [dired-find-file]
+  '(menu-item "Display Full Size" dired-find-file
+    :help "Display image full size"))
+
+
+;; `Single' > `Encryption' menu.
+;;
+(when (fboundp 'epa-dired-do-encrypt)   ; Emacs 23+
+  (defvar diredp-single-encryption-menu (make-sparse-keymap "Encryption"))
+  (define-key diredp-menu-bar-single-menu [encryption]
+    (cons "Encryption" diredp-single-encryption-menu))
+
+  (define-key diredp-single-encryption-menu [diredp-decrypt-this-file]
+    '(menu-item "Decrypt..." (lambda ()
+                               (interactive)
+                               (epa-decrypt-file (expand-file-name (dired-get-filename
+                                                                    nil 'NO-ERROR-P))))
+      :help "Decrypt this file"))
+  (define-key diredp-single-encryption-menu [diredp-verify-this-file]
+    '(menu-item "Verify..." (lambda ()
+                              (interactive)
+                              (epa-verify-file (expand-file-name (dired-get-filename
+                                                                  nil 'NO-ERROR-P))))
+      :help "Verify this file"))
+  (define-key diredp-single-encryption-menu [diredp-sign-this-file]
+    '(menu-item "Sign..." (lambda ()
+                            (interactive)
+                            (epa-sign-file (expand-file-name (dired-get-filename
+                                                              nil 'NO-ERROR-P))
+                                           (epa-select-keys (epg-make-context)
+                                                            "Select keys for signing.
+If no one is selected, default secret key is used.  "
+                                                            nil t)))
+      :help "Encrypt this file"))
+  (define-key diredp-single-encryption-menu [diredp-encrypt-this-file]
+    '(menu-item "Encrypt..." (lambda ()
+                               (interactive)
+                               (epa-encrypt-file (expand-file-name (dired-get-filename
+                                                                    nil 'NO-ERROR-P))
+                                                 (epa-select-keys
+                                                  (epg-make-context)
+                                                  "Select recipients for encryption.
+If no one is selected, symmetric encryption will be performed.  "
+                                                  nil t)))
+      :help "Sign this file")))
+
+
+;; `Single' > `Bookmark' menu.
+;;
+(when (require 'bookmark+ nil t)
+  (defvar diredp-single-bookmarks-menu (make-sparse-keymap "Bookmark"))
+  (define-key diredp-menu-bar-single-menu [bookmark]
+    (cons "Bookmark" diredp-single-bookmarks-menu))
+
+  (define-key diredp-single-bookmarks-menu [diredp-set-tag-value-this-file]
+    '(menu-item "Set Tag Value..." diredp-set-tag-value-this-file
+      :help "Set the value (not the name) of a given tag for this file"))
+  (define-key diredp-single-bookmarks-menu [diredp-paste-replace-tags-this-file]
+    '(menu-item "Paste Tags (Replace)" diredp-paste-replace-tags-this-file
+      :help "Replace tags for this file with previously copied tags"))
+  (define-key diredp-single-bookmarks-menu [diredp-paste-add-tags-this-file]
+    '(menu-item "Paste Tags (Add)" diredp-paste-add-tags-this-file
+      :help "Add previously copied tags to this file"))
+  (define-key diredp-single-bookmarks-menu [diredp-copy-tags-this-file]
+    '(menu-item "Copy Tags" diredp-copy-tags-this-file
+      :help "Copy the tags from this file, so you can paste them to another"))
+  (define-key diredp-single-bookmarks-menu [diredp-remove-all-tags-this-file]
+    '(menu-item "Remove All Tags" diredp-remove-all-tags-this-file
+      :help "Remove all tags from the file at cursor"))
+  (define-key diredp-single-bookmarks-menu [diredp-untag-this-file]
+    '(menu-item "Remove Tags..." diredp-untag-this-file
+      :help "Remove some tags from the file at cursor (`C-u': remove all tags)"))
+  (define-key diredp-single-bookmarks-menu [diredp-tag-this-file]
+    '(menu-item "Add Tags..." diredp-tag-this-file :help "Add some tags to the file at cursor"))
+  (define-key diredp-single-bookmarks-menu [diredp-bookmark-this-file]
+    '(menu-item "Bookmark..." diredp-bookmark-this-file
+      :help "Bookmark the file at cursor (create/set autofile)")))
+
+
+;; `Multiple' menu.
+;;
+;; REPLACE ORIGINAL "Operate" menu in `dired.el'.
+;;
+(defvar diredp-menu-bar-multiple-menu (make-sparse-keymap "Multiple"))
+(define-key dired-mode-map [menu-bar operate] (cons "Multiple" diredp-menu-bar-multiple-menu))
+
+;; We don't use `define-obsolete-variable-alias' so that byte-compilation in older Emacs
+;; works for newer Emacs too.
+(when (fboundp 'defvaralias)            ; Emacs 22+
+  (defvaralias 'diredp-menu-bar-operate-menu 'diredp-menu-bar-multiple-menu))
+(make-obsolete-variable 'diredp-menu-bar-operate-menu 'diredp-menu-bar-multiple-menu) ; 2017-04-09
+
+(define-key diredp-menu-bar-multiple-menu [diredp-describe-marked-autofiles]
+  '(menu-item "Describe Marked Autofiles" diredp-describe-marked-autofiles
+    :help "Show the metadata for the marked files that are autofiles"
+    :enable (featurep 'bookmark+)))
+(define-key diredp-menu-bar-multiple-menu [separator-describe] '("--")) ; -----------------------
+
+(unless (memq system-type '(windows-nt ms-dos))
+  (define-key diredp-menu-bar-multiple-menu [chown]
+    '(menu-item "Change Owner..." dired-do-chown
+      :help "Change the owner of marked files")))
+(unless (memq system-type '(windows-nt ms-dos))
+  (define-key diredp-menu-bar-multiple-menu [chgrp]
+    '(menu-item "Change Group..." dired-do-chgrp
+      :help "Change the owner of marked files")))
+(define-key diredp-menu-bar-multiple-menu [chmod]
+  '(menu-item "Change Mode..." dired-do-chmod
+    :help "Change mode (attributes) of marked files"))
+(when (fboundp 'dired-do-touch)         ; Emacs 22+
+  (define-key diredp-menu-bar-multiple-menu [touch]
+    '(menu-item "Change Timestamp (`touch')..." dired-do-touch
+      :help "Change the timestamp of the marked files, using `touch'")))
+(define-key diredp-menu-bar-multiple-menu [separator-change] '("--")) ; -------------------------
+
+(when (fboundp 'diredp-read-expression) ; Emacs 22+
+  (define-key diredp-menu-bar-multiple-menu [diredp-do-lisp-sexp]
+    '(menu-item "Eval Sexp..." diredp-do-lisp-sexp
+                :help "Evaluate an Emacs-Lisp sexp in each marked file")))
+(define-key diredp-menu-bar-multiple-menu [diredp-do-emacs-command]
+    '(menu-item "Invoke Emacs Command..." diredp-do-emacs-command
+      :help "Invoke an Emacs command in each marked file"))
+(define-key diredp-menu-bar-multiple-menu [diredp-do-apply-function]
+    '(menu-item "Apply Function..." diredp-do-apply-function
+      :help "Apply a Lisp function to each marked file name (`C-u': file contents, not name)"))
+(define-key diredp-menu-bar-multiple-menu [print]
+  '(menu-item "Print..." dired-do-print :help "Print marked files, supplying print command"))
+(define-key diredp-menu-bar-multiple-menu [compress]
+  '(menu-item "Compress/Uncompress" dired-do-compress :help "Compress/uncompress marked files"))
+(when (fboundp 'dired-do-compress-to)
+  (define-key diredp-menu-bar-multiple-menu [compress-to]
+    '(menu-item "Compress to..." dired-do-compress-to
+      :help "Compress marked files and dirs together, in the same archive")))
+(define-key diredp-menu-bar-multiple-menu [command]
+  '(menu-item "Shell Command..." dired-do-shell-command
+    :help "Run a shell command on each marked file"))
+(when (fboundp 'dired-do-async-shell-command) ; Emacs 23+
+  (define-key diredp-menu-bar-multiple-menu [async-command]
+    '(menu-item "Asynchronous Shell Command..." dired-do-async-shell-command
+      :help "Run a shell command asynchronously on each marked file")))
+(define-key diredp-menu-bar-multiple-menu [compile]
+  '(menu-item "Byte Compile" dired-do-byte-compile :help "Byte-compile marked Emacs Lisp files"))
+(define-key diredp-menu-bar-multiple-menu [load]
+  '(menu-item "Load" dired-do-load :help "Load marked Emacs Lisp files"))
+
+(unless (require 'bookmark+ nil t)
+  (define-key diredp-menu-bar-multiple-menu [diredp-bookmark-this-file]
+    '(menu-item "Bookmark..." diredp-bookmark-this-file :help "Bookmark the file at cursor")))
+(when (fboundp 'mkhtml-dired-files)     ; In `mkhtml.el'.
+  (define-key diredp-menu-bar-multiple-menu [mkhtml-dired-files]
+    '(menu-item "Create HTML" mkhtml-dired-files
+      :help "Create HTML files corresponding to marked files")))
+(define-key diredp-menu-bar-multiple-menu [separator-misc] '("--")) ; ---------------------------
+
+(define-key diredp-menu-bar-multiple-menu [diredp-copy-abs-filenames-as-kill]
+  '(menu-item "Copy Marked Names as Absolute" diredp-copy-abs-filenames-as-kill
+    :help "Copy absolute names of marked files to the kill ring"
+    :keys "M-0 w"))
+(define-key diredp-menu-bar-multiple-menu [kill-ring]
+  '(menu-item "Copy Marked Names" dired-copy-filename-as-kill
+    :help "Copy names of marked files to the kill ring, for pasting"))
+(define-key diredp-menu-bar-multiple-menu [diredp-list-marked]
+    '(menu-item "List Marked Files" diredp-list-marked
+      :help "List the files marked here (C-u C-u: all, C-u C-u C-u: all + dirs)"))
+(define-key diredp-menu-bar-multiple-menu [diredp-insert-subdirs]
+  '(menu-item "Insert Subdirs" diredp-insert-subdirs
+    :help "Insert the marked subdirectories - like using `i' at each marked dir"))
+;; On Windows, bind more.
+(eval-after-load "w32-browser"
+  '(define-key diredp-menu-bar-multiple-menu [dired-multiple-w32-browser]
+      '(menu-item "Open Associated Windows Apps" dired-multiple-w32-browser
+        :help "Open files using the Windows apps associated with their file types")))
+(when (fboundp 'dired-do-find-marked-files)
+  (define-key diredp-menu-bar-multiple-menu [find-files]
+    '(menu-item "Open" dired-do-find-marked-files ; In `dired-x.el'.
+      :help "Open each marked file for editing")))
+
+
+;; `Multiple' > `Dired' menu.
+;;
+(defvar diredp-multiple-dired-menu (make-sparse-keymap "Dired")
+  "`Dired' submenu for Dired menu-bar `Multiple' menu.")
+(define-key diredp-menu-bar-multiple-menu [multiple-dired]
+  `(menu-item "Dired" ,diredp-multiple-dired-menu
+    :enable (save-excursion (goto-char (point-min))
+                            (and (re-search-forward (dired-marker-regexp) nil t)
+                                 (re-search-forward (dired-marker-regexp) nil t)))
+    :help "Open Dired on marked files and dirs only"))
+
+(define-key diredp-multiple-dired-menu [diredp-marked-other-window]
+  '(menu-item "Dired Marked in Other Window" diredp-marked-other-window
+    :enable (save-excursion (goto-char (point-min))
+                            (and (re-search-forward (dired-marker-regexp) nil t)
+                                 (re-search-forward (dired-marker-regexp) nil t)))
+    :help "Open Dired on marked files and dirs only, in other window"))
+(define-key diredp-multiple-dired-menu [diredp-marked]
+  '(menu-item "Dired Marked" diredp-marked
+    :enable (save-excursion (goto-char (point-min))
+                            (and (re-search-forward (dired-marker-regexp) nil t)
+                                 (re-search-forward (dired-marker-regexp) nil t)))
+    :help "Open Dired on marked files and dirs only"))
+
+
+;; `Multiple' > `Omit' menu.
+;;
+(defvar diredp-multiple-omit-menu (make-sparse-keymap "Omit")
+  "`Omit' submenu for Dired menu-bar `Multiple' menu.")
+(define-key diredp-menu-bar-multiple-menu [multiple-omit] (cons "Omit" diredp-multiple-omit-menu))
+
+(define-key diredp-multiple-omit-menu [omit-unmarked]
+  '(menu-item "Omit Unmarked" diredp-omit-unmarked :help "Hide lines of unmarked files"))
+(define-key diredp-multiple-omit-menu [omit-marked]
+  '(menu-item "Omit Marked" diredp-omit-marked :help "Hide lines of marked files"))
+
+
+;; `Multiple' > `Delete' menu.
+;;
+(defvar diredp-multiple-delete-menu (make-sparse-keymap "Delete")
+  "`Delete' submenu for Dired menu-bar `Multiple' menu.")
+(define-key diredp-menu-bar-multiple-menu [multiple-delete] (cons "Delete" diredp-multiple-delete-menu))
+
+(define-key diredp-multiple-delete-menu [delete-flagged]
+  '(menu-item "Delete Flagged" dired-do-flagged-delete
+    :help "Delete all files flagged for deletion (D)"))
+(define-key diredp-multiple-delete-menu [delete]
+  '(menu-item "Delete Marked (not Flagged)" dired-do-delete
+    :help "Delete current file or all marked files (not flagged files)"))
+
+
+;; `Multiple' > `Rename' menu.
+;;
+(defvar diredp-multiple-rename-menu (make-sparse-keymap "Rename")
+  "`Rename' submenu for Dired menu-bar `Multiple' menu.")
+(define-key diredp-menu-bar-multiple-menu [multiple-case] (cons "Rename" diredp-multiple-rename-menu))
+
+(define-key diredp-multiple-rename-menu [multiple-rename-rename]
+  '(menu-item "Move to Dir... / Rename This..." dired-do-rename
+    :help "Move marked (or next N) files, or rename current file"))
+
+(define-key diredp-multiple-rename-menu [multiple-rename-capitalize]
+  '(menu-item "Capitalize" diredp-capitalize
+    :help "Capitalize (initial caps) the names of all marked files"))
+(define-key diredp-multiple-rename-menu [multiple-rename-downcase]
+  '(menu-item "Downcase" dired-downcase
+    :enable (or (not (fboundp 'msdos-long-file-names))  (msdos-long-file-names))
+    :help "Rename marked files to lowercase names"))
+(define-key diredp-multiple-rename-menu [multiple-rename-upcase]
+  '(menu-item "Upcase" dired-upcase
+    :enable (or (not (fboundp 'msdos-long-file-names))  (msdos-long-file-names))
+    :help "Rename marked files to uppercase names"))
+
+
+;; `Multiple' > `Move / Copy / Link' menu.
+;;
+(defvar diredp-multiple-move-copy-link-menu (make-sparse-keymap "Move / Copy / Link")
+  "`Move / Copy / Link' submenu for Dired menu-bar `Multiple' menu.")
+(define-key diredp-menu-bar-multiple-menu [multiple-move-copy-link]
+  (cons "Move / Copy / Link" diredp-multiple-move-copy-link-menu))
+
+(define-key diredp-multiple-move-copy-link-menu [multiple-move-copy-link-hardlink]
+  '(menu-item "Hardlink to..." dired-do-hardlink
+    :help "Make hard links for current or marked files"))
+(define-key diredp-multiple-move-copy-link-menu [multiple-move-copy-link-symlink]
+  '(menu-item "Symlink to (Absolute)..." dired-do-symlink ; In `dired-aux.el'.
+              :help "Make absolute symbolic links for current or marked files"))
+(define-key diredp-multiple-move-copy-link-menu [multiple-move-copy-link-relsymlink]
+  '(menu-item "Symlink to (Relative)..." dired-do-relsymlink ; In `dired-x.el'.
+              :help "Make relative symbolic links for current or marked files"))
+(define-key diredp-multiple-move-copy-link-menu [multiple-move-copy-link-copy]
+  '(menu-item "Copy to..." dired-do-copy :help "Copy current file or all marked files"))
+(define-key diredp-multiple-move-copy-link-menu [multiple-move-copy-link-rename]
+  '(menu-item "Move to..." dired-do-rename :help "Rename current file or move marked files"))
+
+
+;; `Multiple' > `Images' menu.
+;;
+(defvar diredp-multiple-images-menu (make-sparse-keymap "Images"))
+(defalias 'diredp-multiple-images-menu diredp-multiple-images-menu)
+(define-key diredp-menu-bar-multiple-menu [images]
+  '(menu-item "Images" diredp-multiple-images-menu
+    :enable (fboundp 'image-dired-display-thumbs)))
+
+;; We don't use `define-obsolete-variable-alias' so that byte-compilation in older Emacs
+;; works for newer Emacs too.
+(when (fboundp 'defvaralias)            ; Emacs 22+
+  (defvaralias 'diredp-menu-bar-images-menu 'diredp-multiple-images-menu))
+(make-obsolete-variable 'diredp-menu-bar-images-menu 'diredp-multiple-images-menu) ; 2017-04-09
+
+;; Remove the items from `Multiple' menu.
+(define-key diredp-menu-bar-multiple-menu [image-dired-delete-tag] nil)
+(define-key diredp-menu-bar-multiple-menu [image-dired-tag-files] nil)
+(define-key diredp-menu-bar-multiple-menu [image-dired-dired-comment-files] nil)
+(define-key diredp-menu-bar-multiple-menu [image-dired-display-thumbs] nil)
+
+;; Add them to `Multiple' > `Images' menu.
+(define-key diredp-multiple-images-menu [image-dired-delete-tag]
+  '(menu-item "Delete Tag..." image-dired-delete-tag
+    :help "Delete tag from marked image files"))
+(define-key diredp-multiple-images-menu [image-dired-tag-files]
+  '(menu-item "Add Tags..." image-dired-tag-files
+    :help "Add tags to marked image files"))
+(define-key diredp-multiple-images-menu [image-dired-dired-comment-files]
+  '(menu-item "Add Comment..." image-dired-dired-comment-files
+    :help "Add comment to marked image files"))
+(define-key diredp-multiple-images-menu [image-dired-display-thumbs]
+  '(menu-item "Display Thumbnails" image-dired-display-thumbs
+    :help "Display thumbnails for marked image files"))
+(define-key diredp-multiple-images-menu [diredp-do-display-images]
+  '(menu-item "Display" diredp-do-display-images
+    :help "Display the marked image files"))
+
+
+;; `Multiple' > `Encryption' menu.
+;;
+(when (fboundp 'epa-dired-do-encrypt)   ; Emacs 23+
+  (defvar diredp-multiple-encryption-menu (make-sparse-keymap "Encryption"))
+  (define-key diredp-menu-bar-multiple-menu [encryption]
+    (cons "Encryption" diredp-multiple-encryption-menu))
+
+  ;; We don't use `define-obsolete-variable-alias' so that byte-compilation in older Emacs
+  ;; works for newer Emacs too.
+  (when (fboundp 'defvaralias)          ; Emacs 22+
+    (defvaralias 'diredp-menu-bar-encryption-menu 'diredp-multiple-encryption-menu))
+  (make-obsolete-variable 'diredp-menu-bar-encryption-menu 'diredp-multiple-encryption-menu) ; 2017-04-09
+
+  (when (boundp 'diredp-menu-bar-encryption-menu)
+    (defalias 'diredp-menu-bar-encryption-menu diredp-menu-bar-encryption-menu))
+  (make-obsolete 'diredp-menu-bar-encryption-menu 'diredp-multiple-encryption-menu) ; 2017-04-09
+
+  ;; Remove the items from `Multiple' menu.
+  (define-key diredp-menu-bar-multiple-menu [epa-dired-do-decrypt] nil)
+  (define-key diredp-menu-bar-multiple-menu [epa-dired-do-verify] nil)
+  (define-key diredp-menu-bar-multiple-menu [epa-dired-do-sign] nil)
+  (define-key diredp-menu-bar-multiple-menu [epa-dired-do-encrypt] nil)
+
+  ;; Add them to `Multiple' > `Encryption' menu.
+  (define-key diredp-multiple-encryption-menu [epa-dired-do-decrypt]
+    '(menu-item "Decrypt..." epa-dired-do-decrypt :help "Decrypt the marked files"))
+  (define-key diredp-multiple-encryption-menu [epa-dired-do-verify]
+    '(menu-item "Verify..." epa-dired-do-verify :help "Verify the marked files"))
+  (define-key diredp-multiple-encryption-menu [epa-dired-do-sign]
+    '(menu-item "Sign..." epa-dired-do-sign :help "Sign the marked files"))
+  (define-key diredp-multiple-encryption-menu [epa-dired-do-encrypt]
+    '(menu-item "Encrypt..." epa-dired-do-encrypt :help "Encrypt the marked files")))
+
+
+;; `Multiple' > `Search' menu.
+;;
+(defvar diredp-multiple-search-menu (make-sparse-keymap "Search"))
+(define-key diredp-menu-bar-multiple-menu [search]
+  (cons "Search" diredp-multiple-search-menu))
+
+;; We don't use `define-obsolete-variable-alias' so that byte-compilation in older Emacs
+;; works for newer Emacs too.
+(when (fboundp 'defvaralias)            ; Emacs 22+
+  (defvaralias 'diredp-menu-bar-operate-search-menu 'diredp-multiple-search-menu))
+(make-obsolete-variable 'diredp-menu-bar-operate-search-menu 'diredp-multiple-search-menu) ; 2017-04-09
+
+(when (fboundp 'dired-do-isearch-regexp) ; Emacs 23+
+  (define-key diredp-multiple-search-menu [isearch-regexp]
+    '(menu-item "Isearch Regexp Files..." dired-do-isearch-regexp
+      :help "Incrementally search marked files for regexp"))
+  (define-key diredp-multiple-search-menu [isearch]
+    '(menu-item "Isearch Files..." dired-do-isearch
+      :help "Incrementally search marked files for string")))
+(when (fboundp 'dired-do-find-regexp-and-replace)
+  (define-key diredp-multiple-search-menu [find-query-replace]
+    '(menu-item "Query Replace Using `find'..." dired-do-find-regexp-and-replace
+      :help "Replace regexp in marked files using `find'")))
+(define-key diredp-multiple-search-menu [query-replace]
+  (if (< emacs-major-version 21)
+      '(menu-item "Query Replace Using TAGS Table..." dired-do-query-replace)
+    '(menu-item "Query Replace Using TAGS Table..." dired-do-query-replace-regexp
+      :help "Replace regexp in marked files using tags in a TAGS table")))
+(when (fboundp 'dired-do-find-regexp)
+  (define-key diredp-multiple-search-menu [find-regexp]
+    '(menu-item "Search Files Using `find'..." dired-do-find-regexp
+      :help "Search marked files for regexp using `find'")))
+(define-key diredp-multiple-search-menu [search]
+  '(menu-item "Search Files Using TAGS Table..." dired-do-search
+              :help "Search marked files for regexp using tags in a TAGS table"))
+(define-key diredp-multiple-search-menu [grep]
+  '(menu-item "Grep..." diredp-do-grep :help "Grep marked, next N, or all files shown"))
+
+
+;; `Multiple' > `Bookmark' menu.
+;;
+(defvar diredp-multiple-bookmarks-menu (make-sparse-keymap "Bookmark"))
+(define-key diredp-menu-bar-multiple-menu [bookmark]
+  (cons "Bookmark" diredp-multiple-bookmarks-menu))
+
+;; We don't use `define-obsolete-variable-alias' so that byte-compilation in older Emacs
+;; works for newer Emacs too.
+(when (fboundp 'defvaralias)            ; Emacs 22+
+  (defvaralias 'diredp-menu-bar-operate-bookmarks-menu 'diredp-multiple-bookmarks-menu))
+(make-obsolete-variable 'diredp-menu-bar-operate-bookmarks-menu 'diredp-multiple-bookmarks-menu) ; 2017-04-09
+
+(when (require 'bookmark+ nil t)
+  (define-key diredp-multiple-bookmarks-menu [diredp-do-set-tag-value]
+    '(menu-item "Set Tag Value..." diredp-do-set-tag-value
+      :help "Set the value of a given tag for the marked or next N files"))
+  (define-key diredp-multiple-bookmarks-menu [diredp-do-paste-replace-tags]
+    '(menu-item "Paste Tags (Replace)" diredp-do-paste-replace-tags
+      :help "Replace tags for the marked or next N files with copied tags"))
+  (define-key diredp-multiple-bookmarks-menu [diredp-do-paste-add-tags]
+    '(menu-item "Paste Tags (Add)" diredp-do-paste-add-tags
+      :help "Add previously copied tags to the marked or next N files"))
+  (define-key diredp-multiple-bookmarks-menu [diredp-do-remove-all-tags]
+    '(menu-item "Remove All Tags" diredp-do-remove-all-tags
+      :help "Remove all tags from the marked or next N files"))
+  (define-key diredp-multiple-bookmarks-menu [diredp-do-untag]
+    '(menu-item "Remove Tags..." diredp-do-untag
+      :help "Remove some tags from the marked or next N files"))
+  (define-key diredp-multiple-bookmarks-menu [diredp-do-tag]
+    '(menu-item "Add Tags..." diredp-do-tag
+      :help "Add some tags to the marked or next N files"))
+  (define-key diredp-multiple-bookmarks-menu [separator-book-2] '("--"))) ; ------------
+
+(define-key diredp-multiple-bookmarks-menu
+    [diredp-do-bookmark-in-bookmark-file-recursive]
+  '(menu-item "Bookmark in Bookmark File (Here and Below)..."
+    diredp-do-bookmark-in-bookmark-file-recursive
+    :help "Bookmark marked files (including in marked subdirs) in bookmark file and save it"))
+(define-key diredp-multiple-bookmarks-menu
+    [diredp-set-bookmark-file-bookmark-for-marked-recursive]
+  '(menu-item "Create Bookmark-File Bookmark (Here and Below)..."
+    diredp-set-bookmark-file-bookmark-for-marked-recursive
+    :help "Create a bookmark-file bookmark for marked files, including in marked subdirs"))
+(define-key diredp-multiple-bookmarks-menu [diredp-do-bookmark-dirs-recursive]
+    '(menu-item "Bookmark Dirs (Here and Below)..." diredp-do-bookmark-dirs-recursive
+      :help "Bookmark this Dired buffer and marked subdirectory Dired buffers, recursively."))
+(define-key diredp-multiple-bookmarks-menu [diredp-do-bookmark-recursive]
+  '(menu-item "Bookmark (Here and Below)..." diredp-do-bookmark-recursive
+    :help "Bookmark the marked files, including those in marked subdirs"))
+(define-key diredp-multiple-bookmarks-menu [separator-book-1] '("--")) ; ---------------
+
+(define-key diredp-multiple-bookmarks-menu [diredp-do-bookmark-in-bookmark-file]
+  '(menu-item "Bookmark in Bookmark File..." diredp-do-bookmark-in-bookmark-file
+    :help "Bookmark the marked files in BOOKMARK-FILE and save BOOKMARK-FILE"))
+(define-key diredp-multiple-bookmarks-menu [diredp-set-bookmark-file-bookmark-for-marked]
+  '(menu-item "Create Bookmark-File Bookmark..." diredp-set-bookmark-file-bookmark-for-marked
+    :help "Create a bookmark-file bookmark, and bookmark the marked files in it"))
+(define-key diredp-multiple-bookmarks-menu [diredp-do-bookmark]
+  '(menu-item "Bookmark..." diredp-do-bookmark :help "Bookmark the marked or next N files"))
+
+
+;; `Multiple' > `Marked Here and Below' menu.
+;;
+(defvar diredp-multiple-recursive-menu (make-sparse-keymap "Marked Here and Below"))
+(define-key diredp-menu-bar-multiple-menu [operate-recursive]
+  (cons "Marked Here and Below" diredp-multiple-recursive-menu))
+
+;; We don't use `define-obsolete-variable-alias' so that byte-compilation in older Emacs
+;; works for newer Emacs too.
+(when (fboundp 'defvaralias)            ; Emacs 22+
+  (defvaralias 'diredp-menu-bar-operate-recursive-menu 'diredp-multiple-recursive-menu))
+(make-obsolete-variable 'diredp-menu-bar-operate-recursive-menu 'diredp-multiple-recursive-menu) ; 2017-04-09
+
+(when (fboundp 'diredp-do-chown-recursive)
+  (define-key diredp-multiple-recursive-menu [chown]
+    '(menu-item "Change Owner..." diredp-do-chown-recursive
+      :help "Change the owner of marked files, including those in marked subdirs")))
+(when (fboundp 'diredp-do-chgrp-recursive)
+  (define-key diredp-multiple-recursive-menu [chgrp]
+    '(menu-item "Change Group..." diredp-do-chgrp-recursive
+      :help "Change the owner of marked files, including those in marked subdirs")))
+(define-key diredp-multiple-recursive-menu [chmod]
+  '(menu-item "Change Mode..." diredp-do-chmod-recursive
+    :help "Change mode (attributes) of marked files, including those in marked subdirs"))
+(when (fboundp 'dired-do-touch)         ; Emacs 22+
+  (define-key diredp-multiple-recursive-menu [touch]
+    '(menu-item "Change Timestamp (`touch')..." diredp-do-touch-recursive
+      :help "Change timestamp of marked files, including those in marked subdirs")))
+(define-key diredp-multiple-recursive-menu [separator-change] '("--")) ; ----------------
+
+(define-key diredp-multiple-recursive-menu [diredp-do-apply-function-recursive]
+    '(menu-item "Apply Lisp Function..." diredp-do-apply-function-recursive
+      :help "Apply a Lisp function to the marked files, including those in marked subdirs"))
+(define-key diredp-multiple-recursive-menu [diredp-do-print-recursive]
+    '(menu-item "Print..." diredp-do-print-recursive
+      :help "Print the marked files, including those in marked subdirs"))
+(define-key diredp-multiple-recursive-menu [diredp-do-shell-command-recursive]
+    '(menu-item "Shell Command..." diredp-do-shell-command-recursive
+      :help "Run shell command on the marked files, including those in marked subdirs"))
+(when (fboundp 'dired-do-async-shell-command) ; Emacs 23+
+  (define-key diredp-multiple-recursive-menu [diredp-do-async-shell-command-recursive]
+    '(menu-item "Asynchronous Shell Command..." diredp-do-async-shell-command-recursive
+      :help "Run shell command asynchronously on marked files, including in marked subdirs")))
+
+(when (fboundp 'diredp-unmark-all-marks-recursive) ; Emacs 22+
+  (define-key diredp-multiple-recursive-menu [separator-1] '("--")) ; ------------
+  (define-key diredp-multiple-recursive-menu [diredp-change-marks-recursive]
+    '(menu-item "Change Mark..." diredp-change-marks-recursive
+      :help "Change all OLD marks to NEW marks, including those in marked subdirs"))
+  (define-key diredp-multiple-recursive-menu [diredp-unmark-all-files-recursive]
+    '(menu-item "Unmark Marked-With..." diredp-unmark-all-files-recursive
+      :help "Remove a given mark everywhere, including in marked subdirs"))
+  (define-key diredp-multiple-recursive-menu [diredp-unmark-all-marks-recursive]
+    '(menu-item "Unmark All..." diredp-unmark-all-marks-recursive
+      :help "Remove ALL marks everywhere, including in marked subdirs")))
+
+(define-key diredp-multiple-recursive-menu [separator-misc] '("--")) ; ------------------
+
+(define-key diredp-multiple-recursive-menu [diredp-do-delete-recursive]
+    '(menu-item "Delete Marked (not Flagged)" diredp-do-delete-recursive
+      :help "Delete marked (not flagged) files, including in marked subdirs"))
+(define-key diredp-multiple-recursive-menu [separator-delete] '("--")) ; ----------------
+
+(define-key diredp-multiple-recursive-menu [diredp-do-hardlink-recursive]
+  '(menu-item "Hardlink to..." diredp-do-hardlink-recursive
+    :help "Make hard links for marked files, including those in marked subdirs"))
+(define-key diredp-multiple-recursive-menu [diredp-do-symlink-recursive]
+  '(menu-item "Symlink to (Absolute)..." diredp-do-symlink-recursive
+              :help "Make absolute symbolic links for marked files, including those in marked subdirs"))
+(define-key diredp-multiple-recursive-menu [diredp-do-relsymlink-recursive]
+  '(menu-item "Symlink to (Relative)..." diredp-do-relsymlink-recursive
+              :help "Make relative symbolic links for marked files, including those in marked subdirs"))
+(define-key diredp-multiple-recursive-menu [diredp-do-copy-recursive]
+    '(menu-item "Copy to..." diredp-do-copy-recursive
+      :help "Copy marked files, including in marked subdirs, to a given directory"))
+(define-key diredp-multiple-recursive-menu [diredp-do-move-recursive]
+    '(menu-item "Move to..." diredp-do-move-recursive
+      :help "Move marked files, including in marked subdirs, to a given directory"))
+(define-key diredp-multiple-recursive-menu [separator-copy-move] '("--")) ; -------------
+
+(define-key diredp-multiple-recursive-menu [diredp-capitalize-recursive]
+  '(menu-item "Capitalize" diredp-capitalize-recursive
+    :enable (or (not (fboundp 'msdos-long-file-names))  (msdos-long-file-names))
+    :help "Capitalize the names of all marked files, including in marked subdirs"))
+(define-key diredp-multiple-recursive-menu [diredp-downcase-recursive]
+  '(menu-item "Downcase" diredp-downcase-recursive
+    :enable (or (not (fboundp 'msdos-long-file-names))  (msdos-long-file-names))
+    :help "Rename marked files, including in marked subdirs, to lowercase names"))
+(define-key diredp-multiple-recursive-menu [diredp-upcase-recursive]
+  '(menu-item "Upcase" diredp-upcase-recursive
+    :enable (or (not (fboundp 'msdos-long-file-names))  (msdos-long-file-names))
+    :help "Rename marked files, including in marked subdirs, to uppercase names"))
+(define-key diredp-multiple-recursive-menu [separator-lettercase] '("--")) ; ------------
+
+(define-key diredp-multiple-recursive-menu [diredp-list-marked-recursive]
+    '(menu-item "List Marked Files" diredp-list-marked-recursive
+      :help "List the files marked here and in marked subdirs, recursively"))
+(define-key diredp-multiple-recursive-menu [diredp-copy-filename-as-kill-recursive]
+    '(menu-item "Copy File Names (to Paste)" diredp-copy-filename-as-kill-recursive
+      :help "Copy names of files marked here and in marked subdirs, to `kill-ring'"))
+(define-key diredp-multiple-recursive-menu [diredp-insert-subdirs-recursive]
+  '(menu-item "Insert Subdirs" diredp-insert-subdirs-recursive
+    :help "Insert the marked subdirectories, gathered recursively"))
+(define-key diredp-multiple-recursive-menu [separator-dirs] '("--")) ; ------------------
+
+(define-key diredp-multiple-recursive-menu [diredp-marked-recursive-other-window]
+    '(menu-item "Dired (Marked) in Other Window" diredp-marked-recursive-other-window
+      :help "Open Dired (in other window) on marked files, including those in marked subdirs"))
+(define-key diredp-multiple-recursive-menu [diredp-marked-recursive]
+    '(menu-item "Dired (Marked)" diredp-marked-recursive
+      :help "Open Dired on marked files, including those in marked subdirs"))
+;; On Windows, bind more.
+(eval-after-load "w32-browser"
+  '(define-key diredp-multiple-recursive-menu [diredp-multiple-w32-browser-recursive]
+    '(menu-item "Open Associated Windows Apps" diredp-multiple-w32-browser-recursive
+      :help "Run Windows apps for with marked files, including those in marked subdirs")))
+(define-key diredp-multiple-recursive-menu [diredp-do-find-marked-files-recursive]
+    '(menu-item "Open" diredp-do-find-marked-files-recursive
+      :help "Find marked files simultaneously, including those in marked subdirs"))
+
+
+;; `Multiple' > `Marked Here and Below' > `Images' menu.
+;;
+(defvar diredp-images-recursive-menu (make-sparse-keymap "Images"))
+(defalias 'diredp-images-recursive-menu diredp-images-recursive-menu)
+
+;; We don't use `define-obsolete-variable-alias' so that byte-compilation in older Emacs
+;; works for newer Emacs too.
+(when (fboundp 'defvaralias)            ; Emacs 22+
+  (defvaralias 'diredp-menu-bar-images-recursive-menu 'diredp-images-recursive-menu))
+(make-obsolete-variable 'diredp-menu-bar-images-recursive-menu 'diredp-images-recursive-menu) ; 2017-04-09
+
+(when (boundp 'diredp-menu-bar-images-recursive-menu)
+  (defalias 'diredp-menu-bar-images-recursive-menu diredp-menu-bar-images-recursive-menu))
+(make-obsolete 'diredp-menu-bar-images-recursive-menu 'diredp-images-recursive-menu) ; 2017-04-09
+
+(define-key diredp-multiple-recursive-menu [images]
+  '(menu-item "Images" diredp-images-recursive-menu
+    :enable (fboundp 'image-dired-delete-tag)))
+(define-key diredp-images-recursive-menu [diredp-image-dired-delete-tag-recursive]
+  '(menu-item "Delete Image Tag..." diredp-image-dired-delete-tag-recursive
+    :help "Remove an `image-dired' tag from marked files, including those in marked subdirs"))
+(define-key diredp-images-recursive-menu [diredp-image-dired-tag-files-recursive]
+  '(menu-item "Add Image Tags..." diredp-image-dired-tag-files-recursive
+    :help "Add `image-dired' tags to marked files, including those in marked subdirs"))
+(define-key diredp-images-recursive-menu [diredp-image-dired-comment-files-recursive]
+  '(menu-item "Add Image Comment..." diredp-image-dired-comment-files-recursive
+    :help "Add image comment to marked files, including those in marked subdirs"))
+(define-key diredp-images-recursive-menu [diredp-image-dired-display-thumbs-recursive]
+  '(menu-item "Display Image Thumbnails" diredp-image-dired-display-thumbs-recursive
+    :help "Show thumbnails for marked image files, including those in marked subdirs"))
+
+
+;; `Multiple' > `Marked Here and Below' > `Encryption' menu.
+;;
+(when (fboundp 'epa-dired-do-encrypt)   ; Emacs 23+
+  (defvar diredp-menu-bar-encryption-recursive-menu (make-sparse-keymap "Encryption"))
+  (define-key diredp-multiple-recursive-menu [encryption]
+    (cons "Encryption" diredp-menu-bar-encryption-recursive-menu))
+  (define-key diredp-menu-bar-encryption-recursive-menu [diredp-do-decrypt-recursive]
+    '(menu-item "Decrypt..." diredp-do-decrypt-recursive
+      :help "Decrypt marked files, including those in marked subdirs"))
+  (define-key diredp-menu-bar-encryption-recursive-menu [diredp-do-verify-recursive]
+    '(menu-item "Verify..." diredp-do-verify-recursive
+      :help "Verify marked files, including those in marked subdirs"))
+  (define-key diredp-menu-bar-encryption-recursive-menu [diredp-do-sign-recursive]
+    '(menu-item "Sign..." diredp-do-sign-recursive
+      :help "Sign marked files, including those in marked subdirs"))
+  (define-key diredp-menu-bar-encryption-recursive-menu [diredp-do-encrypt-recursive]
+    '(menu-item "Encrypt..." diredp-do-encrypt-recursive
+      :help "Encrypt marked files, including those in marked subdirs")))
+
+
+;; `Multiple' > `Marked Here and Below' > `Search' menu.
+;;
+(defvar diredp-menu-bar-search-recursive-menu (make-sparse-keymap "Search"))
+(define-key diredp-multiple-recursive-menu [search]
+  (cons "Search" diredp-menu-bar-search-recursive-menu))
+(when (fboundp 'dired-do-isearch-regexp) ; Emacs 23+
+  (define-key diredp-menu-bar-search-recursive-menu [diredp-do-isearch-regexp-recursive]
+    '(menu-item "Isearch Regexp Files..." diredp-do-isearch-regexp-recursive
+      :help "Incrementally regexp search marked files, including those in marked subdirs"))
+  (define-key diredp-menu-bar-search-recursive-menu [diredp-do-isearch-recursive]
+    '(menu-item "Isearch Files..." diredp-do-isearch-recursive
+      :help "Incrementally search marked files, including those in marked subdirs")))
+(define-key diredp-menu-bar-search-recursive-menu [diredp-do-query-replace-regexp-recursive]
+  '(menu-item "Query Replace..." diredp-do-query-replace-regexp-recursive
+    :help "Replace regexp in marked files, including those in marked subdirs"))
+(define-key diredp-menu-bar-search-recursive-menu [diredp-do-search-recursive]
+  '(menu-item "Search Files..." diredp-do-search-recursive
+    :help "Regexp search marked files, including those in marked subdirs"))
+(define-key diredp-menu-bar-search-recursive-menu [diredp-do-grep-recursive]
+  '(menu-item "Grep..." diredp-do-grep-recursive
+    :help "Run `grep' on the marked files, including those in marked subdirs"))
+
+
+;; `Multiple' > `Marked Here and Below' > `Bookmark' menu.
+;;
+(defvar diredp-menu-bar-bookmarks-recursive-menu (make-sparse-keymap "Bookmark"))
+(define-key diredp-multiple-recursive-menu [bookmarks]
+  (cons "Bookmark" diredp-menu-bar-bookmarks-recursive-menu))
+(define-key diredp-menu-bar-bookmarks-recursive-menu
+    [diredp-do-bookmark-in-bookmark-file-recursive]
+    '(menu-item "Bookmark in Bookmark File..." diredp-do-bookmark-in-bookmark-file-recursive
+      :help "Bookmark marked files, including those in marked subdirs, in a bookmark file"))
+(define-key diredp-menu-bar-bookmarks-recursive-menu
+    [diredp-set-bookmark-file-bookmark-for-marked-recursive]
+  '(menu-item "Create Bookmark-File Bookmark..."
+    diredp-set-bookmark-file-bookmark-for-marked-recursive
+    :help "Create a bookmark-file bookmark for marked files, including in marked subdirs"))
+(define-key diredp-menu-bar-bookmarks-recursive-menu [diredp-do-bookmark-dirs-recursive]
+    '(menu-item "Bookmark Dirs..." diredp-do-bookmark-dirs-recursive
+      :help "Bookmark this Dired buffer and marked subdirectory Dired buffers, recursively."))
+(define-key diredp-menu-bar-bookmarks-recursive-menu [diredp-do-bookmark-recursive]
+    '(menu-item "Bookmark..." diredp-do-bookmark-recursive
+      :help "Bookmark the marked files, including those in marked subdirs"))
+
+
+
+;; `Regexp' menu.
+;;
+;; REPLACE ORIGINAL `Regexp' menu in `dired.el'.
+;;
+(defvar diredp-menu-bar-regexp-menu (make-sparse-keymap "Regexp"))
+(define-key dired-mode-map [menu-bar regexp] (cons "Regexp" diredp-menu-bar-regexp-menu))
+
+(define-key diredp-menu-bar-regexp-menu [hardlink]
+  '(menu-item "Hardlink to..." dired-do-hardlink-regexp ; In `dired-aux.el'.
+    :help "Make hard links for files matching regexp"))
+(define-key diredp-menu-bar-regexp-menu [symlink]
+  '(menu-item "Symlink to (Absolute)..." dired-do-symlink-regexp ; In `dired-aux.el'.
+              :help "Make absolute symbolic links for files matching regexp"))
+(define-key diredp-menu-bar-regexp-menu [relsymlink]
+  '(menu-item "Symlink to (Relative)..." dired-do-relsymlink-regexp ; In `dired-x.el'.
+              :help "Make relative symbolic links for files matching regexp"))
+(define-key diredp-menu-bar-regexp-menu [copy]
+  '(menu-item "Copy to..." dired-do-copy-regexp ; In `dired-aux.el'.
+              :help "Copy marked files matching regexp"))
+(define-key diredp-menu-bar-regexp-menu [rename]
+  '(menu-item "Move to..." dired-do-rename-regexp ; In `dired-aux.el'.
+              :help "Move marked files matching regexp"))
+(define-key diredp-menu-bar-regexp-menu [flag]
+  '(menu-item "Flag..." dired-flag-files-regexp :help "Flag files matching regexp for deletion"))
+(define-key diredp-menu-bar-regexp-menu [image-dired-mark-tagged-files]
+  '(menu-item "Mark Image Files Tagged..." image-dired-mark-tagged-files
+    :enable (fboundp 'image-dired-mark-tagged-files)
+    :help "Mark image files whose image tags match regexp"))
+(define-key diredp-menu-bar-regexp-menu [mark-cont]
+  '(menu-item "Mark Containing..." dired-mark-files-containing-regexp
+    :help "Mark files whose contents matches regexp"))
+(define-key diredp-menu-bar-regexp-menu [mark]
+  '(menu-item "Mark..." dired-mark-files-regexp
+    :help "Mark files matching regexp"))
+
+
+;; `Regexp' > `Here and Below' menu.
+;;
+(defvar diredp-regexp-recursive-menu (make-sparse-keymap "Here and Below"))
+(define-key diredp-menu-bar-regexp-menu [mark-recursive]
+  (cons "Here and Below" diredp-regexp-recursive-menu))
+(define-key diredp-regexp-recursive-menu [diredp-mark-files-regexp-recursive]
+    '(menu-item "Mark Named..." diredp-mark-files-regexp-recursive
+      :help "Mark all file names matching a regexp, including those in marked subdirs"))
+(define-key diredp-regexp-recursive-menu [diredp-mark-files-containing-regexp-recursive]
+    '(menu-item "Mark Containing..." diredp-mark-files-containing-regexp-recursive
+      :help "Mark all files with content matching a regexp, including in marked subdirs"))
+
+;; We don't use `define-obsolete-variable-alias' so that byte-compilation in older Emacs
+;; works for newer Emacs too.
+(when (fboundp 'defvaralias)            ; Emacs 22+
+  (defvaralias 'diredp-menu-bar-regexp-recursive-menu 'diredp-regexp-recursive-menu))
+(make-obsolete-variable 'diredp-menu-bar-regexp-recursive-menu 'diredp-regexp-recursive-menu) ; 2017-04-09
+
+(when (boundp 'diredp-menu-bar-regexp-recursive-menu)
+  (defalias 'diredp-menu-bar-regexp-recursive-menu diredp-menu-bar-regexp-recursive-menu))
+(make-obsolete 'diredp-menu-bar-regexp-recursive-menu 'diredp-regexp-recursive-menu) ; 2017-04-09
+
+
+;; "Marks" menu.
+;;
+;; REPLACE ORIGINAL `Marks' menu in `dired.el'.
+;;
+(defvar diredp-menu-bar-marks-menu (make-sparse-keymap "Marks"))
+(define-key dired-mode-map [menu-bar mark] (cons "Marks" diredp-menu-bar-marks-menu))
+
+;; We don't use `define-obsolete-variable-alias' so that byte-compilation in older Emacs
+;; works for newer Emacs too.
+(when (fboundp 'defvaralias)            ; Emacs 22+
+  (defvaralias 'diredp-menu-bar-mark-menu 'diredp-menu-bar-marks-menu))
+(make-obsolete-variable 'diredp-menu-bar-mark-menu 'diredp-menu-bar-marks-menu) ; 2017-04-09
+
+(define-key diredp-menu-bar-marks-menu [prev]
+  '(menu-item "Previous Marked" dired-prev-marked-file :help "Move to previous marked file"))
+(define-key diredp-menu-bar-marks-menu [next]
+  '(menu-item "Next Marked" dired-next-marked-file :help "Move to next marked file"))
+(define-key diredp-menu-bar-marks-menu [marks]
+  '(menu-item "Change Mark..." dired-change-marks
+    :help "Replace a given mark character with another"))
+(define-key diredp-menu-bar-marks-menu [toggle-marks]
+  (if (> emacs-major-version 21)
+      '(menu-item "Toggle Marked/Unmarked" dired-toggle-marks
+        :help "Mark unmarked files, unmark marked ones")
+    '(menu-item "Toggle Marked/Unmarked" dired-toggle-marks
+      :help "Mark unmarked files, unmark marked ones")))
+
+
+;; `Marks' > `Tagged' menu.
+;;
+(when (require 'bookmark+ nil t)
+  (defvar diredp-marks-tags-menu (make-sparse-keymap "Tagged (Autofiles)")
+    "`Tags' submenu for Dired menu-bar `Marks' menu.")
+  (define-key diredp-menu-bar-marks-menu [mark-tags] (cons "Tagged" diredp-marks-tags-menu))
+
+  (define-key diredp-marks-tags-menu [diredp-unmark-files-tagged-none]
+    '(menu-item "Unmark Not Tagged with Any..." diredp-unmark-files-tagged-none
+      :help "Unmark files that are not tagged with *any* of the tags you enter"))
+  (define-key diredp-marks-tags-menu [diredp-unmark-files-tagged-not-all]
+    '(menu-item "Unmark Not Tagged with All..." diredp-unmark-files-tagged-not-all
+      :help "Unmark files that are not tagged with *all* tags"))
+  (define-key diredp-marks-tags-menu [diredp-unmark-files-tagged-some]
+    '(menu-item "Unmark Tagged with Some..." diredp-unmark-files-tagged-some
+      :help "Unmark files that are tagged with at least one of the tags you enter"))
+  (define-key diredp-marks-tags-menu [diredp-unmark-files-tagged-all]
+    '(menu-item "Unmark Tagged with All..." diredp-unmark-files-tagged-all
+      :help "Unmark files that are tagged with *each* tag you enter"))
+  (define-key diredp-marks-tags-menu [diredp-unmark-files-tagged-regexp]
+    '(menu-item "Unmark Tagged Matching Regexp..." diredp-unmark-files-tagged-regexp
+      :help "Unmark files that have at least one tag that matches a regexp"))
+  (define-key diredp-marks-tags-menu [separator-marks-tags] '("--")) ; -------------------------
+
+  (define-key diredp-marks-tags-menu [diredp-mark-files-tagged-none]
+    '(menu-item "Mark Not Tagged with Any..." diredp-mark-files-tagged-none
+      :help "Mark files that are not tagged with *any* of the tags you enter"))
+  (define-key diredp-marks-tags-menu [diredp-mark-files-tagged-not-all]
+    '(menu-item "Mark Not Tagged with All..." diredp-mark-files-tagged-not-all
+      :help "Mark files that are not tagged with *all* tags"))
+  (define-key diredp-marks-tags-menu [diredp-mark-files-tagged-some]
+    '(menu-item "Mark Tagged with Some..." diredp-mark-files-tagged-some
+      :help "Mark files that are tagged with at least one of the tags you enter"))
+  (define-key diredp-marks-tags-menu [diredp-mark-files-tagged-all]
+    '(menu-item "Mark Tagged with All..." diredp-mark-files-tagged-all
+      :help "Mark files that are tagged with *each* tag you enter"))
+  (define-key diredp-marks-tags-menu [diredp-mark-files-tagged-regexp]
+    '(menu-item "Mark Tagged Matching Regexp..." diredp-mark-files-tagged-regexp
+      :help "Mark files that have at least one tag that matches a regexp")))
+
+
+;; `Marks' > `Omit' menu.
+;;
+(defvar diredp-marks-omit-menu (make-sparse-keymap "Omit")
+  "`Omit' submenu for Dired menu-bar `Marks' menu.")
+(define-key diredp-menu-bar-marks-menu [marks-omit] (cons "Omit" diredp-marks-omit-menu))
+
+(define-key diredp-marks-omit-menu [marks-omit-unmarked]
+  '(menu-item "Omit Unmarked" diredp-omit-unmarked :help "Hide lines of unmarked files"))
+(define-key diredp-marks-omit-menu [marks-omit-marked]
+  '(menu-item "Omit Marked" diredp-omit-marked :help "Hide lines of marked files"))
+
+
+;; `Marks' > `Flag' menu.
+;;
+(defvar diredp-marks-flag-menu (make-sparse-keymap "Flag")
+  "`Flag' submenu for Dired menu-bar `Marks' menu.")
+(define-key diredp-menu-bar-marks-menu [mark-flag] (cons "Flag" diredp-marks-flag-menu))
+
+(define-key diredp-marks-flag-menu [marks-flag-extension]
+  '(menu-item "Flag Extension..." dired-flag-extension ; In `dired-x.el'
+              :help "Flag all files that have a certain extension, for deletion"))
+(define-key diredp-marks-flag-menu [marks-flag-garbage-files]
+  '(menu-item "Flag Garbage Files" dired-flag-garbage-files
+    :help "Flag unneeded files for deletion"))
+(define-key diredp-marks-flag-menu [marks-flag-backup-files]
+  '(menu-item "Flag Backup Files" dired-flag-backup-files
+    :help "Flag all backup files for deletion"))
+(define-key diredp-marks-flag-menu [marks-flag-auto-save-files]
+  '(menu-item "Flag Auto-save Files" dired-flag-auto-save-files
+    :help "Flag auto-save files for deletion"))
+(define-key diredp-marks-flag-menu [marks-flag-region]
+  '(menu-item "Flag Region" diredp-flag-region-files-for-deletion
+    :visible (diredp-nonempty-region-p)
+    :help "Flag all files in the region (selection) for deletion"))
+(when (< emacs-major-version 21)
+  (put 'diredp-flag-region-files-for-deletion 'menu-enable '(diredp-nonempty-region-p)))
+(define-key diredp-marks-flag-menu [marks-flag-deletion]
+  '(menu-item "Flag This" dired-flag-file-deletion
+    :visible (not (diredp-nonempty-region-p))
+    :help "Flag current line's file for deletion"))
+
+
+;; `Marks' > `Unmark' menu.
+;;
+(defvar diredp-marks-unmark-menu (make-sparse-keymap "Unmark")
+  "`Unmark' submenu for Dired menu-bar `Marks' menu.")
+(define-key diredp-menu-bar-marks-menu [mark-mark] (cons "Unmark" diredp-marks-unmark-menu))
+
+(define-key diredp-marks-unmark-menu [unmark-autofiles]
+  '(menu-item "Unmark Autofiles" diredp-unmark-autofiles
+    :help "Unmark all autofiles (bookmarks with same name as file)"
+    :enable (featurep 'bookmark+)))
+(define-key diredp-marks-unmark-menu [unmark-all]
+  '(menu-item "Unmark All" dired-unmark-all-marks :help "Remove all marks from all files"))
+(define-key diredp-marks-unmark-menu [unmark-with]
+  '(menu-item "Unmark Marked-With..." dired-unmark-all-files
+    :help "Remove a specific mark (or all marks) from every file"))
+(define-key diredp-marks-unmark-menu [unmark-region]
+  '(menu-item "Unmark Region" diredp-unmark-region-files
+    :visible (diredp-nonempty-region-p)
+    :help "Unmark all files in the region (selection)"))
+(when (< emacs-major-version 21)
+  (put 'diredp-unmark-region-files 'menu-enable '(diredp-nonempty-region-p)))
+(define-key diredp-marks-unmark-menu [unmark-this]
+  '(menu-item "Unmark This" dired-unmark
+    :visible (not (diredp-nonempty-region-p))
+    :help "Unmark or unflag current line's file"))
+
+
+;; `Marks' > `Mark' menu.
+;;
+(defvar diredp-marks-mark-menu (make-sparse-keymap "Mark")
+  "`Mark' submenu for Dired menu-bar `Marks' menu.")
+(define-key diredp-menu-bar-marks-menu [marks-mark] (cons "Mark" diredp-marks-mark-menu))
+
+(define-key diredp-marks-mark-menu [marks-mark-sexp]
+  '(menu-item "Mark If..." dired-mark-sexp ; In `dired-x.el'.
+              :help "Mark files that satisfy specified condition"))
+(define-key diredp-marks-mark-menu [marks-image-dired-mark-tagged-files]
+  '(menu-item "Mark Image Files Tagged..." image-dired-mark-tagged-files
+    :enable (fboundp 'image-dired-mark-tagged-files) ; In `image-dired.el'.
+    :help "Mark image files whose image tags match regexp"))
+(define-key diredp-marks-mark-menu [marks-mark-cont]
+  '(menu-item "Mark Content Matching Regexp..." dired-mark-files-containing-regexp
+    :help "Mark files whose contents matches regexp"))
+(define-key diredp-marks-mark-menu [marks-mark...]
+  '(menu-item "Mark Name Matching Regexp..." dired-mark-files-regexp
+    :help "Mark file names matching regexp"))
+(when (fboundp 'dired-mark-omitted)     ; In `dired-x.el', Emacs 22+.
+  (define-key diredp-marks-mark-menu [marks-mark-omitted]
+    '(menu-item "Mark Omitted..." dired-mark-omitted
+      :help "Mark all omitted files and subdirectories")))
+(define-key diredp-marks-mark-menu [marks-mark-extension]
+  '(menu-item "Mark Extension..." diredp-mark/unmark-extension
+    :help "Mark all files with specified extension"))
+(define-key diredp-marks-mark-menu [marks-mark-autofiles]
+  '(menu-item "Mark Autofiles" diredp-mark-autofiles
+    :help "Mark all autofiles (bookmarks with same name as file)"
+    :enable (featurep 'bookmark+)))
+(define-key diredp-marks-mark-menu [marks-mark-symlinks]
+  '(menu-item "Mark Symlinks" dired-mark-symlinks
+    :visible (fboundp 'make-symbolic-link) :help "Mark all symbolic links"))
+(define-key diredp-marks-mark-menu [marks-mark-directories]
+  '(menu-item "Mark Directories" dired-mark-directories
+    :help "Mark all directories except `.' and `..'"))
+(define-key diredp-marks-mark-menu [marks-mark-directory]
+  '(menu-item "Mark Old Backups" dired-clean-directory
+    :help "Flag old numbered backups for deletion"))
+(define-key diredp-marks-mark-menu [marks-mark-executables]
+  '(menu-item "Mark Executables" dired-mark-executables :help "Mark all executable files"))
+(define-key diredp-marks-mark-menu [marks-mark-region]
+  '(menu-item "Mark Region" diredp-mark-region-files
+    :visible (diredp-nonempty-region-p)
+    :help "Mark all of the files in the region (selection)"))
+(when (< emacs-major-version 21)
+  (put 'diredp-mark-region-files 'menu-enable '(diredp-nonempty-region-p)))
+(define-key diredp-marks-mark-menu [marks-mark-this]
+  '(menu-item "Mark This" dired-mark
+    :visible (not (diredp-nonempty-region-p))
+    :help "Mark current line's file for future operations"))
+
+
+;; `Marks' > `Here and Below' menu.
+;;
+(defvar diredp-marks-recursive-menu (make-sparse-keymap "Here and Below"))
+(define-key diredp-menu-bar-marks-menu [mark-recursive]
+  (cons "Here and Below" diredp-marks-recursive-menu))
+
+(define-key diredp-marks-recursive-menu [diredp-flag-auto-save-files-recursive]
+    '(menu-item "Flag Auto-Save Files..." diredp-flag-auto-save-files-recursive
+      :help "Flag all auto-save files for deletion, including those in marked subdirs"))
+(when (fboundp 'diredp-unmark-all-marks-recursive) ; Emacs 22+
+  (define-key diredp-marks-recursive-menu [diredp-change-marks-recursive]
+    '(menu-item "Change Mark..." diredp-change-marks-recursive
+      :help "Change all OLD marks to NEW marks, including those in marked subdirs"))
+  (define-key diredp-marks-recursive-menu [diredp-unmark-all-files-recursive]
+    '(menu-item "Unmark Marked-With..." diredp-unmark-all-files-recursive
+      :help "Remove a given mark everywhere, including in marked subdirs"))
+  (define-key diredp-marks-recursive-menu [diredp-unmark-all-marks-recursive]
+    '(menu-item "Unmark All..." diredp-unmark-all-marks-recursive
+      :help "Remove ALL marks everywhere, including in marked subdirs"))
+  (define-key diredp-marks-recursive-menu [separator-1] '("--"))) ; ------------
+(define-key diredp-marks-recursive-menu [diredp-mark-sexp-recursive]
+  '(menu-item "If..." diredp-mark-sexp-recursive
+    :help "Mark files satisfying specified condition, including those in marked subdirs"))
+(define-key diredp-marks-recursive-menu [diredp-mark-files-containing-regexp-recursive]
+  '(menu-item "Containing Regexp..." diredp-mark-files-containing-regexp-recursive
+    :help "Mark all files with content matching a regexp, including in marked subdirs"))
+(define-key diredp-marks-recursive-menu [diredp-mark-files-regexp-recursive]
+  '(menu-item "Named Regexp..." diredp-mark-files-regexp-recursive
+    :help "Mark all file names matching a regexp, including those in marked subdirs"))
+(define-key diredp-marks-recursive-menu [diredp-mark-extension-recursive]
+  '(menu-item "Extension..." diredp-mark-extension-recursive
+    :help "Mark all files with a given extension, including those in marked subdirs"))
+(define-key diredp-marks-recursive-menu [diredp-mark-autofiles-recursive]
+  '(menu-item "Autofiles" diredp-mark-autofiles-recursive
+    :help "Mark all files with a given extension, including those in marked subdirs"
+    :enable (featurep 'bookmark+)))
+(define-key diredp-marks-recursive-menu [diredp-mark-symlinks-recursive]
+  '(menu-item "Symbolic Links" diredp-mark-symlinks-recursive
+    :help "Mark all symbolic links, including those in marked subdirs"))
+(define-key diredp-marks-recursive-menu [diredp-mark-directories-recursive]
+  '(menu-item "Directories" diredp-mark-directories-recursive
+    :help "Mark all directories, including those in marked subdirs"))
+(define-key diredp-marks-recursive-menu [diredp-mark-executables-recursive]
+  '(menu-item "Executables" diredp-mark-executables-recursive
+    :help "Mark all executable files, including those in marked subdirs"))
+
+
+;; "Dir" menu.
+;;
+;; REPLACE ORIGINAL `Subdir' menu in `dired.el'.
+;;
+(defvar diredp-menu-bar-dir-menu (make-sparse-keymap "Dir"))
+(define-key dired-mode-map [menu-bar subdir] (cons "Dir" diredp-menu-bar-dir-menu))
+
+;; We don't use `define-obsolete-variable-alias' so that byte-compilation in older Emacs
+;; works for newer Emacs too.
+(when (fboundp 'defvaralias)            ; Emacs 22+
+  (defvaralias 'diredp-menu-bar-subdir-menu 'diredp-dir-menu))
+(make-obsolete-variable 'diredp-menu-bar-subdir-menu 'diredp-dir-menu) ; 2017-04-09
+
+(when (boundp 'diredp-menu-bar-subdir-menu)
+  (defalias 'diredp-menu-bar-subdir-menu diredp-menu-bar-subdir-menu))
+(make-obsolete 'diredp-menu-bar-subdir-menu 'diredp-dir-menu) ; 2017-04-09
+
+
+;; `Dir' > `Hide/Show' menu.
+;;
+(defvar diredp-hide/show-menu (make-sparse-keymap "Hide/Show")
+  "`Hide/Show' submenu for Dired menu-bar `Dir' menu.")
+(define-key diredp-menu-bar-dir-menu [hide-show] (cons "Hide/Show" diredp-hide/show-menu))
+
+(when (fboundp 'dired-omit-mode)
+  (define-key diredp-hide/show-menu [dired-omit-mode]
+    '(menu-item "Hide/Show Uninteresting (Omit Mode)" dired-omit-mode
+      :help "Toggle omission of uninteresting files (Omit mode)")))
+(when (fboundp 'dired-hide-details-mode) ; Emacs 24.4+
+  (define-key diredp-hide/show-menu [hide-details]
+    '(menu-item "Hide/Show Details" dired-hide-details-mode
+      :help "Hide or show less important fields of directory listing")))
+(define-key diredp-hide/show-menu [hide-all]
+  '(menu-item "Hide/Show All Subdirs" dired-hide-all
+    :help "Hide all subdirectories, leave only header lines"))
+(define-key diredp-hide/show-menu [hide-subdir]
+  '(menu-item "Hide/Show Subdir" diredp-hide-subdir-nomove
+    :help "Hide or unhide current directory listing"))
+
+
+;; `Dir' > `Bookmark' menu.
+;;
+(defvar diredp-bookmark-menu (make-sparse-keymap "Bookmark")
+  "`Bookmark' submenu for Dired menu-bar `Dir' menu.")
+(define-key diredp-menu-bar-dir-menu [bookmark] (cons "Bookmark" diredp-bookmark-menu))
+
+(define-key diredp-bookmark-menu [diredp-highlight-autofiles-mode]
+  '(menu-item "Toggle Autofile Highlighting" diredp-highlight-autofiles-mode
+    :help "Toggle whether to highlight autofile bookmarks"
+    :visible (and (featurep 'bookmark+)  (featurep 'highlight))))
+(define-key diredp-bookmark-menu [diredp-do-bookmark-dirs-recursive]
+    '(menu-item "Bookmark Dirs Here and Below..." diredp-do-bookmark-dirs-recursive
+      :help "Bookmark this Dired buffer and marked subdirectory Dired buffers, recursively."))
+(define-key diredp-bookmark-menu [bookmark-dired]
+  '(menu-item "Bookmark Dired Buffer..." bookmark-set :help "Bookmark this Dired buffer"))
+
+
+;; `Dir' > `Navigate' menu.
+;;
+(defvar diredp-navigate-menu (make-sparse-keymap "Navigate")
+  "`Navigate' submenu for Dired menu-bar `Dir' menu.")
+(define-key diredp-menu-bar-dir-menu [navigate] (cons "Navigate" diredp-navigate-menu))
+
+(define-key diredp-navigate-menu [insert]
+  '(menu-item "Move To This Subdir" dired-maybe-insert-subdir
+    :help "Move to subdirectory line or listing"))
+(define-key diredp-navigate-menu [tree-down]
+  '(menu-item "Tree Down" dired-tree-down :help "Go to first subdirectory header down the tree"))
+(define-key diredp-navigate-menu [tree-up]
+  '(menu-item "Tree Up" dired-tree-up :help "Go to first subdirectory header up the tree"))
+(define-key diredp-navigate-menu [up]
+  '(menu-item "Up Directory" diredp-up-directory :help "Dired the parent directory"))
+(define-key diredp-navigate-menu [prev-subdir]
+  '(menu-item "Prev Subdir" diredp-prev-subdir :help "Go to previous subdirectory header line"))
+(define-key diredp-navigate-menu [next-subdir]
+  '(menu-item "Next Subdir" diredp-next-subdir :help "Go to next subdirectory header line"))
+(define-key diredp-navigate-menu [prev-dirline]
+  '(menu-item "Prev Dirline" diredp-prev-dirline :help "Move to previous directory-file line"))
+(define-key diredp-navigate-menu [next-dirline]
+  '(menu-item "Next Dirline" diredp-next-dirline :help "Move to next directory-file line"))
+
+(define-key diredp-menu-bar-dir-menu [separator-subdir] '("--")) ; --------------------------
+
+(define-key diredp-menu-bar-dir-menu [image-dired-dired-toggle-marked-thumbs]
+  '(menu-item "Toggle Image Thumbnails" image-dired-dired-toggle-marked-thumbs
+    :enable (fboundp 'image-dired-dired-toggle-marked-thumbs)
+    :help "Add or remove image thumbnails in front of marked file names"))
+(when (fboundp 'dired-isearch-filenames) ; Emacs 23+
+  (define-key diredp-menu-bar-dir-menu [isearch-filenames-regexp]
+    '(menu-item "Isearch Regexp in File Names..." dired-isearch-filenames-regexp
+      :help "Incrementally search for regexp in file names only"))
+  (define-key diredp-menu-bar-dir-menu [isearch-filenames]
+    '(menu-item "Isearch in File Names..." dired-isearch-filenames
+      :help "Incrementally search for literal text in file names only.")))
+(when (or (> emacs-major-version 21)  (fboundp 'wdired-change-to-wdired-mode))
+  (define-key diredp-menu-bar-dir-menu [wdired-mode]
+    '(menu-item "Edit File Names (WDired)" wdired-change-to-wdired-mode
+      :help "Put a Dired buffer in a mode in which filenames are editable"
+      :keys "C-x C-q" :filter (lambda (x) (and (derived-mode-p 'dired-mode)  x)))))
+(define-key diredp-menu-bar-dir-menu [diredp-yank-files]
+  '(menu-item "Paste Files from Copied Absolute Names" diredp-yank-files
+    :help "Paste files here whose absolute names you copied"
+    :enable (catch 'dir-menu--yank-files
+              (let ((files  (car kill-ring-yank-pointer)))
+                (and (stringp files)
+                     (dolist (file  (split-string files))
+                       (unless (file-name-absolute-p file) (throw 'dir-menu--yank-files nil)))))
+              t)))
+(when (fboundp 'dired-compare-directories) ; Emacs 22+
+  (define-key diredp-menu-bar-dir-menu [compare-directories]
+    '(menu-item "Compare Directories..." dired-compare-directories
+      :help "Mark files with different attributes in two Dired buffers")))
+
+(define-key diredp-menu-bar-dir-menu [separator-dired-on-set] '("--")) ; --------------------
+
+(define-key diredp-menu-bar-dir-menu [diredp-dired-recent-dirs]
+  '(menu-item "Dired Recent Directories..." diredp-dired-recent-dirs
+    :visible (boundp 'recentf-list) :enable  (and (boundp 'recentf-list)  (consp recentf-list))
+    :help "Open a Dired buffer for recently used directories"))
+(define-key diredp-menu-bar-dir-menu [diredp-dired-inserted-subdirs]
+  '(menu-item "Dired Each Inserted Subdir..." diredp-dired-inserted-subdirs
+    :enable (cdr dired-subdir-alist)    ; First elt is current dir.  Must have at least one more.
+    :help "Open Dired separately for each of the inserted subdirectories"))
+(define-key diredp-menu-bar-dir-menu [diredp-add-to-this-dired-buffer]
+  '(menu-item "Add Entries Here..." diredp-add-to-this-dired-buffer
+    :help "Add individual file and directory names to the listing"
+    :keys "C-x E"))
+(define-key diredp-menu-bar-dir-menu [diredp-dired-union]
+  '(menu-item "Dired Union..." diredp-dired-union
+    :help "Open Dired for the union of some existing Dired buffers"))
+(define-key diredp-menu-bar-dir-menu [diredp-fileset-other-window]
+  '(menu-item "Dired Fileset..." diredp-fileset-other-window
+    :enable (> emacs-major-version 21) :help "Open Dired on an Emacs fileset"))
+(define-key diredp-menu-bar-dir-menu [diredp-dired-for-files]
+  '(menu-item "Dired Files Located Anywhere" diredp-dired-for-files
+    :help "Open Dired on specific files whose names you provide"))
+(define-key diredp-menu-bar-dir-menu [diredp-marked-other-window]
+  '(menu-item "Dired Marked Files in Other Window" diredp-marked-other-window
+    :enable (save-excursion (goto-char (point-min))
+                            (and (re-search-forward (dired-marker-regexp) nil t)
+                                 (re-search-forward (dired-marker-regexp) nil t)))
+    :help "Open Dired on marked files only, in other window"))
+(define-key diredp-menu-bar-dir-menu [diredp-marked]
+  '(menu-item "Dired Marked Files" diredp-marked
+    :enable (save-excursion (goto-char (point-min))
+                            (and (re-search-forward (dired-marker-regexp) nil t)
+                                 (re-search-forward (dired-marker-regexp) nil t)))
+    :help "Open Dired on marked files only"))
+(define-key diredp-menu-bar-dir-menu [dired]
+  '(menu-item "Dired (Filter via Wildcards)..." dired
+    :help "Explore a directory (you can provide wildcards)"))
+
+(define-key diredp-menu-bar-dir-menu [separator-dired] '("--")) ; ---------------------
+
+(define-key diredp-menu-bar-dir-menu [insert]
+  '(menu-item "Insert/Move-To This Subdir" dired-maybe-insert-subdir
+    :help "Move to subdirectory line or listing"))
+(define-key diredp-menu-bar-dir-menu [revert]
+  '(menu-item "Refresh (Sync \& Show All)" revert-buffer :help "Update directory contents"))
+(define-key diredp-menu-bar-dir-menu [create-directory] ; Moved from "Immediate".
+  '(menu-item "New Directory..." dired-create-directory :help "Create a directory"))
+
+
+;;; Mouse-3 menu binding.
+(define-key dired-mode-map [down-mouse-3] 'diredp-mouse-3-menu)
+(define-key dired-mode-map [mouse-3]      'ignore)
+
+
+;;; Non-menu Dired bindings.
+
+;; Move `dired-omit-mode' to `C-x M-o', so prefix key `M-o' is free for face/font-lock stuff.
+(define-key dired-mode-map "\C-x\M-o" (if (fboundp 'dired-omit-mode) 'dired-omit-mode 'dired-omit-toggle))
+(when (memq (lookup-key dired-mode-map "\M-o") '(dired-omit-mode dired-omit-toggle))
+  (define-key dired-mode-map "\M-o" nil))
+
+;; These are global, not just Dired mode.  They are on prefix key `C-x D'.
+(unless (lookup-key ctl-x-map "D")
+  (define-key ctl-x-map   "D" nil)      ; For Emacs 20
+  (define-key ctl-x-map   "DA" 'diredp-add-to-dired-buffer)                ; `C-x D A'
+  (define-key ctl-x-map   "DF" 'diredp-dired-for-files)                    ; `C-x D F'
+  (define-key ctl-x-map   "DR" 'diredp-dired-recent-dirs)                  ; `C-x D R'
+  (define-key ctl-x-map   "DS" 'diredp-fileset)                            ; `C-x D S'
+  (define-key ctl-x-map   "DU" 'diredp-dired-union))                       ; `C-x D U'
+
+(unless (lookup-key ctl-x-4-map "D")
+  (define-key ctl-x-4-map "D" nil)      ; For Emacs 20
+  (define-key ctl-x-4-map "DA" 'diredp-add-to-dired-buffer-other-window)   ; `C-x 4 D A'
+  (define-key ctl-x-4-map "DF" 'diredp-dired-for-files-other-window)       ; `C-x 4 D F'
+  (define-key ctl-x-4-map "DR" 'diredp-dired-recent-dirs-other-window)     ; `C-x 4 D R'
+  (define-key ctl-x-4-map "DS" 'diredp-fileset-other-window)               ; `C-x 4 D S'
+  (define-key ctl-x-4-map "DU" 'diredp-dired-union-other-window))          ; `C-x 4 D U'
+
+;; Navigation
+(substitute-key-definition 'dired-up-directory 'diredp-up-directory dired-mode-map)
+(substitute-key-definition 'dired-next-line 'diredp-next-line dired-mode-map)
+(substitute-key-definition 'dired-previous-line 'diredp-previous-line dired-mode-map)
+(substitute-key-definition 'dired-next-dirline 'diredp-next-dirline dired-mode-map)
+(substitute-key-definition 'dired-prev-dirline 'diredp-prev-dirline dired-mode-map)
+(substitute-key-definition 'dired-next-subdir 'diredp-next-subdir dired-mode-map)
+(substitute-key-definition 'dired-prev-subdir 'diredp-prev-subdir dired-mode-map)
+
+
+(define-key dired-mode-map [S-down-mouse-1] 'ignore) ; (normally `mouse-set-font')
+;; `diredp-mouse-mark-region-files' provides Windows-Explorer behavior
+;; for selecting (marking) files.
+(define-key dired-mode-map [S-mouse-1] 'diredp-mouse-mark-region-files)     ; `S-mouse-1'
+(define-key dired-mode-map [mouse-2] 'dired-mouse-find-file-other-window)   ; `mouse-2'
+;; But be aware that `dired-sort-menu.el' binds `S-mouse-2' to `dired-sort-menu-popup'.
+(define-key dired-mode-map [S-down-mouse-2] 'dired-mouse-find-file)         ; `S-mouse-2'
+(define-key dired-mode-map [S-mouse-2] 'ignore)
+(define-key dired-mode-map [M-mouse-2] 'diredp-mouse-find-file-other-frame) ; `M-mouse-2'
+
+;; On Windows, bind more.
+(eval-after-load "w32-browser"
+  '(progn
+    (define-key dired-mode-map [(control return)] 'dired-w32explore)                ; `C-RET'
+    (define-key dired-mode-map [(meta return)] 'dired-w32-browser)                  ; `M-RET'
+    (define-key dired-mode-map [mouse-2] 'dired-mouse-w32-browser)                  ; `mouse-2'
+    (define-key dired-mode-map (kbd "<C-M-return>") 'dired-multiple-w32-browser)))  ; `C-M-RET'
+
+(when (fboundp 'diredp-w32-drives)
+  (when (< emacs-major-version 21) (define-key dired-mode-map ":"    nil)) ; For Emacs 20
+  (define-key dired-mode-map ":/"    'diredp-w32-drives))                            ; `:/'
+
+;; Other keyboard keys
+(define-key dired-mode-map "@"       'diredp-do-apply-function)                     ; `@'
+(define-key dired-mode-map "\$"      'diredp-hide-subdir-nomove)                    ; `$'
+(define-key dired-mode-map "\M-$"    'dired-hide-subdir)                            ; `M-$'
+(define-key dired-mode-map "="       'diredp-ediff)                                 ; `='
+;; This replaces the `dired-x.el' binding of `dired-mark-extension'.
+(define-key dired-mode-map "*."      'diredp-mark/unmark-extension)                 ; `* .'
+(define-key dired-mode-map "*B"      'diredp-mark-autofiles)                        ; `* B'
+(define-key dired-mode-map [(control meta ?*)] 'diredp-marked-other-window)         ; `C-M-*'
+(define-key dired-mode-map "\M-a"    'dired-do-search)                              ; `M-a'
+(define-key dired-mode-map "\M-b"    'diredp-do-bookmark)                           ; `M-b'
+(define-key dired-mode-map "\C-\M-b" 'diredp-set-bookmark-file-bookmark-for-marked) ; `C-M-b'
+(when diredp-bind-problematic-terminal-keys
+  (define-key dired-mode-map [(control meta shift ?b)]                              ; `C-M-B' (aka `C-M-S-b')
+    'diredp-do-bookmark-in-bookmark-file))
+(define-key dired-mode-map "e"       'diredp-visit-this-file)                       ; `e' (was `dired-find-file')
+(define-key dired-mode-map [C-down]  'diredp-visit-next-file)                 ; `C-down' (was `forward-paragraph')
+(define-key dired-mode-map [C-up]    'diredp-visit-previous-file)             ; `C-up' (was `backward-paragraph')
+(define-key dired-mode-map "\C-\M-G" 'diredp-do-grep)                               ; `C-M-G'
+(when (fboundp 'mkhtml-dired-files)     ; In `mkhtml.el'.
+  (define-key dired-mode-map "\M-h"  'mkhtml-dired-files))                          ; `M-h'
+(define-key dired-mode-map "\C-\M-i" 'diredp-dired-inserted-subdirs)                ; `C-M-i'
+(define-key dired-mode-map "\M-q"    (if (< emacs-major-version 21)
+                                         'dired-do-query-replace
+                                       'dired-do-query-replace-regexp))             ; `M-q'
+(when diredp-bind-problematic-terminal-keys
+  (define-key dired-mode-map [(control meta shift ?r)]                              ; `C-M-R' (aka `C-M-S-r')
+    'diredp-toggle-find-file-reuse-dir))
+(define-key dired-mode-map "U"       'dired-unmark-all-marks)                       ; `U'
+(substitute-key-definition 'describe-mode 'diredp-describe-mode                     ; `h', `C-h m'
+                           dired-mode-map (current-global-map))
+
+;; Tags - same keys as in `*Bookmark List*'.
+;;
+;; NOTE: If this changes then need to update `dired-sort-menu+.el' to reflect the changes.
+;;
+(define-key dired-mode-map "T"       nil) ; For Emacs 20
+(define-key dired-mode-map "T+"      'diredp-tag-this-file)                ; `T +'
+(define-key dired-mode-map "T-"      'diredp-untag-this-file)              ; `T -'
+(define-key dired-mode-map "T0"      'diredp-remove-all-tags-this-file)    ; `T 0'
+(define-key dired-mode-map "Tc"      'diredp-copy-tags-this-file)          ; `T c'
+(define-key dired-mode-map "Tp"      'diredp-paste-add-tags-this-file)     ; `T p'
+(define-key dired-mode-map "Tq"      'diredp-paste-replace-tags-this-file) ; `T q'
+(define-key dired-mode-map "Tv"      'diredp-set-tag-value-this-file)      ; `T v'
+(define-key dired-mode-map "T\M-w"   'diredp-copy-tags-this-file)          ; `T M-w'
+(define-key dired-mode-map "T\C-y"   'diredp-paste-add-tags-this-file)     ; `T C-y'
+(define-key dired-mode-map "T>+"     'diredp-do-tag)                       ; `T > +'
+(define-key dired-mode-map "T>-"     'diredp-do-untag)                     ; `T > -'
+(define-key dired-mode-map "T>0"     'diredp-do-remove-all-tags)           ; `T > 0'
+(define-key dired-mode-map "T>p"     'diredp-do-paste-add-tags)            ; `T > p'
+(define-key dired-mode-map "T>q"     'diredp-do-paste-replace-tags)        ; `T > q'
+(define-key dired-mode-map "T>v"     'diredp-do-set-tag-value)             ; `T > v'
+(define-key dired-mode-map "T>\C-y"  'diredp-do-paste-add-tags)            ; `T > C-y'
+(define-key dired-mode-map "Tm%"     'diredp-mark-files-tagged-regexp)     ; `T m %'
+(define-key dired-mode-map "Tm*"     'diredp-mark-files-tagged-all)        ; `T m *'
+(define-key dired-mode-map "Tm+"     'diredp-mark-files-tagged-some)       ; `T m +'
+(define-key dired-mode-map "Tm~*"    'diredp-mark-files-tagged-not-all)    ; `T m ~ *'
+(define-key dired-mode-map "Tm~+"    'diredp-mark-files-tagged-none)       ; `T m ~ +'
+(define-key dired-mode-map "Tu%"     'diredp-unmark-files-tagged-regexp)   ; `T u %'
+(define-key dired-mode-map "Tu*"     'diredp-unmark-files-tagged-all)      ; `T u *'
+(define-key dired-mode-map "Tu+"     'diredp-unmark-files-tagged-some)     ; `T u +'
+(define-key dired-mode-map "Tu~*"    'diredp-unmark-files-tagged-not-all)  ; `T u ~ *'
+(define-key dired-mode-map "Tu~+"    'diredp-unmark-files-tagged-none)     ; `T u ~ +'
+;; $$$$$$ (define-key dired-mode-map [(control ?+)] 'diredp-do-tag)
+;; $$$$$$ (define-key dired-mode-map [(control ?-)] 'diredp-do-untag)
+
+
+;; Vanilla Emacs binds `c' to `dired-do-compress-to'.  Use `M-z' instead'.
+;; (`dired-sort-menu.el' binds `c' to `dired-sort-menu-toggle-ignore-case'.)
+;;
+(when (fboundp 'dired-do-compress-to) ; Emacs 25+
+  (define-key dired-mode-map (kbd "M-z") 'dired-do-compress-to))
+
+
+;; Commands for operating on the current line's file.  When possible,
+;; these are lower-case versions of the upper-case commands for operating on
+;; the marked files.  (Most of the other corresponding lower-case letters are already
+;; defined and cannot be used here.)
+
+;; $$$$$$ (define-key dired-mode-map [(control meta ?+)] 'diredp-tag-this-file)
+;; $$$$$$ (define-key dired-mode-map [(control meta ?-)] 'diredp-untag-this-file)
+(define-key dired-mode-map "\r"      'dired-find-file)                      ; `RET'
+(when (fboundp 'diredp-describe-file)
+  (define-key dired-mode-map (kbd "C-h RET")        'diredp-describe-file)  ; `C-h RET'
+  (define-key dired-mode-map (kbd "C-h C-<return>") 'diredp-describe-file)) ; `C-h C-RET'
+(define-key dired-mode-map "%c"      'diredp-capitalize)                    ; `% c'
+(define-key dired-mode-map "b"       'diredp-byte-compile-this-file)        ; `b'
+(define-key dired-mode-map [(control shift ?b)] 'diredp-bookmark-this-file) ; `C-B'
+(define-key dired-mode-map "\M-c"    'diredp-capitalize-this-file)          ; `M-c'
+(when (and (fboundp 'diredp-chgrp-this-file)  diredp-bind-problematic-terminal-keys)
+  (define-key dired-mode-map [(control meta shift ?g)] 'diredp-chgrp-this-file)) ; `C-M-G' (aka `C-M-S-g')
+(define-key dired-mode-map "\M-i"    'diredp-insert-subdirs)                ; `M-i'
+(define-key dired-mode-map "\M-l"    'diredp-downcase-this-file)            ; `M-l'
+(define-key dired-mode-map "\C-\M-l" 'diredp-list-marked)                   ; `C-M-l'
+(when diredp-bind-problematic-terminal-keys
+  (define-key dired-mode-map [(meta shift ?m)] 'diredp-chmod-this-file))    ; `M-M' (aka `M-S-m')
+(define-key dired-mode-map "\C-o"    'diredp-find-file-other-frame)         ; `C-o'
+(when (and (fboundp 'diredp-chown-this-file)  diredp-bind-problematic-terminal-keys)
+  (define-key dired-mode-map [(meta shift ?o)] 'diredp-chown-this-file))    ; `M-O' (aka `M-S-o')
+(define-key dired-mode-map "\C-\M-o" 'dired-display-file)                   ; `C-M-o' (not `C-o')
+(define-key dired-mode-map "\M-p"    'diredp-print-this-file)               ; `M-p'
+(define-key dired-mode-map "r"       'diredp-rename-this-file)              ; `r'
+(when (fboundp 'image-dired-dired-display-image)
+  (define-key dired-mode-map "\C-tI"   'diredp-image-show-this-file))       ; `C-t I'
+(when diredp-bind-problematic-terminal-keys
+  (define-key dired-mode-map [(meta shift ?t)] 'diredp-touch-this-file)     ; `M-T' (aka `M-S-t')
+  (define-key dired-mode-map [(control meta shift ?t)] 'dired-do-touch))    ; `C-M-T' (aka `C-M-S-t')
+(define-key dired-mode-map "\M-u"    'diredp-upcase-this-file)              ; `M-u'
+(define-key dired-mode-map "y"       'diredp-relsymlink-this-file)          ; `y'
+(define-key dired-mode-map "\C-w"    'diredp-move-files-named-in-kill-ring) ; `C-w'
+(define-key dired-mode-map "\C-y"    'diredp-yank-files)                    ; `C-y'
+(define-key dired-mode-map "z"       'diredp-compress-this-file)            ; `z'
+(when (fboundp 'dired-show-file-type)
+  (define-key dired-mode-map "_"      'dired-show-file-type))               ; `_' (underscore)
+(substitute-key-definition 'kill-line 'diredp-delete-this-file              ; `C-k', `delete', `deleteline'
+                           dired-mode-map (current-global-map))
+
+
+;; Commands that handle marked below, recursively.
+;; Use `M-+' as a prefix key for all such commands.
+
+(define-prefix-command 'diredp-recursive-map)
+(define-key dired-mode-map "\M-+"  diredp-recursive-map) ; `M-+'
+
+(when (fboundp 'char-displayable-p)     ; Emacs 22+
+  (define-key diredp-recursive-map "\M-\C-?"   'diredp-unmark-all-files-recursive))     ; `M-DEL'
+(define-key diredp-recursive-map "@"           'diredp-do-apply-function-recursive)     ; `@'
+(define-key diredp-recursive-map "#"           'diredp-flag-auto-save-files-recursive)  ; `#'
+(define-key diredp-recursive-map "*@"          'diredp-mark-symlinks-recursive)         ; `* @'
+(define-key diredp-recursive-map "**"          'diredp-mark-executables-recursive)      ; `* *'
+(define-key diredp-recursive-map "*/"          'diredp-mark-directories-recursive)      ; `* /'
+(define-key diredp-recursive-map "*."          'diredp-mark-extension-recursive)        ; `* .'
+(define-key diredp-recursive-map "*("          'diredp-mark-sexp-recursive)             ; `* ('
+(define-key diredp-recursive-map "*B"          'diredp-mark-autofiles-recursive)        ; `* B'
+(when (fboundp 'char-displayable-p)     ; Emacs 22+
+  (define-key diredp-recursive-map "*c"        'diredp-change-marks-recursive))         ; `* c'
+(define-key diredp-recursive-map "*%"          'diredp-mark-files-regexp-recursive)     ; `* %'
+(when (> emacs-major-version 22)
+  (define-key diredp-recursive-map ":d"        'diredp-do-decrypt-recursive)            ; `: d'
+  (define-key diredp-recursive-map ":e"        'diredp-do-encrypt-recursive)            ; `: e'
+  (define-key diredp-recursive-map ":s"        'diredp-do-sign-recursive)               ; `: s'
+  (define-key diredp-recursive-map ":v"        'diredp-do-verify-recursive))            ; `: v'
+(define-key diredp-recursive-map "%c"          'diredp-capitalize-recursive)            ; `% c'
+(define-key diredp-recursive-map "%g"          'diredp-mark-files-containing-regexp-recursive) ; `% g'
+(define-key diredp-recursive-map "%l"          'diredp-downcase-recursive)              ; `% l'
+(define-key diredp-recursive-map "%m"          'diredp-mark-files-regexp-recursive)     ; `% m'
+(define-key diredp-recursive-map "%u"          'diredp-upcase-recursive)                ; `% u'
+(when (fboundp 'dired-do-async-shell-command) ; Emacs 23+
+  (define-key diredp-recursive-map "&"         'diredp-do-async-shell-command-recursive)) ; `&'
+(define-key diredp-recursive-map "!"           'diredp-do-shell-command-recursive)      ; `!'
+(define-key diredp-recursive-map (kbd "C-M-*") 'diredp-marked-recursive-other-window)   ; `C-M-*'
+(define-key diredp-recursive-map "A"           'diredp-do-search-recursive)             ; `A'
+(define-key diredp-recursive-map "\M-b"        'diredp-do-bookmark-recursive)           ; `M-b'
+(when diredp-bind-problematic-terminal-keys
+  (define-key diredp-recursive-map [(meta shift ?b)]                                    ; `M-B' (aka `M-S-b')
+    'diredp-do-bookmark-dirs-recursive))
+(define-key diredp-recursive-map (kbd "C-M-b")                                          ; `C-M-b'
+  'diredp-set-bookmark-file-bookmark-for-marked-recursive)
+(when diredp-bind-problematic-terminal-keys
+  (define-key diredp-recursive-map [(control meta shift ?b)]                            ; `C-M-B' (aka `C-M-S-b')
+    'diredp-do-bookmark-in-bookmark-file-recursive))
+(define-key diredp-recursive-map "C"           'diredp-do-copy-recursive)               ; `C'
+(define-key diredp-recursive-map "D"           'diredp-do-delete-recursive)             ; `D'
+(define-key diredp-recursive-map "F"           'diredp-do-find-marked-files-recursive)  ; `F'
+(when (fboundp 'diredp-do-chgrp-recursive)
+  (define-key diredp-recursive-map "G"         'diredp-do-chgrp-recursive))             ; `G'
+(define-key diredp-recursive-map "\C-\M-G"     'diredp-do-grep-recursive)               ; `C-M-G'
+(define-key diredp-recursive-map "H"           'diredp-do-hardlink-recursive)           ; `H'
+(define-key diredp-recursive-map "\M-i"        'diredp-insert-subdirs-recursive)        ; `M-i'
+(define-key diredp-recursive-map "\C-\M-l"     'diredp-list-marked-recursive)           ; `C-M-l'
+(define-key diredp-recursive-map "M"           'diredp-do-chmod-recursive)              ; `M'
+(when (fboundp 'diredp-do-chown-recursive)
+  (define-key diredp-recursive-map "O"         'diredp-do-chown-recursive))             ; `O'
+(define-key diredp-recursive-map "P"           'diredp-do-print-recursive)              ; `P'
+(define-key diredp-recursive-map "Q"         'diredp-do-query-replace-regexp-recursive) ; `Q'
+(define-key diredp-recursive-map "R"           'diredp-do-move-recursive)               ; `R'
+(define-key diredp-recursive-map "S"           'diredp-do-symlink-recursive)            ; `S'
+(define-key diredp-recursive-map (kbd "M-s a C-s")                                      ; `M-s a C-s'
+  'diredp-do-isearch-recursive)
+(define-key diredp-recursive-map (kbd "M-s a C-M-s")                                    ; `M-s a C-M-s'
+  'diredp-do-isearch-regexp-recursive)
+(when diredp-bind-problematic-terminal-keys
+  (define-key diredp-recursive-map [(control meta shift ?t)]
+    'diredp-do-touch-recursive))                                                        ; `C-M-T' (aka `C-M-S-t')
+(define-key diredp-recursive-map "\C-tc"   'diredp-image-dired-comment-files-recursive) ; `C-t c'
+(define-key diredp-recursive-map "\C-td"  'diredp-image-dired-display-thumbs-recursive) ; `C-t d'
+(define-key diredp-recursive-map "\C-tr"      'diredp-image-dired-delete-tag-recursive) ; `C-t r'
+(define-key diredp-recursive-map "\C-tt"       'diredp-image-dired-tag-files-recursive) ; `C-t t'
+(when (fboundp 'char-displayable-p)     ; Emacs 22+
+  (define-key diredp-recursive-map "U"         'diredp-unmark-all-marks-recursive))     ; `U'
+(define-key diredp-recursive-map "\M-("        'diredp-mark-sexp-recursive)             ; `M-('
+(define-key diredp-recursive-map "\M-w"        'diredp-copy-filename-as-kill-recursive) ; `M-w'
+(define-key diredp-recursive-map "Y"           'diredp-do-relsymlink-recursive)         ; `Y'
+
+(eval-after-load "w32-browser"
+  '(define-key diredp-recursive-map (kbd "<C-M-return>") 'diredp-multiple-w32-browser-recursive)) ; `C-M-RET'
+
+;; Undefine some bindings that would try to modify a Dired buffer.  Their key sequences will
+;; then appear to the user as available for local (Dired) definition.
+(when (fboundp 'undefine-killer-commands) (undefine-killer-commands dired-mode-map))
+
+;;;;;;;;;;;;
+
+(setq diredp-loaded-p  t)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; dired+.el ends here
diff --git a/configs/shared/emacs/.emacs.d/vendor/org-clubhouse.el b/configs/shared/.emacs.d/vendor/org-clubhouse.el
index ba1f004a24..ba1f004a24 100644
--- a/configs/shared/emacs/.emacs.d/vendor/org-clubhouse.el
+++ b/configs/shared/.emacs.d/vendor/org-clubhouse.el
diff --git a/configs/shared/emacs/.emacs.d/vendor/reason-indent.el b/configs/shared/.emacs.d/vendor/reason-indent.el
index 8fd3c94258..8fd3c94258 100644
--- a/configs/shared/emacs/.emacs.d/vendor/reason-indent.el
+++ b/configs/shared/.emacs.d/vendor/reason-indent.el
diff --git a/configs/shared/emacs/.emacs.d/vendor/reason-interaction.el b/configs/shared/.emacs.d/vendor/reason-interaction.el
index 6ceaed1e93..6ceaed1e93 100644
--- a/configs/shared/emacs/.emacs.d/vendor/reason-interaction.el
+++ b/configs/shared/.emacs.d/vendor/reason-interaction.el
diff --git a/configs/shared/emacs/.emacs.d/vendor/reason-mode.el b/configs/shared/.emacs.d/vendor/reason-mode.el
index 789735955d..789735955d 100644
--- a/configs/shared/emacs/.emacs.d/vendor/reason-mode.el
+++ b/configs/shared/.emacs.d/vendor/reason-mode.el
diff --git a/configs/shared/emacs/.emacs.d/vendor/refmt.el b/configs/shared/.emacs.d/vendor/refmt.el
index b9ea2b43f0..b9ea2b43f0 100644
--- a/configs/shared/emacs/.emacs.d/vendor/refmt.el
+++ b/configs/shared/.emacs.d/vendor/refmt.el
diff --git a/configs/shared/emacs/.emacs.d/vendor/slack-snippets.el b/configs/shared/.emacs.d/vendor/slack-snippets.el
index 6bf933cfb8..6bf933cfb8 100644
--- a/configs/shared/emacs/.emacs.d/vendor/slack-snippets.el
+++ b/configs/shared/.emacs.d/vendor/slack-snippets.el
diff --git a/configs/shared/.emacs.d/vendor/wpgtk-theme.el b/configs/shared/.emacs.d/vendor/wpgtk-theme.el
new file mode 100644
index 0000000000..702048baf8
--- /dev/null
+++ b/configs/shared/.emacs.d/vendor/wpgtk-theme.el
@@ -0,0 +1,536 @@
+;;; wpgtk-theme.el ---  Dynamic color theme, specially made for wpgtk
+
+;; based on: <https://github.com/warreq/xres-theme>
+;;
+;; Version: 0.1
+;; Keywords: color, theme
+;; Package-Requires: ((emacs "24"))
+
+;; Initially with the help of emacs-theme-generator, <https://github.com/mswift42/theme-creator>.
+;; Modified directly from Nasser Alshammari's spacemacs theme
+
+;; This program is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+;; This file is not part of Emacs.
+
+;; TODO: Is it possible to generate a *complete* Emacs theme from only 16 bit
+;; colors? If so, replace all of this nonsense with just that.
+
+;;; Code:
+
+(defgroup wpgtk-theme nil
+  "Xres-theme options."
+  :group 'faces)
+
+(defcustom wpgtk-theme-comment-bg nil
+  "Use a background for comment lines."
+  :type 'boolean
+  :group 'wpgtk-theme)
+
+(defcustom wpgtk-theme-org-height t
+  "Use varying text heights for org headings."
+  :type 'boolean
+  :group 'wpgtk-theme)
+
+(defconst wpgtk/font "Source Code Pro 10"
+  "Font read from the wpg.conf template.")
+
+(macros/comment
+ (fonts/set wpgtk/font))
+
+(defun get-hex-or-term (n)
+  "Gets N hex or a term color depending on whether we're using an GUI or not."
+  ;; Since I start emacs with `emacs --daemon`, `(display-graphic-p)` is `nil`
+  ;; and therefore "black", "brightblue", etc. will be set, which is
+  ;; undesirable.
+  (list/get n '("#01022E"
+                "#434AA6"
+                "#0278C6"
+                "#9B6DB0"
+                "#018CD5"
+                "#07AAE9"
+                "#3FA4E0"
+                "#a7dff4"
+                "#749caa"
+                "#434AA6"
+                "#0278C6"
+                "#9B6DB0"
+                "#018CD5"
+                "#07AAE9"
+                "#3FA4E0"
+                "#a7dff4")))
+
+(defun create-wpgtk-theme (variant theme-name)
+  (let ((class '((class color) (min-colors 16)))
+        (base            (get-hex-or-term 15))
+        (white           (get-hex-or-term 7))
+        (cursor          (get-hex-or-term 7))
+        (bg1             (get-hex-or-term 0))
+        (bg2             (get-hex-or-term 8))
+        (bg3             (get-hex-or-term 8))
+        (bg4             (get-hex-or-term 8))
+        (key1            (get-hex-or-term 14))
+        (key2            (get-hex-or-term 14))
+        (builtin         (get-hex-or-term 13))
+        (keyword         (get-hex-or-term 12))
+        (const           (get-hex-or-term 11))
+        (comment         (get-hex-or-term 2))
+        (comment-bg      (get-hex-or-term 0))
+        (func            (get-hex-or-term 13))
+        (str             (get-hex-or-term 11))
+        (type            (get-hex-or-term 14))
+        (comp            (get-hex-or-term 13))
+        (var             (get-hex-or-term 10))
+        (err             (get-hex-or-term 9))
+        (war             (get-hex-or-term 11))
+        (inf             (get-hex-or-term 11))
+        (suc             (get-hex-or-term 10))
+        (green           (get-hex-or-term 10))
+        (yellow          (get-hex-or-term 11))
+        (cyan            (get-hex-or-term 14))
+        (violet          (get-hex-or-term 13))
+        (red             (get-hex-or-term 9))
+        (active1         (get-hex-or-term 14))
+        (active2         (get-hex-or-term 6))
+        (inactive        (get-hex-or-term 8))
+        (m-line-brdr     (get-hex-or-term 8))
+        (org-block-bg    (get-hex-or-term 8))
+        (org-h1-bg       (get-hex-or-term 8))
+        (org-h2-bg       (get-hex-or-term 0))
+        (org-h3-bg       (get-hex-or-term 0))
+        (org-h4-bg       (get-hex-or-term 0))
+        (highlight       (get-hex-or-term 14)))
+
+    (custom-theme-set-faces
+     theme-name
+
+;;;;; basics
+     `(cursor ((,class (:background ,cursor))))
+     `(default ((,class (:background ,bg1 :foreground ,base))))
+     `(default-italic ((,class (:italic t))))
+     `(error ((,class (:foreground ,err))))
+     `(eval-sexp-fu-flash ((,class (:background ,suc :foreground ,bg1))))
+     `(eval-sexp-fu-flash-error ((,class (:background ,err :foreground ,bg1))))
+     `(font-lock-builtin-face ((,class (:foreground ,builtin))))
+     `(font-lock-comment-face ((,class (:foreground ,comment :background ,(when wpgtk-theme-comment-bg comment-bg)))))
+     `(font-lock-constant-face ((,class (:foreground ,const))))
+     `(font-lock-doc-face ((,class (:foreground ,comment))))
+     `(font-lock-function-name-face ((,class (:foreground ,func :bold t))))
+     `(font-lock-keyword-face ((,class (:bold ,class :foreground ,keyword))))
+     `(font-lock-negation-char-face ((,class (:foreground ,const))))
+     `(font-lock-preprocessor-face ((,class (:foreground ,func))))
+     `(font-lock-reference-face ((,class (:foreground ,const))))
+     `(font-lock-string-face ((,class (:foreground ,str))))
+     `(font-lock-type-face ((,class (:foreground ,type :bold t))))
+     `(font-lock-variable-name-face ((,class (:foreground ,var))))
+     `(font-lock-warning-face ((,class (:foreground ,war :background ,bg1))))
+     `(fringe ((,class (:background ,bg1 :foreground ,base))))
+     `(highlight ((,class (:foreground ,base :background ,bg3))))
+     `(hl-line ((,class (:background ,bg2))))
+     `(isearch ((,class (:bold t :foreground ,bg1 :background ,inf))))
+     `(lazy-highlight ((,class (:foreground ,bg1 :background ,inf :weight normal))))
+     `(link ((,class (:foreground ,comment :underline t))))
+     `(link-visited ((,class (:foreground ,comp :underline t))))
+     `(match ((,class (:background ,bg1 :foreground ,inf :weight bold))))
+     `(minibuffer-prompt ((,class (:bold t :foreground ,keyword))))
+     `(page-break-lines ((,class (:foreground ,active2))))
+     `(region ((,class (:background ,highlight :foreground ,bg1))))
+     `(secondary-selection ((,class (:background ,bg3))))
+     `(show-paren-match-face ((,class (:background ,suc))))
+     `(success ((,class (:foreground ,suc))))
+     `(vertical-border ((,class (:foreground ,white :background, bg2))))
+     `(warning ((,class (:foreground ,war ))))
+
+;;;;; anzu-mode
+     `(anzu-mode-line ((,class (:foreground ,yellow :weight bold))))
+
+;;;;; company
+     `(company-echo-common ((,class (:background ,base :foreground ,bg1))))
+     `(company-preview ((,class (:background ,bg1 :foreground ,key1))))
+     `(company-preview-common ((,class (:background ,bg2 :foreground ,keyword))))
+     `(company-preview-search ((,class (:background ,bg2 :foreground ,green))))
+     `(company-scrollbar-bg ((,class (:background ,bg2))))
+     `(company-scrollbar-fg ((,class (:background ,comp))))
+     `(company-template-field ((,class (:inherit region))))
+     `(company-tooltip ((,class (:background ,bg2 :foreground ,base))))
+     `(company-tooltip-annotation ((,class (:background ,bg2 :foreground ,active1))))
+     `(company-tooltip-common ((,class (:background ,active2 :foreground ,bg1))))
+     `(company-tooltip-common-selection ((,class (:foreground ,bg1))))
+     `(company-tooltip-mouse ((,class (:inherit highlight))))
+     `(company-tooltip-search ((,class (:inherit match))))
+     `(company-tooltip-selection ((,class (:background ,active1 :foreground, bg1))))
+
+;;;;; diff
+     `(diff-added             ((,class :background nil :foreground ,green)))
+     `(diff-changed           ((,class :background nil :foreground ,inf)))
+     `(diff-indicator-added   ((,class :background nil :foreground ,green)))
+     `(diff-indicator-changed ((,class :background nil :foreground ,inf)))
+     `(diff-indicator-removed ((,class :background nil :foreground ,red)))
+     `(diff-refine-added      ((,class :background ,green :foreground ,bg4)))
+     `(diff-refine-changed    ((,class :background ,inf :foreground ,bg4)))
+     `(diff-refine-removed    ((,class :background ,red :foreground ,bg4)))
+     `(diff-removed           ((,class :background nil :foreground ,red)))
+
+;;;;; dired
+     `(dired-directory ((,class (:foreground ,key1 :background ,bg1 :weight bold))))
+     `(dired-flagged ((,class (:foreground ,red))))
+     `(dired-header ((,class (:foreground ,comp :weight bold))))
+     `(dired-ignored ((,class (:inherit shadow))))
+     `(dired-mark ((,class (:foreground ,comp :weight bold))))
+     `(dired-marked ((,class (:foreground ,violet :weight bold))))
+     `(dired-perm-write ((,class (:foreground ,base :underline t))))
+     `(dired-symlink ((,class (:foreground ,cyan :background ,bg1 :weight bold))))
+     `(dired-warning ((,class (:foreground ,war))))
+
+;;;;; ediff
+     `(ediff-current-diff-A ((,class(:background ,org-h1-bg :foreground ,inf))))
+     `(ediff-current-diff-Ancestor ((,class(:background ,org-h2-bg :foreground ,str))))
+     `(ediff-current-diff-B ((,class(:background ,org-h4-bg :foreground ,yellow))))
+     `(ediff-current-diff-C ((,class(:background ,org-h3-bg :foreground ,green))))
+     `(ediff-even-diff-A ((,class(:background ,bg3))))
+     `(ediff-even-diff-Ancestor ((,class(:background ,bg3))))
+     `(ediff-even-diff-B ((,class(:background ,bg3))))
+     `(ediff-even-diff-C ((,class(:background ,bg3))))
+     `(ediff-fine-diff-A ((,class(:background nil :bold t :underline t))))
+     `(ediff-fine-diff-Ancestor ((,class(:background nil :bold t :underline t))))
+     `(ediff-fine-diff-B ((,class(:background nil :bold t :underline t))))
+     `(ediff-fine-diff-C ((,class(:background nil :bold t :underline t))))
+     `(ediff-odd-diff-A ((,class(:background ,bg4))))
+     `(ediff-odd-diff-Ancestor ((,class(:background ,bg4))))
+     `(ediff-odd-diff-B ((,class(:background ,bg4))))
+     `(ediff-odd-diff-C ((,class(:background ,bg4))))
+
+;;;;; ein
+     `(ein:cell-input-area((,class (:background ,bg2))))
+     `(ein:cell-input-prompt ((,class (:foreground ,(if (eq variant 'dark) suc green)))))
+     `(ein:cell-output-prompt ((,class (:foreground ,err))))
+     `(ein:notification-tab-normal ((,class (:foreground ,builtin))))
+     `(ein:notification-tab-selected ((,class (:foreground ,(if (eq variant 'dark) suc green) :bold t))))
+
+;;;;; eldoc
+     `(eldoc-highlight-function-argument ((,class (:foreground ,(if (eq variant 'dark) suc red) :bold t))))
+
+;;;;; erc
+     `(erc-input-face ((,class (:foreground ,func))))
+     `(erc-my-nick-face ((,class (:foreground ,key1))))
+     `(erc-nick-default-face ((,class (:foreground ,inf))))
+     `(erc-nick-prefix-face ((,class (:foreground ,yellow))))
+     `(erc-notice-face ((,class (:foreground ,str))))
+     `(erc-prompt-face ((,class (:foreground ,(if (eq variant 'dark) suc green) :bold t))))
+     `(erc-timestamp-face ((,class (:foreground ,builtin))))
+
+;;;;; eshell
+     `(eshell-ls-archive ((,class (:foreground ,red :weight bold))))
+     `(eshell-ls-backup ((,class (:inherit font-lock-comment-face))))
+     `(eshell-ls-clutter ((,class (:inherit font-lock-comment-face))))
+     `(eshell-ls-directory ((,class (:foreground ,inf :weight bold))))
+     `(eshell-ls-executable ((,class (:foreground ,suc :weight bold))))
+     `(eshell-ls-missing ((,class (:inherit font-lock-warning-face))))
+     `(eshell-ls-product ((,class (:inherit font-lock-doc-face))))
+     `(eshell-ls-special ((,class (:foreground ,yellow :weight bold))))
+     `(eshell-ls-symlink ((,class (:foreground ,cyan :weight bold))))
+     `(eshell-ls-unreadable ((,class (:foreground ,base))))
+     `(eshell-prompt ((,class (:foreground ,keyword :weight bold))))
+
+;;;;; flycheck
+     `(flycheck-error ((,class (:foreground ,bg1 :background ,err))))
+     `(flycheck-error-list-checker-name ((,class (:foreground ,keyword))))
+     `(flycheck-fringe-error ((,class (:foreground ,err :weight bold))))
+     `(flycheck-fringe-info ((,class (:foreground ,inf :weight bold))))
+     `(flycheck-fringe-warning ((,class (:foreground ,war :weight bold))))
+     `(flycheck-info
+       ((,(append '((supports :underline (:style line))) class)
+         (:underline (:style line :color ,inf)))
+        (,class (:foreground ,base :background ,inf :weight bold :underline t))))
+     `(flycheck-warning ((,class (:foreground ,bg1 :background ,violet))))
+
+;;;;; git-gutter-fr
+     `(git-gutter-fr:added ((,class (:foreground ,green :weight bold))))
+     `(git-gutter-fr:deleted ((,class (:foreground ,war :weight bold))))
+     `(git-gutter-fr:modified ((,class (:foreground ,inf :weight bold))))
+
+;;;;; git-timemachine
+     `(git-timemachine-minibuffer-detail-face ((,class (:foreground ,inf :bold t :background ,org-h1-bg))))
+
+;;;;; gnus
+     `(gnus-emphasis-highlight-words ((,class (:background ,(if (eq variant 'dark) err suc) :foreground ,(when (eq variant 'light) bg1)))))
+     `(gnus-header-content ((,class (:foreground ,keyword))))
+     `(gnus-header-from ((,class (:foreground ,var))))
+     `(gnus-header-name ((,class (:foreground ,comp))))
+     `(gnus-header-subject ((,class (:foreground ,func :bold t))))
+     `(gnus-summary-cancelled ((,class (:background ,(if (eq variant 'dark) err suc) :foreground ,bg1))))
+
+;;;;; guide-key
+     `(guide-key/highlight-command-face ((,class (:foreground ,base))))
+     `(guide-key/key-face ((,class (:foreground ,key1))))
+     `(guide-key/prefix-command-face ((,class (:foreground ,key2 :weight bold))))
+
+;;;;; helm
+     `(helm-bookmark-directory ((,class (:inherit helm-ff-directory))))
+     `(helm-bookmark-file ((,class (:foreground ,base))))
+     `(helm-bookmark-gnus ((,class (:foreground ,comp))))
+     `(helm-bookmark-info ((,class (:foreground ,comp))))
+     `(helm-bookmark-man ((,class (:foreground ,comp))))
+     `(helm-bookmark-w3m ((,class (:foreground ,comp))))
+     `(helm-buffer-directory ((,class (:foreground ,base :background ,bg1))))
+     `(helm-buffer-file ((,class (:foreground ,base :background ,bg1))))
+     `(helm-buffer-not-saved ((,class (:foreground ,comp :background ,bg1))))
+     `(helm-buffer-process ((,class (:foreground ,builtin :background ,bg1))))
+     `(helm-buffer-saved-out ((,class (:foreground ,base :background ,bg1))))
+     `(helm-buffer-size ((,class (:foreground ,base :background ,bg1))))
+     `(helm-candidate-number ((,class (:background ,bg1 :foreground ,inf :bold t))))
+     `(helm-ff-directory ((,class (:foreground ,key1 :background ,bg1 :weight bold))))
+     `(helm-ff-dotted-directory ((,class (:foreground ,key1 :background ,bg1 :weight bold))))
+     `(helm-ff-executable ((,class (:foreground ,suc :background ,bg1 :weight normal))))
+     `(helm-ff-file ((,class (:foreground ,base :background ,bg1 :weight normal))))
+     `(helm-ff-invalid-symlink ((,class (:foreground ,red :background ,bg1 :weight bold))))
+     `(helm-ff-prefix ((,class (:foreground ,bg1 :background ,keyword :weight normal))))
+     `(helm-ff-symlink ((,class (:foreground ,cyan :background ,bg1 :weight bold))))
+     `(helm-grep-cmd-line ((,class (:foreground ,base :background ,bg1))))
+     `(helm-grep-file ((,class (:foreground ,base :background ,bg1))))
+     `(helm-grep-finish ((,class (:foreground ,base :background ,bg1))))
+     `(helm-grep-lineno ((,class (:foreground ,base :background ,bg1))))
+     `(helm-grep-match ((,class (:foreground nil :background nil :inherit helm-match))))
+     `(helm-grep-running ((,class (:foreground ,func :background ,bg1))))
+     `(helm-header ((,class (:foreground ,base :background ,bg1 :underline nil :box nil))))
+     `(helm-header-line-left-margin ((,class (:foreground ,inf :background ,nil))))
+     `(helm-match ((,class (:inherit match))))
+     `(helm-match-item ((,class (:inherit match))))
+     `(helm-moccur-buffer ((,class (:foreground ,func :background ,bg1))))
+     `(helm-selection ((,class (:background ,highlight :foreground, bg1))))
+     `(helm-selection-line ((,class (:background ,bg2))))
+     `(helm-separator ((,class (:foreground ,comp :background ,bg1))))
+     `(helm-source-header ((,class (:background ,comp :foreground ,bg1 :bold t))))
+     `(helm-time-zone-current ((,class (:foreground ,builtin :background ,bg1))))
+     `(helm-time-zone-home ((,class (:foreground ,comp :background ,bg1))))
+     `(helm-visible-mark ((,class (:foreground ,bg1 :background ,bg3))))
+
+;;;;; helm-swoop
+     `(helm-swoop-target-line-block-face ((,class (:foreground ,base :background ,highlight))))
+     `(helm-swoop-target-line-face ((,class (:foreground ,base :background ,highlight))))
+     `(helm-swoop-target-word-face ((,class (:foreground ,bg1 :background ,suc))))
+
+;;;;; ido
+     `(ido-first-match ((,class (:foreground ,comp :bold t))))
+     `(ido-only-match ((,class (:foreground ,(if (eq variant 'dark) suc red) :bold t))))
+     `(ido-subdir ((,class (:foreground ,key1))))
+     `(ido-vertical-match-face ((,class (:foreground ,comp :underline nil))))
+
+;;;;; info
+     `(info-header-xref ((,class (:foreground ,func :underline t))))
+     `(info-menu ((,class (:foreground ,suc))))
+     `(info-node ((,class (:foreground ,func :bold t))))
+     `(info-quoted-name ((,class (:foreground ,builtin))))
+     `(info-reference-item ((,class (:background nil :underline t :bold t))))
+     `(info-string ((,class (:foreground ,str))))
+     `(info-title-1 ((,class (:height 1.4 :bold t))))
+     `(info-title-2 ((,class (:height 1.3 :bold t))))
+     `(info-title-3 ((,class (:height 1.3))))
+     `(info-title-4 ((,class (:height 1.2))))
+
+;;;;; linum-mode
+     `(linum ((,class (:foreground ,base :background ,bg2))))
+     `(nlinum ((,class (:foreground ,base :background ,bg2))))
+     `(line-number ((,class (:foreground ,base :background ,bg2))))
+
+;;;;; magit
+     `(magit-tag ((,class :background nil :foreground ,yellow)))
+     `(magit-blame-culprit ((,class :background ,org-h4-bg :foreground ,yellow)))
+     `(magit-blame-header  ((,class :background ,org-h4-bg :foreground ,green)))
+     `(magit-blame-sha1    ((,class :background ,org-h4-bg :foreground ,func)))
+     `(magit-blame-subject ((,class :background ,org-h4-bg :foreground ,yellow)))
+     `(magit-blame-time    ((,class :background ,org-h4-bg :foreground ,green)))
+     `(magit-blame-name    ((,class :background ,org-h4-bg :foreground ,yellow)))
+     `(magit-blame-heading ((,class :background ,org-h4-bg :foreground ,green)))
+     `(magit-blame-hash    ((,class :background ,org-h4-bg :foreground ,func)))
+     `(magit-blame-summary ((,class :background ,org-h4-bg :foreground ,yellow)))
+     `(magit-blame-date    ((,class :background ,org-h4-bg :foreground ,green)))
+	 `(magit-branch-local    ((,class :background nil :foreground , func)))
+	 `(magit-branch-remote    ((,class :background nil :foreground ,green)))
+	 `(magit-branch ((,class (:foreground ,const :weight bold))))
+     `(magit-diff-context-highlight ((,class (:background ,bg3 :foreground ,base))))
+     `(magit-diff-file-header ((,class (:background nil :foreground ,str))))
+     `(magit-diff-hunk-header ((,class (:background nil :foreground ,builtin))))
+     `(magit-hash ((,class (:foreground ,base))))
+     `(magit-hunk-heading           ((,class (:background ,bg3))))
+     `(magit-hunk-heading-highlight ((,class (:background ,bg3))))
+     `(magit-item-highlight ((,class :background ,bg2)))
+     `(magit-log-author ((,class (:foreground ,base))))
+     `(magit-log-head-label-head ((,class (:background ,yellow :foreground ,bg1 :bold t))))
+     `(magit-log-head-label-local ((,class (:background ,inf :foreground ,bg1 :bold t))))
+     `(magit-log-head-label-remote ((,class (:background ,suc :foreground ,bg1 :bold t))))
+     `(magit-log-head-label-tags ((,class (:background ,violet :foreground ,bg1 :bold t))))
+     `(magit-log-head-label-wip ((,class (:background ,cyan :foreground ,bg1 :bold t))))
+     `(magit-log-sha1 ((,class (:foreground ,str))))
+     `(magit-process-ng ((,class (:foreground ,war :weight bold))))
+     `(magit-process-ok ((,class (:foreground ,func :weight bold))))
+     `(magit-section-heading        ((,class (:foreground ,keyword :weight bold))))
+     `(magit-section-highlight      ((,class (:background ,bg2))))
+     `(magit-section-title ((,class (:background ,bg1 :foreground ,builtin :weight bold))))
+
+;;;;; mode-line
+     `(mode-line           ((,class (:foreground ,bg1 :background ,active1 :box (:color ,m-line-brdr :line-width 0)))))
+     `(mode-line-inactive  ((,class (:foreground ,white :background ,bg2     :box (:color ,m-line-brdr :line-width 0)))))
+     `(mode-line-buffer-id ((,class (:bold f :foreground ,bg1))))
+
+;;;;; mode-line
+     `(sml/modified    ((,class (:foreground ,bg1 :background ,red))))
+
+;;;;; neotree
+     `(neo-dir-link-face ((,class (:foreground ,inf :weight bold))))
+     `(neo-expand-btn-face ((,class (:foreground ,base))))
+     `(neo-file-link-face ((,class (:foreground ,base))))
+     `(neo-root-dir-face ((,class (:foreground ,func :weight bold))))
+
+;;;;; org
+     `(org-agenda-clocking ((,class (:foreground ,comp))))
+     `(org-agenda-date ((,class (:foreground ,var :height 1.1))))
+     `(org-agenda-date-today ((,class (:weight bold :foreground ,keyword :height 1.3))))
+     `(org-agenda-date-weekend ((,class (:weight normal :foreground ,base))))
+     `(org-agenda-done ((,class (:foreground ,(if (eq variant 'dark) suc green) :bold t))))
+     `(org-agenda-structure ((,class (:weight bold :foreground ,comp))))
+     `(org-block ((,class (:foreground ,base))))
+     `(org-block-background ((,class (:background ,org-block-bg))))
+     `(org-clock-overlay ((,class (:foreground ,comp))))
+     `(org-code ((,class (:foreground ,cyan))))
+     `(org-column ((,class (:background ,highlight))))
+     `(org-column-title ((,class (:background ,highlight))))
+     `(org-date ((,class (:underline t :foreground ,var) )))
+     `(org-date-selected ((,class (:background ,func :foreground ,bg1) )))
+     `(org-document-info-keyword ((,class (:foreground ,str))))
+     `(org-document-title ((,class (:foreground ,func :weight bold :height ,(if wpgtk-theme-org-height 1.4 1.0) :underline t))))
+     `(org-done ((,class (:foreground ,(if (eq variant 'dark) suc green) :bold t :overline t :background ,org-h3-bg))))
+     `(org-ellipsis ((,class (:foreground ,builtin))))
+     `(org-footnote  ((,class (:underline t :foreground ,base))))
+     `(org-hide ((,class (:foreground ,base))))
+     `(org-level-1 ((,class (:bold t :foreground ,inf :height ,(if wpgtk-theme-org-height 1.3 1.0) :background ,org-h1-bg))))
+     `(org-level-2 ((,class (:bold t :foreground ,str :height ,(if wpgtk-theme-org-height 1.2 1.0) :background ,org-h2-bg))))
+     `(org-level-3 ((,class (:bold nil :foreground ,green :height ,(if wpgtk-theme-org-height 1.1 1.0) :background ,org-h3-bg))))
+     `(org-level-4 ((,class (:bold nil :foreground ,yellow :background ,org-h4-bg))))
+     `(org-level-5 ((,class (:bold nil :foreground ,inf))))
+     `(org-level-6 ((,class (:bold nil :foreground ,str))))
+     `(org-level-7 ((,class (:bold nil :foreground ,green))))
+     `(org-level-8 ((,class (:bold nil :foreground ,yellow))))
+     `(org-link ((,class (:underline t :foreground ,comment))))
+     `(org-mode-line-clock-overrun ((,class (:foreground ,err))))
+     `(org-priority ((,class (:foreground ,war :bold t))))
+     `(org-quote ((,class (:inherit org-block :slant italic))))
+     `(org-scheduled ((,class (:foreground ,comp))))
+     `(org-scheduled-today ((,class (:foreground ,func :weight bold :height 1.2))))
+     `(org-sexp-date ((,class (:foreground ,base))))
+     `(org-special-keyword ((,class (:foreground ,func))))
+     `(org-table ((,class (:foreground ,yellow :background ,org-h4-bg))))
+     `(org-todo ((,class (:foreground ,war :bold t :overline t :background ,org-h4-bg))))
+     `(org-verbatim ((,class (:foreground ,inf))))
+     `(org-verse ((,class (:inherit org-block :slant italic))))
+     `(org-warning ((,class (:foreground ,err))))
+
+;;;;; powerline
+     `(powerline-active1 ((,class (:background ,active2 :foreground ,base))))
+     `(powerline-active2 ((,class (:background ,active2 :foreground ,base))))
+     `(powerline-inactive1 ((,class (:background ,bg2 :foreground ,base))))
+     `(powerline-inactive2 ((,class (:background ,bg2 :foreground ,base))))
+
+;;;;; rainbow-delimiters
+     `(rainbow-delimiters-depth-1-face ((,class :foreground ,inf)))
+     `(rainbow-delimiters-depth-2-face ((,class :foreground ,func)))
+     `(rainbow-delimiters-depth-3-face ((,class :foreground ,str)))
+     `(rainbow-delimiters-depth-4-face ((,class :foreground ,green)))
+     `(rainbow-delimiters-depth-5-face ((,class :foreground ,yellow)))
+     `(rainbow-delimiters-depth-6-face ((,class :foreground ,inf)))
+     `(rainbow-delimiters-depth-7-face ((,class :foreground ,func)))
+     `(rainbow-delimiters-depth-8-face ((,class :foreground ,str)))
+     `(rainbow-delimiters-unmatched-face ((,class :foreground ,war)))
+
+;;;;; smartparens
+     `(sp-pair-overlay-face ((,class (:background ,highlight :foreground nil))))
+     `(sp-show-pair-match-face ((,class (:foreground ,(if (eq variant 'dark) suc red) :weight bold :underline t))))
+
+;;;;; term
+     `(term ((,class (:foreground ,base :background ,bg1))))
+     `(term-color-black ((,class (:foreground ,bg4))))
+     `(term-color-blue ((,class (:foreground ,inf))))
+     `(term-color-cyan ((,class (:foreground ,cyan))))
+     `(term-color-green ((,class (:foreground ,green))))
+     `(term-color-magenta ((,class (:foreground ,builtin))))
+     `(term-color-red ((,class (:foreground ,red))))
+     `(term-color-white ((,class (:foreground ,base))))
+     `(term-color-yellow ((,class (:foreground ,yellow))))
+
+;;;;; which-key
+     `(which-key-command-description-face ((,class (:foreground ,base))))
+     `(which-key-group-description-face ((,class (:foreground ,key2))))
+     `(which-key-key-face ((,class (:foreground ,func :bold t))))
+     `(which-key-separator-face ((,class (:background nil :foreground ,str))))
+     `(which-key-special-key-face ((,class (:background ,func :foreground ,bg1))))
+
+;;;;; other, need more work
+     `(ac-completion-face ((,class (:underline t :foreground ,keyword))))
+     `(elixir-atom-face ((,class (:foreground ,func))))
+     `(ffap ((,class (:foreground ,base))))
+     `(flx-highlight-face ((,class (:foreground ,comp :underline nil))))
+     `(font-latex-bold-face ((,class (:foreground ,comp))))
+     `(font-latex-italic-face ((,class (:foreground ,key2 :italic t))))
+     `(font-latex-match-reference-keywords ((,class (:foreground ,const))))
+     `(font-latex-match-variable-keywords ((,class (:foreground ,var))))
+     `(font-latex-string-face ((,class (:foreground ,str))))
+     `(icompletep-determined ((,class :foreground ,builtin)))
+     `(js2-external-variable ((,class (:foreground ,comp  ))))
+     `(js2-function-param ((,class (:foreground ,const))))
+     `(js2-function-call ((,class (:inherit ,font-lock-function-name-face))))
+     `(js2-jsdoc-html-tag-delimiter ((,class (:foreground ,str))))
+     `(js2-jsdoc-html-tag-name ((,class (:foreground ,key1))))
+     `(js2-jsdoc-value ((,class (:foreground ,str))))
+     `(js2-private-function-call ((,class (:foreground ,const))))
+     `(js2-private-member ((,class (:foreground ,base))))
+     `(js3-error-face ((,class (:underline ,war))))
+     `(js3-external-variable-face ((,class (:foreground ,var))))
+     `(js3-function-param-face ((,class (:foreground ,key2))))
+     `(js3-instance-member-face ((,class (:foreground ,const))))
+     `(js3-jsdoc-tag-face ((,class (:foreground ,keyword))))
+     `(js3-warning-face ((,class (:underline ,keyword))))
+     `(mu4e-cited-1-face ((,class (:foreground ,base))))
+     `(mu4e-cited-7-face ((,class (:foreground ,base))))
+     `(mu4e-header-marks-face ((,class (:foreground ,comp))))
+     `(mu4e-view-url-number-face ((,class (:foreground ,comp))))
+     `(py-variable-name-face ((,class (:foreground ,var))))
+     `(slime-repl-inputed-output-face ((,class (:foreground ,comp))))
+	 `(sh-quoted-text ((,class (:foreground ,func))))
+     `(trailing-whitespace ((,class :foreground nil :background ,err)))
+     `(undo-tree-visualizer-current-face ((,class :foreground ,builtin)))
+     `(undo-tree-visualizer-default-face ((,class :foreground ,base)))
+     `(undo-tree-visualizer-register-face ((,class :foreground ,comp)))
+     `(undo-tree-visualizer-unmodified-face ((,class :foreground ,var)))
+     `(web-mode-builtin-face ((,class (:inherit ,font-lock-builtin-face))))
+     `(web-mode-comment-face ((,class (:inherit ,font-lock-comment-face))))
+     `(web-mode-constant-face ((,class (:inherit ,font-lock-constant-face))))
+     `(web-mode-doctype-face ((,class (:inherit ,font-lock-comment-face))))
+     `(web-mode-function-name-face ((,class (:inherit ,font-lock-function-name-face))))
+     `(web-mode-html-attr-name-face ((,class (:foreground ,func))))
+     `(web-mode-html-attr-value-face ((,class (:foreground ,keyword))))
+     `(web-mode-html-tag-face ((,class (:foreground ,builtin))))
+     `(web-mode-keyword-face ((,class (:foreground ,keyword))))
+     `(web-mode-string-face ((,class (:foreground ,str))))
+     `(web-mode-type-face ((,class (:inherit ,font-lock-type-face))))
+     `(web-mode-warning-face ((,class (:inherit ,font-lock-warning-face)))))))
+
+(deftheme wpgtk "Theme for wpgtk template system")
+(create-wpgtk-theme 'dark 'wpgtk)
+(provide-theme 'wpgtk)
+
+;; Local Variables:
+;; no-byte-compile: t
+;; End:
+
+;;; wpgtk-theme.el ends here
diff --git a/configs/shared/.emacs.d/wpc/alist.el b/configs/shared/.emacs.d/wpc/alist.el
new file mode 100644
index 0000000000..da0ce68b8f
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/alist.el
@@ -0,0 +1,227 @@
+;;; alist.el --- Interface for working with associative lists -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Firstly, a rant:
+;; In most cases, I find Elisp's APIs to be confusing.  There's a mixture of
+;; overloaded functions that leak the implementation details (TODO: provide an
+;; example of this.) of the abstract data type, which I find privileges those
+;; "insiders" who spend disproportionately large amounts of time in Elisp land,
+;; and other functions with little-to-no pattern about the order in which
+;; arguments should be applied.  In theory, however, most of these APIs could
+;; and should be much simpler.  This module represents a step in that direction.
+;;
+;; I'm modelling these APIs after Elixir's APIs.
+;;
+;; On my wishlist is to create protocols that will allow generic interfaces like
+;; Enum protocols, etc.  Would be nice to abstract over...
+;; - associative lists (i.e. alists)
+;; - property lists (i.e. plists)
+;; - hash tables
+;; ...with some dictionary or map-like interface.  This will probably end up
+;; being quite similar to the kv.el project but with differences at the API
+;; layer.
+;;
+;; Similar libraries:
+;; - map.el: Comes bundled with recent versions of Emacs.
+;; - asoc.el: Helpers for working with alists.  asoc.el is similar to alist.el
+;;   because it uses the "!" convention for signalling that a function mutates
+;;   the underlying data structure.
+;; - ht.el: Hash table library.
+;; - kv.el: Library for dealing with key-value collections.  Note that map.el
+;;   has a similar typeclass because it works with lists, hash-tables, or
+;;   arrays.
+;; - a.el: Clojure-inspired way of working with key-value data structures in
+;; Elisp.  Works with alists, hash-tables, and sometimes vectors.
+;;
+;; Some API design principles:
+;; - The "noun" (i.e. alist) of the "verb" (i.e. function) comes last to improve
+;; composability with the threading macro (i.e. `->>') and to improve consumers'
+;; intuition with the APIs.  Learn this once, know it always.
+;;
+;; - Every function avoids mutating the alist unless it ends with !.
+;;
+;; - CRUD operations will be named according to the following table:
+;;   - "create" *and* "set"
+;;   - "read"   *and* "get"
+;;   - "update"
+;;   - "delete" *and* "remove"
+;;
+;; For better or worse, all of this code expects alists in the form of:
+;; ((first-name . "William") (last-name . "Carroll"))
+;;
+;; Special thanks to github.com/alphapapa/emacs-package-dev-handbook for some of
+;; the idiomatic ways to update alists.
+;;
+;; TODO: Include a section that compares alist.el to a.el from
+;; github.com/plexus/a.el.
+
+;; Dependencies:
+
+;; TODO: Consider dropping explicit dependency white-listing since all of these
+;; should be available in my Emacs.  The problem arises when this library needs
+;; to be published, in which case, something like Nix and a build process could
+;; possible insert the necessary require statements herein.  Not sure how I feel
+;; about this though.
+(require 'maybe)
+(require 'macros)
+(require 'dash)
+(require 'tuple)
+(require 'maybe)
+
+;;; Code:
+
+;; TODO: Support function aliases for:
+;; - create/set
+;; - read/get
+;; - update
+;; - delete/remove
+
+;; Support mutative variants of functions with an ! appendage to their name.
+
+;; Ensure that the same message about only updating the first occurrence of a
+;; key is consistent throughout documentation using string interpolation or some
+;; other mechanism.
+
+;; TODO: Consider wrapping all of this with `(cl-defstruct alist xs)'.
+
+(defun alist/new ()
+  "Return a new, empty alist."
+  '())
+
+;; Create
+;; TODO: See if this mutates.
+(defun alist/set (k v xs)
+  "Set K to V in XS."
+  (if (alist/has-key? k xs)
+      (progn
+        (setf (alist-get k xs) v)
+        xs)
+    (list/cons `(,k . ,v) xs)))
+
+(defun alist/set! (k v xs)
+  "Set K to V in XS mutatively.
+Note that this doesn't append to the alist in the way that most alists handle
+  writing.  If the k already exists in XS, it is overwritten."
+  (map-delete xs k)
+  (map-put xs k v))
+
+;; Read
+(defun alist/get (k xs)
+  "Return the value at K in XS; otherwise, return nil.
+Returns the first occurrence of K in XS since alists support multiple entries."
+  (cdr (assoc k xs)))
+
+(defun alist/get-entry (k xs)
+  "Return the first key-value pair at K in XS."
+  (assoc k xs))
+
+;; Update
+;; TODO: Add warning about only the first occurrence being updated in the
+;; documentation.
+(defun alist/update (k f xs)
+  "Apply F to the value stored at K in XS.
+If `K' is not in `XS', this function errors.  Use `alist/upsert' if you're
+interested in inserting a value when a key doesn't already exist."
+  (if (maybe/nil? (alist/get k xs))
+      (error "Refusing to update: key does not exist in alist")
+    (alist/set k (funcall f (alist/get k xs)) xs)))
+
+(defun alist/update! (k f xs)
+  "Call F on the entry at K in XS.
+Mutative variant of `alist/update'."
+  (alist/set! k (funcall f (alist/get k xs))xs))
+
+;; TODO: Support this.
+(defun alist/upsert (k v f xs)
+  "If K exists in `XS' call `F' on the value otherwise insert `V'."
+  (if (alist/get k xs)
+      (alist/update k f xs)
+    (alist/set k v xs)))
+
+;; Delete
+;; TODO: Make sure `delete' and `remove' behave as advertised in the Elisp docs.
+(defun alist/delete (k xs)
+  "Deletes the entry of K from XS.
+This only removes the first occurrence of K, since alists support multiple
+  key-value entries.  See `alist/delete-all' and `alist/dedupe'."
+  (remove (assoc k xs) xs))
+
+(defun alist/delete! (k xs)
+  "Delete the entry of K from XS.
+Mutative variant of `alist/delete'."
+  (delete (assoc k xs) xs))
+
+;; Additions to the CRUD API
+;; TODO: Implement this function.
+(defun alist/dedupe-keys (xs)
+  "Remove the entries in XS where the keys are `equal'.")
+
+(defun alist/dedupe-entries (xs)
+  "Remove the entries in XS where the key-value pair are `equal'."
+  (delete-dups xs))
+
+(defun alist/keys (xs)
+  "Return a list of the keys in XS."
+  (mapcar 'car xs))
+
+(defun alist/values (xs)
+  "Return a list of the values in XS."
+  (mapcar 'cdr xs))
+
+(defun alist/has-key? (k xs)
+  "Return t if XS has a key `equal' to K."
+  (maybe/some? (assoc k xs)))
+
+(defun alist/has-value? (v xs)
+  "Return t if XS has a value of V."
+  (maybe/some? (rassoc v xs)))
+
+(defun alist/count (xs)
+  "Return the number of entries in XS."
+  (length xs))
+
+(defun alist/reduce (acc f xs)
+  "Return a new alist by calling, F, on k v and ACC from XS.
+F should return a tuple.  See tuple.el for more information."
+  (->> (alist/keys xs)
+       (list/reduce acc
+                    (lambda (k acc)
+                      (funcall f k (alist/get k xs) acc)))))
+
+(defun alist/merge (a b)
+  "Return a new alist with a merge of alists, A and B.
+In this case, the last writer wins, which is B."
+  (alist/reduce a #'alist/set b))
+
+;; TODO: Support `-all' variants like:
+;; - get-all
+;; - delete-all
+;; - update-all
+
+;; Scratch-pad
+(macros/comment
+ (progn
+   (setq person '((first-name . "William")
+                  (first-name . "William")
+                  (last-name  . "Carroll")
+                  (last-name  . "Another")))
+   (alist/set 'last-name "Van Gogh" person)
+   (alist/get 'last-name person)
+   (alist/update 'last-name (lambda (x) "whoops") person)
+   (alist/delete 'first-name person)
+   (alist/keys person)
+   (alist/values person)
+   (alist/count person)
+   (alist/has-key? 'first-name person)
+   (alist/has-value? "William" person)
+   ;; (alist/dedupe-keys person)
+   (alist/dedupe-entries person)
+   (alist/count person)))
+
+;; Tests
+
+;; TODO: Support test cases for the entire API.
+
+(provide 'alist)
+;;; alist.el ends here
diff --git a/configs/shared/.emacs.d/wpc/bag.el b/configs/shared/.emacs.d/wpc/bag.el
new file mode 100644
index 0000000000..c9511b18e7
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/bag.el
@@ -0,0 +1,66 @@
+;;; bag.el --- Working with bags (aka multi-sets) -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; What is a bag?  A bag should be thought of as a frequency table.  It's a way
+;; to convert a list of something into a set that allows duplicates.  Isn't
+;; allowing duplicates the whole thing with Sets?  Kind of.  But the interface
+;; of Sets is something that bags resemble, so multi-set isn't as bag of a name
+;; as it may first seem.
+;;
+;; If you've used Python's collections.Counter, the concept of a bag should be
+;; familiar already.
+;;
+;; Interface:
+;; - add        :: x -> Bag(x) -> Bag(x)
+;; - remove     :: x -> Bag(x) -> Bag(x)
+;; - union      :: Bag(x) -> Bag(x) -> Bag(x)
+;; - difference :: Bag(x) -> Bag(x) -> Bag(x)
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Dependencies
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'number)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Library
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(cl-defstruct bag xs)
+
+(defun bag/update (f xs)
+  "Call F on alist in XS."
+  (let ((ys (bag-xs xs)))
+    (setf (bag-xs xs) (funcall f ys))))
+
+(defun bag/new ()
+  "Create an empty bag."
+  (make-bag :xs (alist/new)))
+
+(defun bag/contains? (x xs)
+  "Return t if XS has X."
+  (alist/has-key? x (bag-xs xs)))
+
+;; TODO: Tabling this for now since working with structs seems to be
+;; disappointingly difficult.  Where is `struct/update'?
+;; (defun bag/add (x xs)
+;;   "Add X to XS.")
+
+;; TODO: What do we name delete vs. remove?
+;; (defun bag/remove (x xs)
+;;   "Remove X from XS.
+;; This is a no-op is X doesn't exist in XS.")
+
+(defun bag/from-list (xs)
+  "Map a list of `XS' into a bag."
+  (->> xs
+       (list/reduce
+        (bag/new)
+        (lambda (x acc)
+          (bag/add x 1 #'number/inc acc)))))
+
+(provide 'bag)
+;;; bag.el ends here
diff --git a/configs/shared/.emacs.d/wpc/bills.el b/configs/shared/.emacs.d/wpc/bills.el
new file mode 100644
index 0000000000..fbdeb9d0f8
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/bills.el
@@ -0,0 +1,26 @@
+;;; bills.el --- Helping me manage my bills -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; For personal use only.
+
+;;; Code:
+
+(defconst bills/whitelist '(("Council Tax" . "rbkc.gov.uk/onlinepayments/counciltaxpayments/")
+                            ("Internet". "plus.net/member-centre/login"))
+  "Maps searchable labels to URLs to pay these bills.")
+
+(defun bills/url ()
+  "Copies the URL to pay a bill onto the clipboard."
+  (ivy-read
+   "Bill: "
+   bills/whitelist
+   :action (lambda (entry)
+             (kill-new (cdr entry))
+             (alert "Copied to clipboard!"))))
+
+(macros/comment
+ (bills/url))
+
+(provide 'bills)
+;;; bills.el ends here
diff --git a/configs/shared/.emacs.d/wpc/bookmark.el b/configs/shared/.emacs.d/wpc/bookmark.el
new file mode 100644
index 0000000000..2a4156041e
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/bookmark.el
@@ -0,0 +1,108 @@
+;;; bookmark.el --- Saved files and directories on my filesystem -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; After enjoying and relying on Emacs's builtin `jump-to-register' command, I'd
+;; like to recreate this functionality with a few extensions.
+;;
+;; Everything herein will mimmick my previous KBDs for `jump-to-register', which
+;; were <leader>-j-<register-kbd>.  If the `bookmark-path' is a file, Emacs will
+;; open a buffer with that file.  If the `bookmark-path' is a directory, Emacs
+;; will open an ivy window searching that directory.
+
+;;; Code:
+
+(require 'f)
+(require 'buffer)
+(require 'list)
+(require 'string)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Constants
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(cl-defstruct bookmark label path kbd)
+
+;; TODO: Consider hosting this function somewhere other than here, since it
+;; feels useful above of the context of bookmarks.
+;; TODO: Assess whether it'd be better to use the existing function:
+;; `counsel-projectile-switch-project-action'.  See the noise I made on GH for
+;; more context: https://github.com/ericdanan/counsel-projectile/issues/137
+(defun bookmark/handle-directory-dwim (path)
+  "Open PATH as either a project directory or a regular directory.
+If PATH is `projectile-project-p', open with `counsel-projectile-find-file'.
+Otherwise, open with `counsel-find-file'."
+  (if (projectile-project-p path)
+      (with-temp-buffer
+        (cd (projectile-project-p path))
+        (call-interactively #'counsel-projectile-find-file))
+    (let ((ivy-extra-directories nil))
+      (counsel-find-file path))))
+
+(defconst bookmark/handle-directory #'bookmark/handle-directory-dwim
+  "Function to call when a bookmark points to a directory.")
+
+(defconst bookmark/handle-file #'counsel-find-file-action
+  "Function to call when a bookmark points to a file.")
+
+(defconst bookmark/whitelist
+  (list
+   ;; TODO: Consider using (getenv "ORG_DIRECTORY")
+   (make-bookmark :label "org"
+                  :path "~/Dropbox/org"
+                  :kbd "o")
+   (make-bookmark :label "dotfiles"
+                  :path "~/Dropbox/dotfiles"
+                  :kbd "d")
+   (make-bookmark :label "current project"
+                  :path constants/current-project
+                  :kbd "p"))
+  "List of registered bookmarks.")
+
+(defconst bookmark/install-kbds? t
+  "When t, install keybindings.")
+
+;; TODO: Consider `ivy-read' extension that takes a list of structs,
+;; `struct-to-label' and `label-struct' functions.
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; API
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun bookmark/open (b)
+  "Open bookmark, B, in a new buffer or an ivy minibuffer."
+  (let ((path (bookmark-path b)))
+    (cond
+     ((f-directory? path)
+      (funcall bookmark/handle-directory path))
+     ((f-file? path)
+      (funcall bookmark/handle-file path)))))
+
+(defun bookmark/ivy-open ()
+  "Use ivy to filter available bookmarks."
+  (interactive)
+  (ivy-read "Bookmark: "
+            (->> bookmark/whitelist
+                 (list/map #'bookmark-label))
+            :require-match t
+            :action (lambda (label)
+                      (->> bookmark/whitelist
+                           (list/find
+                            (lambda (b)
+                              (equal label (bookmark-label b))))
+                           bookmark/open))))
+
+(when bookmark/install-kbds?
+  (evil-leader/set-key
+    "jj" #'bookmark/ivy-open)
+  (->> bookmark/whitelist
+       (list/map
+        (lambda (b)
+          (evil-leader/set-key
+            (string/concat "j" (bookmark-kbd b))
+            ;; TODO: Consider `cl-labels' so `which-key' minibuffer is more
+            ;; helpful.
+            (lambda () (interactive) (bookmark/open b)))))))
+
+(provide 'bookmark)
+;;; bookmark.el ends here
diff --git a/configs/shared/.emacs.d/wpc/buffer.el b/configs/shared/.emacs.d/wpc/buffer.el
new file mode 100644
index 0000000000..9de14b4bd4
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/buffer.el
@@ -0,0 +1,51 @@
+;;; buffer.el --- Working with Emacs buffers -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Utilities for CRUDing buffers in Emacs.
+;;
+;; Many of these functions may seem unnecessary especially when you consider
+;; there implementations.  In general I believe that Elisp suffers from a
+;; library disorganization problem.  Providing simple wrapper functions that
+;; rename functions or reorder parameters is worth the effort in my opinion if
+;; it improves discoverability (via intuition) and improve composability.
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Dependencies
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'maybe)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Library
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun buffer/exists? (name)
+  "Return t if buffer, NAME, exists."
+  (maybe/some? (buffer/find name)))
+
+(defun buffer/find (buffer-or-name)
+  "Find a buffer by its BUFFER-OR-NAME."
+  (get-buffer buffer-or-name))
+
+(defun buffer/new (name)
+  "Return a newly created buffer NAME."
+  (generate-new-buffer name))
+
+(defun buffer/find-or-create (name)
+  "Find or create buffer, NAME.
+Return a reference to that buffer."
+  (let ((x (buffer/find name)))
+    (if (maybe/some? x)
+        x
+      (buffer/new name))))
+
+;; TODO: Should this consume: `display-buffer' or `switch-to-buffer'?
+(defun buffer/show (buffer-or-name)
+  "Display the BUFFER-OR-NAME, which is either a buffer reference or its name."
+  (display-buffer buffer-or-name))
+
+(provide 'buffer)
+;;; buffer.el ends here
diff --git a/configs/shared/.emacs.d/wpc/bytes.el b/configs/shared/.emacs.d/wpc/bytes.el
new file mode 100644
index 0000000000..d8bd2e2886
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/bytes.el
@@ -0,0 +1,109 @@
+;;; bytes.el --- Working with byte values -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Functions to help with human-readable representations of byte values.
+;;
+;; Usage:
+;; See the test cases for example usage.  Or better yet, I should use a type of
+;; structured documentation that would allow me to expose a view into the test
+;; suite here.  Is this currently possible in Elisp?
+;;
+;; API:
+;; - serialize :: Integer -> String
+;;
+;; Wish list:
+;; - Rounding: e.g. (bytes (* 1024 1.7)) => "2KB"
+
+;;; Code:
+
+;; TODO: Support -ibabyte variants like Gibibyte (GiB).
+
+;; Ranges:
+;;  B: [   0,  1e3)
+;; KB: [ 1e3,  1e6)
+;; MB: [ 1e6,  1e6)
+;; GB: [ 1e9, 1e12)
+;; TB: [1e12, 1e15)
+;; PB: [1e15, 1e18)
+;;
+;; Note: I'm currently not support exabytes because that causes the integer to
+;;  overflow.  I imagine a larger integer type may exist, but for now, I'll
+;;  treat this as a YAGNI.
+
+(require 'prelude)
+(require 'tuple)
+(require 'math)
+(require 'number)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Constants
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defconst bytes/kb (math/exp 2 10)
+  "Number of bytes in a kilobyte.")
+
+(defconst bytes/mb (math/exp 2 20)
+  "Number of bytes in a megabytes.")
+
+(defconst bytes/gb (math/exp 2 30)
+  "Number of bytes in a gigabyte.")
+
+(defconst bytes/tb (math/exp 2 40)
+  "Number of bytes in a terabyte.")
+
+(defconst bytes/pb (math/exp 2 50)
+  "Number of bytes in a petabyte.")
+
+(defconst bytes/eb (math/exp 2 60)
+  "Number of bytes in an exabyte.")
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Functions
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun bytes/classify (x)
+  "Return unit that closest fits byte count, X."
+  (prelude/assert (number/whole? x))
+  (cond
+   ((and (>= x 0)        (< x bytes/kb))     'byte)
+   ((and (>= x bytes/kb) (< x bytes/mb)) 'kilobyte)
+   ((and (>= x bytes/mb) (< x bytes/gb)) 'megabyte)
+   ((and (>= x bytes/gb) (< x bytes/tb)) 'gigabyte)
+   ((and (>= x bytes/tb) (< x bytes/pb)) 'terabyte)
+   ((and (>= x bytes/pb) (< x bytes/eb)) 'petabyte)))
+
+(defun bytes/to-string (x)
+  "Convert integer X into a human-readable string."
+  (let ((base-and-unit
+         (pcase (bytes/classify x)
+           ('byte     (tuple/from        1 "B"))
+           ('kilobyte (tuple/from bytes/kb "KB"))
+           ('megabyte (tuple/from bytes/mb "MB"))
+           ('gigabyte (tuple/from bytes/gb "GB"))
+           ('terabyte (tuple/from bytes/tb "TB"))
+           ('petabyte (tuple/from bytes/pb "PB")))))
+    (string/format "%d%s"
+                   (round x (tuple/first base-and-unit))
+                   (tuple/second base-and-unit))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Tests
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(progn
+  (prelude/assert
+   (equal "1000B" (bytes/to-string 1000)))
+  (prelude/assert
+   (equal "2KB" (bytes/to-string (* 2 bytes/kb))))
+  (prelude/assert
+   (equal "17MB" (bytes/to-string (* 17 bytes/mb))))
+  (prelude/assert
+   (equal "419GB" (bytes/to-string (* 419 bytes/gb))))
+  (prelude/assert
+   (equal "999TB" (bytes/to-string (* 999 bytes/tb))))
+  (prelude/assert
+   (equal "2PB" (bytes/to-string (* 2 bytes/pb)))))
+
+(provide 'bytes)
+;;; bytes.el ends here
diff --git a/configs/shared/.emacs.d/wpc/cache.el b/configs/shared/.emacs.d/wpc/cache.el
new file mode 100644
index 0000000000..7b7e1aa2a3
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/cache.el
@@ -0,0 +1,80 @@
+;;; cache.el --- Caching things -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; An immutable cache data structure.
+;;
+;; This is like a sideways stack, that you can pull values out from and re-push
+;; to the top.  It'd be like a stack supporting push, pop, pull.
+;;
+;; This isn't a key-value data-structure like you might expect from a
+;; traditional cache.  The name is subject to change, but the underlying idea of
+;; a cache remains the same.
+;;
+;; Think about prescient.el, which uses essentially an LRU cache integrated into
+;; counsel to help create a "clairovoyant", self-organizing list.
+;;
+;; Use-cases:
+;; - Keeps an cache of workspaces sorted as MRU with an LRU eviction strategy.
+
+;;; Code:
+
+(require 'prelude)
+(require 'struct)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Library
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(cl-defstruct cache xs)
+
+;; TODO: Prefer another KBD for yasnippet form completion than company-mode's
+;; current KBD.
+
+(defun cache/from-list (xs)
+  "Turn list, XS, into a cache."
+  (make-cache :xs xs))
+
+(defun cache/contains? (x xs)
+  "Return t if X in XS."
+  (->> xs
+       cache-xs
+       (list/contains? x)))
+
+(defun cache/touch (x xs)
+  "Ensure value X in cache, XS, is front of the list.
+If X isn't in XS (using `equal'), insert it at the front."
+  (struct/update
+   cache
+   xs
+   (>> (list/reject (lambda (y) (equal x y)))
+       (list/cons x))
+   xs))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Tests
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(progn
+  (let ((cache (cache/from-list '("chicken" "nugget"))))
+    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+    ;; contains?/2
+    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+    (prelude/refute
+     (cache/contains? "turkey" cache))
+    (prelude/assert
+     (cache/contains? "chicken" cache))
+    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+    ;; touch/2
+    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+    (prelude/assert
+     (equal
+      (cache/touch "nugget" cache)
+      (cache/from-list '("nugget" "chicken"))))
+    (prelude/assert
+     (equal
+      (cache/touch "spicy" cache)
+      (cache/from-list '("spicy" "chicken" "nugget"))))))
+
+(provide 'cache)
+;;; cache.el ends here
diff --git a/configs/shared/.emacs.d/wpc/chrome.el b/configs/shared/.emacs.d/wpc/chrome.el
new file mode 100644
index 0000000000..a27c9dd396
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/chrome.el
@@ -0,0 +1,78 @@
+;;; chrome.el --- Helpers for Google Chrome -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Some helper functions for working with Google Chrome.
+
+;;; Code:
+
+(require 'macros)
+(require 'alist)
+(require 'list)
+
+(defvar chrome/install-kbds? t
+  "If t, install keybinding.")
+
+;; TODO: Consider modelling this as a rose-tree that can nest itself
+;; arbitrarily.
+;; TODO: Consider exporting existing chrome bookmarks.
+(defconst chrome/label->url
+  '(("Google" . "www.google.com")
+    ("Hacker News" . "news.ycombinator.com")
+    ("Gmail" . "www.gmail.com")
+    ("WhatsApp" . "web.whatsapp.com")
+    ("Google Chat" . "chat/")
+    ("Google Calendar" . "calendar/")
+    ("Teknql" . "teknql.slack.com/messages")
+    ("Twitter" . "twitter.com"))
+  "Mapping labels to urls for my bookmarks.")
+
+(defconst chrome/splash-pages
+  '("Google Calendar"
+    "Gmail"
+    "Google Chat"
+    "WhatsApp"
+    "Teknql")
+  "The pages that should open when I open Chrome.")
+
+;; TODO: Add defensive check to start chrome if it isn't already open.
+
+;; TODO: Support option to create new session even if one already exists.
+
+(defun chrome/open-splash-pages ()
+  "Opens Chrome with my preferred splash pages."
+  (interactive)
+  (->> chrome/splash-pages
+       (-map (lambda (x) (alist/get x chrome/label->url)))
+       chrome/open-urls))
+
+;; TODO: Support optional kwargs.
+(cl-defun chrome/open-url (url &keys new-window?)
+  "Opens `URL' in google-chrome.
+Will open without toolbars if APP-MODE? is t."
+  (shell-command (s-concat
+                  "google-chrome "
+                  (if new-window? "--new-window " "")
+                  url)))
+
+(defun chrome/open-urls (urls)
+  "Open multiple `URLS' in chrome."
+  (chrome/open-url
+   (list/join " " urls)))
+
+(defun chrome/browse ()
+  "Display a counsel window for browsing URLs."
+  (interactive)
+  (ivy-read
+   "URL: "
+   chrome/label->url
+   :action (lambda (entry)
+             (chrome/open-url (cdr entry)))))
+
+(when chrome/install-kbds?
+  (evil-leader/set-key
+    "cb" #'chrome/browse
+    "cs" #'chrome/open-splash-pages))
+
+(provide 'chrome)
+;;; chrome.el ends here
diff --git a/configs/shared/.emacs.d/wpc/clipboard.el b/configs/shared/.emacs.d/wpc/clipboard.el
new file mode 100644
index 0000000000..975e06c506
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/clipboard.el
@@ -0,0 +1,74 @@
+;;; clipboard.el --- Working with X11's pasteboard -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Simple functions for copying and pasting.
+;;
+;; Integrate with bburns/clipmon so that System Clipboard can integrate with
+;; Emacs's kill-ring.
+;;
+;; Wish list:
+;; - Create an Emacs integration with github.com/cdown/clipmenud.
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Dependencies
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'bytes)
+
+;; autoinsert feature feels unappealing at first attempt.
+(use-package clipmon
+  :config
+  ;; If this is too large, it could be set machine-dependently, so use
+  ;; `clipboard/print-clipboard-size' to help troubleshoot this if it becomes
+  ;; problematic.
+  (setq kill-ring-max 500)
+  (add-to-list 'after-init-hook #'clipmon-mode-start)
+  (clipmon-mode 1))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Library
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defvar clipboard/install-kbds? t
+  "When t, install keybindings.")
+
+(defun clipboard/copy (x)
+  "Copy string, X, to X11's clipboard."
+  (kill-new x)
+  (message "Copied!"))
+
+(defun clipboard/paste ()
+  "Paste contents of X11 clipboard."
+  (yank)
+  (message "Pasted!"))
+
+(defun clipboard/print-clipboard-size ()
+  "Message the size (in Bytes) of `kill-ring'."
+  (interactive)
+  (->> (clipmon-kill-ring-total)
+       bytes/to-string
+       message))
+
+(defun clipboard/ivy-select ()
+  "Use counsel to copy the selected entry to the system clipboard.
+NOTE: A function, `counsel-yank-pop', exists that does something similar.
+  However instead of copying the entry to the system clipboard, it inserts it
+  where the current point is."
+  (interactive)
+  (ivy-read "kill-ring: " (counsel--yank-pop-kills)
+            :require-match t
+            :action #'clipboard/copy))
+
+;; TODO: Support ivy-actions to insert into an Emacs buffer when an Emacs buffer
+;; was the last active buffer.  However, if an X window is the last buffer,
+;; maybe use xdotool to insert the selected entry.  This would be a bit of a
+;; DWIM command.
+(when clipboard/install-kbds?
+  (exwm-input-set-key
+   (kbd "C-M-v") #'clipboard/ivy-select))
+
+(provide 'clipboard)
+;;; clipboard.el ends here
diff --git a/configs/shared/.emacs.d/wpc/colorscheme.el b/configs/shared/.emacs.d/wpc/colorscheme.el
new file mode 100644
index 0000000000..349d6f8e7e
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/colorscheme.el
@@ -0,0 +1,91 @@
+;;; colorscheme.el --- Syntax highlight and friends -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;;
+;; TODO: Clarify this.
+;; Since I have my own definition of "theme", which couples wallpaper, font,
+;; with Emacs's traditional notion of the word "theme", I'm choosing to use
+;; "colorscheme" to refer to *just* the notion of syntax highlight etc.
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Dependencies
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'cycle)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Constants
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defcustom colorscheme/install-kbds? t
+  "If non-nil, enable the keybindings.")
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Library
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defcustom colorscheme/whitelist
+  (cycle/from-list
+   (custom-available-themes))
+  "The whitelist of colorschemes through which to cycle.")
+
+(defun colorscheme/current ()
+  "Return the currently enabled colorscheme."
+  (cycle/current colorscheme/whitelist))
+
+(defun colorscheme/disable-all ()
+  "Disable all currently enabled colorschemes."
+  (interactive)
+  (->> custom-enabled-themes
+       (list/map #'disable-theme)))
+
+(defun colorscheme/set (theme)
+    "Call `load-theme' with `THEME', ensuring that the line numbers are bright.
+There is no hook that I'm aware of to handle this more elegantly."
+    (load-theme theme)
+    (prelude/set-line-number-color "#da5468"))
+
+(defun colorscheme/whitelist-set (colorscheme)
+  "Focus the COLORSCHEME in the `colorscheme/whitelist' cycle."
+  (cycle/focus (lambda (x) (equal x colorscheme)) colorscheme/whitelist)
+  (colorscheme/set (colorscheme/current)))
+
+(defun colorscheme/ivy-select ()
+  "Load a colorscheme using ivy."
+  (interactive)
+  (let ((theme (ivy-read "Theme: " (cycle/to-list colorscheme/whitelist))))
+    (colorscheme/disable-all)
+    (colorscheme/set (intern theme))))
+
+(cl-defun colorscheme/cycle (&key forward?)
+  "Cycle next if `FORWARD?' is non-nil.
+Cycle prev otherwise."
+  (disable-theme (cycle/current colorscheme/whitelist))
+  (let ((theme (if forward?
+                   (cycle/next colorscheme/whitelist)
+                 (cycle/prev colorscheme/whitelist))))
+    (colorscheme/load theme)
+    (message (s-concat "Active theme: " (symbol/to-string theme)))))
+
+(defun colorscheme/next ()
+  "Disable the currently active theme and load the next theme."
+  (interactive)
+  (colorscheme/cycle :forward? t))
+
+(defun colorscheme/prev ()
+  "Disable the currently active theme and load the previous theme."
+  (interactive)
+  (colorscheme/cycle :forward? nil))
+
+;; Keybindings
+;; TODO: Prefer minor mode definition with a custom keymap.
+(when colorscheme/install-kbds?
+  (evil-leader/set-key
+    "Ft" #'colorscheme/next
+    "Pt" #'colorscheme/prev))
+
+(provide 'colorscheme)
+;;; colorscheme.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/variables.el b/configs/shared/.emacs.d/wpc/constants.el
index 39007a6493..96f5a54cf4 100644
--- a/configs/shared/emacs/.emacs.d/wpc/variables.el
+++ b/configs/shared/.emacs.d/wpc/constants.el
@@ -1,26 +1,28 @@
-;;; variables.el --- Helpful variables for making my ELisp life more enjoyable -*- lexical-binding: t -*-
+;;; constants.el --- Constants for organizing my Emacs -*- lexical-binding: t -*-
 ;; Authpr: William Carroll <wpcarro@gmail.com>
 
 ;;; Commentary:
-;; This file contains helpful variables that I use in my ELisp development.
+;; This file contains constants that are shared across my configuration.
 
 ;;; Code:
 
-(defconst wpc/current-project
-  "~/programming"
+;; TODO: Consider merging `ui.el' and `misc.el' because those are the only
+;; current consumers of these constants, and I'm unsure if the indirection that
+;; globally defined constants introduces is worth it.
+
+(defconst constants/current-project "~/Dropbox/ide/src"
   "Variable holding the directory for my currently active project.")
 
-(defvar wpc/mouse-kbds
+(defconst constants/mouse-kbds
   '([mouse-1] [down-mouse-1] [drag-mouse-1] [double-mouse-1] [triple-mouse-1]
     [mouse-2] [down-mouse-2] [drag-mouse-2] [double-mouse-2] [triple-mouse-2]
     [mouse-3] [down-mouse-3] [drag-mouse-3] [double-mouse-3] [triple-mouse-3]
     [mouse-4] [down-mouse-4] [drag-mouse-4] [double-mouse-4] [triple-mouse-4]
     [mouse-5] [down-mouse-5] [drag-mouse-5] [double-mouse-5] [triple-mouse-5])
-  "This variable stores all of the mouse-related keybindings that Emacs recognizes.")
+  "All of the mouse-related keybindings that Emacs recognizes.")
 
-(defconst wpc/fill-column
-  80
+(defconst constants/fill-column 80
   "Variable used to set the defaults for wrapping, highlighting, etc.")
 
-(provide 'variables)
-;;; variables.el ends here
+(provide 'constants)
+;;; constants.el ends here
diff --git a/configs/shared/.emacs.d/wpc/cycle.el b/configs/shared/.emacs.d/wpc/cycle.el
new file mode 100644
index 0000000000..762488887d
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/cycle.el
@@ -0,0 +1,105 @@
+;;; cycle.el --- Simple module for working with cycles. -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Something like this may already exist, but I'm having trouble finding it, and
+;; I think writing my own is a nice exercise for learning more Elisp.
+
+;;; Code:
+
+(require 'struct)
+(require 'math)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Wish list
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; - TODO: Provide immutable variant.
+;; - TODO: Replace mutable consumption with immutable variant.
+;; - TODO: Replace indexing with (math/mod current cycle).
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Library
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; `current-index' tracks the current index
+;; `xs' is the original list
+(cl-defstruct cycle current-index xs)
+
+(defun cycle/new ()
+  "Create an empty cycle."
+  (make-cycle :current-index 0
+              :xs '()))
+
+(defun cycle/from-list (xs)
+  "Create a cycle from a list of `XS'."
+  (make-cycle :current-index 0
+              :xs xs))
+
+(defun cycle/to-list (xs)
+  "Return the list representation of a cycle, XS."
+  (cycle-xs xs))
+
+(defun next-index<- (lo hi x)
+  "Return the next index in a cycle when moving downwards.
+- `LO' is the lower bound.
+- `HI' is the upper bound.
+- `X' is the current index."
+  (if (< (- x 1) lo)
+      (- hi 1)
+    (- x 1)))
+
+(defun next-index-> (lo hi x)
+  "Return the next index in a cycle when moving upwards.
+- `LO' is the lower bound.
+- `HI' is the upper bound.
+- `X' is the current index."
+  (if (>= (+ 1 x) hi)
+      lo
+    (+ 1 x)))
+
+(defun cycle/prev (cycle)
+  "Return the previous value in `CYCLE' and update `current-index'."
+  (let* ((current-index (cycle-current-index cycle))
+         (next-index (next-index<- 0 (cycle/count cycle) current-index)))
+    (setf (cycle-current-index cycle) next-index)
+    (nth next-index (cycle-xs cycle))))
+
+(defun cycle/next (cycle)
+  "Return the next value in `CYCLE' and update `current-index'."
+  (let* ((current-index (cycle-current-index cycle))
+         (next-index (next-index-> 0 (cycle/count cycle) current-index)))
+    (setf (cycle-current-index cycle) next-index)
+    (nth next-index (cycle-xs cycle))))
+
+(defun cycle/current (cycle)
+  "Return the current value in `CYCLE'."
+  (nth (cycle-current-index cycle) (cycle-xs cycle)))
+
+(defun cycle/count (cycle)
+  "Return the length of `xs' in `CYCLE'."
+  (length (cycle-xs cycle)))
+
+(defun cycle/jump (i cycle)
+  "Jump to the I index of CYCLE."
+  (setf (cycle-current-index cycle)
+        (math/mod i (cycle/count cycle)))
+  cycle)
+
+(defun cycle/focus (p cycle)
+  "Focus the element in CYCLE for which predicate, P, is t."
+  (let ((i (->> cycle
+                cycle-xs
+                (-find-index p))))
+    (if i
+        (cycle/jump i cycle)
+      (error "No element in cycle matches predicate"))))
+
+(defun cycle/contains? (x xs)
+  "Return t if cycle, XS, has member X."
+  (->> xs
+       cycle-xs
+       (list/contains? x)))
+
+(provide 'cycle)
+;;; cycle.el ends here
diff --git a/configs/shared/.emacs.d/wpc/device.el b/configs/shared/.emacs.d/wpc/device.el
new file mode 100644
index 0000000000..4d79214c37
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/device.el
@@ -0,0 +1,38 @@
+;;; device.el --- Physical device information -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Functions for querying device information.
+
+;;; Code:
+
+(require 'dash)
+(require 'alist)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Library
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defconst device/hostname->device
+  '(("wpcarro2" . work-laptop)
+    ("wpcarro.lon.corp.google.com" . work-desktop))
+  "Mapping hostname to a device symbol.")
+
+;; TODO: Should I generate these predicates?
+
+(defun device/classify ()
+  "Return the device symbol for the current host or nil if not supported."
+  (alist/get system-name device/hostname->device))
+
+(defun device/work-laptop? ()
+  "Return t if current device is work laptop."
+  (equal 'work-laptop
+         (device/classify)))
+
+(defun device/work-desktop? ()
+  "Return t if current device is work desktop."
+  (equal 'work-desktop
+         (device/classify)))
+
+(provide 'device)
+;;; device.el ends here
diff --git a/configs/shared/.emacs.d/wpc/display.el b/configs/shared/.emacs.d/wpc/display.el
new file mode 100644
index 0000000000..716f3e5f57
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/display.el
@@ -0,0 +1,47 @@
+;;; display.el --- Working with single or multiple displays -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Mostly wrappers around xrandr.
+;;
+;; TODO: Look into autorandr to see if it could be useful.
+;;
+;; Troubleshooting:
+;; The following commands help me when I (infrequently) interact with xrandr.
+;; - xrandr --listmonitors
+;; - xrandr --query
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Constants
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; TODO: Consider if this logic should be conditioned by `device/work-laptop?'.
+(defconst display/primary "eDP-1"
+  "The xrandr identifier for my primary screen (on work laptop).")
+
+(defconst display/4k "HDMI-1"
+  "The xrandr identifer for my 4K monitor.")
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Library
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun display/enable-4k ()
+  "Attempt to connect to my 4K monitor."
+  (interactive)
+  (shell-command
+   (string/format "xrandr --output %s --dpi 144 --auto --right-of %s"
+                  display/4k
+                  display/primary)))
+
+(defun display/disable-4k ()
+  "Disconnect from the 4K monitor."
+  (interactive)
+  (shell-command
+   (string/format "xrandr --output %s --off"
+                  display/4k)))
+
+(provide 'display)
+;;; display.el ends here
diff --git a/configs/shared/.emacs.d/wpc/do.el b/configs/shared/.emacs.d/wpc/do.el
new file mode 100644
index 0000000000..7dc2b260fd
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/do.el
@@ -0,0 +1,54 @@
+;;; do.el --- Small assertion library for Elisp -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Assertion library inspired by Elixir's core testing library.
+;;
+;; The goal here is to create this module without relying on other non-core
+;; Elisp libraries.  I will attempt to do this as long as I'm not sacrificing
+;; the readability of this code nor the ease at which it can be written.
+;;
+;; A note on testing:
+;; Another goal with this library is to blur the line between testing code and
+;; runtime code.  Developers should ideally be using `do/assert' and `do/refute'
+;; in their library code.  Because of this, I'm avoiding referring
+;; to the notion of testing in the names of these functions.
+;;
+;; Hypothesis:
+;; The lower the friction is for writing tests, the more likely people will
+;; write tests.
+
+;; TODO: Support better error messages, which might include information about
+;; line numbers in source code where the assertion failed.
+
+;; TODO: Consider offering the ability to have some of these functions compile
+;; to nothing at runtime if developers want to use them while developing without
+;; incurring the costs at runtime.
+
+;; TODO: Consider using this module instead of prelude.el.  Right now, I'm
+;; having troubling preferring one to the other.  The benefit of this module is
+;; that it's independent of prelude, but that might also be a downside, since
+;; the messaging that asserting should be a critical part of any core library
+;; like prelude.
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Library
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defmacro do/assert (x)
+  "Errors unless X is t.
+These are strict assertions and purposely do not rely on truthiness."
+  (let ((as-string (format "%s" x)))
+    `(unless (equal t ,x)
+       (error (concat "Assertion failed: " ,as-string)))))
+
+(defmacro do/refute (x)
+  "Errors unless X is nil."
+  (let ((as-string (format "%s" x)))
+    `(unless (eq nil ,x)
+       (error (concat "Refutation failed: " ,as-string)))))
+
+(provide 'do)
+;;; do.el ends here
diff --git a/configs/shared/.emacs.d/wpc/dotfiles.el b/configs/shared/.emacs.d/wpc/dotfiles.el
new file mode 100644
index 0000000000..3ee99196bd
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/dotfiles.el
@@ -0,0 +1,45 @@
+;;; dotfiles.el --- Elisp to make dotfile management -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Quickly edit commonly used files.
+
+;;; Code:
+
+(require 'macros)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; API
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defconst dotfiles/install-kbds? t
+  "When t, install the keybindings.")
+
+(defconst dotfiles/whitelist
+  '(("compton" . "~/.config/compton.conf")
+    ("dotfiles" . "~/Dropbox/dotfiles/")
+    ("functions" . "~/functions.zsh")
+    ("aliases" . "~/aliases.zsh")
+    ("variables" . "~/variables.zsh")
+    ("Xresources" . "~/.Xresources.shared")
+    ("tmux" . "~/.tmux.conf")
+    ("i3" . "~/.config/i3/config") ;; TODO: Remove this one day.
+    ("zshrc" . "~/.zshrc")
+    ("configuration.nix" . "~/Dropbox/programming/nixify/configuration.nix")
+    ("init.el" . "~/.emacs.d/init.el")
+    ("init.vim" . "~/.config/nvim/init.vim"))
+  "Dotfiles that I commonly edit.")
+
+(defun dotfiles/edit ()
+  "Select a dotfile from ivy and edit it in an Emacs buffer."
+  (interactive)
+  (ivy-read
+   "Dotfile: "
+   dotfiles/whitelist
+   :action (>> cdr find-file)))
+
+(when dotfiles/install-kbds?
+  (evil-leader/set-key "J" #'dotfiles/edit))
+
+(provide 'dotfiles)
+;;; dotfiles.el ends here
diff --git a/configs/shared/.emacs.d/wpc/dotted.el b/configs/shared/.emacs.d/wpc/dotted.el
new file mode 100644
index 0000000000..90ef39f92e
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/dotted.el
@@ -0,0 +1,49 @@
+;;; dotted.el --- Working with dotted pairs in Elisp -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Part of my primitives library extensions in Elisp.  Contrast my primitives
+;; with the wrapper extensions that I provide, which expose immutable variants
+;; of data structures like an list, alist, tuple, as well as quasi-typeclasses
+;; like sequence, etc.
+
+;;; Code:
+
+(require 'prelude)
+(require 'macros)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Library
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(cl-defun dotted/new (&optional a b)
+  "Create a new dotted pair (i.e. cons cell)."
+  (cons a b))
+
+(defun dotted/instance? (x)
+  "Return t if X is a dotted pair."
+  (let ((b (cdr x)))
+    (and b (atom b))))
+
+(defun dotted/first (x)
+  "Return the first element of X."
+  (car x))
+
+(defun dotted/second (x)
+  "Return the second element of X."
+  (cdr x))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Tests
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(progn
+  (prelude/assert
+   (equal '(fname . "Bob") (dotted/new 'fname "Bob")))
+  (prelude/assert
+   (dotted/instance? '(one . two)))
+  (prelude/refute
+   (dotted/instance? '(1 2 3))))
+
+(provide 'dotted)
+;;; dotted.el ends here
diff --git a/configs/shared/.emacs.d/wpc/entr.el b/configs/shared/.emacs.d/wpc/entr.el
new file mode 100644
index 0000000000..ac2a5812c3
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/entr.el
@@ -0,0 +1,115 @@
+;;; entr.el --- Working with terminals and entr -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Help make watch commands easier.
+;;
+;; This should be entirely temporary because in reality we should be able to use
+;; Emacs's buffer watching abilities to run commands.
+;; TODO: Explore Emacs integration that obviates `entr`.
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Dependencies
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'f)
+(require 'buffer)
+(require 'prelude)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Library
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; TODO: Support a generic file-watcher for commonly used languages.
+(defconst entr/major-mode->save-handler
+  '((python-mode . entr/handle-python3))
+  "Mapping of language to the `after-save-hook' function it should register.")
+
+(defun entr/shell-command-to-buffer (cmd name)
+  "Run CMD in a shell and output to the buffer NAME.
+The buffer is a find-or-create operation.
+The buffer is erased between runs with `erase-buffer'."
+  (let ((b (buffer/find-or-create name)))
+    (with-current-buffer b (erase-buffer))
+    (shell-command cmd b)
+    (buffer/show b)))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Python
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; TODO: This should be a top-level function.
+(defconst entr/handle-python3
+  (lambda ()
+    (entr/shell-command-to-buffer
+     (format "python3 %s" (buffer-file-name))
+     "*python3*"))
+  "Function that is registered as the `after-save-hook' for python3.")
+
+(defun entr/register-python3 ()
+  "Register a buffer-local `after-save-hook' for calling python3 with filename."
+  (interactive)
+  (add-hook 'after-save-hook entr/handle-python3 nil t))
+
+(defun entr/deregister-python3 ()
+  "Remove the buffer-local `after-save-hook' for python3."
+  (interactive)
+  (remove-hook 'after-save-hook entr/handle-python3 t))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Protobuf
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun entr/format-protobuf ()
+  "Formats a protobuf buffer."
+  (call-interactively #'clang-format))
+
+;; TODO: Run this automatically with .proto file extensions.  Do this after
+;; verifying that `clang-format' complies with Google's style guide.
+(defun entr/register-protobuf ()
+  "Register a buffer-local `before-save-hook' for formatting protobuf buffers."
+  (interactive)
+  (add-hook
+   'before-save-hook
+   #'entr/format-protobuf
+   nil
+   t))
+
+;; TODO: Is there an interactive way to remove hooks in Emacs?
+(defun entr/deregister-protobuf ()
+  "Remove the buffer-local `before-save-hook' for protobuf."
+  (interactive)
+  (remove-hook
+   'before-save-hook
+   #'entr/format-protobuf
+   t))
+
+;; TODO: Support this.  Currently the `intern' call is the problem.
+;; (defun entr/ivy-remove-hook (hook)
+;;   "Use Counsel to remove a handler from HOOK."
+;;   (interactive)
+;;   (ivy-read
+;;    "Remove hook: "
+;;    (intern (prelude/prompt "Hook name: "))
+;;    :action (lambda (x) (message x))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Miscellaneous
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun entr/command (command)
+  "Create a terminal instance with entr running COMMAND.
+COMMAND is a function that is called with the current filename."
+  ;; Algorithm:
+  ;; - Get buffer's filename.
+  ;; - Open terminator running: `echo entr <filename> | entr <command>`.
+  (interactive)
+  (with-current-buffer (current-buffer)
+      (let ((filename (buffer-file-name)))
+        (prelude/inspect
+         (format "echo %s | entr %s" filename (funcall command filename))))))
+
+(provide 'entr)
+;;; entr.el ends here
diff --git a/configs/shared/.emacs.d/wpc/enum.el b/configs/shared/.emacs.d/wpc/enum.el
new file mode 100644
index 0000000000..078e797209
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/enum.el
@@ -0,0 +1,98 @@
+;;; enum.el --- Enumerable protocol for Elisp -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Heavily influenced by Elixir.
+
+;; I will not be implement every function in the Enum library, since I don't
+;; need every function.  Some of the streaming functionality may prove difficult
+;; to write in Elisp.  We shall see.
+
+;; TODO: Implement the following functions:
+;; - all?/2
+;; - any?/2
+;; - at/3
+;; - chunk_by/2
+;; - chunk_every/{2,3,4}
+;; - chunk_while/4
+;; - concat/1
+;; - concat/2
+;; - count/{1,2}
+;; - dedup/1 # prefer calling this function dedupe
+;; - dedup_by/2 # same as above
+;; - drop/2
+;; - drop_every/2
+;; - drop_while/2
+;; - each/2
+;; - empty?/1
+;; - fetch/2
+;; - fetch!/2
+;; - filter/2
+;; - find/3
+;; - find_index/2
+;; - find_value/3
+;; - flat_map/2
+;; - flat_map_reduce/3
+;; - group_by/3
+;; - intersperse/2
+;; - into/{2,3}
+;; - join/2
+;; - map/2
+;; - map_every/3
+;; - map_join/3
+;; - map_reduce/3
+;; - max/2
+;; - max_by/3
+;; - member?/2 # consider calling this contains?
+;; - min/2
+;; - min_by/2
+;; - min_max/2 # This is a great function because of O(n) time.
+;; - min_max_by/3
+;; - random/1 # Consider just sample with num=1
+;; - reduce/{2,3}
+;; - reduce_while/3
+;; - reject/2
+;; - reverse/{1,2}
+;; - reverse_slice/3
+;; - scan/{2,3}
+;; - shuffle/1
+;; - slice/{2,3}
+;; - sort/{1,2}
+;; - sort/2
+;; - sort_by/3
+;; - split/2
+;; - split_while/2
+;; - split_with/2
+;; - sum/1
+;; - take/2
+;; - take_every/2
+;; - take_random/2 # prefer calling this function sample
+;; - take_while/2
+;; - to_list/1
+;; - uniq/1 # prefer calling this unique
+;; - uniq_by/2 # prefer calling this unique-by
+;; - unzip/1
+;; - with_index/2
+;; - zip/{1,2}
+
+;; TODO: Consider how to handle dispatching by type.
+
+;; TODO: Which types should be supported herein?
+;; - linked-lists
+;; - associative-lists
+;; - cycles
+
+;; Warning: This module is a total work-in-progress, and it's quite possible
+;; that I may never even finish it.
+
+;;; Code:
+
+(defun enum/count (xs)
+  "Return the number of elements in `XS'."
+  (cond
+   ((alist/instance? xs) (alist/count xs))
+   ((list/instance?  xs) (list/length xs)))
+  )
+
+(provide 'enum)
+;;; enum.el ends here
diff --git a/configs/shared/.emacs.d/wpc/fonts.el b/configs/shared/.emacs.d/wpc/fonts.el
new file mode 100644
index 0000000000..fca544a4c3
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/fonts.el
@@ -0,0 +1,148 @@
+;;; fonts.el --- Font preferences -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Control my font preferences with ELisp.
+
+;;; Code:
+
+;; TODO: `defcustom' font-size.
+;; TODO: `defcustom' fonts.
+;; TODO: Remove wpc/ namespace.
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Dependencies
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'prelude)
+(require 'cycle)
+(require 'device)
+(require 'maybe)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Constants
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; TODO: Troubleshoot why "8" appears so large on my desktop.
+
+;; TODO: Consider having a different font size when I'm using my 4K monitor.
+
+(defconst fonts/size
+  (pcase (device/classify)
+    ('work-laptop "12")
+    ('work-desktop "8"))
+  "My preferred default font-size, which is device specific.")
+
+(defconst fonts/keybindings? t
+  "Install the keybindings when non-nil.")
+
+(defconst fonts/size-step 10
+  "The amount (%) by which to increase or decrease a font.")
+
+(defconst fonts/hacker-news-recommendations
+  '("APL385 Unicode"
+    "Go Mono"
+    "Sudo"
+    "Monoid"
+    "Input Mono Medium" ;; NOTE: Also "Input Mono Thin" is nice.
+    )
+  "List of fonts optimized for programming I found in a HN article.")
+
+(defconst fonts/whitelist
+  (cycle/from-list
+   (list/concat
+    fonts/hacker-news-recommendations
+    '("Monospace"
+      "Operator Mono Light"
+      "Courier"
+      "Andale Mono"
+      "Source Code Pro"
+      "Terminus")))
+  "This is a list of my preferred fonts.")
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Functions
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; TODO: fonts and fonts/whitelist make it difficult to name functions like
+;; fonts/set as a generic Emacs function vs choosing a font from the whitelist.
+
+(cl-defun fonts/cycle (&key forward?)
+  "Cycle forwards when `FORWARD?' non-nil."
+  (let ((font (if forward?
+                  (cycle/next fonts/whitelist)
+                (cycle/prev fonts/whitelist))))
+    (message (s-concat "Active font: " font))
+    (fonts/set (fonts/fontify font))))
+
+(defun fonts/next ()
+  "Quickly cycle through preferred fonts."
+  (interactive)
+  (fonts/cycle :forward? t))
+
+(defun fonts/prev ()
+  "Quickly cycle through preferred fonts."
+  (interactive)
+  (fonts/cycle :forward? nil))
+
+(defun fonts/set (font &optional size)
+  "Change the font to `FONT' with option integer, SIZE, in pixels."
+  (if (maybe/some? size)
+      (set-frame-font (string/format "%s %s" font size) nil t)
+    (set-frame-font font nil t)))
+
+(defun fonts/whitelist-set (font)
+  "Focuses the FONT in the `fonts/whitelist' cycle.
+The size of the font is determined by `fonts/size'."
+  (prelude/assert (cycle/contains? font fonts/whitelist))
+  (cycle/focus (lambda (x) (equal x font)) fonts/whitelist)
+  (fonts/set (fonts/current) fonts/size))
+
+(defun fonts/ivy-select ()
+  "Select a font from an ivy prompt."
+  (interactive)
+  (fonts/whitelist-set
+   (ivy-read "Font: " (cycle/to-list fonts/whitelist))))
+
+(defun fonts/print-current ()
+  "Message the currently enabled font."
+  (interactive)
+  (message
+   (string/format "[fonts] Current font: \"%s\""
+                  (fonts/current))))
+
+(defun fonts/current ()
+  "Return the currently enabled font."
+  (cycle/current fonts/whitelist))
+
+(defun fonts/increase-size ()
+  "Increase font size."
+  (interactive)
+  (->> (face-attribute 'default :height)
+       (+ fonts/size-step)
+       (set-face-attribute 'default (selected-frame) :height)))
+
+(defun fonts/decrease-size ()
+  "Decrease font size."
+  (interactive)
+  (->> (face-attribute 'default :height)
+       (+ (- fonts/size-step))
+       (set-face-attribute 'default (selected-frame) :height)))
+
+(defun fonts/reset-size ()
+  "Restore font size to its default value."
+  (interactive)
+  (fonts/whitelist-set (fonts/current)))
+
+(when fonts/keybindings?
+  (progn
+    (evil-leader/set-key
+      "Ff" #'fonts/next
+      "Pf" #'fonts/prev)
+    (general-define-key "s-9" #'fonts/ivy-select)
+    (general-define-key "s-0" #'fonts/reset-size)
+    (general-define-key "s-j" #'fonts/decrease-size)
+    (general-define-key "s-k" #'fonts/increase-size)))
+
+(provide 'fonts)
+;;; fonts.el ends here
diff --git a/configs/shared/.emacs.d/wpc/fs.el b/configs/shared/.emacs.d/wpc/fs.el
new file mode 100644
index 0000000000..adc331d176
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/fs.el
@@ -0,0 +1,59 @@
+;;; fs.el --- Make working with the filesystem easier -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Ergonomic alternatives for working with the filesystem.
+
+;; Dependencies
+(require 'f)
+
+;;; Code:
+
+(defun fs/ensure-file (path)
+  "Ensure that a file and its directories in `PATH' exist.
+Will error for inputs with a trailing slash."
+  (when (s-ends-with? "/" path)
+    (error (format "Input path has trailing slash: %s" path)))
+  (->> path
+       f-dirname
+       fs/ensure-dir)
+  (f-touch path))
+
+(f-dirname "/tmp/a/b/file.txt")
+
+(defun fs/ensure-dir (path)
+  "Ensure that a directory and its ancestor directories in `PATH' exist."
+  (->> path
+       f-split
+       (apply #'f-mkdir)))
+
+(defun fs/ls (dir &optional full-path?)
+  "List the files in `DIR' one-level deep.
+Should behave similarly in spirit to the Unix command, ls.
+If `FULL-PATH?' is set, return the full-path of the files."
+  (-drop 2 (directory-files dir full-path?)))
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Tests
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; TODO: Support `refute' function / macro.
+(ert-deftest fs/test/ensure-file ()
+  (let ((file "/tmp/file/a/b/c/file.txt"))
+    ;; Ensure this file doesn't exist first to prevent false-positives.
+    (f-delete file t)
+    (fs/ensure-file file)
+    (should (and (f-exists? file)
+                 (f-file? file)))))
+
+(ert-deftest fs/test/ensure-dir ()
+  (let ((dir "/tmp/dir/a/b/c"))
+    ;; Ensure the directory doesn't exist.
+    (f-delete dir t)
+    (fs/ensure-dir dir)
+    (should (and (f-exists? dir)
+                 (f-dir? dir)))))
+
+(provide 'fs)
+;;; fs.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/functions.el b/configs/shared/.emacs.d/wpc/functions.el
index f734c13d9a..33e256be59 100644
--- a/configs/shared/emacs/.emacs.d/wpc/functions.el
+++ b/configs/shared/.emacs.d/wpc/functions.el
@@ -2,7 +2,10 @@
 ;; Author: William Carroll <wpcarro@gmail.com>
 
 ;;; Commentary:
-;; This file hopefully contains friendly APIs that making ELisp development more enjoyable.
+;; This file hopefully contains friendly APIs that making ELisp development more
+;; enjoyable.
+
+;; TODO: Break these out into separate modules.
 
 ;;; Code:
 (defun wpc/evil-window-vsplit-right ()
@@ -25,7 +28,7 @@
   (interactive)
   (with-current-buffer (current-buffer)
     (if (projectile-project-p)
-        (call-interactively #'projectile-find-file)
+        (call-interactively #'counsel-projectile-find-file)
       (call-interactively #'find-file))))
 
 (defun wpc/find-or-create-js-test ()
@@ -50,11 +53,6 @@
        (s-replace "store.js" "index.js")
        (find-file)))
 
-(defun wpc/bind-ido-keys ()
-  "Adds custom KBDs for ido. This function is recommended in the ido source code."
-  (define-key ido-completion-map (kbd "<tab>") #'ido-next-match)
-  (define-key ido-completion-map (kbd "<backtab>") #'ido-prev-match))
-
 (defun wpc/toggle-between-js-test-and-module ()
   "Toggle between a Javascript test or module."
   (interactive)
@@ -100,74 +98,10 @@
       (f-join (f-filename buffer-file-name))
       find-file))
 
-(defun wpc/tmux-emacs-windmove (dir)
-  "Move windows in a Tmux-friendly way."
-  (let* ((dir->opts '((left . ("-L" . windmove-left))
-                      (right . ("-R" . windmove-right))
-                      (above . ("-U" . windmove-up))
-                      (below . ("-D" . windmove-down))))
-         (opts (alist-get dir dir->opts))
-         (tmux-opt (car opts))
-         (emacs-fn (cdr opts)))
-    (if (window-in-direction dir)
-        (funcall emacs-fn)
-      (shell-command (format "tmux select-pane %s" tmux-opt)))))
-
-(defun wpc/tmux-emacs-windmove-left ()
-  (interactive)
-  (wpc/tmux-emacs-windmove 'left))
-
-(defun wpc/tmux-emacs-windmove-right ()
-  (interactive)
-  (wpc/tmux-emacs-windmove 'right))
-
-(defun wpc/tmux-emacs-windmove-up ()
-  (interactive)
-  (wpc/tmux-emacs-windmove 'above))
-
-(defun wpc/tmux-emacs-windmove-down ()
-  (interactive)
-  (wpc/tmux-emacs-windmove 'below))
-
-(defun wpc/get-window-by-buffername (buffername)
-  "Finds a window by the name of the buffer it's hosting."
-  (let ((buffer (get-buffer buffername)))
-    (when buffer
-        (get-buffer-window buffer))))
-
 (defun wpc/add-earmuffs (x)
   "Returns X surrounded by asterisks."
   (format "*%s*" x))
 
-(defun wpc/get-default-shell ()
-  (or explicit-shell-file-name
-      (getenv "SHELL")
-      (getenv "ESHELL")))
-
-(defun wpc/find-terminal-buffer ()
-  (get-buffer (wpc/add-earmuffs wpc/terminal-name)))
-
-(defun wpc/find-terminal-window ()
-  (wpc/get-window-by-buffername (wpc/add-earmuffs wpc/terminal-name)))
-
-(defun wpc/create-terminal-session ()
-  (wpc/evil-window-vsplit-right)
-  (ansi-term (wpc/get-default-shell) wpc/terminal-name))
-
-(defun wpc/toggle-terminal ()
-  "Toggles a custom terminal session in Emacs."
-  (interactive)
-  (let ((window (wpc/find-terminal-window)))
-    (if window
-        (delete-window window)
-      (wpc/find-or-create-terminal))))
-
-(defun wpc/find-or-create-terminal ()
-  (let ((buffer (wpc/find-terminal-buffer)))
-    (if buffer
-        (display-buffer buffer)
-      (wpc/create-terminal-session))))
-
 (defun wpc/put-file-name-on-clipboard ()
   "Put the current file name on the clipboard"
   (interactive)
@@ -180,25 +114,14 @@
         (clipboard-kill-region (point-min) (point-max)))
       (message filename))))
 
+(s-replace "/" "x" "a/b/c")
+
 (defun wpc/evil-replace-under-point ()
-  "Faster than typing %s//thing/g"
+  "Faster than typing %s//thing/g."
   (interactive)
-  (save-excursion
-    (evil-ex (concat "%s/\\b" (symbol-name (symbol-at-point)) "\\b/"))))
-
-(defun wpc/disable-linum-mode ()
-  "Convenience function defined to make adding hooks easier without a lambda."
-  (linum-mode -1))
-
-(defun wpc/disable-company-mode ()
-  "Convenience function defined to make adding hooks easier without a lambda."
-  (company-mode -1))
-
-(defun wpc/toggle-term-mode ()
-  "Toggle between term-line-mode and temr-char-mode."
-  (if (term-in-line-mode)
-      (term-char-mode)
-    (term-line-mode)))
+  (let ((term (s-replace "/" "\\/" (symbol/to-string (symbol-at-point)))))
+    (save-excursion
+      (evil-ex (concat "%s/\\b" term "\\b/")))))
 
 (defun buffer-dirname ()
   "Return the directory name of the current buffer as a string."
diff --git a/configs/shared/.emacs.d/wpc/google-stuff.el b/configs/shared/.emacs.d/wpc/google-stuff.el
new file mode 100644
index 0000000000..4f4fe635a3
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/google-stuff.el
@@ -0,0 +1,183 @@
+;;; google-stuff.el --- Working with Google infrastructure from Emacs -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Some of this is just encoding my learnings as notes in Elisp format.
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Dependencies
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'f)
+(require 'ivy-helpers)
+(require 'evil-leader)
+(require 'maybe)
+(require 'device)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Library
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; TODO: Ensure a consistent and deliberate usage of `defvar', `defconst', and
+;; `defcustom' across all Elisp modules.
+(defcustom google-stuff/install-kbds? t
+  "When t, install the keybindings defined herein.")
+
+;; Definitions as explained by the highly knowledgeable Matthew (i.e. mjo@)
+(defconst google-stuff/definitions
+  '(
+    ;; command-line tools
+    ("gcert"  . "Requests a CorpSSH certificate.")
+    ("glogin" . "SSO (i.e. Single Sign-On) cookie.")
+    ("googlenetworkaccess" . "Device certificate that gives users a certificate
+to access to the Google corp network.")
+    ("prodaccess" . "Sets up a LOAS session on Goobuntu.")
+    ;; general wtfs
+    ("LOAS" . "Distributed authentication service used by jobs in production and
+corp to authenticate each other. It's more efficient than SSL and works with
+Stubby.")
+    ))
+
+;; TODO: Straighten out fig, citc, google3 and have modules for each.
+
+;; TODO: Move this to a google3.el module.
+(defconst google-stuff/root
+  "/google/src/cloud/wpcarro"
+  "The root directory to access google3.")
+
+;; TODO: Find a fast way to generate this.
+(defconst google-stuff/citc-clients
+  '("auto-consult"
+    "ac-skeleton")
+  "A list of my active CitC clients.")
+
+
+;; TODO: Can this be sourced from ~/.g4d?
+(defconst google-stuff/citc-aliases
+  '(("escalations" . "/google3/corp/gtech/pto/tda/beacons_extension")
+    ("spewall_fe" . "/google3/alkali/apps/speakeasydashboard")
+    ("spewall_be" . "/google3/java/com/google/alkali/applications/speakeasydashboard")
+    ("spewall_protos" . "/google3/google/internal/alkali/applications/speakeasydashboard")
+    ("spewall_tests" . "/google3/javatests/com/google/alkali/applications/speakeasydashboard")
+    ("gti" . "/google3/experimental/engedu/gti/projects/week20190422/mtv/Team10")
+    ("authwf" . "/google3/customer_support/automation/workflow")
+    ("redwood" . "/google3/customer_support/kms/redwood/ui")
+    ("wf-fe" . "/google3/customer_support/kms/redwood/ui/client/components/item/workflow_editor")
+    ("ac" . "/google3/google/internal/alkali/applications/casesconsultservice")
+    ("ac-server" . "/google3/java/com/google/alkali/applications/casesconsultservice/server/")
+    ("ac-server (tests)" . "/google3/javatests/com/google/alkali/applications/casesconsultservice/server/"))
+  "Mapping of a label to commonly visited locations in Google3.")
+
+
+(defvar google-stuff/active-citc-client nil
+  "Currently active CitC client.")
+
+(defun google-stuff/depot-prefix ()
+  "Return the current prefix for //depot/google3."
+  (string/format "/google/src/cloud/wpcarro/%s/google3/"
+                 google-stuff/active-citc-client))
+
+(defun google-stuff/cs-url ()
+  "Return the code-search URL for the current buffer and line number."
+  (string/format "cs.corp.google.com/piper///depot/google3/%s?l=%s"
+                 (s-chop-prefix
+                  (google-stuff/depot-prefix)
+                  (buffer-file-name))
+                 (line-number-at-pos)))
+
+(defun google-stuff/copy-cs-url ()
+  "Copy the current file and line-position to the system clipboard."
+  (interactive)
+  (clipboard/copy (google-stuff/cs-url)))
+
+(defun google-stuff/open-buffer-in-cs ()
+  "Open the current file in Google's CodeSearch."
+  (interactive)
+  (shell-command
+   (string/format "google-chrome '%s'"
+                  (google-stuff/cs-url)
+                  (line-number-at-pos))))
+
+;; TODO: As a naming convention, should I prefer ivy or select? Or counsel?
+(defun google-stuff/select-citc-client ()
+  "Set `google-stuff/active-citc-client' with counsel."
+  (interactive)
+  (setq google-stuff/active-citc-client
+        (ivy-read "CitC Client: " google-stuff/citc-clients)))
+
+(defun google-stuff/remote-buffer? ()
+  "Return t if buffer is one accessed via Tramp."
+  (with-current-buffer (current-buffer)
+    (if (file-remote-p default-directory)
+        t
+      nil)))
+
+(defun google-stuff/jump-to-citc-alias ()
+  "Use `find-file' to open an alias registered in `google-stuff/citc-aliases'.
+When on a corporate laptop, remote connections are made using Tramp."
+  (interactive)
+  (when (maybe/nil? google-stuff/active-citc-client)
+    (call-interactively #'google-stuff/select-citc-client))
+  (ivy-helpers/kv
+   "Jump to CitC Alias: "
+   google-stuff/citc-aliases
+   (lambda (k v)
+     (->> v
+          ;; If I don't remove the leading slash, `f-join' won't return a valid
+          ;; path.
+          (s-chop-prefix "/")
+          (f-join google-stuff/root
+                  google-stuff/active-citc-client)
+          (s-prepend (if (device/work-laptop?) "/ssh:wpcarro@desktop:" ""))
+          find-file))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Stuff I learned reading go/emacs
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; Fig
+;; TODO: Make sure there are Evil-compatible KBDs for `fig-status'.
+;; (require 'google-fig)
+
+;; This allows `find-file' handle "//depot/google3/devtools/editors/".
+(require 'p4-files)
+(p4-enable-file-name-handler)
+
+;; Blaze Support
+;; - `google3-compile-current-file' is an excellent command!
+
+;; google3-eglot (uses CiderLSP)
+;; TODO: Make sure the functionality is supported as advertised:
+;; - auto-completion
+;; - eglot-help-at-point for documentation.
+;; - goto-definition
+;; - `eglot-code-actions' fixits
+;; - `eglot-rename' refactoring
+(require 'google3-eglot)
+(google3-eglot-setup)
+
+;; CodeSearch
+;; TODO: Debug why this depends on google-piper and why I don't have that on my
+;; desktop.
+;; (require 'ivy-cs)
+
+;; Auto completion
+;; TODO: Is the part of or separate from google3-eglot?  Because google3-eglot
+;; advertises auto-completion support.
+(require 'google3-build-capf)
+(google3-build-capf-enable-completions)
+(add-to-list 'company-backends #'company-capf)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Keybindings
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(when google-stuff/install-kbds?
+  (evil-leader/set-key "Gs" #'fig-status)
+  (evil-leader/set-key "Cs" #'google-stuff/open-buffer-in-cs)
+  (evil-leader/set-key "jc" #'google-stuff/jump-to-citc-alias))
+
+(provide 'google-stuff)
+;;; google-stuff.el ends here
diff --git a/configs/shared/.emacs.d/wpc/google-tooling.el b/configs/shared/.emacs.d/wpc/google-tooling.el
new file mode 100644
index 0000000000..661df41d6c
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/google-tooling.el
@@ -0,0 +1,53 @@
+;;; google-tooling.el --- Better access to Google tooling -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+
+;; First, I must opine.  Feel free to skip this section.  In general, it seems
+;; that the average programmer's workflow suffer from what economists call
+;; "inelastic demand".  This means that any increase in price for something
+;; sends the demand plummeting.  Another way of phrasing this is that
+;; programmers are "price sensitive" when it comes to adopting new workflows.
+;;
+;; For us, any deviation from our "established" workflow feels costly.  This
+;; makes sense to me because programming is already taxing, so any additional
+;; taxation can feel unbearable.  Until programming changes dramatically, and we
+;; relieve our dependence on files and text for modeling complex applications,
+;; this inelastic demand will remain the status quo.  Therefore, it's critical
+;; to reduce the price of experimenting with new tools such that new, superior
+;; habits may form.  In this vain, this module attempts to surface "luxury
+;; tools" (i.e. dependency pruners, code linters, code formatters) via Emacs to
+;; reduce the price of experimenting with them.
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Dependencies
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'macros)
+
+;; TODO: Figure out whether or not to integrate with google-emacs.
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Library
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defconst google-tooling/tools
+  '(("Depana" . "depana")
+    ("Build cleaner" . "build_cleaner")
+    ("Java formatter" . "google-java-format")
+    ("Proto formatter" . "clang-format"))
+  "Mapping of names of tools to the names of the executables that run them.")
+
+(use-package protobuf-mode
+  :config
+  (macros/support-file-extension "pb" protobuf-mode))
+
+;; TODO: Call blaze build, use Counsel to select an action, run that action on
+;; the nearest BUILD file.
+
+;; TODO: Call build-cleaner on the nearest BUILD file.
+
+(provide 'google-tooling)
+;;; google-tooling.el ends here
diff --git a/configs/shared/.emacs.d/wpc/graph.el b/configs/shared/.emacs.d/wpc/graph.el
new file mode 100644
index 0000000000..c68c308590
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/graph.el
@@ -0,0 +1,91 @@
+;;; graph.el --- Working with in-memory graphs -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;;
+;; Remember that there are optimal three ways to model a graph:
+;; 1. Edge List
+;; 2. Vertex Table (a.k.a. Neighbors Table)
+;; 3. Adjacency Matrix
+;;
+;; I may call these "Edges", "Neighbors", "Adjacencies" to avoid verbose naming.
+;; For now, I'm avoiding dealing with Adjacency Matrices as I don't have an
+;; immediate use-case for them.  This is subject to change.
+;;
+;; There are also hybrid representations of graphs that combine the three
+;; aforementioned models.  I believe Erlang's digraph module models graphs in
+;; Erlang Term Storage (i.e. ETS) this way.
+;; TODO: Verify this claim.
+;;
+;; Graphs can be weighted or unweighted.  They can also be directed or
+;; undirected.
+;; TODO: Create a table explaining all graph variants.
+;;
+;; TODO: Figure out the relationship of this module and tree.el, which should in
+;; principle overlap.
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Dependencies
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'prelude)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Library
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; For now, I'll support storing *either* neighbors or edges in the graph struct
+;; as long as both aren't set, since that introduces consistency issues.  I may
+;; want to handle that use-case in the future, but not now.
+(cl-defstruct graph neighbors edges)
+
+;; TODO: How do you find the starting point for a topo sort?
+(defun graph/sort (xs)
+  "Return a topological sort of XS.")
+
+(defun graph/from-edges (xs)
+  "Create a graph struct from the Edge List, XS.
+The user must pass in a valid Edge List since asserting on the shape of XS might
+  be expensive."
+  (make-graph :edges xs))
+
+(defun graph/from-neighbors (xs)
+  "Create a graph struct from a Neighbors Table, XS.
+The user must pass in a valid Neighbors Table since asserting on the shape of
+  XS might be expensive."
+  (make-graph :neighbors xs))
+
+(defun graph/instance? (xs)
+  "Return t if XS is a graph struct."
+  (graph-p xs))
+
+;; TODO: Model each of the mapping functions into an isomorphism.
+(defun graph/edges->neighbors (xs)
+  "Map Edge List, XS, into a Neighbors Table."
+  (prelude/assert (graph/instance? xs)))
+
+(defun graph/neighbors->edges (xs)
+  "Map Neighbors Table, XS, into an Edge List."
+  (prelude/assert (graph/instance? xs)))
+
+;; Below are three different models of the same unweighted, directed graph.
+
+(defvar graph/edges
+  '((a . b) (a . c) (a . e)
+    (b . c) (b . d)
+    (c . e)
+    (d . f)
+    (e . d) (e . f)))
+
+(defvar graph/neighbors
+  ((a b c e)
+   (b c d)
+   (c e)
+   (d f)
+   (e d g)
+   (f)))
+
+(provide 'graph)
+;;; graph.el ends here
diff --git a/configs/shared/.emacs.d/wpc/imdb.el b/configs/shared/.emacs.d/wpc/imdb.el
new file mode 100644
index 0000000000..2969da1409
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/imdb.el
@@ -0,0 +1,128 @@
+;;; imdb.el --- Internet Movie Database -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Some Elisp to help me pick movies more quickly.
+
+;;; Code:
+
+(require 'f)
+(require 'macros)
+(require 'pcre2el)
+(require 'random)
+(require 'maybe)
+
+;; TODO: How do you support types herein?
+(cl-defstruct movie
+  name
+  year
+  director
+  watched?)
+
+;; TODO: Support famous directors like:
+;; - Wes Anderson
+;; - Woody Allen
+;; - Tarantino
+;; - Coen Brothers
+;; - Alfonso Cauron
+;; - Alejandro González Iñárritu
+;; - Alfred Hitchcock
+;; - Stanley Kubrick
+
+;; TODO: Dump this into SQL.
+
+(defconst imdb/kubrick-films
+  (->> '((:watched? nil :year 1951 :name "Flying Padre")
+         (:watched? nil :year 1953 :name "Fear and Desire")
+         (:watched? nil :year 1953 :name "The Seafarers")
+         (:watched? nil :year 1955 :name "Killer's Kiss")
+         (:watched? nil :year 1956 :name "The Killing")
+         (:watched? nil :year 1957 :name "Paths of Glory")
+         (:watched? nil :year 1960 :name "Spartacus")
+         (:watched? nil :year 1962 :name "Lolita")
+         (:watched? nil :year 1964 :name "Dr. Strangelove")
+         (:watched? nil :year 1968 :name "2001: A Space Odyssey")
+         (:watched? t   :year 1971 :name "A Clockwork Orange")
+         (:watched? nil :year 1975 :name "Barry Lyndon")
+         (:watched? nil :year 1980 :name "The Shining")
+         (:watched? t   :year 1987 :name "Full Metal Jacket")
+         (:watched? nil :year 1999 :name "Eyes Wide Shut"))
+       (list/map (lambda (x)
+                   (make-movie :name (plist-get :name x)
+                               :year (plist-get :year x)
+                               :director "Stanley Kubrick"
+                               :watched? (plist-get :watched? x))))))
+
+(defconst imdb/non-top-250
+  (->> '("Doctor Zhivago"
+         )
+       (list/map #'imdb/new-movie)))
+
+(defun imdb/new-movie (name)
+  "Create a new movie with NAME."
+  (make-movie :name name
+              :year nil
+              :director nil
+              :watched? nil))
+
+(defun imdb/org->movie (line)
+  "Parse an org LINE into a movie struct."
+  (let ((match (s-match
+                (pcre-to-elisp "^\*\*\s(TODO|DONE)\s(.+)$")
+                line)))
+    (if (maybe/some? match)
+        (make-movie :name (list/get 2 match)
+                    :year nil
+                    :director nil
+                    :watched? (equal "DONE" (list/get 1 match)))
+      (error (s-concat "Parsing error: " line)))))
+
+;; TODO: Store these in a database or define them herein.
+(defun imdb/org->movies ()
+  "Parse entire IMDB org file into movie structs."
+  (->> "~/Dropbox/org/imdb_top_250.org"
+       f-read
+       (s-split "\n")
+       (-drop 1)
+       (list/filter (>> (s-starts-with? "** ")))
+       (list/map #'imdb/org->movie)))
+
+(defun imdb/watched? (movie)
+  "Return t if MOVIE has been watched."
+  (movie-watched? movie))
+
+(defconst imdb/movies (imdb/org->movies)
+  "Structs of all watched movies.")
+
+(defun imdb/unwatched ()
+  "Return list of unwatched movies."
+  (->> imdb/movies
+       (list/filter (lambda (x) (not (imdb/watched? x))))))
+
+(defun imdb/name (movie)
+  "Return name of MOVIE."
+  (movie-name movie))
+
+
+(defun imdb/suggest ()
+  "Randomly select movie from unwatched list."
+  (->> (imdb/unwatched)
+       (random/choice)
+       (imdb/name)))
+
+(defun imdb/unwatched-list ()
+  "Dump all unwatched movies into a list."
+  (f-write-text (->> (imdb/unwatched)
+                     (list/map #'imdb/name)
+                     (s-join "\n"))
+                'utf-8
+                "/tmp/unwatched.txt"))
+
+(macros/comment
+ (imdb/org->movies)
+ (imdb/unwatched-list)
+ (imdb/suggest)
+ )
+
+(provide 'imdb)
+;;; imdb.el ends here
diff --git a/configs/shared/.emacs.d/wpc/irc.el b/configs/shared/.emacs.d/wpc/irc.el
new file mode 100644
index 0000000000..3dfaabdb39
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/irc.el
@@ -0,0 +1,79 @@
+;;; irc.el --- Configuration for IRC chat -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Need to decide which client I will use for IRC.
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Dependencies
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'erc)
+(require 'cycle)
+(require 'string)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Configuration
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(setq erc-rename-buffers t)
+
+(defvar irc/channels-cycle
+  (cycle/from-list
+   '("#omg" "#london" "#panic" "#prod-team"))
+  "List of channels through which I can cycle.")
+
+;; Setting `erc-join-buffer' to 'bury prevents erc from stealing focus of the
+;; current buffer when it connects to IRC servers.
+(setq erc-join-buffer 'bury)
+
+(setq erc-autojoin-channels-alist
+      `(("corp.google.com" . ,(cycle/to-list irc/channels-cycle))))
+
+(defcustom irc/install-kbds? t
+  "When t, install the keybindings defined herein.")
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Library
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun irc/message (x)
+  "Print message X in a structured way."
+  (message (string/format "[irc.el] %s" x)))
+
+(defun irc/connect-to-google ()
+  "Connect to Google's Corp IRC using ERC."
+  (interactive)
+  (erc-ssl :server "irc.corp.google.com"
+           :port 6697
+           :nick "wpcarro"
+           :full-name "William Carroll"))
+
+(defun irc/next-channel ()
+  "Join the next channel in `irc/channels-cycle'."
+  (interactive)
+  (erc-join-channel
+   (cycle/next irc/channels-cycle))
+  (irc/message
+   (string/format "Current IRC channel: %s"
+                  (cycle/current irc/channels-cycle))))
+
+(defun irc/prev-channel ()
+  "Join the previous channel in `irc/channels-cycle'."
+  (interactive)
+  (erc-join-channel
+   (cycle/prev irc/channels-cycle))
+  (irc/message
+   (string/format "Current IRC channel: %s"
+                  (cycle/current irc/channels-cycle))))
+
+(when irc/install-kbds?
+  (general-define-key
+   :keymaps 'erc-mode-map
+   "<C-tab>" #'irc/next-channel
+   "<C-S-iso-lefttab>" #'irc/prev-channel))
+
+(provide 'irc)
+;;; irc.el ends here
diff --git a/configs/shared/.emacs.d/wpc/iso.el b/configs/shared/.emacs.d/wpc/iso.el
new file mode 100644
index 0000000000..1691a0daaa
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/iso.el
@@ -0,0 +1,95 @@
+;;; iso.el --- Isomorphisms in Elisp -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Providing basic isomorphisms to improve code quality.
+
+;;; Code:
+
+(require 'dotted)
+(require 'tuple)
+(require 'symbol)
+(require 'string)
+(require 'list)
+(require 'alist)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Library
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(cl-defstruct iso to from x)
+
+(defconst iso/whitelist
+  '((dotted . tuple)
+    (symbol . string))
+  "Alist representing supported isomorphisms.")
+
+(defconst iso/vertices
+  (list/concat (alist/keys iso/whitelist)
+               (alist/values iso/whitelist))
+  "List of all of the vertices in the iso graph.")
+
+(defun iso/classify (x)
+  "Return type of X."
+  (cond
+   ((string/instance? x) 'string)
+   ((symbol/instance? x) 'symbol)
+   ((dotted/instance? x) 'dotted)
+   ((tuple/instance? x)  'tuple)))
+
+(cl-defun iso/exists? (to from)
+  "Return t if an isomorphism of TO to FROM exists."
+  ;; TODO: All of this can be improved modelling this with a graph.
+  (cond
+   ;; to -> from
+   ((list/contains? to (alist/keys iso/whitelist))
+    (list/contains? from (alist/values iso/whitelist)))
+   ;; from -> to
+   ((list/contains? from (alist/keys iso/whitelist))
+    (list/contains? to (alist/values iso/whitelist)))
+   ;; doesn't exist
+   (t nil)))
+
+(progn
+  (prelude/assert
+   (iso/exists? 'symbol 'string))
+  (prelude/assert
+   (iso/exists? 'dotted 'tuple))
+  (prelude/refute
+   (iso/exists? 'dotted 'symbol))
+  (prelude/refute
+   (iso/exists? 'symbol 'list)))
+
+;; TODO: Model this as a graph.
+(defconst iso/morphisms
+  '((string .
+            '(symbol #')
+     ))
+  (list (:from 'string :to 'symbol :fn #'intern)
+        (:from 'symbol :to 'string :fn #'symbol-name)
+        )
+  "")
+
+(defun iso/to (f x)
+  "Apply F to X's to."
+  (->> x
+       iso-to))
+
+(->> (iso/new "william" :to 'symbol)
+     (iso/as-to #'symbol-name)
+     )
+
+(cl-defun iso/new (x &keys to)
+  "Create a new isomorphism of X mapping to TO."
+  (let ((from (iso/classify x)))
+    (prelude/assert (iso/exists? to from))
+    (make-iso :from from
+              :to to
+              :x x)))
+
+(macros/comment
+ (iso/new "william" :to 'symbol)
+ (iso/new '(one . two) :to 'tuple))
+
+(provide 'iso)
+;;; iso.el ends here
diff --git a/configs/shared/.emacs.d/wpc/ivy-helpers.el b/configs/shared/.emacs.d/wpc/ivy-helpers.el
new file mode 100644
index 0000000000..c71a907a20
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/ivy-helpers.el
@@ -0,0 +1,31 @@
+;;; ivy-helpers.el --- More interfaces to ivy -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Hopefully to improve my workflows.
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Dependencies
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'alist)
+(require 'tuple)
+(require 'string)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Library
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(cl-defun ivy-helpers/kv (prompt kv f)
+  "PROMPT users with the keys in KV and return its corresponding value.  Calls F
+with the key and value from KV."
+  (ivy-read
+   prompt
+   kv
+   :require-match t
+   :action (lambda (entry)
+             (funcall f (car entry) (cdr entry)))))
+
+;;; Code:
+(provide 'ivy-helpers)
+;;; ivy-helpers.el ends here
diff --git a/configs/shared/.emacs.d/wpc/kaomoji.el b/configs/shared/.emacs.d/wpc/kaomoji.el
new file mode 100644
index 0000000000..d6d509c146
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/kaomoji.el
@@ -0,0 +1,45 @@
+;;; kaomoji.el --- Supporting kaomoji usage -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Simple keyboards like this make life a bit better.
+
+;;; Code:
+
+(defvar kaomoji/install-kbds?
+  nil
+  "Set to t if you'd like the keybindings to be installed.")
+
+(defconst kaomoji/symbols '(("Joy" . "(⌒‿⌒)")
+                    ("Love" . "(ღ˘⌣˘ღ)")
+                    ("Sympathy" . "ヽ(~_~(・_・ )ゝ")
+                    ("Dissatisfaction" . "(>﹏<)")
+                    ("Anger" . "ヽ(‵﹏´)ノ")
+                    ("Hugging" . "(づ ̄ ³ ̄)づ")
+                    ("Hiding" . "┬┴┬┴┤( ͡° ͜ʖ├┬┴┬┴")
+                    ("Sleeping" . "(-_-) zzZ")
+                    ("Embarrassed" . "(×﹏×)")
+                    ("Shrug" . "ヽ(ー_ー )ノ"))
+  "Alist of human-readable emotions to the kaomoji.")
+
+;; TODO: Consider supporting a hydra for these.
+
+(defun kaomoji/select ()
+  "Interactively select a kaomoji and copy it to the clipboard."
+  (interactive)
+  (ivy-read
+   "Select a kaomoji: "
+   kaomoji/symbols
+   :action (lambda (entry)
+             (kill-new (cdr entry))
+             (alert "Copied to clipboard!"))))
+
+;; TODO: Define Hydra for all custom keyboards.
+;; TODO: Define a better keybinding in a different keymap.
+(when kaomoji/install-kbds?
+  (general-define-key
+   :keymaps 'global
+   "M-k" #'kaomoji/select))
+
+(provide 'kaomoji)
+;;; kaomoji.el ends here
diff --git a/configs/shared/.emacs.d/wpc/kbd.el b/configs/shared/.emacs.d/wpc/kbd.el
new file mode 100644
index 0000000000..49b346bc6e
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/kbd.el
@@ -0,0 +1,90 @@
+;;; kbd.el --- Elisp keybinding -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; In order to stay organized, I'm attempting to dedicate KBD prefixes to
+;; specific functions.  I'm hoping I can be more deliberate with my keybinding
+;; choices this way.
+;;
+;; Terminology:
+;; For a more thorough overview of the terminology refer to `keybindings.md'
+;; file.  Here's a brief overview:
+;; - workspace: Anything concerning EXWM workspaces.
+;; - x11: Anything concerning X11 applications.
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Dependencies
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'prelude)
+(require 'alist)
+(require 'set)
+(require 'string)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Constants
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defconst kbd/install-kbds? t
+  "When t, install keybindings defined herein.")
+
+(defconst kbd/prefixes
+  '((workspace . "s")
+    (x11 . "C-s"))
+  "Mapping of functions to designated keybinding prefixes to stay organized.")
+
+;; Assert that no keybindings are colliding.
+(prelude/assert
+ (= (alist/count kbd/prefixes)
+    (->> kbd/prefixes
+         alist/values
+         set/from-list
+         set/count)))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Library
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun kbd/raw (f x)
+  "Return the string keybinding for function F and appendage X.
+Values for F include:
+- workspace
+- x11"
+  (prelude/assert (alist/has-key? f kbd/prefixes))
+  (string/format
+   "%s-%s"
+   (alist/get f kbd/prefixes)
+   x))
+
+(defun kbd/for (f x)
+  "Return the `kbd' for function F and appendage X.
+Values for F include:
+- workspace
+- x11"
+  (kbd (kbd/raw f x)))
+
+;; TODO: Prefer copying human-readable versions to the clipboard.  Right now
+;; this isn't too useful.
+(defun kbd/copy-keycode ()
+  "Copy the pressed key to the system clipboard."
+  (interactive)
+  (message "[kbd] Awaiting keypress...")
+  (let ((key (read-key)))
+    (clipboard/copy (string/format "%s" key))
+    (message (string/format "[kbd] \"%s\" copied!" key))))
+
+(defun kbd/print-keycode ()
+  "Prints the pressed keybinding."
+  (interactive)
+  (message "[kbd] Awaiting keypress...")
+  (message (string/format "[kbd] keycode: %s" (read-key))))
+
+;; (when kbd/install-kbds?
+;;   (general-define-key
+;;    :prefix "<SPC>"
+;;    "hr" #'kbd/print-keycode))
+
+(provide 'kbd)
+;;; kbd.el ends here
diff --git a/configs/shared/.emacs.d/wpc/keyboard.el b/configs/shared/.emacs.d/wpc/keyboard.el
new file mode 100644
index 0000000000..f9d13a8e41
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/keyboard.el
@@ -0,0 +1,147 @@
+;;; keyboard.el --- Managing keyboard preferences with Elisp -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Setting key repeat and other values.
+;;
+;; Be wary of suspiciously round numbers.  Especially those divisible by ten!
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Dependencies
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'string)
+(require 'number)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Constants
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; TODO: Support clamping functions for repeat-{rate,delay} to ensure only valid
+;; values are sent to xset.
+(defcustom keyboard/repeat-rate 80
+  "The number of key repeat signals sent per second.")
+
+(defcustom keyboard/repeat-delay 170
+  "The number of milliseconds before autorepeat starts.")
+
+(defconst keyboard/repeat-rate-copy keyboard/repeat-rate
+  "Copy of `keyboard/repeat-rate' to support `keyboard/reset-key-repeat'.")
+
+(defconst keyboard/repeat-delay-copy keyboard/repeat-delay
+  "Copy of `keyboard/repeat-delay' to support `keyboard/reset-key-repeat'.")
+
+(defcustom keyboard/install-preferences? t
+  "When t, install keyboard preferences.")
+
+(defcustom keyboard/install-kbds? nil
+  "When t, install keybindings.")
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Functions
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun keyboard/message (x)
+  "Message X in a structured way."
+  (message (string/format "[keyboard.el] %s" x)))
+
+(cl-defun keyboard/set-key-repeat (&key
+                                   (rate keyboard/repeat-rate)
+                                   (delay keyboard/repeat-delay))
+  "Use xset to set the key-repeat RATE and DELAY."
+   (shell-command
+    (string/format "xset r rate %s %s" delay rate)))
+
+;; NOTE: Settings like this are machine-dependent. For instance I only need to
+;; do this on my laptop and other devices where I don't have access to my split
+;; keyboard.
+;; NOTE: Running keysym Caps_Lock is not idempotent.  If this is called more
+;; than once, xmodmap will start to error about non-existent Caps_Lock symbol.
+;; For more information see here:
+;; https://unix.stackexchange.com/questions/108207/how-to-map-caps-lock-as-the-compose-key-using-xmodmap-portably-and-idempotently
+(defun keyboard/swap-caps-lock-and-escape ()
+  "Swaps the caps lock and escape keys using xmodmap."
+  (interactive)
+  (shell-command "xmodmap -e 'remove Lock = Caps_Lock'")
+  (shell-command "xmodmap -e 'keysym Caps_Lock = Escape"))
+
+(defun keyboard/inc-repeat-rate ()
+  "Increment `keyboard/repeat-rate'."
+  (interactive)
+  (setq keyboard/repeat-rate (number/inc keyboard/repeat-rate))
+  (keyboard/set-key-repeat :rate keyboard/repeat-rate)
+  (keyboard/message
+   (string/format "Rate: %s" keyboard/repeat-rate)))
+
+(defun keyboard/dec-repeat-rate ()
+  "Decrement `keyboard/repeat-rate'."
+  (interactive)
+  (setq keyboard/repeat-rate (number/dec keyboard/repeat-rate))
+  (keyboard/set-key-repeat :rate keyboard/repeat-rate)
+  (keyboard/message
+   (string/format "Rate: %s" keyboard/repeat-rate)))
+
+(defun keyboard/inc-repeat-delay ()
+  "Increment `keyboard/repeat-delay'."
+  (interactive)
+  (setq keyboard/repeat-delay (number/inc keyboard/repeat-delay))
+  (keyboard/set-key-repeat :delay keyboard/repeat-delay)
+  (keyboard/message
+   (string/format "Delay: %s" keyboard/repeat-delay)))
+
+(defun keyboard/dec-repeat-delay ()
+  "Decrement `keyboard/repeat-delay'."
+  (interactive)
+  (setq keyboard/repeat-delay (number/dec keyboard/repeat-delay))
+  (keyboard/set-key-repeat :delay keyboard/repeat-delay)
+  (keyboard/message
+   (string/format "Delay: %s" keyboard/repeat-delay)))
+
+(defun keyboard/print-key-repeat ()
+  "Print the currently set values for key repeat."
+  (interactive)
+  (keyboard/message
+   (string/format "Rate: %s. Delay: %s"
+                  keyboard/repeat-rate
+                  keyboard/repeat-delay)))
+
+(defun keyboard/set-preferences ()
+  "Reset the keyboard preferences to their default values.
+NOTE: This function exists because occasionally I unplug and re-plug in a
+  keyboard and all of the preferences that I set using xset disappear."
+  (interactive)
+  (keyboard/swap-caps-lock-and-escape)
+  (keyboard/set-key-repeat :rate keyboard/repeat-rate
+                           :delay keyboard/repeat-delay)
+  ;; TODO: Implement this message function as a macro that pulls the current
+  ;; file name.
+  (keyboard/message "Keyboard preferences set!"))
+
+(defun keyboard/reset-key-repeat ()
+  "Set key repeat rate and delay to original values."
+  (interactive)
+  (keyboard/set-key-repeat :rate keyboard/repeat-rate-copy
+                           :delay keyboard/repeat-delay-copy)
+  (keyboard/message "Key repeat preferences reset."))
+
+(when keyboard/install-preferences?
+  (keyboard/set-preferences))
+
+;; TODO: Define minor-mode for this.
+(when keyboard/install-kbds?
+  (general-unbind 'motion "C-i" "C-y")
+  (general-define-key
+   ;; TODO: Choose better KBDs for these that don't interfere with useful evil
+   ;; ones.
+   ;; Use C-y when you accidentally send the key-repeat too high or too low to
+   ;; be meaningful.
+   "C-y" #'keyboard/reset-key-repeat
+   "C-i" #'keyboard/inc-repeat-rate
+   "C-u" #'keyboard/dec-repeat-rate
+   "C-S-i" #'keyboard/inc-repeat-delay
+   "C-S-u" #'keyboard/dec-repeat-delay))
+
+(provide 'keyboard)
+;;; keyboard.el ends here
diff --git a/configs/shared/.emacs.d/wpc/keymap.el b/configs/shared/.emacs.d/wpc/keymap.el
new file mode 100644
index 0000000000..87d340fcdb
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/keymap.el
@@ -0,0 +1,25 @@
+;;; keymap.el --- Working with Elisp keymaps -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Very much a work-in-progress.
+
+;;; Code:
+
+(require 'macros)
+(require 'symbol)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Library
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun keymap/pretty-print (x)
+  "Pretty prints `X'."
+  ;; TODO: Work-in-progress
+  (s-concat "\\{" (symbol/to-string x) "}"))
+
+(macros/comment
+ (keymap/pretty-print lispyville-mode-map))
+
+(provide 'keymap)
+;;; keymap.el ends here
diff --git a/configs/shared/.emacs.d/wpc/laptop-battery.el b/configs/shared/.emacs.d/wpc/laptop-battery.el
new file mode 100644
index 0000000000..3ec03553d2
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/laptop-battery.el
@@ -0,0 +1,60 @@
+;;; laptop-battery.el --- Display laptop battery information -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Some wrappers to obtain battery information.
+;;
+;; To troubleshoot battery consumpton look into the CLI `powertop`.
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Roadmap
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; TODO: Support functions that work with reporting battery stats.
+;; TODO: low-battery-reporting-threshold
+;; TODO: charged-battery-reporting-threshold
+;; TODO: Format modeline battery information.
+;; TODO: Provide better time information in the modeline.
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Dependencies
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'battery)
+(require 'alist)
+(require 'maybe)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Library
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun laptop-battery/available? ()
+  "Return t if battery information is available."
+  (maybe/some? battery-status-function))
+
+(defun laptop-battery/percentage ()
+  "Return the current percentage of the battery."
+  (->> battery-status-function
+       funcall
+       (alist/get 112)))
+
+(defun laptop-battery/print-percentage ()
+  "Return the current percentage of the battery."
+  (interactive)
+  (->> (laptop-battery/percentage)
+       message))
+
+(defun laptop-battery/display ()
+  "Display laptop battery percentage in the modeline."
+  (interactive)
+  (display-battery-mode 1))
+
+(defun laptop-battery/hide ()
+  "Hide laptop battery percentage in the modeline."
+  (interactive)
+  (display-battery-mode -1))
+
+(provide 'laptop-battery)
+;;; laptop-battery.el ends here
diff --git a/configs/shared/.emacs.d/wpc/list.el b/configs/shared/.emacs.d/wpc/list.el
new file mode 100644
index 0000000000..bc89c13264
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/list.el
@@ -0,0 +1,197 @@
+;;; list.el --- Functions for working with lists. -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Since I prefer having the `list/' namespace, I wrote this module to wrap many
+;; of the functions that are defined in the the global namespace in ELisp.  I
+;; sometimes forget the names of these functions, so it's nice for them to be
+;; organized like this.
+;;
+;; Motivation:
+;; Here are some examples of function names that I cannot tolerate:
+;; - `car': Return the first element (i.e. "head") of a linked list
+;; - `cdr': Return the tail of a linked list
+
+;; As are most APIs for standard libraries that I write, this is heavily
+;; influenced by Elixir's standard library.
+;;
+;; Elixir's List library:
+;; - ++/2
+;; - --/2
+;; - hd/1
+;; - tl/1
+;; - in/2
+;; - length/1
+;;
+;; Similar libraries:
+;; - dash.el: Functional library that mimmicks Clojure.  It is consumed herein.
+;; - list-utils.el: Utility library that covers things that dash.el may not
+;;   cover.
+;;   stream.el: Elisp implementation of streams, "implemented as delayed
+;;   evaluation of cons cells."
+
+;; TODO: Consider naming this file linked-list.el.
+
+;; TODO: Support module-like macro that auto-namespaces functions.
+
+;; TODO: Consider wrapping most data structures like linked-lists,
+;; associative-lists, etc in a `cl-defstruct', so that the dispatching by type
+;; can be nominal instead of duck-typing.  I'm not sure if this is a good idea
+;; or not.  If I do this, I should provide isomorphisms to map between idiomatic
+;; ways of working with Elisp data structures and my wrapped variants.
+
+;; TODO: Are function aliases/synonyms even a good idea?  Or do they just
+;; bloat the API unnecessarily?
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Dependencies
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'prelude)
+(require 'dash)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Constants
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defconst list/tests? t
+  "When t, run the test suite.")
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Library
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun list/new ()
+  "Return a new, empty list."
+  '())
+
+(defun list/concat (&rest lists)
+  "Joins `LISTS' into on list."
+  (apply #'-concat lists))
+
+(defun list/join (joint xs)
+  "Join a list of strings, XS, with JOINT."
+  (if (list/empty? xs)
+      ""
+    (list/reduce (list/first xs)
+                 (lambda (x acc)
+                   (string/concat acc joint x))
+                 (list/tail xs))))
+
+(defun list/length (xs)
+  "Return the number of elements in `XS'."
+  (length xs))
+
+(defun list/get (i xs)
+  "Return the value in `XS' at `I', or nil."
+  (nth i xs))
+
+(defun list/head (xs)
+  "Return the head of `XS'."
+  (car xs))
+
+;; TODO: Learn how to write proper function aliases.
+(defun list/first (xs)
+  "Alias for `list/head' for `XS'."
+  (list/head xs))
+
+(defun list/tail (xs)
+  "Return the tail of `XS'."
+  (cdr xs))
+
+(defun list/reverse (xs)
+  "Reverses `XS'."
+  (reverse xs))
+
+(defun list/cons (x xs)
+  "Add `X' to the head of `XS'."
+  (cons x xs))
+
+;; map, filter, reduce
+
+;; TODO: Create function adapters like swap.
+;; (defun adapter/swap (f)
+;;   "Return a new function that wraps `F' and swaps the arguments."
+;;   (lambda (a b)
+;;     (funcall f b a)))
+
+;; TODO: Make this function work.
+(defun list/reduce (acc f xs)
+  "Return over `XS' calling `F' on an element in `XS'and `ACC'."
+  (-reduce-from (lambda (acc x) (funcall f x acc)) acc xs))
+
+(defun list/map (f xs)
+  "Call `F' on each element of `XS'."
+  (-map f xs))
+
+(defun list/map-indexed (f xs)
+  "Call `F' on each element of `XS' along with its index."
+  (-map-indexed (lambda (i x) (funcall f x i)) xs))
+
+(defun list/filter (p xs)
+  "Return a subset of XS where predicate P returned t."
+  (list/reverse
+   (list/reduce
+    '()
+    (lambda (x acc)
+      (if (funcall p x)
+          (list/cons x acc)
+        acc))
+    xs)))
+
+(defun list/reject (p xs)
+  "Return a subset of XS where predicate of P return nil."
+  (list/filter (lambda (x) (not (funcall p x))) xs))
+
+(defun list/find (p xs)
+  "Return the first x in XS that passes P or nil."
+  (-find p xs))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Predicates
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun list/instance? (xs)
+  "Return t if `XS' is a list.
+Be leery of using this with things like alists.  Many data structures in Elisp
+  are implemented using linked lists."
+  (listp xs))
+
+(defun list/empty? (xs)
+  "Return t if XS are empty."
+  (= 0 (list/length xs)))
+
+(defun list/all? (p xs)
+  "Return t if all `XS' pass the predicate, `P'."
+  (-all? p xs))
+
+(defun list/any? (p xs)
+  "Return t if any `XS' pass the predicate, `P'."
+  (-any? p xs))
+
+(defun list/contains? (x xs)
+  "Return t if X is in XS using `equal'."
+  (-contains? xs x))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Tests
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(when list/tests?
+  (prelude/assert
+   (= 0
+      (list/length '())))
+  (prelude/assert
+   (= 5
+      (list/length '(1 2 3 4 5))))
+  (prelude/assert
+   (= 16
+      (list/reduce 1 (lambda (x acc) (+ x acc)) '(1 2 3 4 5))))
+  (prelude/assert
+   (equal '(2 4 6 8 10)
+          (list/map (lambda (x) (* x 2)) '(1 2 3 4 5)))))
+
+(provide 'list)
+;;; list.el ends here
diff --git a/configs/shared/.emacs.d/wpc/list.nix b/configs/shared/.emacs.d/wpc/list.nix
new file mode 100644
index 0000000000..e664ba6fd4
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/list.nix
@@ -0,0 +1,8 @@
+{ pkgs ? import (builtins.fetchTarball
+  "https://github.com/tazjin/depot/archive/master.tar.gz") {} }:
+
+pkgs.writeElispBin {
+  name = "list";
+  deps = epkgs: [ epkgs.dash ./prelude.nix ];
+  src = ./list.el;
+}
diff --git a/configs/shared/.emacs.d/wpc/macros.el b/configs/shared/.emacs.d/wpc/macros.el
new file mode 100644
index 0000000000..a41cb8db9a
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/macros.el
@@ -0,0 +1,95 @@
+;;; macros.el --- Helpful variables for making my ELisp life more enjoyable -*- lexical-binding: t -*-
+;; Authpr: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; This file contains helpful variables that I use in my ELisp development.
+
+;; TODO: Consider a macro solution for mimmicking OCaml's auto resolution of
+;; dependencies using `load-path' and friends.
+
+;;; Code:
+
+(require 'f)
+(require 'string)
+(require 'symbol)
+
+;; TODO: Support `xi' lambda shorthand macro.
+
+(defmacro enable (mode)
+  "Helper for enabling `MODE'.
+Useful in `add-hook' calls.  Some modes, like `linum-mode' need to be called as
+`(linum-mode 1)', so `(add-hook mode #'linum-mode)' won't work."
+  `#'(lambda nil (,mode 1)))
+
+(defmacro disable (mode)
+  "Helper for disabling `MODE'.
+Useful in `add-hook' calls."
+  `#'(lambda nil (,mode -1)))
+
+(defmacro add-hooks (modes callback)
+  "Add multiple `MODES' for the `CALLBACK'.
+Usage: (add-hooks '(one-mode-hook 'two-mode-hook) #'fn)"
+  `(dolist (mode ,modes)
+     (add-hook mode ,callback)))
+
+(defmacro add-hook-before-save (mode f)
+  "Register a hook, `F', for a mode, `MODE' more conveniently.
+Usage: (add-hook-before-save 'reason-mode-hook #'refmt-before-save)"
+  `(add-hook ,mode
+             (lambda ()
+               (add-hook 'before-save-hook ,f))))
+
+;; TODO: Debug.
+(defmacro macros/ilambda (&rest body)
+  "Surrounds `BODY' with an interactive lambda function."
+  `(lambda ()
+     (interactive)
+     ,@body))
+
+;; TODO: Privatize?
+(defun namespace ()
+  "Return the namespace for a function based on the filename."
+  (->> (buffer-file-name)
+       f-filename
+       f-base))
+
+(defmacro macros/comment (&rest _)
+  "Empty comment s-expresion where `BODY' is ignored."
+  `nil)
+
+;; NOTE: Not prepending the "macros" to this macro, since brevity is its goal.
+(defmacro >> (&rest forms)
+  "Compose a new, point-free function by composing FORMS together."
+  (let ((sym (gensym)))
+    `(lambda (,sym)
+       (->> ,sym ,@forms))))
+
+;; TOOD: Support this.
+(cl-defmacro macros/test
+    (&key function
+          test
+          args
+          expect
+          equality)
+  (let* ((namespace (namespace))
+         (test-name (string/->symbol
+                     (s-concat namespace
+                               "/"
+                               "test"
+                               "/"
+                               (s-chop-prefix
+                                (s-concat namespace "/")
+                                (symbol/to-string function))))))
+    `(ert-deftest ,test-name ()
+       ,test
+       (should (,equality (apply ,function ,args)
+                        ,expect)))))
+
+(defmacro macros/support-file-extension (ext mode)
+  "Register MODE to automatically load with files ending with EXT extension.
+Usage: (macros/support-file-extension \".pb\" protobuf-mode)"
+  (let ((extension (string/format "\\.%s\\'" ext)))
+    `(add-to-list 'auto-mode-alist '(,extension . ,mode))))
+
+(provide 'macros)
+;;; macros.el ends here
diff --git a/configs/shared/.emacs.d/wpc/math.el b/configs/shared/.emacs.d/wpc/math.el
new file mode 100644
index 0000000000..55ddc427c7
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/math.el
@@ -0,0 +1,59 @@
+;;; math.el --- Math stuffs -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Containing some useful mathematical functions.
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Dependencies
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'maybe)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Constants
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defconst math/pi pi
+  "The number pi.")
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Functions
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; TODO: Support all three arguments.
+;; Int -> Int -> Int -> Boolean
+(cl-defun math/triangle-of-power (&key base power result)
+  ;; TODO: Assert two of three are set.
+  (cond
+   ((maybe/some? base power result)
+    (error "All three arguments should not be set"))
+   ((maybe/some? power result)
+    (message "power and result"))
+   ((maybe/some? base result)
+    (log result base))
+   ((maybe/some? base power)
+    (expt base power))
+   (t
+    (error "Two of the three arguments must be set"))))
+
+(defun math/mod (x y)
+  "Return X mod Y."
+  (mod x y))
+
+(defun math/exp (x y)
+  "Return X raised to the Y."
+  (expt x y))
+
+(defun math/round (x)
+  "Round X to nearest ones digit."
+  (round x))
+
+(defun math/floor (x)
+  "Floor value X."
+  (floor x))
+
+(provide 'math)
+;;; math.el ends here
diff --git a/configs/shared/.emacs.d/wpc/maybe.el b/configs/shared/.emacs.d/wpc/maybe.el
new file mode 100644
index 0000000000..0973b1ed65
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/maybe.el
@@ -0,0 +1,102 @@
+;;; maybe.el --- Library for dealing with nil values -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Inspired by Elm's Maybe library.
+;;
+;; For now, a Nothing value will be defined exclusively as a nil value.  I'm
+;; uninterested in supported falsiness in this module even at risk of going
+;; against the LISP grain.
+;;
+;; I'm avoiding introducing a struct to handle the creation of Just and Nothing
+;; variants of Maybe.  Perhaps this is a mistake in which case this file would
+;; be more aptly named nil.el.  I may change that.  Because of this limitation,
+;; functions in Elm's Maybe library like andThen, which is the monadic bind for
+;; the Maybe type, doesn't have a home here since we cannot compose multiple
+;; Nothing or Just values without a struct or some other construct.
+;;
+;; Possible names for the variants of a Maybe.
+;; None    | Some
+;; Nothing | Something
+;; None    | Just
+;; Nil     | Set
+;;
+;; NOTE: In Elisp, values like '() (i.e. the empty list) are aliases for nil.
+;; What else in Elisp is an alias in this way?
+;; Examples:
+;; TODO: Provide examples of other nil types in Elisp.
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Dependencies
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'prelude)
+(require 'list)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Constants
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defvar maybe/test? t
+  "When t, run the test suite defined herein.")
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Library
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun maybe/nil? (x)
+  "Return t if X is nil."
+  (eq nil x))
+
+(defun maybe/some? (x)
+  "Return t when X is non-nil."
+  (not (maybe/nil? x)))
+
+(defun maybe/nils? (&rest xs)
+  "Return t if all XS are nil."
+  (list/all? #'maybe/nil? xs))
+
+(defun maybe/somes? (&rest xs)
+  "Return t if all XS are non-nil."
+  (list/all? #'maybe/some? xs))
+
+(defun maybe/default (default x)
+  "Return DEFAULT when X is nil."
+  (if (maybe/nil? x) default x))
+
+(defun maybe/map (f x)
+  "Apply F to X if X is not nil."
+  (if (maybe/some? x)
+      (funcall f x)
+    x))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Tests
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(when maybe/test?
+  ;; nil?
+  (prelude/assert (maybe/nil? nil))
+  (prelude/refute (maybe/nil? t))
+  ;; some?
+  (prelude/assert (maybe/some? 10))
+  (prelude/refute (maybe/some? nil))
+  ;; nils?
+  (prelude/assert (maybe/nils? nil nil nil nil))
+  (prelude/refute (maybe/nils? nil t nil t))
+  ;; somes?
+  (prelude/assert (maybe/somes? t 10 '(1 2 3) "some"))
+  (prelude/refute (maybe/somes? t nil '(1 2 3) "some"))
+  ;; default
+  (prelude/assert
+   (and (= 0 (maybe/default 5 0))
+        (= 5 (maybe/default 5 nil))))
+  ;; map
+  (prelude/assert
+   (and (= 2 (maybe/map #'1+ 1))
+        (eq nil (maybe/map #'1+ nil)))))
+
+(provide 'maybe)
+;;; maybe.el ends here
diff --git a/configs/shared/.emacs.d/wpc/me-seconds.el b/configs/shared/.emacs.d/wpc/me-seconds.el
new file mode 100644
index 0000000000..f03e5d07d7
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/me-seconds.el
@@ -0,0 +1,245 @@
+;;; me-seconds.el --- How valuable is my time? -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Inspired by Google's concept of SWE-seconds, I decided to try and compute how
+;; value my personal time is.
+;;
+;; This library should integrate with another library that handles currency
+;; conversions using locally cached data for historial values and network
+;; requests for current values.
+;;
+;; Context sensitivity:
+;; Many of the values herein are based on my values that are a function of the
+;; year, my current salary, my current company holiday policy, and my current
+;; country holiday policy.  As such, many of these constants need to be updated
+;; whenever changes occur in order for these functions to be useful.
+;;
+;; Units of time:
+;; - seconds
+;; - minutes
+;; - hours
+;; - days
+;; - weeks
+;; - months
+;; - years
+;;
+;; Wish list:
+;; - I should create a money.el struct to work with herein.  This module would
+;;   expose basic algebra for working with money structs, which would be handy.
+;; - I should create a time.el struct for working with hours in the day.  I'd
+;;   like to be able to do (+ 9:15 17:45) cleanly.
+;;
+;; Terminology:
+;; SWE hours give an order of magnitude approximation to the cost of resources
+;; in dollars per hour at 2115 hours per year.
+;; - SWE hour (SWEh)
+;; - SWE year (SWEy)
+;; - SWE nominal
+;; - SWE opportunity
+;;
+;; Other isomorphisms include:
+;; - Borg GCU
+;; - Borg RAM
+;; - Tape (library)
+;; - Tape (vault)
+;; - Spindles (low latency)
+;; - Spindles (throughput)
+;; - Spindles (throughput)
+;; - Tape (throughput)
+;; - SWE (nominal)
+;; - SWE (opportunity)
+
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Dependencies
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'macros)
+(require 'string)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Constants
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun me-seconds/salary (amt)
+  "Return the yearly rate of AMT of money in GBP.
+f :: Integer -> Rate"
+  (make-rate :money (make-money :whole amt :fractional 0 :currency 'GBP)
+             :unit 'year))
+
+(defconst me-seconds/salary (me-seconds/salary 80000)
+  "My salary in GBP.")
+
+;; TODO: Consider changing these into units of time.
+(defconst me-seconds/months-per-year 12
+  "Number of months in a year.")
+
+(defconst me-seconds/days-per-year 365
+  "Number of days in a year.")
+
+(defconst me-seconds/hours-per-year (* 24 me-seconds/days-per-year)
+  "Number of hours in a year.")
+
+(defconst me-seconds/minutes-per-year (* 60 me-seconds/hours-per-year)
+  "Number of minutes in a year.")
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Vacation
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defconst me-seconds/bank-holidays-per-year 8
+  "Number of bank holidays in the UK each year.")
+
+(defconst me-seconds/pto-days-vacation-per-year 25
+  "Number of days of paid-time-off I receive each year in the UK.")
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Sleeping
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defconst me-seconds/sleeping-hours-per-day 8
+  "An approximation of the number of hours I sleep each night on average.")
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Waking
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defconst me-seconds/waking-hours-per-day
+  (- 24 me-seconds/sleeping-hours-per-night)
+  "An approximation of the number of hours I sleep each night on average.")
+
+;; TODO: Adjust this for vacation time.
+(defconst me-seconds/waking-hours-per-year
+  (* me-seconds/waking-hours-per-day me-seconds/days-per-year)
+  "The number of hours that I work each year.")
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Working
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defconst me-seconds/working-hours-per-day
+  (- 17 9)
+  "An approximation of the number of hours I work each weekday on average.
+Note that this differs from the assumed SWE hours per day calculation, which
+  assumes 9 working hours.  See the discussion about this of go/rules-of-thumb.")
+
+(defconst me-seconds/working-hours-per-year 2115
+  "This number is borrowed from go/rules-of-thumb.")
+
+;; Keep in mind that the following classifications of time:
+;; - 9:00-17:00 M-F. Is this more expensive than time sleeping?
+;; - Weekend
+;; - Weekday
+;; - Working hours
+;; - Waking hours
+;; - Sleeping hours
+;; - Vacation hours
+;;
+;; TODO: Consider tax implications (i.e. after-tax amounts and pre-tax amounts).
+;;
+;; Should these all be treated the same since they all pull from the same pot of
+;; time? Or perhaps there are multiples involved? Much to think about. How does
+;; Google handle this?
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Library
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; Supported currencies:
+;; - GBP
+;; NOTE: Amount is an integer.
+(cl-defstruct money whole fractional currency)
+(cl-defstruct rate money unit)
+
+;; TODO: Add to money.el.
+(defun money/to-string (x)
+  "Return the string representation of X.
+f :: Money -> String"
+  (let ((currency (money-currency x))
+        (whole (int-to-string (money-whole x)))
+        (fract (int-to-string (money-fractional x))))
+    (pcase currency
+      ('GBP (string/concat "£" whole "." fract))
+      ('USD (string/concat "$" whole "." fract))
+      (_ (error (string/concat
+                 "Currency: \""
+                 (symbol-name currency)
+                 "\" not supported"))))))
+
+(macros/comment
+ (money/to-string
+  (make-money :whole 100 :fractional 99 :currency 'GBP)))
+
+;; TODO: Add to rate.el.
+(defun rate/to-string (x)
+  "Message X as a rate.
+f :: Rate -> String"
+  (string/concat
+   (money/to-string (rate-money x))
+   " / "
+   (pcase (rate-unit x)
+     ('second "sec")
+     ('minute "min")
+     ('hour   "hr")
+     ('day    "day")
+     ('week   "week")
+     ('month  "month")
+     ('year   "year"))))
+
+(macros/comment
+ (rate/to-string
+  (make-rate
+   :money (make-money :whole 10 :fractional 10 :currency 'GBP)
+   :unit 'day)))
+
+;; TODO: Move this to math.el?
+(defun ensure-float (x)
+  "Ensures X is treated as a float."
+  (+ 0.0 x))
+
+;; TODO: Move these to basic time mapping module.
+;; TODO: Consider making this an isomorphism.
+(defun minutes/to-hours (x)
+  "Convert X minutes to n hours."
+  (/ x 60.0))
+
+(defun hours/to-minutes (x)
+  "Convert X hours to n minutes."
+  (* x 60))
+
+(defun days/to-minutes (x)
+  "Convert X days to n minutes."
+  (* x 24 60))
+
+(defun weeks/to-minutes (x)
+  "Convert X weeks to n minutes."
+  (* x 7 24 60))
+
+(defun months/to-minutes (x)
+  "Convert X months to n minutes.
+This approximates the number of days in a month to 30."
+  (* x 30 24 60))
+
+;; TODO: Support algebraic functions with money structs.
+;; TODO: Support isomorphisms for rates to other units of time.  That would
+;; subsume most of this module's use.
+(defun me-seconds/value-per-minute (salary)
+  "Computes my value per minute based on my current SALARY.
+Signature: f :: Rate -> Rate
+This is assuming that all of my time is equally valuable.  See the above
+  discussion about the various classifications of my time.")
+
+;; TODO: See note above about isomorphisms between various rates.
+(defun me-seconds/value (salary x)
+  "Compute the value of X minutes of my time at my current SALARY.
+f :: Rate -> Integer -> Money")
+
+(macros/comment
+ (rate/to-string me-seconds/salary)
+ )
+
+(provide 'me-seconds)
+;;; me-seconds.el ends here
diff --git a/configs/shared/.emacs.d/wpc/monoid.el b/configs/shared/.emacs.d/wpc/monoid.el
new file mode 100644
index 0000000000..401d63c417
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/monoid.el
@@ -0,0 +1,30 @@
+;;; monoid.el --- Working with Monoids in Elisp -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; The day has finally arrived where I'm using Monoids in Elisp.
+;;
+;; The monoid typeclass is as follows:
+;; - empty :: a
+;; - concat :: (list a) -> a
+
+;;; Code:
+
+;; TODO: Consider a prelude version that works for all Elisp types.
+(defun monoid/classify (xs)
+  "Return the type of `XS'."
+  (cond
+   ((listp xs) 'list)
+   ((vectorp xs) 'vector)
+   ((stringp xs) 'string)))
+
+
+(defun monoid/empty (xs)
+  "Return the empty monoid for the type `XS'."
+  (pcase (monoid/classify xs)
+    ('list '())
+    ('vector [])
+    ('string "")))
+
+(provide 'monoid)
+;;; monoid.el ends here
diff --git a/configs/shared/.emacs.d/wpc/number.el b/configs/shared/.emacs.d/wpc/number.el
new file mode 100644
index 0000000000..81d3c5d2b9
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/number.el
@@ -0,0 +1,151 @@
+;;; number.el --- Functions for working with numbers -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;;
+;; Classifications of numbers:
+;; - Natural: (a.k.a positive integers, counting numbers); {1, 2, 3, ... }
+;;
+;; - Whole: Natural Numbers, plus zero; {0, 1, 2, 3, ...}
+;;
+;; - Integers: Whole numbers plus all the negatives of the natural numbers;
+;;   {... , -2, -1, 0, 1, 2, ...}
+;;
+;; - Rational numbers: (a.k.a. fractions) where the top and bottom numbers are
+;;   integers; e.g., 1/2, 3/4, 7/2, ⁻4/3, 4/1.  Note: The denominator cannot be
+;;   0, but the numerator can be.
+;;
+;; - Real numbers: All numbers that can be written as a decimal.  This includes
+;;   fractions written in decimal form e.g., 0.5, 0.75 2.35, ⁻0.073, 0.3333, or
+;;   2.142857. It also includes all the irrational numbers such as π, √2 etc.
+;;   Every real number corresponds to a point on the number line.
+;;
+;; The functions defined herein attempt to capture the mathematical definitions
+;; of numbers and their classifications as defined above.
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Dependencies
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'prelude)
+(require 'dash)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Library
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defconst number/test? t
+  "When t, run the test suite defined herein.")
+
+;; TODO: What about int.el?
+
+;; TODO: How do we handle a number typeclass?
+
+(defun number/positive? (x)
+  "Return t if `X' is a positive number."
+  (> x 0))
+
+(defun number/negative? (x)
+  "Return t if `X' is a positive number."
+  (< x 0))
+
+;; TODO: Don't rely on this. Need to have 10.0 and 10 behave similarly.
+(defun number/float? (x)
+  "Return t if `X' is a floating point number."
+  (floatp x))
+
+(defun number/natural? (x)
+  "Return t if `X' is a natural number."
+  (and (number/positive? x)
+       (not (number/float? x))))
+
+(defun number/whole? (x)
+  "Return t if `X' is a whole number."
+  (or (= 0 x)
+      (number/natural? x)))
+
+(defun number/integer? (x)
+  "Return t if `X' is an integer."
+  (or (number/whole? x)
+      (number/natural? (- x))))
+
+;; TODO: How defensive should these guards be?  Should we assert that the inputs
+;; are integers before checking evenness or oddness?
+
+;; TODO: Look up Runar (from Unison) definition of handling zero as even or odd.
+
+;; TODO: How should rational numbers be handled? Lisp is supposedly famous for
+;; its handling of rational numbers.
+;; TODO: `calc-mode' supports rational numbers as "1:2" meaning "1/2"
+;; (defun number/rational? (x))
+
+;; TODO: Can or should I support real numbers?
+;; (defun number/real? (x))
+
+(defun number/even? (x)
+  "Return t if `X' is an even number."
+  (or (= 0 x)
+      (= 0 (mod x 2))))
+
+(defun number/odd? (x)
+  "Return t if `X' is an odd number."
+  (not (number/even? x)))
+
+(defun number/dec (x)
+  "Subtract one from `X'.
+While this function is undeniably trivial, I have unintentionally done (- 1 x)
+  when in fact I meant to do (- x 1) that I figure it's better for this function
+  to exist, and for me to train myself to reach for it and its inc counterpart."
+  (- x 1))
+
+(defun number/inc (x)
+  "Add one to `X'."
+  (+ x 1))
+
+;; TODO: Does this belong in a math module?  Is math too vague?  Or is number
+;; too vague?
+(defun number/factorial (x)
+  "Return factorial of `X'."
+  (cond
+   ((number/negative? x) (error "Will not take factorial of negative numbers"))
+   ((= 0 x) 1)
+   ;; NOTE: Using `series/range' introduces a circular dependency because:
+   ;; series -> number -> series.  Conceptually, however, this should be
+   ;; perfectly acceptable.
+   (t (->> (series/range 1 x)
+           (list/reduce 1 #'*)))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Tests
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(when number/test?
+  (prelude/assert
+   (number/positive? 10))
+  (prelude/assert
+   (number/natural? 10))
+  (prelude/assert
+   (number/whole? 10))
+  (prelude/assert
+   (number/whole? 0))
+  (prelude/assert
+   (number/integer? 10))
+  (prelude/assert
+   (= 120 (number/factorial 5)))
+  (prelude/assert
+   (number/even? 6))
+  (prelude/refute
+   (number/odd? 6))
+  (prelude/refute
+   (number/positive? -10))
+  (prelude/refute
+   (number/natural? 10.0))
+  (prelude/refute
+   (number/natural? -10))
+  (prelude/refute
+   (number/natural? -10.0)))
+
+(provide 'number)
+;;; number.el ends here
diff --git a/configs/shared/.emacs.d/wpc/packages/wpc-clojure.el b/configs/shared/.emacs.d/wpc/packages/wpc-clojure.el
new file mode 100644
index 0000000000..d9262cdda8
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/packages/wpc-clojure.el
@@ -0,0 +1,85 @@
+;;; clojure.el --- My Clojure preferences -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Hosting my Clojure tooling preferences
+
+;;; Code:
+
+;; Helper functions
+
+;; (defun wpc/buffer-name-for-clojure-mode (mode)
+;;   (let* ((project-name (projectile-project-name))
+;;          (cljs-name (concat "*cider-repl CLJS " project-name "*"))
+;;          (clj-name  (concat "*cider-repl " project-name "*")))
+;;     (cond ((eq mode 'clojurescript-mode) cljs-name)
+;;           ((eq mode 'clojure-mode) clj-name)
+;;           ((eq mode 'clojurec-mode) cljs-name))))
+
+;; (defun wpc/repl-function-for-clojure-mode (mode)
+;;   (let ((project-name (projectile-project-name))
+;;         (cljs-fn #'cider-jack-in-clojurescript)
+;;         (clj-fn  #'cider-jack-in))
+;;     (cond ((eq mode 'clojurescript-mode) cljs-fn)
+;;           ((eq mode 'clojure-mode) clj-fn)
+;;           ((eq mode 'clojurec-mode) cljs-fn))))
+
+;; (defun wpc/find-or-create-clojure-or-clojurescript-repl ()
+;;   (interactive)
+;;   (with-current-buffer (current-buffer)
+;;     (let ((buffer-name   (wpc/buffer-name-for-clojure-mode major-mode))
+;;           (repl-function (wpc/repl-function-for-clojure-mode major-mode)))
+;;       (if (get-buffer buffer-name)
+;;           (switch-to-buffer buffer-name)
+;;         (funcall repl-function)))))
+
+(use-package clojure-mode
+  :config
+  ;; from Ryan Schmukler:
+  (setq cljr-magic-require-namespaces
+        '(("io" . "clojure.java.io")
+          ("sh" . "clojure.java.shell")
+          ("jdbc" . "clojure.java.jdbc")
+          ("set" . "clojure.set")
+          ("time" . "java-time")
+          ("str" . "cuerdas.core")
+          ("path" . "pathetic.core")
+          ("walk" . "clojure.walk")
+          ("zip" . "clojure.zip")
+          ("async" . "clojure.core.async")
+          ("component" . "com.stuartsierra.component")
+          ("http" . "clj-http.client")
+          ("url" . "cemerick.url")
+          ("sql" . "honeysql.core")
+          ("csv" . "clojure.data.csv")
+          ("json" . "cheshire.core")
+          ("s" . "clojure.spec.alpha")
+          ("fs" . "me.raynes.fs")
+          ("ig" . "integrant.core")
+          ("cp" . "com.climate.claypoole")
+          ("re-frame" . "re-frame.core")
+          ("rf" . "re-frame.core")
+          ("re" . "reagent.core")
+          ("reagent" . "reagent.core")
+          ("u.core" . "utopia.core")
+          ("gen" . "clojure.spec.gen.alpha"))))
+
+(use-package cider
+  :config
+  (general-define-key
+    :keymaps 'cider-repl-mode-map
+    "C-l"    #'cider-repl-clear-buffer
+    "C-u"    #'kill-whole-line
+    "<up>"   #'cider-repl-previous-input
+    "<down>" #'cider-repl-next-input
+    ;; "C-c 'j" #'wpc/find-or-create-clojure-or-clojurescript-repl
+    )
+  ;; (setq cider-cljs-lein-repl
+  ;;       "(do (require 'figwheel-sidecar.repl-api)
+  ;;            (figwheel-sidecar.repl-api/start-figwheel!)
+  ;;            (figwheel-sidecar.repl-api/cljs-repl))"
+  ;;       cider-prompt-for-symbol nil)
+  )
+
+(provide 'wpc-clojure)
+;;; wpc-clojure.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-company.el b/configs/shared/.emacs.d/wpc/packages/wpc-company.el
index e4507031a1..1152f496c2 100644
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-company.el
+++ b/configs/shared/.emacs.d/wpc/packages/wpc-company.el
@@ -16,8 +16,12 @@
     "C-k" #'company-select-previous
     "C-p" #'company-select-previous
     "C-d" #'company-show-doc-buffer)
+  (setq company-tooltip-align-annotations t)
   (setq company-idle-delay 0)
+  (setq company-show-numbers t)
   (setq company-minimum-prefix-length 2)
+  (setq company-dabbrev-downcase nil
+        company-dabbrev-ignore-case t)
   (global-company-mode))
 
 (provide 'wpc-company)
diff --git a/configs/shared/.emacs.d/wpc/packages/wpc-dired.el b/configs/shared/.emacs.d/wpc/packages/wpc-dired.el
new file mode 100644
index 0000000000..13aed975d2
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/packages/wpc-dired.el
@@ -0,0 +1,39 @@
+;;; dired.el --- My dired preferences -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; File management in Emacs, if learned and configured properly, should be
+;; capable to reduce my dependency on the terminal.
+
+;;; Code:
+
+;; TODO: Ensure sorting in dired is by type.
+
+;; TODO: Rename wpc-dired.el to file-management.el
+
+(progn
+  (require 'dired)
+  (setq dired-recursive-copies 'always
+        dired-recursive-deletes 'top
+        dired-dwim-target t)
+  (general-define-key
+   :keymaps 'dired-mode-map
+   :states 'normal
+   "s" nil
+   "q" (lambda () (interactive) (kill-buffer nil))
+   "c" #'find-file
+   "f" #'wpc/find-file
+   "-" (lambda () (interactive) (find-alternate-file "..")))
+  (general-add-hook 'dired-mode-hook
+                    (list (enable dired-hide-details-mode)
+                          #'auto-revert-mode)))
+
+(progn
+  (require 'locate)
+  (general-define-key
+   :keymaps 'locate-mode-map
+   :states 'normal
+   "o" #'dired-display-file))
+
+(provide 'wpc-dired)
+;;; wpc-dired.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-docker.el b/configs/shared/.emacs.d/wpc/packages/wpc-docker.el
index 270eaec6fe..270eaec6fe 100644
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-docker.el
+++ b/configs/shared/.emacs.d/wpc/packages/wpc-docker.el
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-elixir.el b/configs/shared/.emacs.d/wpc/packages/wpc-elixir.el
index fd3c178eba..e64abe70fc 100644
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-elixir.el
+++ b/configs/shared/.emacs.d/wpc/packages/wpc-elixir.el
@@ -7,9 +7,7 @@
 ;;; Code:
 (use-package elixir-mode
   :config
-  (general-add-hook 'elixir-mode-hook
-                    (lambda ()
-                      (add-hook 'before-save-hook #'elixir-format nil t))))
+  (add-hook-before-save 'elixir-mode-hook #'elixir-format))
 
 (provide 'wpc-elixir)
 ;;; wpc-elixir.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-flycheck.el b/configs/shared/.emacs.d/wpc/packages/wpc-flycheck.el
index d7bb834a62..d7bb834a62 100644
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-flycheck.el
+++ b/configs/shared/.emacs.d/wpc/packages/wpc-flycheck.el
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-haskell.el b/configs/shared/.emacs.d/wpc/packages/wpc-haskell.el
index 6fc98b31e7..e8ab16e585 100644
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-haskell.el
+++ b/configs/shared/.emacs.d/wpc/packages/wpc-haskell.el
@@ -16,7 +16,7 @@
            ("<>"        . "⊕"))))
     (dolist (item m-symbols) (add-to-list 'haskell-font-lock-symbols-alist item)))
   (setq haskell-font-lock-symbols t)
-  (add-hook 'before-save-hook #'haskell-align-imports))
+  (add-hook-before-save 'haskell-mode #'haskell-align-imports))
 
 ;; LSP support
 (use-package lsp-haskell
diff --git a/configs/shared/.emacs.d/wpc/packages/wpc-java.el b/configs/shared/.emacs.d/wpc/packages/wpc-java.el
new file mode 100644
index 0000000000..4f33ba962e
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/packages/wpc-java.el
@@ -0,0 +1,42 @@
+;;; wpc-java.el --- Java configuration -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; When life gets you down, and you find yourself writing Java, remember: at
+;; least you're using Emacs.
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Dependencies
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'prelude)
+(require 'macros)
+
+(prelude/assert
+ (prelude/executable-exists? "google-java-format"))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Configuration
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; TODO: Troubleshoot why this isn't running.
+(add-hook-before-save
+ 'java-mode-hook
+ (lambda ()
+   (call-interactively
+    #'google-java-format)))
+
+(add-hook 'java-mode-hook
+          (lambda ()
+            (setq c-basic-offset 2
+                  tab-width 2)))
+
+;; TODO: Figure out whether I should use this or google-emacs.
+;; (use-package lsp-java
+;;   :config
+;;   (add-hook 'java-mode-hook #'lsp))
+
+(provide 'wpc-java)
+;;; wpc-java.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-javascript.el b/configs/shared/.emacs.d/wpc/packages/wpc-javascript.el
index d341c2b580..b55e03e00c 100644
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-javascript.el
+++ b/configs/shared/.emacs.d/wpc/packages/wpc-javascript.el
@@ -3,6 +3,9 @@
 
 ;;; Commentary:
 ;; This module hosts my Javascript tooling preferences
+;;
+;; Depends
+;; - yarn global add prettier
 
 ;;; Code:
 
@@ -16,14 +19,6 @@
   "All of the commonly user hooks for frontend development.")
 
 
-;; Helper functions
-(defun wpc/insert-flow-annotation ()
-  "Insert a flow type annotation to the beginning of a buffer."
-  (interactive)
-  (save-excursion
-    (goto-char (point-min))
-    (insert "// @flow\n")))
-
 ;; frontend indentation settings
 (setq js-indent-level 2
       css-indent-offset 2)
@@ -38,12 +33,6 @@
   :config
   (general-add-hook wpc/js-hooks #'add-node-modules-path))
 
-(use-package flow-minor-mode
-  :requires evil-leader
-  :config
-  (general-add-hook wpc/js-hooks #'flow-minor-mode)
-  (evil-leader/set-key-for-mode 'rjsx-mode "F" #'wpc/insert-flow-annotation))
-
 (use-package web-mode
   :mode "\\.html\\'"
   :config
@@ -51,22 +40,6 @@
   (setq web-mode-code-indent-offset 2)
   (setq web-mode-markup-indent-offset 2))
 
-;; Shouldn't need this once LSP is setup properly
-;; (use-package company-flow
-;;   :after (company)
-;;   :config
-;;   (add-to-list 'company-flow-modes 'rjsx-mode)
-;;   (add-to-list 'company-backends 'company-flow))
-
-;; Shouldn't need this once LSP is setup properly
-;; (use-package flycheck-flow
-;;   :after (flycheck)
-;;   :config
-;;   (flycheck-add-mode 'javascript-flow 'rjsx-mode)
-;;   (flycheck-add-mode 'javascript-flow 'flow-minor-mode)
-;;   (flycheck-add-mode 'javascript-eslint 'flow-minor-mode)
-;;   (flycheck-add-next-checker 'javascript-flow 'javascript-eslint))
-
 ;; JSX highlighting
 (use-package rjsx-mode
   :mode "\\.js\\'"
diff --git a/configs/shared/.emacs.d/wpc/packages/wpc-keybindings.el b/configs/shared/.emacs.d/wpc/packages/wpc-keybindings.el
new file mode 100644
index 0000000000..fb9c78f0e7
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/packages/wpc-keybindings.el
@@ -0,0 +1,206 @@
+;;; keybindings.el --- My Evil preferences -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; This module hosts my Evil preferences
+;;
+;; Wish List:
+;; - drop support for `evil-leader' library in favor of `general.el'
+;; - restore support for concise (n <kbd> <function>) instead of `general-mmap'
+;; - restore support for `general-unbind'
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Packages
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; This may be contraversial, but I never use the prefix key, and I'd prefer to
+;; have to bound to the readline function that deletes the entire line.
+(general-unbind "C-u")
+
+(use-package evil
+  :init
+  ;; Should remove the warning messages on init.
+  (setq evil-want-integration t)
+  ;; TODO: Troubleshoot why this binding causes the following warning:
+  ;; "Warning (evil-collection): `evil-want-keybinding' was set to nil but not
+  ;; before loading evil."
+  (setq evil-want-keybinding nil)
+  (general-evil-setup)
+  :config
+  ;; Ensure that evil's command mode behaves with readline bindings.
+  (general-define-key
+   :keymaps 'evil-ex-completion-map
+   "C-a" #'move-beginning-of-line
+   "C-e" #'move-end-of-line
+   "C-k" #'kill-line
+   "C-u" #'evil-delete-whole-line
+   "C-v" #'evil-paste-after
+   "C-d" #'delete-char
+   "C-f" #'forward-char
+   "M-b" #'backward-word
+   "M-f" #'forward-word
+   "M-d" #'kill-word
+   "M-DEL" #'backward-kill-word
+   "C-b" #'backward-char)
+  ;; TODO: Ensure all of my custom keybindings end up in a single map that is
+  ;; easy to enable or disable.
+  (general-mmap
+    :keymaps 'override
+    "RET" #'evil-goto-line
+    "H"   #'evil-first-non-blank
+    "L"   #'evil-end-of-line
+    "_"   #'ranger
+    "-"   #'dired-jump
+    "sl"  #'wpc/evil-window-vsplit-right
+    "sh"  #'evil-window-vsplit
+    "sk"  #'evil-window-split
+    "sj"  #'wpc/evil-window-split-down)
+  (general-nmap
+    :keymaps 'override
+    "gd" #'xref-find-definitions
+    ;; Wrapping `xref-find-references' in the `let' binding to prevent xref from
+    ;; prompting.  There are other ways to handle this variable, such as setting
+    ;; it globally with `setq' or buffer-locally with `setq-local'.  For now, I
+    ;; prefer setting it with `let', which should bind it in the dynamic scope
+    ;; for the duration of the `xref-find-references' function call.
+    "gx" (lambda ()
+           (interactive)
+           (let ((xref-prompt-for-identifier nil))
+             (call-interactively #'xref-find-references))))
+  (general-unbind 'motion "M-." "C-p")
+  (general-unbind 'normal "s"   "M-." "C-p" "C-n")
+  (general-unbind 'insert "C-v" "C-d" "C-a" "C-e" "C-n" "C-p" "C-k")
+  (setq evil-symbol-word-search t)
+  (evil-mode 1))
+
+;; evil keybindings
+(use-package evil-collection
+  :after (evil)
+  :config
+  (evil-collection-init))
+
+;; expose a leader key
+(use-package evil-leader
+  :after (evil)
+  :config
+  (global-evil-leader-mode 1)
+  (evil-leader/set-leader "<SPC>")
+  (evil-leader/set-key
+    "i"   #'counsel-semantic-or-imenu
+    "I"   #'ibuffer
+    "hk"  #'helpful-callable
+    "hf"  #'helpful-function
+    "hm"  #'helpful-macro
+    "hc"  #'helpful-command
+    "hk"  #'helpful-key
+    "hv"  #'helpful-variable
+    "hp"  #'helpful-at-point
+    "s"   #'flyspell-mode
+    "S"   #'sort-lines
+    "a"   #'wpc-terminal/toggle
+    "="   #'align
+    "p"   #'flycheck-previous-error
+    "f"   #'wpc/find-file
+    "n"   #'flycheck-next-error
+    "N"   #'smerge-next
+    "b"   #'ivy-switch-buffer
+    "W"   #'balance-windows
+    "gs"  #'magit-status
+
+    "es" #'wpc/create-snippet
+    ;; TODO: Replace with `macros/ilambda' when that is working again.
+    "ev" (lambda () (interactive) (wpc/find-file-split "~/.config/nvim/init.vim"))
+    "ee" (lambda () (interactive) (wpc/find-file-split "~/.emacs.d/init.el"))
+    "ez" (lambda () (interactive) (wpc/find-file-split "~/.zshrc"))
+    "ea" (lambda () (interactive) (wpc/find-file-split "~/aliases.zsh"))
+    "ef" (lambda () (interactive) (wpc/find-file-split "~/functions.zsh"))
+    "el" (lambda () (interactive) (wpc/find-file-split "~/variables.zsh"))
+    "ex" (lambda () (interactive) (wpc/find-file-split "~/.Xresources"))
+    "ei" (lambda () (interactive) (wpc/find-file-split "~/.config/i3/config.shared"))
+    "em" (lambda () (interactive) (wpc/find-file-split "~/.tmux.conf"))
+
+    "l"  #'locate
+    "L"  #'list-packages
+    "B"  #'magit-blame
+    "w"  #'save-buffer
+    "r"  #'wpc/evil-replace-under-point
+    "R"  #'deadgrep))
+
+;; create comments easily
+(use-package evil-commentary
+  :after (evil)
+  :config
+  (evil-commentary-mode))
+
+;; evil surround
+(use-package evil-surround
+  :after (evil)
+  :config
+  (global-evil-surround-mode 1))
+
+;; I expect in insert mode:
+;; C-a: beginning-of-line
+;; C-e: end-of-line
+;; C-b: backwards-char
+;; C-f: forwards-char
+
+;; TODO: Move these KBD constants to kbd.el.
+
+(defconst wpc/up-kbds
+  '("C-p" "C-k" "<backtab>" "<up>")
+  "The keybindings that I expect to work for moving upwards in lists.")
+
+(defconst wpc/down-kbds
+  '("C-n" "C-j" "<tab>" "<down>")
+  "The keybindings that I expect to work for moving downwards in lists.")
+
+(defconst wpc/left-kbds
+  '("C-b" "<left>")
+  "The keybindings that I expect to move leftwards in insert-like modes.")
+
+(defconst wpc/right-kbds
+  '("C-f" "<right>")
+  "The keybindings that I expect to move rightwards in insert-like modes.")
+
+(defun wpc/ensure-kbds (_ignore)
+  "Try to ensure that my keybindings retain priority over other minor modes."
+  (unless (eq (caar minor-mode-map-alist) 'wpc/kbds-minor-mode)
+    (let ((mykbds (assq 'wpc/kbds-minor-mode minor-mode-map-alist)))
+      (assq-delete-all 'wpc/kbds-minor-mode minor-mode-map-alist)
+      (add-to-list 'minor-mode-map-alist mykbds))))
+
+;; Custom minor mode that ensures that my kbds are available no matter which
+;; major or minor modes are active.
+(add-hook 'after-load-functions #'wpc/ensure-kbds)
+
+;; TODO: Prefer using general and 'override maps to implement this.
+(defvar wpc/kbds
+  (let ((map (make-sparse-keymap)))
+    (bind-keys :map map
+               ("M-q"            . delete-window)
+               ("<s-return>"     . toggle-frame-fullscreen)
+               ("M-h"            . windmove-left)
+               ("M-l"            . windmove-right)
+               ("M-k"            . windmove-up)
+               ("M-j"            . windmove-down)
+               ("M-q"            . delete-window))
+    map)
+  "William Carroll's keybindings that should have the highest precedence.")
+
+(define-minor-mode wpc/kbds-minor-mode
+  "A minor mode so that my key settings override annoying major modes."
+  :init-value t
+  :lighter " wpc/kbds"
+  :keymap wpc/kbds)
+
+;; allow jk to escape
+(use-package key-chord
+  :after (evil)
+  :config
+  (key-chord-mode 1)
+  (key-chord-define evil-insert-state-map "jk" 'evil-normal-state))
+
+(provide 'wpc-keybindings)
+;;; wpc-keybindings.el ends here
diff --git a/configs/shared/.emacs.d/wpc/packages/wpc-lisp.el b/configs/shared/.emacs.d/wpc/packages/wpc-lisp.el
new file mode 100644
index 0000000000..553dff1acb
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/packages/wpc-lisp.el
@@ -0,0 +1,114 @@
+;;; lisp.el --- Generic LISP preferences -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;; parent (up)
+;; child (down)
+;; prev-sibling (left)
+;; next-sibling (right)
+
+;;; Code:
+
+(defconst wpc/lisp-mode-hooks
+  '(lisp-mode-hook
+    emacs-lisp-mode-hook
+    clojure-mode-hook
+    clojurescript-mode-hook
+    racket-mode-hook)
+  "List of LISP modes.")
+
+(use-package racket-mode
+  :config
+  (general-define-key
+   :keymaps 'racket-mode-map
+   :states 'normal
+   :prefix "<SPC>"
+   "x" #'racket-send-definition)
+  (general-define-key
+   :keymaps 'racket-mode-map
+   :states 'normal
+   :prefix "<SPC>"
+   "X" #'racket-run)
+  (general-define-key
+   :keymaps 'racket-mode-map
+   :states 'normal
+   :prefix "<SPC>"
+   "d" #'racket-describe)
+  (setq racket-program "~/.nix-profile/bin/racket"))
+
+(use-package lispyville
+  :init
+  (defconst lispyville-key-themes
+    '(c-w
+      operators
+      text-objects
+      ;; Disabling this because I don't enjoy the way it moves around comments.
+      ;; atom-motions
+      prettify
+      commentary
+      slurp/barf-cp
+      wrap
+      additional
+      additional-insert
+      additional-wrap
+      escape)
+    "All available key-themes in Lispyville.")
+  :config
+  (general-add-hook wpc/lisp-mode-hooks #'lispyville-mode)
+  (lispyville-set-key-theme lispyville-key-themes)
+  (progn
+    ;;
+    (general-define-key
+     :keymaps 'lispyville-mode-map
+     :states 'motion
+     ;; first unbind
+     "M-h" nil
+     "M-l" nil)
+    (general-define-key
+     :keymaps 'lispyville-mode-map
+     :states 'normal
+     ;; first unbind
+     "M-j" nil
+     "M-k" nil
+     ;; second rebind
+     ;; TODO: Rebind to something that doesn't conflict with window resizing.
+     ;; "C-M-h" #'lispyville-drag-backward
+     ;; "C-M-l" #'lispyville-drag-forward
+     )))
+
+;; deletes all bindings of f->kbd
+;; binds kbd->
+;; (kbd/bind-function->key
+;;  :keymap 'lispyville-mode-map
+;;  :states 'motion
+;;  #'lispyville-drag-backward "H")
+
+;; Elisp
+(use-package elisp-slime-nav
+  :config
+  (general-add-hook 'emacs-lisp-mode #'ielm-mode))
+
+;; TODO: Should I be using `general-define-key' or `evil-leader/set-key'?  My
+;; gut say `general-define-key'.
+(general-define-key
+ :keymaps 'emacs-lisp-mode-map
+ :states 'normal
+ :prefix "<SPC>"
+ "x" #'eval-defun)
+
+(general-define-key
+ :keymaps 'emacs-lisp-mode-map
+ :states 'normal
+ :prefix "<SPC>"
+ "X" #'eval-buffer)
+
+(general-define-key
+ :keymaps 'emacs-lisp-mode-map
+ :states 'normal
+ :prefix "<SPC>"
+ "d" (lambda ()
+       (interactive)
+       (with-current-buffer (current-buffer)
+         (helpful-function (symbol-at-point)))))
+
+(provide 'wpc-lisp)
+;;; wpc-lisp.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-misc.el b/configs/shared/.emacs.d/wpc/packages/wpc-misc.el
index e60b973233..3ddfe0b3e4 100644
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-misc.el
+++ b/configs/shared/.emacs.d/wpc/packages/wpc-misc.el
@@ -6,25 +6,33 @@
 
 ;;; Code:
 
+;; Display time in the modeline
+;; TODO: Save preferred date format strings and cycle through them since I waver
+;; about which is my favorite.
+(setq display-time-format "%R %a %d %b [%U of 52 weeks]")
+(display-time-mode 1)
+
 ;; disable custom variable entries from being written to ~/.emacs.d/init.el
 (setq custom-file "~/.emacs.d/custom.el")
 (load custom-file 'noerror)
 
 ;; integrate Emacs with X11 clipboard
-(setq x-select-enable-primary t)
-(setq x-select-enable-clipboard t)
+(setq select-enable-primary t)
+(setq select-enable-clipboard t)
 (general-def 'insert
-  "s-v" #'x-clipboard-yank
-  "C-S-v" #'x-clipboard-yank)
+  "s-v" #'clipboard-yank
+  "C-S-v" #'clipboard-yank)
 
 ;; transparently edit compressed files
 (auto-compression-mode t)
 
 ;; autowrap when over the fill-column
-(add-hook 'fundamental-mode-hook 'turn-on-auto-fill)
+(setq-default auto-fill-function #'do-auto-fill)
 
 ;; link to Emacs source code
-(setq find-function-C-source-directory "~/programming/emacs/src")
+;; TODO: Update this link.
+(setq find-function-C-source-directory
+      "~/Dropbox/programming/emacs/src")
 
 ;; change emacs prompts from "yes or no" -> "y or n"
 (fset 'yes-or-no-p 'y-or-n-p)
@@ -42,27 +50,28 @@
 ;; disable company mode when editing markdown
 ;; TODO: move this out of wpc-misc.el and into a later file to call
 ;; `(disable company-mode)'
-(add-hook 'markdown-mode-hook (company-mode -1))
-
-;; create file bookmarks
-(set-register ?e '(file . "~/.emacs.d/wpc/packages"))
-(set-register ?n '(file . "~/programming/nixify/configuration.nix"))
-(set-register ?d '(file . "~/Dropbox/dotfiles"))
-(set-register ?s '(file . "~/.slate.js"))
-(set-register ?D '(file . "~/Dropbox"))
-(set-register ?o '(file . "~/Dropbox/org/")) ;; TODO: change this to `(getenv "ORG_DIRECTORY")'
-
-(set-register ?v '(file . "~/.config/nvim/init.vim"))
-(set-register ?e '(file . "~/.emacs.d/init.el"))
-(set-register ?z '(file . "~/.zshrc"))
-(set-register ?a '(file . "~/aliases.zsh"))
-(set-register ?f '(file . "~/functions.zsh"))
-(set-register ?l '(file . "~/variables.zsh"))
-(set-register ?x '(file . "~/.Xresources"))
-(set-register ?i '(file . "~/.config/i3/config.shared"))
-(set-register ?m '(file . "~/.tmux.conf"))
-
-(set-register ?p `(file . ,wpc/current-project))
+(use-package markdown-mode
+  :config
+  ;; TODO: Add assertion that pandoc is installed and it is accessible from
+  ;; Emacs.
+  (setq markdown-command "pandoc")
+  (setq markdown-split-window-direction 'right)
+  (add-hook 'markdown-mode-hook #'markdown-live-preview-mode))
+
+;; Required by some google-emacs package commands.
+(use-package deferred)
+
+;; git integration
+(use-package magit)
+
+;; http
+(use-package request)
+
+;; perl-compatible regular expressions
+(use-package pcre2el)
+
+;; alternative to help
+(use-package helpful)
 
 ;; persist history etc b/w Emacs sessions
 (setq desktop-save 'if-exists)
@@ -94,7 +103,7 @@
       create-lockfiles nil)
 
 ;; ensure code wraps at 80 characters by default
-(setq-default fill-column wpc/fill-column)
+(setq-default fill-column constants/fill-column)
 
 (put 'narrow-to-region 'disabled nil)
 
@@ -108,59 +117,36 @@
 (setq vc-follow-symlinks t)
 
 ;; fullscreen settings
-(setq ns-use-native-fullscreen nil)
+(defvar ns-use-native-fullscreen nil)
 
 ;; auto-close parens, brackets, quotes
 (electric-pair-mode 1)
 
-(use-package oauth2
-  :init
-  ;; necessary to remove warnings: https://emacs.stackexchange.com/questions/37036/where-are-these-variables-defined-bytecomp-warnings
-  (defvar url-http-extra-headers ())
-  (defvar oauth--token-data ())
-  (defvar url-callback-function ())
-  (defvar url-callback-arguments ()))
-
-; (use-package smex
-;   :config
-;   (general-define-key "M-x" #'smex)
-;   (general-add-hook 'ido-setup-hook #'wpc/bind-ido-keys)
-;   (smex-initialize))
-
-(use-package flx-ido
-  :after (smex)
-  :config
-  (flx-ido-mode 1)
-  (setq ido-enable-flex-matching t
-        ido-use-faces nil))
-
-(use-package swiper
-  :config
-  (general-define-key
-    "C-s" #'swiper
-    "C-r" #'swiper))
-
 (use-package yasnippet
   :config
   (yas-global-mode 1))
 
-(use-package ace-window
-  :config
-  (general-define-key "C-x o" #'ace-window)
-  (setq aw-keys '(?a ?s ?d ?f ?j ?k ?k ?\;)))
-
 (use-package projectile
   :config
   (projectile-mode t))
 
-(use-package counsel
+(use-package deadgrep
   :config
-  (defun wpc/counsel-git-grep ()
-    (interactive)
-    (let ((maybe-symbol (wpc/string-symbol-at-point)))
-      (if (string= maybe-symbol "nil")
-          (counsel-git-grep)
-        (counsel-git-grep nil maybe-symbol)))))
+  (general-define-key
+   :keymaps 'deadgrep-mode-map
+   :states 'normal
+   "o" #'deadgrep-visit-result-other-window)
+  (advice-add
+   'deadgrep--format-command
+   :filter-return
+   (lambda (cmd)
+     (replace-regexp-in-string
+      "^rg " "rg --hidden " cmd))))
+
+;; TODO: Do I need this when I have swiper?
+(use-package counsel)
+
+(use-package counsel-projectile)
 
 ;; search Google, Stackoverflow from within Emacs
 (use-package engine-mode
@@ -172,34 +158,52 @@
     "https://stackoverflow.com/search?q=%s"
     :keybinding "s"))
 
+;; EGlot (another LSP client)
+(use-package eglot)
+
+;; Microsoft's Debug Adapter Protocol (DAP)
+(use-package dap-mode
+  :after lsp-mode
+  :config
+  (dap-mode 1)
+  (dap-ui-mode 1))
+
 ;; Microsoft's Language Server Protocol (LSP)
 (use-package lsp-ui
   :config
   (add-hook 'lsp-mode-hook #'lsp-ui-mode))
+
 (use-package company-lsp
   :config
   (push 'company-lsp company-backends))
 
+;; Wilfred/suggest.el - Tool for discovering functions basesd on declaring your
+;; desired inputs and outputs.
+(use-package suggest)
+
+;; Malabarba/paradox - Enhances the `list-packages' view.
+(use-package paradox
+  :config
+  (paradox-enable))
+
+;; TODO: Consider supporting a wpc-elisp.el package for Elisp tooling.
+;; The following functions are quite useful for Elisp development:
+;; - `emr-el-find-unused-definitions'
+(use-package emr
+  :config
+  (define-key prog-mode-map (kbd "M-RET") #'emr-show-refactor-menu))
+
 (defun wpc/frame-name ()
   "Return the name of the current frame."
   (frame-parameter nil 'name))
 
-;; Having difficulty starting the server using systemd or calling
-;; `emacs --daemon' in ~/.profile, ~/.xsessionrc, and similar files.
-
-;; systemd has issues syncing the socket-name, so it becomes messy. I also
-;; experienced strange initialization where things like wpc-org and other
-;; modules wouldn't get loaded.
-;;
 ;; Even if I resolved the socket-name resolution issue, I couldn't find an
 ;; elegant way to reuse GUI frames. GUIs for me have the advantage of supporting
 ;; True Color, support additional keys for KBDs (i.e. super), and aren't limited
 ;; by the terminal for rendering certain things.
-;;
-;; For these reasons, it seems preferable to start the server from here. I'm
-;; considering starting emacs in my ~/.xsessionrc so that the server will be
-;; running after X initializes.
-(server-start)
+(require 'server)
+(when (not (server-running-p))
+  (server-start))
 
 (provide 'wpc-misc)
 ;;; wpc-misc.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-nix.el b/configs/shared/.emacs.d/wpc/packages/wpc-nix.el
index af439c442d..af439c442d 100644
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-nix.el
+++ b/configs/shared/.emacs.d/wpc/packages/wpc-nix.el
diff --git a/configs/shared/.emacs.d/wpc/packages/wpc-ocaml.el b/configs/shared/.emacs.d/wpc/packages/wpc-ocaml.el
new file mode 100644
index 0000000000..3b898d32be
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/packages/wpc-ocaml.el
@@ -0,0 +1,51 @@
+;;; wpc-ocaml.el --- My OCaml preferences -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Tooling support for OCaml development.
+;;
+;; Dependencies:
+;; - `opam install tuareg`
+;; - `opam install merlin`
+;; - `opam install user-setup`
+;; - `opam install ocamlformat`
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Dependencies
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'prelude)
+(require 'f)
+
+(prelude/assert
+ (prelude/executable-exists? "opam"))
+
+(defvar opam-installs "~/.opam/4.08.0/share/emacs/site-lisp"
+  "Path to the Ocaml PAckage Manager installations.")
+
+(defvar opam-user-setup "~/.emacs.d/opam-user-setup.el"
+  "File for the OPAM Emacs integration.")
+
+(prelude/assert
+ (f-file? opam-user-setup))
+
+(prelude/assert
+ (f-dir? opam-installs))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Configuration
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(use-package tuareg
+  :config
+  (add-hook-before-save 'tuareg-mode-hook #'ocamlformat-before-save))
+
+;; ocamlformat
+(require 'opam-user-setup "~/.emacs.d/opam-user-setup.el")
+(require 'ocamlformat)
+(add-to-list 'load-path opam-installs)
+
+(provide 'wpc-ocaml)
+;;; wpc-ocaml.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-org.el b/configs/shared/.emacs.d/wpc/packages/wpc-org.el
index 03b52ba272..d1d981a3ea 100644
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-org.el
+++ b/configs/shared/.emacs.d/wpc/packages/wpc-org.el
@@ -31,7 +31,7 @@
          "* TODO %? ")
 
         ))
-(evil-set-initial-state 'org-mode 'insert)
+(evil-set-initial-state 'org-mode 'normal)
 
 (use-package org
   :config
@@ -43,6 +43,7 @@
            "l" #'org-store-link
            "a" #'org-agenda
            "c" #'org-capture)
+  (setq org-startup-folded nil)
   (setq org-todo-keywords
         '((sequence "TODO" "BLOCKED" "DONE")))
   (setq org-default-notes-file (f-join (getenv "ORG_DIRECTORY") "notes.org"))
@@ -61,15 +62,16 @@
 
 ;; i3, `org-mode' integration
 ;; Heavily influenced by: https://somethingsomething.us/post/i3_and_orgmode/
+;; TODO: Consider generalizing this since we're using "floating".
 (defadvice org-switch-to-buffer-other-window
     (after supress-window-splitting activate)
   "Delete the extra window if we're in a capture frame."
-  (if (equal "org-protocol-capture" (wpc/frame-name))
+  (if (equal "floating" (wpc/frame-name))
       (delete-other-windows)))
 
 (add-hook 'org-capture-after-finalize-hook
           (lambda ()
-            (when (equal "org-protocol-capture" (wpc/frame-name))
+            (when (equal "floating" (wpc/frame-name))
                 (delete-frame))))
 
 (provide 'wpc-org)
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-package.el b/configs/shared/.emacs.d/wpc/packages/wpc-package.el
index 6f43330ecb..6f43330ecb 100644
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-package.el
+++ b/configs/shared/.emacs.d/wpc/packages/wpc-package.el
diff --git a/configs/shared/.emacs.d/wpc/packages/wpc-python.el b/configs/shared/.emacs.d/wpc/packages/wpc-python.el
new file mode 100644
index 0000000000..d0c6dd0d3e
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/packages/wpc-python.el
@@ -0,0 +1,17 @@
+;;; wpc-python.el --- Python configuration -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; My Python configuration settings
+;;
+;; Depends
+;; - `apti yapf`
+
+;;; Code:
+
+(use-package py-yapf
+  :config
+  (add-hook 'python-mode-hook #'py-yapf-enable-on-save))
+
+(provide 'wpc-python)
+;;; wpc-python.el ends here
diff --git a/configs/shared/.emacs.d/wpc/packages/wpc-reasonml.el b/configs/shared/.emacs.d/wpc/packages/wpc-reasonml.el
new file mode 100644
index 0000000000..909c33d121
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/packages/wpc-reasonml.el
@@ -0,0 +1,29 @@
+;;; wpc-reasonml.el --- My ReasonML preferences -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Tooling support for ReasonML development.
+;;
+;; Dependencies:
+;; - `opam install tuareg`
+;; - `opam install merlin`
+;; - `opam install user-setup`
+;; - `opam install ocamlformat`
+
+;;; Code:
+
+;; ReasonML configuration
+(use-package reason-mode
+  :config
+  (add-hook-before-save 'reason-mode-hook #'refmt-before-save))
+
+;; ReasonML LSP configuration
+(lsp-register-client
+ (make-lsp-client :new-connection (lsp-stdio-connection (f-full "~/programming/dependencies/reason-language-server"))
+                  :major-modes '(reason-mode)
+                  :notification-handlers (ht ("client/registerCapability" 'ignore))
+                  :priority 1
+                  :server-id 'reason-ls))
+
+(provide 'wpc-reasonml)
+;;; wpc-reasonml.el ends here
diff --git a/configs/shared/.emacs.d/wpc/packages/wpc-rust.el b/configs/shared/.emacs.d/wpc/packages/wpc-rust.el
new file mode 100644
index 0000000000..fafa27d18c
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/packages/wpc-rust.el
@@ -0,0 +1,34 @@
+;;; wpc-rust.el --- Support Rust language -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Supports my Rust work.
+;;
+;; Dependencies:
+;; - `rustup`
+;; - `rustup component add rust-src`
+;; - `rustup toolchain add nightly && cargo +nightly install racer`
+
+
+;;; Code:
+(use-package racer
+  :config
+  (setq rust-sysroot (->> "~/.cargo/bin/rustc --print sysroot"
+                          shell-command-to-string
+                          s-trim-right))
+  (setq racer-rust-src-path (f-join rust-sysroot "lib/rustlib/src/rust/src"))
+  (add-hook 'racer-mode-hook #'eldoc-mode))
+
+(use-package rust-mode
+  :config
+  (add-hook 'rust-mode-hook #'racer-mode)
+  (add-hook-before-save 'rust-mode-hook #'rust-format-buffer)
+  (define-key rust-mode-map
+    (kbd "TAB")
+    #'company-indent-or-complete-common)
+  (define-key rust-mode-map
+    (kbd "M-d")
+    #'racer-describe))
+
+(provide 'wpc-rust)
+;;; wpc-rust.el ends here
diff --git a/configs/shared/.emacs.d/wpc/packages/wpc-shell.el b/configs/shared/.emacs.d/wpc/packages/wpc-shell.el
new file mode 100644
index 0000000000..14d0489030
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/packages/wpc-shell.el
@@ -0,0 +1,15 @@
+;;; wpc-shell.el --- POSIX Shell scripting support -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Helpers for my shell scripting. Includes bash, zsh, etc.
+
+;;; Code:
+
+(use-package flymake-shellcheck
+  :commands flymake-shellcheck-load
+  :init
+  (add-hook 'sh-mode-hook #'flymake-shellcheck-load))
+
+(provide 'wpc-shell)
+;;; wpc-shell.el ends here
diff --git a/configs/shared/.emacs.d/wpc/packages/wpc-terminal.el b/configs/shared/.emacs.d/wpc/packages/wpc-terminal.el
new file mode 100644
index 0000000000..c232bb85a7
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/packages/wpc-terminal.el
@@ -0,0 +1,70 @@
+;;; terminal.el --- My cobbled together terminal -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; My attempts at creating a sane Emacs terminal.  Most of this work was created
+;; before I discovered and fully adopted EXWM.  Prior to this, the appeal of
+;; having terminals inside of Emacs was appealing.  So appealing in fact that I
+;; was willing to work with inferior alternatives to non-Emacs terminals
+;; (e.g. `ansi-term') instead of GUI alternatives like `alacritty` because the
+;; productivity gains of having a terminal inside of Emacs might outweigh the
+;; shortcomings of that particular terminal.
+;;
+;; All of this changed, however, after discovering EXWM, since I can embed X11
+;; GUI windows inside of Emacs.  Therefore, most of this module is maintained
+;; for historical purposes.
+;;
+;; Benefits of `ansi-term':
+;; - Color scheme remains consistent between Emacs and terminal.
+;; - Same applies to my fonts.
+;;
+;; Downsides of `ansi-term':
+;; - Paging feels sluggish with programs like `cat` and `less`.
+;; - KBDs don't provide 100% coverage of what I expect from a terminal since
+;;   they were created to cooperate with Emacs.
+
+;;; Code:
+
+(require 'window)
+(require 'buffer)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Library
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; TODO: Model all open terminals within a dictionary.
+
+(defconst wpc-terminal/name
+  "wpc/terminal"
+  "The name of my terminal buffers.")
+
+(defun wpc-terminal/find-window ()
+  "Return a reference to an existing terminal window or nil."
+  (->> wpc-terminal/name
+       wpc/add-earmuffs
+       window/find))
+
+(defun wpc-terminal/find-buffer ()
+  "Return a reference to an existing terminal buffer."
+  (->> wpc-terminal/name
+       wpc/add-earmuffs
+       buffer/find))
+
+(defun wpc-terminal/find-or-create ()
+  "Find or create a terminal window."
+  (let ((buffer (wpc-terminal/find-buffer)))
+    (if buffer
+        (buffer/show buffer)
+      (ansi-term "/usr/bin/zsh" wpc-terminal/name))))
+
+;; TODO: Focus terminal after toggling it.
+(defun wpc-terminal/toggle ()
+  "Toggle a custom terminal session in Emacs."
+  (interactive)
+  (let ((window (wpc-terminal/find-window)))
+    (if window
+        (window/delete window)
+      (wpc-terminal/find-or-create))))
+
+(provide 'wpc-terminal)
+;;; wpc-terminal.el ends here
diff --git a/configs/shared/.emacs.d/wpc/packages/wpc-ui.el b/configs/shared/.emacs.d/wpc/packages/wpc-ui.el
new file mode 100644
index 0000000000..4c850e5b4b
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/packages/wpc-ui.el
@@ -0,0 +1,185 @@
+;;; wpc-ui.el --- Any related to the UI/UX goes here -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Hosts font settings, scrolling, color schemes.
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Dependencies
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'prelude)
+(require 'alist)
+(require 'wallpaper)
+(require 'fonts)
+(require 'themes)
+(require 'window-manager)
+(require 'device)
+(require 'laptop-battery)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Configuration
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; increase line height
+(setq-default line-spacing 4)
+
+;; Ensure that buffers update when their contents change on disk.
+(global-auto-revert-mode t)
+
+;; smooth scrolling settings
+(setq scroll-step 1
+      scroll-conservatively 10000)
+
+;; clean up modeline
+(use-package diminish
+  :config
+  (diminish 'emacs-lisp-mode "elisp")
+  (diminish 'evil-commentary-mode)
+  (diminish 'flycheck-mode)
+  (diminish 'auto-revert-mode)
+  (diminish 'which-key-mode)
+  (diminish 'yas-minor-mode)
+  (diminish 'lispyville-mode)
+  (diminish 'undo-tree-mode)
+  (diminish 'company-mode)
+  (diminish 'projectile-mode)
+  (diminish 'eldoc-mode)
+  ;; This is how to diminish `auto-fill-mode'.
+  (diminish 'auto-fill-function)
+  (diminish 'counsel-mode)
+  (diminish 'ivy-mode))
+
+;; disable startup screen
+(setq inhibit-startup-screen t)
+
+;; disable toolbar
+(tool-bar-mode -1)
+
+;; TODO: Re-enable `linum-mode' when I figure out why the theming is so ugly.
+;; enable line numbers
+;; (general-add-hook '(prog-mode-hook
+;;                     text-mode-hook
+;;                     conf-mode-hook)
+;;                   (enable linum-mode))
+
+;; set default buffer for Emacs
+(setq initial-buffer-choice constants/current-project)
+
+;; integration with wpgtk (in vendor directory)
+;; TODO: Re-enable this when base16-wpgtk are looking better.
+;; (require 'wpgtk-theme)
+
+;; base-16 themes to integrate with wpgtk
+;; (use-package base16-theme
+;;   :config
+;;   (require 'wpgtk)
+;;   (colorscheme/set 'base16-wpgtk))
+
+;; premium Emacs themes
+(use-package doom-themes
+  :config
+  (setq doom-themes-enable-bold t
+        doom-themes-enable-italic t)
+  (doom-themes-visual-bell-config)
+  (doom-themes-org-config))
+
+;; file browsing
+(use-package neotree
+  :config
+  (global-set-key [f8] #'neotree-toggle))
+
+;; kbd discovery
+(use-package which-key
+  :config
+  (setq which-key-idle-delay 0.25)
+  (which-key-mode))
+
+;; completion framework
+(use-package ivy
+  ;; TODO: Restore behavior where `counsel' is used everywhere.
+  :config
+  (counsel-mode t)
+  (alist/set! #'counsel-M-x "" ivy-initial-inputs-alist)
+  ;; prefer using `helpful' variants
+  (progn
+    (setq counsel-describe-function-function #'helpful-callable)
+    (setq counsel-describe-variable-function #'helpful-variable))
+  (general-define-key
+   :keymaps 'ivy-minibuffer-map
+   ;; prev
+   "C-k" #'ivy-previous-line
+   "<backtab>" #'ivy-previous-line
+   ;; next
+   "C-j" #'ivy-next-line
+   "<tab>" #'ivy-next-line))
+
+(use-package ivy-prescient
+  :config
+  (ivy-prescient-mode 1)
+  (prescient-persist-mode 1))
+
+;; all-the-icons
+(use-package all-the-icons
+  :config
+  ;; Only run this once after installing.
+  ;; (all-the-icons-install-fonts)
+  )
+
+;; icons for Ivy
+(use-package all-the-icons-ivy
+  :after (ivy all-the-icons)
+  :config
+  (all-the-icons-ivy-setup))
+
+;; disable menubar
+(menu-bar-mode -1)
+(when (string-equal system-type "darwin")
+  (setq ns-auto-hide-menu-bar t))
+
+;; reduce noisiness of auto-revert-mode
+(setq auto-revert-verbose nil)
+
+;; highlight lines that are over 100 characters long
+(use-package whitespace
+  :config
+  (setq whitespace-line-column constants/fill-column)
+  (setq whitespace-style '(face lines-tail))
+  (add-hook 'prog-mode-hook #'whitespace-mode))
+
+;; rebalance emacs windows after splits are created
+;; (defadvice split-window-below (after rebalance-windows activate)
+;;   (balance-windows))
+;; (defadvice split-window-right (after rebalance-windows activate)
+;;   (balance-windows))
+;; (defadvice delete-window (after rebalance-window activate)
+;;   (balance-windows))
+
+;; dirname/filename instead of filename<dirname>
+(setq uniquify-buffer-name-style 'forward)
+
+;; highlight matching parens, brackets, etc
+(show-paren-mode 1)
+
+;; hide the scroll-bars in the GUI
+(scroll-bar-mode -1)
+
+;; GUI alerts in emacs
+(use-package alert
+  :commands (alert)
+  :config
+  (setq alert-default-style 'notifier))
+
+;; TODO: Should `device/work-laptop?' be a function or a constant that gets set
+;; during initialization?
+(when (device/work-laptop?)
+  (laptop-battery/display))
+
+;; Load a theme
+(->> (themes/random)
+     themes/set)
+
+(provide 'wpc-ui)
+;;; wpc-ui.el ends here
diff --git a/configs/shared/.emacs.d/wpc/playback.el b/configs/shared/.emacs.d/wpc/playback.el
new file mode 100644
index 0000000000..9ab1e30ef0
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/playback.el
@@ -0,0 +1,25 @@
+;;; playback.el --- Control playback with Elisp -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; As you know, my whole universe is turning Elisp, so this should too!
+
+;;; Code:
+
+(defun playback/prev ()
+  "Move to the previous song."
+  (interactive)
+  (shell-command "playerctl previous"))
+
+(defun playback/next ()
+  "Move to the next song."
+  (interactive)
+  (shell-command "playerctl next"))
+
+(defun playback/play-pause ()
+  "Play or pause the current song."
+  (interactive)
+  (shell-command "playerctl play-pause"))
+
+(provide 'playback)
+;;; playback.el ends here
diff --git a/configs/shared/.emacs.d/wpc/polymorphism.el b/configs/shared/.emacs.d/wpc/polymorphism.el
new file mode 100644
index 0000000000..09045f7fb2
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/polymorphism.el
@@ -0,0 +1,37 @@
+;;; polymorphism.el --- Sketching my ideas for polymorphism in Elisp -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Once again: modelled after Elixir.
+
+;;; Code:
+
+;; More sketches of Elisp polymorphism initiative.
+;;
+;; Two macros:
+;; - `defprotocol'
+;; - `definstance'
+;;
+;; Is it just a coincidence that these two macros have the same number of
+;;characters or is that fate?  I say fate.
+;;
+;; (defprotocol monoid
+;;   :functions (empty concat))
+;;
+;; (definstance monoid vector
+;;   :empty
+;;   (lambda () [])
+;;   :concat
+;;   #'vector/concat)
+;;
+;; More sketching...
+;; (defun monoid/empty ()
+;;   "Sketch."
+;;   (funcall #'(,(monoid/classify)/empty)))
+;; (defun monoid/concat (xs)
+;;   "Sketch."
+;;   (apply #'(,(monoid/classify)/concat) args))
+
+
+(provide 'polymorphism)
+;;; polymorphism.el ends here
diff --git a/configs/shared/.emacs.d/wpc/prelude.el b/configs/shared/.emacs.d/wpc/prelude.el
new file mode 100644
index 0000000000..fb45962789
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/prelude.el
@@ -0,0 +1,122 @@
+;;; prelude.el --- My attempt at augmenting Elisp stdlib -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Some of these ideas are scattered across other modules like `fs',
+;; `string-functions', etc.  I'd like to keep everything modular.  I still don't
+;; have an answer for which items belond in `misc'; I don't want that to become
+;; a dumping grounds.  Ideally this file will `require' all other modules and
+;; define just a handful of functions.
+
+;; TODO: Consider removing all dependencies from prelude.el.
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Third-party libraries
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 's)
+(require 'dash)
+(require 'f)
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Libraries
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; TODO: Maybe don't globally import everything here.  Disable these and attepmt
+;; to reload Emacs to assess damage.
+(require 'string)
+(require 'list)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Utilities
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun prelude/to-string (x)
+  "Convert X to a string."
+  (format "%s" x))
+
+(defun prelude/inspect (&rest args)
+  "Message `ARGS' where ARGS are any type."
+  (->> args
+       (list/map #'prelude/to-string)
+       (apply #'string/concat)
+       message))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Assertions
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; TODO: Should I `throw' instead of `error' here?
+(defmacro prelude/assert (x)
+  "Errors unless X is t.
+These are strict assertions and purposely do not rely on truthiness."
+  (let ((as-string (prelude/to-string x)))
+    `(unless (equal t ,x)
+       (error (string/concat "Assertion failed: " ,as-string)))))
+
+(defmacro prelude/refute (x)
+  "Errors unless X is nil."
+  (let ((as-string (prelude/to-string x)))
+    `(unless (equal nil ,x)
+       (error (string/concat "Refutation failed: " ,as-string)))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Adapter functions
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun prelude/identity (x)
+  "Return X unchanged."
+  x)
+
+(defun prelude/const (x)
+  "Return a variadic lambda that will return X."
+  (lambda (&rest _) x))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Miscellaneous
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; TODO: Consider packaging these into a linum-color.el package.
+;; TODO: Generate the color used here from the theme.
+(defvar linum/safe? nil
+  "Flag indicating whether or not it is safe to work with `linum-mode'.")
+
+(defvar linum/mru-color nil
+  "Stores the color most recently attempted to be applied.")
+
+(add-hook 'linum-mode-hook
+          (lambda ()
+            (setq linum/safe? t)
+            (when (maybe/some? linum/mru-color)
+              (set-face-foreground 'linum linum/mru-color))))
+
+(defun prelude/set-line-number-color (color)
+  "Safely set linum color to `COLOR'.
+
+If this is called before Emacs initializes, the color will be stored in
+`linum/mru-color' and applied once initialization completes.
+
+Why is this safe?
+If `(set-face-foreground 'linum)' is called before initialization completes,
+Emacs will silently fail.  Without this function, it is easy to introduce
+difficult to troubleshoot bugs in your init files."
+  (if linum/safe?
+      (set-face-foreground 'linum color)
+    (setq linum/mru-color color)))
+
+(defun prelude/prompt (prompt)
+  "Read input from user with PROMPT."
+  (read-string prompt))
+
+(defun prelude/executable-exists? (name)
+  "Return t if CLI tool NAME exists according to `exec-path'."
+  (let ((file (locate-file name exec-path)))
+    (if (maybe/some? file)
+        (f-exists? file)
+      nil)))
+
+(provide 'prelude)
+;;; prelude.el ends here
diff --git a/configs/shared/.emacs.d/wpc/prelude.nix b/configs/shared/.emacs.d/wpc/prelude.nix
new file mode 100644
index 0000000000..626d4526a2
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/prelude.nix
@@ -0,0 +1,11 @@
+{ pkgs ? import (builtins.fetchTarball
+  "https://github.com/tazjin/depot/archive/master.tar.gz") {} }:
+
+# Ciruclar dependency warning: list.nix depends on prelude.nix, which depends on
+# list.nix.
+pkgs.writeElispBin {
+  name = "prelude";
+  # If this can build with epkgs.ht, remove `(require 'ht)`.
+  deps = epkgs: [ epkgs.s epkgs.dash epkgs.f ./string.nix ./list.nix ];
+  src = ./prelude.el;
+}
diff --git a/configs/shared/.emacs.d/wpc/productivity-timer.el b/configs/shared/.emacs.d/wpc/productivity-timer.el
new file mode 100644
index 0000000000..6d421dd69e
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/productivity-timer.el
@@ -0,0 +1,22 @@
+;;; productivity-timer.el --- Commonly used intervals for setting alarms while working -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Select common timer intervals with dmenu and play an alarm sound when
+;; finished.
+;;
+;; This is heavily inspired by iOS's timer feature.
+
+
+;;; Code:
+
+(defconst productivity-timer/intervals
+  '(1 2 3 4 5 10 15 20 30 45 60 120)
+  "Commonly used intervals for timer amounts.")
+
+;; `sleep-for' doesn't seem to work.  Perhaps `sit-for' won't be any better.
+;; How can I use dunst to alert?
+;; `run-at-time' may be the most promising option
+
+(provide 'productivity-timer)
+;;; productivity-timer.el ends here
diff --git a/configs/shared/.emacs.d/wpc/pulse-audio.el b/configs/shared/.emacs.d/wpc/pulse-audio.el
new file mode 100644
index 0000000000..7dff888e98
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/pulse-audio.el
@@ -0,0 +1,48 @@
+;;; pulse-audio.el --- Control audio with Elisp -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Because everything in my configuration is turning into Elisp these days.
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Constants
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defconst pulse-audio/install-kbds? t
+  "When t, install keybindings defined herein.")
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Library
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun pulse-audio/toggle-mute ()
+  "Mute the default sink."
+  (interactive)
+  (shell-command "pactl set-sink-mute @DEFAULT_SINK@ toggle")
+  (message (string/format "[pulse-audio.el] Mute toggled.")))
+
+(defun pulse-audio/lower-volume ()
+  "Low the volume output of the default sink."
+  (interactive)
+  (shell-command "pactl set-sink-volume @DEFAULT_SINK@ -10%")
+  (message (string/format "[pulse-audio.el] Volume lowered.")))
+
+(defun pulse-audio/raise-volume ()
+  "Raise the volume output of the default sink."
+  (interactive)
+  (shell-command "pactl set-sink-volume @DEFAULT_SINK@ +10%")
+  (message (string/format "[pulse-audio.el] Volume raised.")))
+
+
+(when pulse-audio/install-kbds?
+  (exwm-input-set-key
+   (kbd "<XF86AudioMute>") #'pulse-audio/toggle-mute)
+  (exwm-input-set-key
+   (kbd "<XF86AudioLowerVolume>") #'pulse-audio/lower-volume)
+  (exwm-input-set-key
+   (kbd "<XF86AudioRaiseVolume>") #'pulse-audio/raise-volume))
+
+(provide 'pulse-audio)
+;;; pulse-audio.el ends here
diff --git a/configs/shared/.emacs.d/wpc/pushover.el b/configs/shared/.emacs.d/wpc/pushover.el
new file mode 100644
index 0000000000..fb06656cf4
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/pushover.el
@@ -0,0 +1,75 @@
+;;; pushover.el --- Send generic messages to mobile device -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Pushover.net is a mobile app that accepts JSON.  This supports loose
+;; integration between things and mobile devices.
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Dependencies
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'request)
+(require 'password-store)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Library
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defconst pushover/app-token
+  (password-store-get-field "api-keys/pushover.net" "emacs")
+  "App token for \"emacs\" application.")
+
+(defconst pushover/user-key
+  (password-store-get "api-keys/pushover.net")
+  "Key that identifies me to pushover.")
+
+(defconst pushover/url
+  "https://api.pushover.net/1/messages.json"
+  "URL to POST messages.")
+
+;; TODO: Rename module "pushover".
+
+(defun pushover/notify (message)
+  "Posts MESSAGE to all devices.
+Here are the parameters that Pushover accepts:
+
+Required parameters:
+  - token - your application's API token
+  - user - the user/group key (not e-mail address) of your user (or you),
+    viewable when logged into our dashboard (often referred to as USER_KEY in
+    our documentation and code examples)
+  - message - your message
+
+Additional parameters (optional):
+  - attachment - an image attachment to send with the message; see attachments
+    for more information on how to upload files
+    device - your user's device name to send the message directly to that
+    device, rather than all of the user's devices (multiple devices may be
+    separated by a comma)
+  - title - your message's title, otherwise your app's name is used
+  - url - a supplementary URL to show with your message
+  - url_title - a title for your supplementary URL, otherwise just the URL is
+    shown
+  - priority - send as -2 to generate no notification/alert, -1 to always send
+    as a quiet notification, 1 to display as high-priority and bypass the user's
+    quiet hours, or 2 to also require confirmation from the user
+  - sound - the name of one of the sounds supported by device clients to
+    override the user's default sound choice
+  - timestamp - a Unix timestamp"
+  (request
+   pushover/url
+   :type "POST"
+   :params `(("token"   . ,pushover/app-token)
+             ("user"    . ,pushover/user-key)
+             ("message" . ,message))
+   :data nil
+   :parser 'json-read
+   :success (cl-function
+             (lambda (&key data &allow-other-keys)
+               (message "Pushover.net notification sent!")))))
+
+(provide 'pushover)
+;;; pushover.el ends here
diff --git a/configs/shared/.emacs.d/wpc/random.el b/configs/shared/.emacs.d/wpc/random.el
new file mode 100644
index 0000000000..148506c04d
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/random.el
@@ -0,0 +1,73 @@
+;;; random.el --- Functions for working with randomness -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Functions for working with randomness.  Some of this code is not as
+;; functional as I'd like from.
+
+;;; Code:
+
+(require 'prelude)
+(require 'number)
+(require 'math)
+(require 'series)
+(require 'list)
+(require 'set)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Library
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun random/int (x)
+  "Return a random integer from 0 to `X'."
+  (random x))
+
+;; TODO: Make this work with sequences instead of lists.
+(defun random/choice (xs)
+  "Return a random element of `XS'."
+  (let ((ct (list/length xs)))
+    (list/get
+     (random/int ct)
+     xs)))
+
+(defun random/boolean? ()
+  "Randonly return t or nil."
+  (random/choice (list t nil)))
+
+;; TODO: This may not work if any of these generate numbers like 0, 1, etc.
+(defun random/uuid ()
+  "Return a generated UUID string."
+  (let ((eight  (number/dec (math/triangle-of-power :base 16 :power 8)))
+        (four   (number/dec (math/triangle-of-power :base 16 :power 4)))
+        (twelve (number/dec (math/triangle-of-power :base 16 :power 12))))
+    (format "%x-%x-%x-%x-%x"
+            (random/int eight)
+            (random/int four)
+            (random/int four)
+            (random/int four)
+            (random/int twelve))))
+
+(defun random/token (length)
+  "Return a randomly generated hexadecimal string of LENGTH."
+  (->> (series/range 0 (number/dec length))
+       (list/map (lambda (_) (format "%x" (random/int 15))))
+       (list/join "")))
+
+;; TODO: Support random/sample
+(defun random/sample (n xs)
+  "Return a randomly sample of list XS of size N."
+  (prelude/assert (and (>= n 0) (< n (list/length xs))))
+  (cl-labels ((do-sample
+               (n xs y ys)
+               (if (= n (set/count ys))
+                   (->> ys
+                        set/to-list
+                        (list/map (lambda (i)
+                                    (list/get i xs))))
+                 (if (set/contains? y ys)
+                     (do-sample n xs (random/int (list/length xs)) ys)
+                   (do-sample n xs y (set/add y ys))))))
+    (do-sample n xs (random/int (list/length xs)) (set/new))))
+
+(provide 'random)
+;;; random.el ends here
diff --git a/configs/shared/.emacs.d/wpc/scheduler.el b/configs/shared/.emacs.d/wpc/scheduler.el
new file mode 100644
index 0000000000..bae9532289
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/scheduler.el
@@ -0,0 +1,22 @@
+;;; scheduler.el --- Sketches of scheduling -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Attempting to create a FSM for scheduling things in various ways:
+;;
+;; Scheduling policies:
+;; - earliest due date: minimizes total lateness of all tasks in a pool.  Put
+;;   the task with the latest due date last in the list and work backwards to
+;;   solve the precedence constraint (i.e. dependency issue).
+;; - shortest processing time: maximizes number of tasks completed.  Prioritize
+;;   tasks in the order of how long they will take to complete from shortest to
+;;   longest.  This breaks down when precedence constraints are introduced.
+;;
+;; Tasks should inherit prioritization.
+
+
+
+;;; Code:
+
+(provide 'scheduler)
+;;; scheduler.el ends here
diff --git a/configs/shared/.emacs.d/wpc/scope.el b/configs/shared/.emacs.d/wpc/scope.el
new file mode 100644
index 0000000000..48aa85ad0e
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/scope.el
@@ -0,0 +1,99 @@
+;;; scope.el --- Work with a scope data structure -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Exposing an API for working with a scope data structure in a non-mutative
+;; way.
+;;
+;; What's a scope?  Think of a scope as a stack of key-value bindings.
+
+;;; Code:
+
+(require 'alist)
+(require 'stack)
+(require 'struct)
+(require 'macros)
+
+(cl-defstruct scope scopes)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Create
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun scope/new ()
+  "Return an empty scope."
+  (make-scope :scopes (->> (stack/new)
+                           (stack/push (alist/new)))))
+
+(defun scope/flatten (xs)
+  "Return a flattened representation of the scope, XS.
+The newest bindings eclipse the oldest."
+  (->> xs
+       scope-scopes
+       stack/to-list
+       (list/reduce (alist/new)
+                    (lambda (scope acc)
+                      (alist/merge acc scope)))))
+
+(defun scope/push-new (xs)
+  "Push a new, empty scope onto XS."
+  (struct/update scope
+                 scopes
+                 (>> (stack/push (alist/new)))
+                 xs))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Read
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun scope/get (k xs)
+  "Return K from XS if it's in scope."
+  (->> xs
+       scope/flatten
+       (alist/get k)))
+
+(defun scope/current (xs)
+  "Return the newest scope from XS."
+  (let ((xs-copy (copy-scope xs)))
+    (->> xs-copy
+         scope-scopes
+         stack/peek)))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Update
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun scope/set (k v xs)
+  "Set value, V, at key, K, in XS for the current scope."
+  (struct/update scope
+                 scopes
+                 (>> (stack/map-top (>> (alist/set k v))))
+                 xs))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Delete
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun scope/pop (xs)
+  "Return a new scope without the top element from XS."
+  (->> xs
+       scope-scopes
+       stack/pop))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Predicates
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun scope/defined? (k xs)
+  "Return t if K is in scope of XS."
+  (->> xs
+       scope/flatten
+       (alist/has-key? k)))
+
+;; TODO: Find a faster way to write aliases like this.
+(defun scope/instance? (xs)
+  "Return t if XS is a scope struct."
+  (scope-p xs))
+
+(provide 'scope)
+;;; scope.el ends here
diff --git a/configs/shared/.emacs.d/wpc/screen-brightness.el b/configs/shared/.emacs.d/wpc/screen-brightness.el
new file mode 100644
index 0000000000..1b74ea34a9
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/screen-brightness.el
@@ -0,0 +1,57 @@
+;;; screen-brightness.el --- Control laptop screen brightness -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Mainly just Elisp wrappers around `xbacklight`.
+
+;;; Code:
+
+;; TODO: Define some isomorphisms. E.g. int->string, string->int.
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Dependencies
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'string)
+(require 'dash)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Constants
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defconst screen-brightness/step-size 15
+  "The size of the increment or decrement step for the screen's brightness.")
+
+(defcustom screen-brightness/install-kbds? t
+  "If t, install the keybindings to control screen brightness.")
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Library
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun screen-brightness/increase ()
+  "Increase the screen brightness."
+  (interactive)
+  (->> screen-brightness/step-size
+       int-to-string
+       (string/concat "xbacklight -inc ")
+       shell-command)
+  (message "[screen-brightness.el] Increased screen brightness."))
+
+(defun screen-brightness/decrease ()
+  "Decrease the screen brightness."
+  (interactive)
+  (->> screen-brightness/step-size
+       int-to-string
+       (string/concat "xbacklight -dec ")
+       shell-command)
+  (message "[screen-brightness.el] Decreased screen brightness."))
+
+(when screen-brightness/install-kbds?
+  (exwm-input-set-key
+   (kbd "<XF86MonBrightnessUp>") #'screen-brightness/increase)
+  (exwm-input-set-key
+   (kbd "<XF86MonBrightnessDown>") #'screen-brightness/decrease))
+
+(provide 'screen-brightness)
+;;; screen-brightness.el ends here
diff --git a/configs/shared/.emacs.d/wpc/sequence.el b/configs/shared/.emacs.d/wpc/sequence.el
new file mode 100644
index 0000000000..a5428ef044
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/sequence.el
@@ -0,0 +1,105 @@
+;;; sequence.el --- Working with the "sequence" types -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Elisp supports a typeclass none as "sequence" which covers the following
+;; types:
+;; - list: '(1 2 3 4 5)
+;; - vector: ["John" 27 :blue]
+;; - string: "To be or not to be..."
+
+;; TODO: Document the difference between a "reduce" and a "fold".  I.e. - reduce
+;; has an initial value whereas fold uses the first element in the sequence as
+;; the initial value.
+;;
+;; Note: This should be an approximation of Elixir's Enum protocol albeit
+;; without streams.
+;;
+;; Elisp has done a lot of this work already and these are mostly wrapper
+;; functions.
+;; See the following list for reference:
+;; - sequencep
+;; - elt
+;; - copy-sequence
+;; - reverse
+;; - nreverse
+;; - sort
+;; - seq-elt
+;; - seq-length
+;; - seqp
+;; - seq-drop
+;; - seq-take
+;; - seq-take-while
+;; - seq-drop-while
+;; - seq-do
+;; - seq-map
+;; - seq-mapn
+;; - seq-filter
+;; - seq-remove
+;; - seq-reduce
+;; - seq-some
+;; - seq-find
+;; - seq-every-p
+;; - seq-empty-p
+;; - seq-count
+;; - seq-sort
+;; - seq-contains
+;; - seq-position
+;; - seq-uniq
+;; - seq-subseq
+;; - seq-concatenate
+;; - seq-mapcat
+;; - seq-partition
+;; - seq-intersection
+;; - seq-difference
+;; - seq-group-by
+;; - seq-into
+;; - seq-min
+;; - seq-max
+;; - seq-doseq
+;; - seq-let
+
+;;; Code:
+
+;; Perhaps we can provide default implementations for `filter' and `map' derived
+;; from the `reduce' implementation.
+;; (defprotocol sequence
+;;   :functions (reduce))
+;; (definstance sequence list
+;;   :reduce #'list/reduce
+;;   :filter #'list/filter
+;;   :map    #'list/map)
+;; (definstance sequence vector
+;;   :reduce #'vector/reduce)
+;; (definstance sequence string
+;;   :reduce #'string)
+
+(defun sequence/classify (xs)
+  "Return the type of `XS'."
+  (cond
+   ((listp xs) 'list)
+   ((vectorp xs) 'vector)
+   ((stringp xs) 'string)))
+
+(defun sequence/reduce (acc f xs)
+  "Reduce of `XS' calling `F' on x and `ACC'."
+  (seq-reduce
+   (lambda (acc x)
+     (funcall f x acc))
+   xs
+   acc))
+
+;; Elixir also turned everything into a list for efficiecy reasons.
+
+(defun sequence/filter (p xs)
+  "Filter `XS' with predicate, `P'.
+Returns a list regardless of the type of `XS'."
+  (seq-filter p xs))
+
+(defun sequence/map (f xs)
+  "Maps `XS' calling `F' on each element.
+Returns a list regardless of the type of `XS'."
+  (seq-map f xs))
+
+(provide 'sequence)
+;;; sequence.el ends here
diff --git a/configs/shared/.emacs.d/wpc/series.el b/configs/shared/.emacs.d/wpc/series.el
new file mode 100644
index 0000000000..977ffc5026
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/series.el
@@ -0,0 +1,81 @@
+;;; series.el --- Hosting common series of numbers -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Encoding number series as I learn about them.
+;;
+;; These are the following series I'm interested in supporting:
+;; - Fibonacci
+;; - Catalan numbers
+;; - Figurate number series
+;;   - Triangular
+;;   - Square
+;;   - Pentagonal
+;;   - Hexagonal
+;;   - Lazy-caterer
+;; - Magic square
+;; - Look-and-say
+
+;;; Code:
+
+(require 'number)
+
+(defun series/range (beg end)
+  "Create a list of numbers from `BEG' to `END'.
+This is an inclusive number range."
+  (if (< end beg)
+      (list/reverse
+       (number-sequence end beg))
+    (number-sequence beg end)))
+
+(defun series/fibonacci-number (i)
+  "Return the number in the fibonacci series at `I'."
+  (cond
+   ((= 0 i) 0)
+   ((= 1 i) 1)
+   (t (+ (series/fibonacci-number (- i 1))
+         (series/fibonacci-number (- i 2))))))
+
+(defun series/fibonacci (n)
+  "Return the first `N' numbers of the fibonaccci series starting at zero."
+  (if (= 0 n)
+      '()
+    (list/reverse
+     (list/cons (series/fibonacci-number (number/dec n))
+                (list/reverse
+                 (series/fibonacci (number/dec n)))))))
+
+;; TODO: Consider memoization.
+(defun series/triangular-number (i)
+  "Return the number in the triangular series at `I'."
+  (if (= 0 i)
+      0
+    (+ i (series/triangular-number (number/dec i)))))
+
+;; TODO: Improve performance.
+;; TODO: Consider creating a stream protocol with `stream/next' and implement
+;; this using that.
+(defun series/triangular (n)
+  "Return the first `N' numbers of a triangular series starting at 0."
+  (if (= 0 n)
+      '()
+    (list/reverse
+     (list/cons (series/triangular-number (number/dec n))
+                (list/reverse
+                 (series/triangular (number/dec n)))))))
+
+(defun series/catalan-number (i)
+  "Return the catalan number in the series at `I'."
+  (if (= 0 i)
+      1
+    (/ (number/factorial (* 2 i))
+       (* (number/factorial (number/inc i))
+          (number/factorial i)))))
+
+(defun series/catalan (n)
+  "Return the first `N' numbers in a catalan series."
+  (->> (series/range 0 (number/dec n))
+       (list/map #'series/catalan-number)))
+
+(provide 'series)
+;;; series.el ends here
diff --git a/configs/shared/.emacs.d/wpc/set.el b/configs/shared/.emacs.d/wpc/set.el
new file mode 100644
index 0000000000..fd86f9033c
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/set.el
@@ -0,0 +1,92 @@
+;;; set.el --- Working with mathematical sets -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; The set data structure is a collection that deduplicates its elements.
+
+;;; Code:
+
+(require 'ht) ;; friendlier API for hash-tables
+(require 'dotted)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Wish List
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; - TODO: Support enum protocol for set.
+;; - TODO: Prefer a different hash-table library that doesn't rely on mutative
+;;   code.
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Library
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(cl-defstruct set xs)
+
+(defun set/from-list (xs)
+  "Create a new set from the list XS."
+  (make-set :xs (->> xs
+                     (list/map #'dotted/new)
+                     ht-from-alist)))
+
+(defun set/new (&rest args)
+  "Create a new set from ARGS."
+  (set/from-list args))
+
+(defun set/to-list (xs)
+  "Map set XS into a list."
+  (->> xs
+       set-xs
+       ht-keys))
+
+(defun set/add (x xs)
+  "Add X to set XS."
+  (struct/update set
+                 xs
+                 (lambda (table)
+                   (let ((table-copy (ht-copy table)))
+                     (ht-set table-copy x 10)
+                     table-copy))
+                 xs))
+
+(defun set/count (xs)
+  "Return the number of elements in XS."
+  (->> xs
+       set-xs
+       ht-size))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Predicates
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun set/empty? (xs)
+  "Return t if XS has no elements in it."
+  (= 0 (set/count xs)))
+
+(defun set/contains? (x xs)
+  "Return t if set XS has X."
+  (ht-contains? (set-xs xs) x))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Tests
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defconst set/enable-testing? t
+  "Run tests when t.")
+
+(when set/enable-testing?
+  (progn
+    ;; {from,to}-list
+    (prelude/assert (equal '(1 2 3)
+                           (->> '(1 1 2 2 3 3)
+                                set/from-list
+                                set/to-list)))
+    ;; empty?
+    (prelude/assert (set/empty? (set/new)))
+    (prelude/refute (set/empty? (set/new 1 2 3)))
+    ;; count
+    (prelude/assert (= 0 (set/count (set/new))))
+    (prelude/assert (= 2 (set/count (set/new 1 1 2 2))))))
+
+(provide 'set)
+;;; set.el ends here
diff --git a/configs/shared/.emacs.d/wpc/sre.el b/configs/shared/.emacs.d/wpc/sre.el
new file mode 100644
index 0000000000..1c8f6ddd9a
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/sre.el
@@ -0,0 +1,26 @@
+;;; sre.el --- Site Reliability Engineering stuffs -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Storing some data that might be helpful in my ladder switch attempt.
+
+;;; Code:
+
+(defvar sre/introduction-email
+  "Hello!
+
+My name is William Carroll. I'm currently attempting a ladder switch. I have my
+manager's approval to look for a new role because we believe I have been hired
+for the wrong position.
+
+I'm eager to move ahead if there are any SRE openings in LON that fit my
+profile. I'm happy to share more information with you about my background and
+what I'm looking for. I've been attending the SRE Ops Review meetings in 6PS
+weekly for awhile now, so we should be in the same office every Tuesday if
+meeting in person is easier for you.
+
+Let me know!"
+  "Boilerplate email for reaching out to SRE hiring managers.")
+
+(provide 'sre)
+;;; sre.el ends here
diff --git a/configs/shared/.emacs.d/wpc/ssh.el b/configs/shared/.emacs.d/wpc/ssh.el
new file mode 100644
index 0000000000..d703937573
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/ssh.el
@@ -0,0 +1,31 @@
+;;; ssh.el --- When working remotely -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Configuration to make remote work easier.
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Dependencies
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'tramp)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Library
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; TODO: Is "ssh" preferable to "scp"?
+(setq tramp-default-method "ssh")
+
+;; Taken from: https://superuser.com/questions/179313/tramp-waiting-for-prompts-from-remote-shell
+(setq tramp-shell-prompt-pattern "^[^$>\n]*[#$%>] *\\(\[[0-9;]*[a-zA-Z] *\\)*")
+
+;; TODO: Re-enable this in case "dumb" isn't the default.
+;; (setq tramp-terminal-type "dumb")
+
+(setq tramp-verbose 10)
+
+(provide 'ssh)
+;;; ssh.el ends here
diff --git a/configs/shared/.emacs.d/wpc/stack.el b/configs/shared/.emacs.d/wpc/stack.el
new file mode 100644
index 0000000000..052ed881d2
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/stack.el
@@ -0,0 +1,93 @@
+;;; stack.el --- Working with stacks in Elisp -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; A stack is a LIFO queue.
+;; The design goal here is to expose an intuitive API for working with stacks in
+;; non-mutative way.
+;;
+;; TODO: Consider naming a Functor instance "Mappable."
+;; TODO: Consider naming a Foldable instance "Reduceable."
+;;
+;; TODO: Consider implementing an instance for Mappable.
+;; TODO: Consider implementing an instance for Reduceable.
+
+;;; Code:
+
+(require 'list)
+
+(cl-defstruct stack xs)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Create
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun stack/new ()
+  "Create an empty stack."
+  (make-stack :xs '()))
+
+(defun stack/from-list (xs)
+  "Create a new stack from the list, `XS'."
+  (list/reduce (stack/new) #'stack/push xs))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Read
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun stack/peek (xs)
+  "Look at the top element of `XS' without popping it off."
+  (->> xs
+       stack-xs
+       list/head))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Update
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun stack/push (x xs)
+  "Push `X' on `XS'."
+  (struct/update stack
+                 xs
+                 (>> (list/cons x))
+                 xs))
+
+;; TODO: How to return something like {(list/head xs), (list/tail xs)} in Elixir
+;; TODO: How to handle popping from empty stacks?
+(defun stack/pop (xs)
+  "Return the stack, `XS', without the top element.
+Since I cannot figure out a nice way of return tuples in Elisp, if you want to
+look at the first element, use `stack/peek' before running `stack/pop'."
+  (struct/update stack
+                 xs
+                 (>> list/tail)
+                 xs))
+
+(defun stack/map-top (f xs)
+  "Apply F to the top element of XS."
+  (->> xs
+       stack/pop
+       (stack/push (funcall f (stack/peek xs)))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Miscellaneous
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun stack/to-list (xs)
+  "Return XS as a list.
+The round-trip property of `stack/from-list' and `stack/to-list' should hold."
+  (->> xs
+       stack-xs
+       list/reverse))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Predicates
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; TODO: Create a macro that wraps `cl-defstruct' that automatically creates
+;; things like `new', `instance?'.
+(defun stack/instance? (xs)
+  "Return t if XS is a stack."
+  (stack-p xs))
+
+(provide 'stack)
+;;; stack.el ends here
diff --git a/configs/shared/.emacs.d/wpc/string.el b/configs/shared/.emacs.d/wpc/string.el
new file mode 100644
index 0000000000..56c9279dd5
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/string.el
@@ -0,0 +1,126 @@
+;; string.el --- Library for working with strings -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Library for working with string.
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Dependencies
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 's)
+(require 'dash)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Library
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; Strings
+(defun string/hookify (x)
+  "Append \"-hook\" to X."
+  (s-append "-hook" x))
+
+(defun string/ensure-hookified (x)
+  "Ensure that X has \"-hook\" appended to it."
+  (if (s-ends-with? "-hook" x)
+      x
+    (string/hookify x)))
+
+(defun string/format (x &rest args)
+  "Format template string X with ARGS."
+  (apply #'format (cons x args)))
+
+(defun string/concat (&rest strings)
+  "Joins `STRINGS' into onto string."
+  (apply #'s-concat strings))
+
+(defun string/->symbol (string)
+  "Maps `STRING' to a symbol."
+  (intern string))
+
+(defun string/<-symbol (symbol)
+  "Maps `SYMBOL' into a string."
+  (symbol-name symbol))
+
+(defun string/prepend (prefix x)
+  "Prepend `PREFIX' onto `X'."
+  (s-concat prefix x))
+
+(defun string/append (postfix x)
+  "Appen `POSTFIX' onto `X'."
+  (s-concat x postfix))
+
+(defun string/surround (s x)
+  "Surrounds `X' one each side with `S'."
+  (->> x
+       (string/prepend s)
+       (string/append s)))
+
+;; TODO: Define a macro for defining a function and a test.
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Casing
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun string/caps->kebab (x)
+  "Change the casing of `X' from CAP_CASE to kebab-case."
+  (->> x
+       s-downcase
+       (s-replace "_" "-")))
+
+(defun string/kebab->caps (x)
+  "Change the casing of X from CAP_CASE to kebab-case."
+  (->> x
+       s-upcase
+       (s-replace "-" "_")))
+
+(defun string/lower->caps (x)
+  "Change the casing of X from lowercase to CAPS_CASE."
+  (->> x
+       s-upcase
+       (s-replace " " "_")))
+
+(defun string/lower->kebab (x)
+  "Change the casing of `X' from lowercase to kebab-case."
+  (s-replace " " "-" x))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Predicates
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun string/instance? (x)
+  "Return t if X is a string."
+  (stringp x))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Tests
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; TODO: Support these.
+;; (require 'macros)
+;; (macros/test
+;;  :function string/surround
+;;  :test "works as expected"
+;;  :args '("-*-" "surround")
+;;  :expect "-*-surround-*-"
+;;  :equality string=)
+;
+;; (macros/test
+;;  :function string/caps->kebab
+;;  :test "works as expected"
+;;  :args '("CAPS_CASE_STRING")
+;;  :expect "caps-case-string"
+;;  :equality string=)
+;
+;; ;; TODO: Generate :test from docs of defun.
+;; (macros/test
+;;  :function string/kebab->caps
+;;  :test "works as expected"
+;;  :args '("kebab-case-string")
+;;  :expect "KEBAB_CASE_STRING"
+;;  :equality =)
+
+(provide 'string)
+;;; string.el ends here
diff --git a/configs/shared/.emacs.d/wpc/string.nix b/configs/shared/.emacs.d/wpc/string.nix
new file mode 100644
index 0000000000..1f815b26bb
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/string.nix
@@ -0,0 +1,8 @@
+{ pkgs ? import (builtins.fetchTarball
+  "https://github.com/tazjin/depot/archive/master.tar.gz") {} }:
+
+pkgs.writeElispBin {
+  name = "string";
+  deps = epkgs: [ epkgs.dash epkgs.s ./prelude.nix ];
+  src = ./string.el;
+}
diff --git a/configs/shared/.emacs.d/wpc/struct.el b/configs/shared/.emacs.d/wpc/struct.el
new file mode 100644
index 0000000000..248d08e97c
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/struct.el
@@ -0,0 +1,71 @@
+;;; struct.el --- Helpers for working with structs -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Provides new macros for working with structs.  Also provides adapter
+;; interfaces to existing struct macros, that should have more intuitive
+;; interfaces.
+;;
+;; Sometimes `setf' just isn't enough.
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Wish list
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; - TODO: Replace `symbol-name' and `intern' calls with isomorphism.
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Dependencies
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'string)
+(require 'dash)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Functions
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defmacro struct/update (type field f xs)
+  "Apply F to FIELD in XS, which is a struct of TYPE.
+This is immutable."
+  (let ((copier (->> type
+                     symbol-name
+                     (string/prepend "copy-")
+                     intern))
+        (accessor (->> field
+                       symbol-name
+                       (string/prepend (string/concat (symbol-name type) "-"))
+                       intern)))
+    `(let ((copy (,copier ,xs)))
+       (setf (,accessor copy) (funcall ,f (,accessor copy)))
+       copy)))
+
+(defmacro struct/set (type field x xs)
+  "Immutably set FIELD in XS (struct TYPE) to X."
+  (let ((copier (->> type
+                     symbol-name
+                     (string/prepend "copy-")
+                     intern))
+        (accessor (->> field
+                       symbol-name
+                       (string/prepend (string/concat (symbol-name type) "-"))
+                       intern)))
+    `(let ((copy (,copier ,xs)))
+       (setf (,accessor copy) ,x)
+       copy)))
+
+(defmacro struct/set! (type field x xs)
+  "Set FIELD in XS (struct TYPE) to X mutably.
+This is an adapter interface to `setf'."
+  (let ((accessor (->> field
+                       symbol-name
+                       (string/prepend (string/concat (symbol-name type) "-"))
+                       intern)))
+    `(progn
+       (setf (,accessor xs) ,x)
+       xs)))
+
+(provide 'struct)
+;;; struct.el ends here
diff --git a/configs/shared/.emacs.d/wpc/symbol.el b/configs/shared/.emacs.d/wpc/symbol.el
new file mode 100644
index 0000000000..9119b29470
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/symbol.el
@@ -0,0 +1,43 @@
+;; symbol.el --- Library for working with symbols. -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Library for working with symbols.
+
+;;; Code:
+
+;; TODO: Why is ivy mode map everywhere?
+
+(require 'string)
+
+;; Symbols
+(defun symbol/as-string (callback x)
+  "Treat the symbol, X, as a string while applying CALLBACK to it.
+Coerce back to a symbol on the way out."
+  (->> x
+       #'symbol-name
+       callback
+       #'intern))
+
+(defun symbol/to-string (x)
+  "Map `X' into a string."
+  (string/<-symbol x))
+
+(defun symbol/hookify (x)
+  "Append \"-hook\" to X when X is a symbol."
+  (symbol/as-string #'string/hookify x))
+
+(defun symbol/ensure-hookified (x)
+  "Ensure that X has \"-hook\" appended to it when X is a symbol."
+  (symbol/as-string #'string/ensure-hookified x))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Predicates
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun symbol/instance? (x)
+  "Return t if X is a symbol."
+  (symbolp x))
+
+(provide 'symbol)
+;;; symbol.el ends here
diff --git a/configs/shared/.emacs.d/wpc/themes.el b/configs/shared/.emacs.d/wpc/themes.el
new file mode 100644
index 0000000000..e7109deaa9
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/themes.el
@@ -0,0 +1,170 @@
+;;; themes.el --- Functions for working with my themes. -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+
+
+;; Because I couldn't get cycle-themes to work, I'm writing my own version.
+;;
+;; Terminology:
+;; - colorscheme: determines the colors used by syntax highlighting and other
+;;   Emacs UI elements.
+;; - theme: Structural representation of a "theme" that includes colorscheme
+;;   (see above), font, wallpaper.  "theme" is a superset of "colorscheme".
+;;
+;; Wishlist:
+;; - TODO: Find a way to update the terminal (e.g. terminator) theme.
+;; - TODO: Ensure terminal font is updated when Emacs font changes.
+;; - TODO: Support a light theme.
+;; - TODO: Support Rick & Morty theme.
+;; - TODO: Support retro/arcade/80s theme.
+
+;;; Code:
+
+;; Dependencies
+(require 'prelude)
+(require 'alist)
+(require 'symbol)
+(require 'f)
+(require 'wallpaper)
+(require 'fonts)
+(require 'cycle)
+(require 'symbol)
+(require 'random)
+(require 'colorscheme)
+(require 'dotted)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Library
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; The theme struct couples a font, a wallpaper, and a colorschemes.
+(cl-defstruct theme
+  font
+  wallpaper
+  colorscheme)
+
+(defvar themes/current nil
+  "Store the name of the currently enabled theme.")
+
+(defconst themes/themes
+  (list (dotted/new
+         "Forest"
+         (make-theme
+          :font "Operator Mono Light"
+          :wallpaper "forest_8k.jpg"
+          :colorscheme 'doom-peacock))
+        (dotted/new
+         "Geometry"
+         (make-theme
+          :font "Input Mono Medium"
+          :wallpaper "geometric_4k.jpg"
+          :colorscheme 'doom-molokai))
+        (dotted/new
+         "Ice"
+         (make-theme
+          :font "Go Mono"
+          :wallpaper "construction_paper_iceberg_4k.jpg"
+          :colorscheme 'doom-dracula))
+        (dotted/new
+         "Lego Manhattan"
+         (make-theme
+          :font "Input Mono Medium"
+          :wallpaper "lego_manhattan.jpg"
+          :colorscheme 'base16-atelier-sulphurpool))
+        (dotted/new
+         "Edison Lightbulb"
+         (make-theme
+          :font "Operator Mono Light"
+          :wallpaper "lightbulb_4k.jpg"
+          :colorscheme 'base16-atelier-cave))
+        (dotted/new
+         "Galaxy"
+         (make-theme
+          :font "Source Code Pro"
+          :wallpaper "galaxy_4k.jpg"
+          :colorscheme 'doom-moonlight))
+        (dotted/new
+         "Underwater"
+         (make-theme
+          :font "Go Mono"
+          ;; TODO: Change this wallpaper to an oceanic scene.
+          :wallpaper "galaxy_4k.jpg"
+          :colorscheme 'doom-solarized-dark))
+        (dotted/new
+         "Fantasy Tree"
+         (make-theme
+          :font "Go Mono"
+          :wallpaper "fantasy_tree_4k.jpg"
+          :colorscheme 'doom-outrun-electric)))
+  "Predefined themes to suit my whims.")
+
+;; TODO: Choose between plural and singular names for Elisp modules.  For
+;; example, why have themes.el and colorscheme.el.  I think singular is
+;; preferable.
+;; TODO: Decide between "message", "show", "print", "inspect" for naming
+;; commands that output human-readable information to the "*Messages*" buffer.
+;; TODO: Is there a idiomatic CL/Elisp way to print struct information?
+(defun themes/print (name)
+  "Print a human-readable description of theme named NAME."
+  (let* ((theme (alist/get name themes/themes))
+         (f (theme-font theme))
+         (w (theme-wallpaper theme))
+         (c (theme-colorscheme theme)))
+    (message (string/format
+              "[themes] Name: %s. Font: %s. Wallpaper: %s. Colorscheme: %s"
+              name f w c))))
+
+;; TODO: Make this into a proper test.
+(defun themes/debug ()
+  "Print a human-readable description of theme named NAME."
+  (interactive)
+  (let ((theme (alist/get themes/current themes/themes)))
+    (prelude/assert (equal (theme-font theme)
+                           (fonts/current)))
+    (prelude/assert (equal (theme-wallpaper theme)
+                           (f-filename (wallpaper/current))))
+    (prelude/assert (equal (theme-colorscheme theme)
+                           (colorscheme/current)))
+    (message "[themes] Debug couldn't find any inconsistencies. All good!")))
+
+;; TODO: Assert that all of the dependencies exist before attempting to load
+;; theme.
+;; TODO: Provide a friendlier way to define themes.
+(defun themes/ivy-select ()
+  "Use ivy to interactively load a theme."
+  (interactive)
+  (let* ((name (ivy-read "Theme: " (alist/keys themes/themes))))
+    (message (string/format "name: %s" name))
+    (themes/set name)))
+
+(defun themes/load (theme)
+  "Load the struct, THEME."
+  (colorscheme/disable-all)
+  (let* ((font (theme-font theme))
+         (wallpaper (theme-wallpaper theme))
+         (colorscheme (theme-colorscheme theme)))
+    (fonts/whitelist-set font)
+    (wallpaper/whitelist-set (f-join wallpaper/path-to-dir wallpaper))
+    (colorscheme/whitelist-set colorscheme)))
+
+(defun themes/set (name)
+  "Set the currently enabled theme to the theme named NAME.
+NAME needs to a key defined in `themes/themes'."
+  (prelude/assert (alist/has-key? name themes/themes))
+  (themes/load (alist/get name themes/themes))
+  (setq themes/current name))
+
+(defun themes/print-current ()
+  "Print the currently enabled theme."
+  (interactive)
+  (themes/print themes/current))
+
+(defun themes/random ()
+  "Return the name of a randomly selected theme in `themes/themes'."
+  (->> themes/themes
+       alist/keys
+       random/choice))
+
+(provide 'themes)
+;;; themes.el ends here
diff --git a/configs/shared/.emacs.d/wpc/todo.el b/configs/shared/.emacs.d/wpc/todo.el
new file mode 100644
index 0000000000..7369f01d82
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/todo.el
@@ -0,0 +1,297 @@
+;;; todo.el --- Bespoke task management system -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Marriage of my personal task-management system, which I've been using for 18
+;; months and is a mixture of handwritten notes, iOS notes, and org-mode files,
+;; with Emacs's famous `org-mode'.
+;;
+;; For me, I'd like a live, reactive state management system.  I'd like
+;; `org-mode' to be a nice way of rendering my TODOs, but I think the
+;; relationship with `org-mode' ends there.
+;;
+;; Intended to supplement my org-mode workflow.
+;;
+;; Wish-list:
+;; - Daily emails for standups
+;; - Templates for commonly occurring tasks
+
+;; Dependencies
+(require 'dash)
+(require 'f)
+(require 'macros)
+
+;;; Code:
+
+;; TODO: Classify habits as 'daily, 'weekly, 'monthly, 'yearly, 'event-driven
+
+;; TODO: Consider serving these values up to a React webpage in Chrome.
+
+;; TODO: Classify meetings as either 'recurrent or 'ad-hoc.
+
+;; TODO: Support sorting by `type'.
+
+;; TODO: Support work-queue idea for "Tomorrow's todos."
+
+;; TODO: Support macro to generate all possible predicates for todo types.
+
+;; TODO: Support export to org-mode file
+
+;; TODO: Support generic way to quickly render a list
+
+(defcustom todo/install-kbds? t
+  "When t, install the keybindings.")
+
+;; TODO: Add documentation.
+(cl-defstruct todo type label)
+
+;; TODO: Consider keeping this in Dropbox.
+;; TODO: Support whether or not the todo is done.
+(defconst todo/org-file-path "~/Dropbox/org/today.org")
+
+;; TODO: Support remaining function for each type.
+;; TODO: Support completed function for each type.
+
+(defun todo/completed? (x)
+  "Return t is `X' is marked complete."
+  (todo-complete x))
+
+;; TODO: Prefer `new-{task,habit,meeting}'.
+
+(defun todo/completed (xs)
+  "Return the todo items in `XS' that are marked complete."
+  (->> xs
+       (-filter #'todo/completed?)))
+
+(defun todo/remaining (xs)
+  "Return the todo items in `XS' that are not marked complete."
+  (->> xs
+       (-reject #'todo/completed?)))
+
+(defun todo/task (label)
+  "Convenience function for creating a task todo with `LABEL'."
+  (make-todo
+   :type 'task
+   :label label))
+
+(defun todo/meeting (label)
+  "Convenience function for creating a meeting todo with `LABEL'."
+  (make-todo
+   :type 'meeting
+   :label label))
+
+(defun todo/habit (label)
+  "Convenience function for creating a habit todo with `LABEL'."
+  (make-todo
+   :type 'habit
+   :label label))
+
+(defun todo/task? (x)
+  "Return t if `X' is a task."
+  (equal 'task (todo-type x)))
+
+(defun todo/habit? (x)
+  "Return t if `X' is a habit."
+  (equal 'habit (todo-type x)))
+
+(defun todo/meeting? (x)
+  "Return t if `X' is a meeting."
+  (equal 'meeting (todo-type x)))
+
+(defun todo/label (x)
+  "Return the label of `X'."
+  (todo-label x))
+
+;; TODO: Support moving todos between todo/{today,tomorrow}.
+;; TODO: Consider modelling todo/{today,tomorrow} as queues instead of lists so that I can
+;; append cheaply.
+
+;; TODO: Find an Elisp date library.
+
+;; TODO: type-driven development of this habit tree.
+;; TODO: Create this tree on a whiteboard first.
+;; (defconst todo/habits
+;;   '(:beginning-of-month
+;;     '("Create habit template for current month"
+;;       "Post mortem of previous month")
+;;     :monday    '("Jiu Jitsu")
+;;     :tuesday   '("Jiu Jitsu")
+;;     :wednesday '("Jiu Jitsu")
+;;     :thursday  '("Salsa class")
+;;     :friday    '("Jiu Jitsu")
+;;     :saturday  '("Borough market")
+;;     :sunday    '("Shave")
+;;     :weekday '(:arrive-at-work
+;;                '("Breakfast"
+;;                  "Coffee"
+;;                  "Placeholder")
+;;                :before-lunch
+;;                '("Lock laptop"
+;;                  "Placeholder")
+;;                :home->work
+;;                '("Michel Thomas Italian lessons"))
+;;     :daily '(:morning
+;;              '("Meditate"
+;;                "Stretch")
+;;              :)))
+
+;; overlay weekday with specific weekdays (e.g. BJJ is only on M,T,W)
+
+;; TODO: Extend the record type to support duration estimations for AFK, K
+;; calculations.
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Habits
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; TODO: Should I be writing this in ReasonML and Haskell?
+
+(defconst todo/monthly-habit-challenge
+  "InterviewCake.com"
+  "The monthly habit challenge I do for fifteen minutes each day.")
+
+(defconst todo/daily-habits
+  (->> (list "Meditate"
+             todo/monthly-habit-challenge)
+       (-map #'todo/habit)))
+
+(defconst todo/first-of-the-month-stack
+  '("Create habit template for current month"
+    "Reserve two dinners in London for dates"
+    "Post mortem of previous month"
+    "Create monthly financial budget in Google Sheets")
+  "A stack of habits that I do at the beginning of each month.")
+
+(defconst todo/adhoc-habits
+  (->> (list/concat
+        todo/first-of-the-month-stack)
+       (-map #'todo/habit))
+  "Habits that I have no classification for at the moment.")
+
+;; TODO: Model this as a function.
+(defconst todo/habits
+  (list/concat todo/daily-habits
+               todo/adhoc-habits)
+  "My habits for today.")
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Meetings
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; TODO: Define "meeting".
+
+(defconst todo/daily-meetings
+  (->> '("Standup"
+         "Lunch")
+       (-map #'todo/meeting))
+  "Daily, recurrent meetings.")
+
+
+(defconst todo/day-of-week-meetings
+  '(:Monday    '("Lunch")
+    :Tuesday   '("Lunch")
+    :Wednesday '("Team Lunch")
+    :Thursday  '("Lunch")
+    :Friday    '("Lunch")
+    :Satuday   '()
+    :Sunday    '())
+  "Meetings that occur depending on the current day of the week.")
+
+(parse-time-string "today")
+
+;; TODO: Support recurrent, non-daily meetings.
+
+(defconst todo/adhoc-meetings
+  (->> '("WSE Weekly Standup"
+         "Team Lunch"
+         "Karisa Explains It All")
+       (-map #'todo/meeting))
+  "Non-recurrent meetings.")
+
+(defconst todo/meetings
+  (list/concat todo/daily-meetings
+               todo/adhoc-meetings)
+  "My meetings for today.")
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Tasks
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defconst todo/tasks
+  (->> '("GetEmailCase"
+         "Async node workflow"
+         "Support C-c in EXWM"
+         "Post-its for bathroom mirror"
+         "Visit AtomicHabit.com/scorecard"
+         "Visit AtomicHabit.com/habitstacking"
+         "Create GraphViz for Carpe Diem cirriculum"
+         "Create CitC client for local browsing of CE codebase"
+         "Respond to SRE emails")
+       (-map #'todo/task)))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Work queues (today, tomorrow, someday)
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; TODO: Generate standup documents from DONE items in the state.
+
+;; TODO: Learn how to create a gen-server style of live, reactive state.
+;; TODO: This should probably be `defconst' and a reference to the live state.
+(defconst todo/today
+  (list/concat
+   todo/habits
+   todo/meetings
+   todo/tasks))
+
+(defconst todo/tomorrow
+  '())
+
+(defconst todo/someday
+  '())
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; View functions
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun todo/to-org (xs)
+  "Map `XS' into a string with `org-mode' syntax."
+  ;; TODO: Create function to DRY this code up.
+  (let ((meetings (->> xs
+                       (-filter #'todo/meeting?)
+                       (-map (lambda (x)
+                               (s-concat "** TODO " (todo/label x))))
+                       (s-join "\n")))
+        (tasks (->> xs
+                    (-filter #'todo/task?)
+                    (-map (lambda (x)
+                            (s-concat "** TODO " (todo/label x))))
+                    (s-join "\n")))
+        (habits (->> xs
+                     (-filter #'todo/habit?)
+                     (-map (lambda (x)
+                             (s-concat "** TODO " (todo/label x))))
+                     (s-join "\n"))))
+    (s-join "\n" (list
+                  (s-concat "* Meetings\n" meetings)
+                  (s-concat "* Tasks\n" tasks)
+                  (s-concat "* Habits\n" habits)))))
+
+(defun todo/export-to-org (xs)
+  "Export `XS' to `todo/org-file-path'."
+  (f-write-text (->> xs
+                     todo/to-org)
+                'utf-8
+                todo/org-file-path))
+
+(defun todo/orgify-today ()
+  "Exports today's todos to an org file."
+  (interactive)
+  (todo/export-to-org todo/today)
+  (alert (string/concat  "Exported today's TODOs to: " todo/org-file-path)))
+
+(when todo/install-kbds?
+  (evil-leader/set-key
+    "to" #'todo/orgify-today))
+
+(provide 'todo)
+;;; todo.el ends here
diff --git a/configs/shared/.emacs.d/wpc/tree.el b/configs/shared/.emacs.d/wpc/tree.el
new file mode 100644
index 0000000000..43df4dc500
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/tree.el
@@ -0,0 +1,193 @@
+;;; tree.el --- Working with Trees -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Some friendly functions that hopefully will make working with trees cheaper
+;; and therefore more appealing!
+;;
+;; Tree terminology:
+;; - leaf: node with zero children.
+;; - root: node with zero parents.
+;; - depth: measures a node's distance from the root node.  This implies the
+;;   root node has a depth of zero.
+;; - height: measures the longest traversal from a node to a leaf.  This implies
+;;   that a leaf node has a height of zero.
+;; - balanced?
+;;
+;; Tree variants:
+;; - binary: the maximum number of children is two.
+;; - binary search: the maximum number of children is two and left sub-trees are
+;;   lower in value than right sub-trees.
+;; - rose: the number of children is variable.
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Dependencies
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'prelude)
+(require 'list)
+(require 'set)
+(require 'tuple)
+(require 'series)
+(require 'random)
+(require 'maybe)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Library
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(cl-defstruct tree xs)
+
+(cl-defstruct node value children)
+
+(cl-defun tree/node (value &optional children)
+  "Create a node struct of VALUE with CHILDREN."
+  (make-node :value value
+             :children children))
+
+(defun tree/reduce-breadth (acc f xs)
+  "Reduce over XS breadth-first applying F to each x and ACC (in that order).
+Breadth-first traversals guarantee to find the shortest path in a graph.
+  They're typically more difficult to implement than DFTs and may also incur
+  higher memory costs on average than their depth-first counterparts.")
+
+;; TODO: Support :order as 'pre | 'in | 'post.
+;; TODO: Troubleshoot why I need defensive (nil? node) check.
+(defun tree/reduce-depth (acc f node)
+  "Reduce over NODE depth-first applying F to each NODE and ACC.
+F is called with each NODE, ACC, and the current depth.
+Depth-first traversals have the advantage of typically consuming less memory
+  than their breadth-first equivalents would have.  They're also typically
+  easier to implement using recursion.  This comes at the cost of not
+  guaranteeing to be able to find the shortest path in a graph."
+  (cl-labels ((do-reduce-depth
+               (acc f node depth)
+               (let ((acc-new (funcall f node acc depth)))
+                 (if (or (maybe/nil? node)
+                         (tree/leaf? node))
+                     acc-new
+                   (list/reduce
+                    acc-new
+                    (lambda (node acc)
+                      (tree/do-reduce-depth
+                       acc
+                       f
+                       node
+                       (number/inc depth)))
+                    (node-children node))))))
+    (do-reduce-depth acc f node 0)))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Helpers
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun tree/height (xs)
+  "Return the height of tree XS.")
+
+;; TODO: Troubleshoot why need for (nil? node).  Similar misgiving
+;; above.
+(defun tree/leaf-depths (xs)
+  "Return a list of all of the depths of the leaf nodes in XS."
+  (list/reverse
+   (tree/reduce-depth
+    '()
+    (lambda (node acc depth)
+      (if (or (maybe/nil? node)
+              (tree/leaf? node))
+          (list/cons depth acc)
+        acc))
+    xs)))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Generators
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; TODO: Consider parameterizing height, forced min-max branching, random
+;; distributions, etc.
+
+;; TODO: Bail out before stack overflowing by consider branching, current-depth.
+
+(cl-defun tree/random (&optional (value-fn (lambda (_) nil))
+                                 (branching-factor 2))
+  "Randomly generate a tree with BRANCHING-FACTOR using VALUE-FN to compute the
+node values.  VALUE-FN is called with the current-depth of the node.  Useful for
+generating test data.  Warning this function can overflow the stack."
+  (cl-labels ((do-random
+               (d vf bf)
+               (make-node
+                :value (funcall vf d)
+                :children (->> (series/range 0 (number/dec bf))
+                               (list/map
+                                (lambda (_)
+                                  (when (random/boolean?)
+                                    (do-random d vf bf))))))))
+    (do-random 0 value-fn branching-factor)))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Predicates
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun tree/instance? (tree)
+  "Return t if TREE is a tree struct."
+  (node-p tree))
+
+(defun tree/leaf? (node)
+  "Return t if NODE has no children."
+  (maybe/nil? (node-children node)))
+
+(defun tree/balanced? (n xs)
+  "Return t if the tree, XS, is balanced.
+A tree is balanced if none of the differences between any two depths of two leaf
+  nodes in XS is greater than N."
+  (> n (->> xs
+            tree/leaf-depths
+            set/from-list
+            set/count
+            number/dec)))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Tests
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defconst tree/enable-testing? t
+  "When t, test suite runs.")
+
+;; TODO: Create set of macros for a proper test suite including:
+;; - describe (arbitrarily nestable)
+;; - it (arbitrarily nestable)
+;; - line numbers for errors
+;; - accumulated output for synopsis
+;; - do we want describe *and* it? Why not a generic label that works for both?
+(when tree/enable-testing?
+  (let ((tree-a (tree/node 1
+                           (list (tree/node 2
+                                            (list (tree/node 5)
+                                                  (tree/node 6)))
+                                 (tree/node 3
+                                            (list (tree/node 7)
+                                                  (tree/node 8)))
+                                 (tree/node 4
+                                            (list (tree/node 9)
+                                                  (tree/node 10))))))
+        (tree-b (tree/node 1
+                           (list (tree/node 2
+                                            (list (tree/node 5)
+                                                  (tree/node 6)))
+                                 (tree/node 3)
+                                 (tree/node 4
+                                            (list (tree/node 9)
+                                                  (tree/node 10)))))))
+    ;; instance?
+    (prelude/assert (tree/instance? tree-a))
+    (prelude/assert (tree/instance? tree-b))
+    (prelude/refute (tree/instance? '(1 2 3)))
+    (prelude/refute (tree/instance? "oak"))
+    ;; balanced?
+    (prelude/assert (tree/balanced? 1 tree-a))
+    (prelude/refute (tree/balanced? 1 tree-b))
+    (message "Tests pass!")))
+
+(provide 'tree)
+;;; tree.el ends here
diff --git a/configs/shared/.emacs.d/wpc/tuple.el b/configs/shared/.emacs.d/wpc/tuple.el
new file mode 100644
index 0000000000..ccebf7299a
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/tuple.el
@@ -0,0 +1,86 @@
+;;; tuple.el --- Tuple API for Elisp -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Work with cons cells with two elements with a familiar API for those who have
+;; worked with tuples before.
+
+;;; Code:
+
+(cl-defstruct tuple first second)
+
+;; Create
+(defun tuple/new ()
+  "Return an empty tuple."
+  (make-tuple :first nil
+              :second nil))
+
+(defun tuple/from (a b)
+  "Return a new tuple from A and B."
+  (make-tuple :first a
+              :second b))
+
+(defun tuple/from-dotted (dp)
+  "Convert dotted pair, DP, into a tuple."
+  (tuple/from (car dp) (cdr dp)))
+
+;; Read
+(defun tuple/first (pair)
+  "Return the first element of PAIR."
+  (tuple-first pair))
+
+(defun tuple/second (pair)
+  "Return the second element of PAIR."
+  (tuple-second pair))
+
+;; Update
+(defun tuple/map-each (f g pair)
+  "Apply F to first, G to second in PAIR."
+  (->> pair
+       (tuple/map-first f)
+       (tuple/map-second g)))
+
+(defun tuple/map (f pair)
+  "Apply F to PAIR."
+  (let ((pair-copy (copy-tuple pair)))
+    (funcall f pair-copy)))
+
+(defun tuple/map-first (f pair)
+  "Apply function F to the first element of PAIR."
+  (let ((pair-copy (copy-tuple pair)))
+    (setf (tuple-first pair-copy) (funcall f (tuple/first pair-copy)))
+    pair-copy))
+
+(defun tuple/map-second (f pair)
+  "Apply function F to the second element of PAIR."
+  (let ((pair-copy (copy-tuple pair)))
+    (setf (tuple-second pair-copy) (funcall f (tuple/second pair-copy)))
+    pair-copy))
+
+(defun tuple/set-first (a pair)
+  "Return a new tuple with the first element set as A in PAIR."
+  (tuple/map-first (lambda (_) a) pair))
+
+(defun tuple/set-second (b pair)
+  "Return a new tuple with the second element set as B in PAIR."
+  (tuple/map-second (lambda (_) b) pair))
+
+;; Delete
+(defun tuple/delete-first (pair)
+  "Return PAIR with the first element set to nil."
+  (tuple/set-first nil pair))
+
+(defun tuple/delete-second (pair)
+  "Return PAIR with the second element set to nil."
+  (tuple/set-second nil pair))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Predicates
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun tuple/instance? (x)
+  "Return t if X is a tuple."
+  (tuple-p x))
+
+(provide 'tuple)
+;;; tuple.el ends here
diff --git a/configs/shared/.emacs.d/wpc/vector.el b/configs/shared/.emacs.d/wpc/vector.el
new file mode 100644
index 0000000000..4fc6ffe911
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/vector.el
@@ -0,0 +1,59 @@
+;;; vector.el --- Working with Elisp's Vector data type -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; It might be best to think of Elisp vectors as tuples in languages like
+;; Haskell or Erlang.
+;;
+;; Not surprisingly, this API is modelled after Elixir's Tuple API.
+;;
+;; Some Elisp trivia:
+;; - "Array": Usually means vector or string.
+;; - "Sequence": Usually means list or "array" (see above).
+;;
+;; It might be a good idea to think of Array and Sequence as typeclasses in
+;; Elisp.  This is perhaps more similar to Elixir's notion of the Enum protocol.
+;;
+;; Intentionally not supporting a to-list function, because tuples can contain
+;; heterogenous types whereas lists should contain homogenous types.
+
+;;; Code:
+
+;; TODO: Consider supporting an alias named tuple for vector.
+
+;; TODO: Consider labelling variadic functions like `vector/concat*'
+;; vs. `vector/concat'.
+(defun vector/concat (&rest args)
+  "Return a new vector composed of all vectors in `ARGS'."
+  (apply #'vconcat args))
+
+;; TODO: Here's a sketch of a protocol macro being consumed.
+;; (definstance monoid vector
+;;   :empty (lambda () []))
+
+(defun vector/prepend (x xs)
+  "Add `X' to the beginning of `XS'."
+  (vector/concat `[,x] xs))
+
+(defun vector/append (x xs)
+  "Add `X' to the end of `XS'."
+  (vector/concat xs `[,x]))
+
+(defun vector/get (i xs)
+  "Return the value in `XS' at index, `I'."
+  (aref xs i))
+
+(defun vector/set (i v xs)
+  "Set index `I' to value `V' in `XS'.
+Returns a copy of `XS' with the updates."
+  (let ((copy (vconcat [] xs)))
+    (aset copy i v)
+    copy))
+
+;; TODO: Decide between "remove" and "delete" as the appropriate verbs.
+;; TODO: Implement this.
+;; (defun vector/delete (i xs)
+;;   "Remove the element at `I' in `XS'.")
+
+(provide 'vector)
+;;; vector.el ends here
diff --git a/configs/shared/.emacs.d/wpc/wallpaper.el b/configs/shared/.emacs.d/wpc/wallpaper.el
new file mode 100644
index 0000000000..63548964b7
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/wallpaper.el
@@ -0,0 +1,84 @@
+;;; wallpaper.el --- Control Linux desktop wallpaper -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Functions for setting desktop wallpaper.
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Dependencies
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'fs)
+(require 'cycle)
+(require 'string)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Library
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defcustom wallpaper/keybindings? t
+  "If non-nil, install the keybindings.")
+
+(defcustom wallpaper/path-to-dir
+  (f-expand "~/.local/share/wallpaper")
+  "Path to the images that will be used as the wallpaper.")
+
+(defconst wallpaper/whitelist
+  (cycle/from-list
+   (fs/ls wallpaper/path-to-dir t))
+  "My preferred computer wallpapers.")
+
+(defun wallpaper/set (path)
+  "Set computer wallpaper to image at `PATH' using `feh` under-the-hood."
+  (shell-command (string/format "feh --bg-scale --no-fehbg %s" path)))
+
+(defun wallpaper/whitelist-set (wallpaper)
+  "Focuses the WALLPAPER in the `wallpaper/whitelist' cycle."
+  (cycle/focus (lambda (x) (equal x wallpaper)) wallpaper/whitelist)
+  (wallpaper/set (wallpaper/current)))
+
+(defun wallpaper/next ()
+  "Cycles to the next wallpaper."
+  (interactive)
+  (let ((wallpaper (cycle/next wallpaper/whitelist)))
+    (wallpaper/set wallpaper)
+    (message (string/format "Active wallpaper: %s" (f-filename wallpaper)))))
+
+(defun wallpaper/prev ()
+  "Cycles to the previous wallpaper."
+  (interactive)
+  (let ((wallpaper (cycle/prev wallpaper/whitelist)))
+    (wallpaper/set wallpaper)
+    (message (string/format "Active wallpaper: %s" (f-filename wallpaper)))))
+
+;; TODO: Define a macro that handles, next, prev, select, current for working
+;; with cycles, since this is a common pattern.
+
+(defun wallpaper/print-current ()
+  "Message the currently enabled wallpaper."
+  (interactive)
+  (message
+   (cycle/current wallpaper/whitelist)))
+
+(defun wallpaper/current ()
+  "Return the currently enabled wallpaper."
+  (cycle/current wallpaper/whitelist))
+
+(defun wallpaper/ivy-select ()
+  "Use `counsel' to select and set a wallpaper from the `wallpaper/whitelist'."
+  (interactive)
+  (wallpaper/whitelist-set
+   (ivy-read "Select wallpaper: " (cycle/to-list wallpaper/whitelist))))
+
+;; TODO: Create macro-based module system that will auto-namespace functions,
+;; constants, etc. with the filename like `wallpaper'.
+
+(when wallpaper/keybindings?
+  (evil-leader/set-key
+    "Fw" #'wallpaper/next
+    "Pw" #'wallpaper/prev))
+
+(provide 'wallpaper)
+;;; wallpaper.el ends here
diff --git a/configs/shared/.emacs.d/wpc/window-manager.el b/configs/shared/.emacs.d/wpc/window-manager.el
new file mode 100644
index 0000000000..76586303dc
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/window-manager.el
@@ -0,0 +1,672 @@
+;;; window-manager.el --- Functions to ease my transition to EXWM. -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; It's possible that this module will be entirely temporary.  Creating it after
+;; switching to EXWM to help transfer my reliance from i3 to EXWM.
+;;
+;; Wish list:
+;; - TODO: Support different startup commands and layouts depending on laptop or
+;;   desktop.
+;; - TODO: Support a Music named-workspace.
+
+;;; Code:
+
+(require 'prelude)
+(require 'string)
+(require 'cycle)
+(require 'set)
+(require 'kbd)
+(require 'ivy-helpers)
+(require 'display)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Library
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; TODO: Associate `window-purpose' window-layouts with each of these named
+;; workspaces.
+
+;; TODO: Associate KBDs for each of these named-layouts.
+
+;; TODO: Decide between window-manager, exwm, or some other namespace.
+
+;; TODO: Support (cycle/from-list '(current previous)) to toggle back and forth
+;; between most recent workspace.
+
+;; TODO: Support ad hoc cycle for loading a few workspaces that can be cycled
+;; between. (cycle/from-list '("Project" "Workspace"))
+
+;; TODO: Consider supporting a workspace for Racket, Clojure, Common Lisp,
+;; Haskell, Elixir, and a few other languages. These could behave very similarly
+;; to repl.it, which I've wanted to have locally for awhile now.
+
+;; TODO: Support MRU cache of workspaces for easily switching back-and-forth
+;; between workspaces.
+
+(cl-defstruct exwm/named-workspace
+  label
+  index
+  kbd)
+
+(defconst exwm/install-workspace-kbds? t
+  "When t, install the keybindings to switch between named-workspaces.")
+
+;; TODO: Consume `cache/touch' after changing workspaces.  Use this to enable
+;; cycling through workspaces.
+
+(defconst exwm/named-workspaces
+  (list (make-exwm/named-workspace
+         :label "Web surfing"
+         :index 0
+         :kbd "c")
+        (make-exwm/named-workspace
+         :label "Project"
+         :index 1
+         :kbd "p")
+        (make-exwm/named-workspace
+         :label "Dotfiles"
+         :index 2
+         :kbd "d")
+        (make-exwm/named-workspace
+         :label "Scratch"
+         :index 3
+         :kbd "s")
+        (make-exwm/named-workspace
+         :label "Terminal"
+         :index 4
+         :kbd "t")
+        (make-exwm/named-workspace
+         :label "Todos"
+         :index 5
+         :kbd "o")
+        (make-exwm/named-workspace
+         :label "Chatter"
+         :index 6
+         :kbd "h")
+        (make-exwm/named-workspace
+         :label "Work"
+         :index 7
+         :kbd "w"))
+  "List of `exwm/named-workspace' structs.")
+
+;; Assert that no two workspaces share KBDs.
+(prelude/assert (= (list/length exwm/named-workspaces)
+                   (->> exwm/named-workspaces
+                        (list/map #'exwm/named-workspace-kbd)
+                        set/from-list
+                        set/count)))
+
+(defun window-manager/alert (x)
+  "Message X with a structured format."
+  (alert (string/concat "[exwm] " x)))
+
+;; Use Emacs as my primary window manager.
+(use-package exwm
+  :config
+  (require 'exwm-config)
+
+  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+  ;; Multiple Displays
+  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+  (require 'exwm-randr)
+  (exwm-randr-enable)
+  ;; TODO: Consider generating this plist.
+  ;; TODO: Replace integer index values with their named workspace equivalents.
+  (setq exwm-randr-workspace-monitor-plist (list 0 display/4k
+                                                 1 display/primary))
+
+  (evil-set-initial-state 'exwm-mode 'emacs)
+  (ido-mode 1)
+  (exwm-config-ido)
+  (setq exwm-workspace-number
+        (list/length exwm/named-workspaces))
+  ;; EXWM supports "line-mode" and "char-mode".
+  ;;
+  ;; Note: It appears that calling `exwm-input-set-key' works if it's called
+  ;; during startup.  Once a session has started, it seems like this function is
+  ;; significantly less useful.  Is this a bug?
+  ;;
+  ;; Glossary:
+  ;; - char-mode: All keystrokes except `exwm' global ones are passed to the
+  ;;   application.
+  ;; - line-mode:
+  ;;
+  ;; `exwm-input-global-keys' = {line,char}-mode; can also call `exwm-input-set-key'
+  ;; `exwm-mode-map'          = line-mode
+  ;; `???'                    = char-mode. Is there a mode-map for this?
+  ;;
+  ;; TODO: What is `exwm-input-prefix-keys'?
+  ;; TODO: Once I get `exwm-input-global-keys' functions, drop support for
+  ;; `wpc/kbds'.
+  (let ((kbds `(
+                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+                ;; Window sizing
+                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+                (:key "C-M-=" :fn balance-windows)
+                ;; TODO: Make sure these don't interfere with LISP KBDs.
+                (:key "C-M-j" :fn shrink-window)
+                (:key "C-M-k" :fn enlarge-window)
+                (:key "C-M-h" :fn shrink-window-horizontally)
+                (:key "C-M-l" :fn enlarge-window-horizontally)
+
+                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+                ;; Window traversing
+                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+                (:key "M-h" :fn windmove-left)
+                (:key "M-j" :fn windmove-down)
+                (:key "M-k" :fn windmove-up)
+                (:key "M-l" :fn windmove-right)
+
+                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+                ;; Window splitting
+                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+                (:key "M-\\" :fn evil-window-vsplit)
+                (:key "M--"  :fn evil-window-split)
+
+                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+                ;; Window deletion
+                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+                (:key "M-q" :fn delete-window)
+
+                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+                ;; Miscellaneous
+                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+                (:key "M-:"               :fn eval-expression)
+                (:key "M-SPC"             :fn window-manager/apps)
+                (:key "M-x"               :fn counsel-M-x)
+                (:key "<M-tab>"           :fn exwm/next-workspace)
+                (:key "<M-S-iso-lefttab>" :fn exwm/prev-workspace)
+                (:key "<M-iso-lefttab>"   :fn exwm/prev-workspace)
+                ;; <M-escape> doesn't work in X11 windows.
+                (:key "<M-escape>"        :fn exwm/ivy-switch)
+                (:key "C-M-\\"            :fn ivy-pass)
+
+                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+                ;; REPLs
+                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+                (:key ,(kbd/raw 'x11 "r") :fn exwm/ivy-find-or-create-repl)
+
+                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+                ;; Workspaces
+                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+                ;; NOTE: Here I need to generate lowercase and uppercase
+                ;; variants of each because my Ergodox is sending capitalized
+                ;; variants of the keycodes to EXWM.
+                (:key ,(kbd/raw 'workspace "l") :fn window-manager/logout)
+                (:key ,(kbd/raw 'workspace "L") :fn window-manager/logout)
+                (:key ,(kbd/raw 'workspace "i") :fn exwm/toggle-mode)
+                (:key ,(kbd/raw 'workspace "I") :fn exwm/toggle-mode))))
+    (setq exwm-input-global-keys
+          (->> kbds
+               (-map (lambda (plist)
+                       `(,(kbd (plist-get plist :key)) . ,(plist-get plist :fn)))))))
+  (setq exwm-input-simulation-keys
+        ;; TODO: Consider supporting M-d and other readline style KBDs.
+        '(([?\C-b] . [left])
+          ([?\M-b] . [C-left])
+          ([?\C-f] . [right])
+          ([?\M-f] . [C-right])
+          ([?\C-p] . [up])
+          ([?\C-n] . [down])
+          ([?\C-a] . [home])
+          ([?\C-e] . [end])
+          ([?\C-d] . [delete])
+          ;; TODO: Assess whether or not this is a good idea.
+          ;; TODO: Ensure C-c copies.
+          ([?\C-c] . [C-c])))
+  (exwm-enable))
+
+;; TODO: Package workspace management in another module.
+
+;; Here is the code required to allow EXWM to cycle workspaces.
+(defconst exwm/workspaces
+  (->> exwm/named-workspaces
+       cycle/from-list)
+  "Cycle of the my EXWM workspaces.")
+
+(prelude/assert
+ (= exwm-workspace-number
+    (list/length exwm/named-workspaces)))
+
+(defun exwm/next-workspace ()
+  "Cycle forwards to the next workspace."
+  (interactive)
+  (exwm-workspace-switch
+   (exwm/named-workspace-index (cycle/next exwm/workspaces)))
+  (window-manager/alert
+   (string/concat
+    "Current workspace: "
+    (exwm/named-workspace-label (cycle/current exwm/workspaces)))))
+
+(defun exwm/prev-workspace ()
+  "Cycle backwards to the previous workspace."
+  (interactive)
+  (exwm-workspace-switch
+   (exwm/named-workspace-index (cycle/prev exwm/workspaces)))
+  (window-manager/alert
+   (string/concat
+    "Current workspace: "
+    (exwm/named-workspace-label (cycle/current exwm/workspaces)))))
+
+;; TODO: Create friendlier API for working with EXWM.
+
+;; Here is the code required to toggle EXWM's modes.
+(defun exwm/line-mode ()
+  "Switch exwm to line-mode."
+  (call-interactively #'exwm-input-grab-keyboard)
+  (window-manager/alert "Switched to line-mode"))
+
+(defun exwm/char-mode ()
+  "Switch exwm to char-mode."
+  (call-interactively #'exwm-input-release-keyboard)
+  (window-manager/alert "Switched to char-mode"))
+
+(defconst exwm/modes
+  (cycle/from-list (list #'exwm/char-mode
+                         #'exwm/line-mode))
+  "Functions to switch exwm modes.")
+
+(defun exwm/toggle-mode ()
+  "Switch between line- and char- mode."
+  (interactive)
+  (with-current-buffer (window-buffer)
+    (when (eq major-mode 'exwm-mode)
+      (funcall (cycle/next exwm/modes)))))
+
+;; Ensure exwm apps open in char-mode.
+(add-hook
+ 'exwm-manage-finish-hook
+ #'exwm/char-mode)
+
+;; Interface to the Linux password manager
+(use-package ivy-pass)
+
+(defconst exwm/preferred-terminal "terminator"
+  "My preferred terminal.")
+
+(defconst exwm/preferred-browser "google-chrome"
+  "My preferred web browser.")
+
+(defun exwm/browser-open (&optional url)
+  "Opens the URL in `exwm/preferred-browser'."
+  (exwm/open
+   (string/format "%s %s" exwm/preferred-browser url)
+   :buffer-name (string/format "*%s*<%s>" exwm/preferred-browser url)
+   :process-name url))
+
+;; TODO: Consider storing local state of all processes started with this command
+;; for some nice ways to cycle through existing terminals, etc.
+(defun exwm/terminal-open (cmd)
+  "Call CMD using `exwm/preferred-terminal'."
+  (exwm/open (string/format
+              "%s --command '%s'"
+              exwm/preferred-terminal
+              cmd)
+             :buffer-name (string/format "*%s*<%s>" exwm/preferred-terminal cmd)
+             :process-name cmd))
+
+;; TODO: Create a KBD that calls the `C-x b<Enter>' I call often.
+;; TODO: Consider auto-generating KBDs for spawning these using the first
+;; character in their name.  Also assert that none of the generated keybindings
+;; will clash with one another.
+(defconst exwm/repls
+  '(("python" . (lambda () (exwm/terminal-open "python3")))
+    ("zsh"    . (lambda () (exwm/terminal-open "zsh")))
+    ("fish"   . (lambda () (exwm/terminal-open "fish")))
+    ("nix"    . (lambda () (exwm/terminal-open "nix repl")))
+    ("racket" . racket-repl)
+    ;; NOTE: `ielm' as-is is a find-or-create operation.
+    ("elisp"  . ielm))
+  "Mapping of REPL labels to the commands needed to initialize those REPLs.")
+
+;; NOTE: Some of these commands split the window already.  Some of these
+;; commands find-or-create already.
+;;
+;; Find-or-create:
+;;        +---+---+
+;;        | Y | N |
+;;        +---+---+
+;; python |   | x |
+;; zsh    |   | x |
+;; racket | x |   |
+;; elisp  | x |   |
+;;        +---+---+
+;;
+;; Split:
+;;        +---+---+
+;;        | Y | N |
+;;        +---+---+
+;; python |   | x |
+;; zsh    |   | x |
+;; racket | x |   |
+;; elisp  |   | x |
+;;        +---+---+
+
+;; - Split:
+;;   - racket
+(defun exwm/ivy-find-or-create-repl ()
+  "Select a type of REPL using `ivy' and then find-or-create it."
+  (interactive)
+  (ivy-helpers/kv "REPLs: "
+                  exwm/repls
+                  (lambda (_ v)
+                    (funcall v))))
+
+;; KBDs to quickly open X11 applications.
+(general-define-key
+ ;; TODO: Eventually switch this to a find-or-create operation.  In general, I
+ ;; shouldn't need multiple instances of `python3` REPLs.
+ ;; TODO: Consider coupling these KBDs with the `exwm/ivy-find-or-create-repl'
+ ;; functionality defined above.
+ (kbd/raw 'x11 "n") (lambda ()
+                      (interactive)
+                      (exwm/terminal-open "nix repl"))
+ (kbd/raw 'x11 "p") (lambda ()
+                      (interactive)
+                      (exwm/terminal-open "python3"))
+ (kbd/raw 'x11 "t") (lambda ()
+                      (interactive)
+                      (exwm/terminal-open "zsh"))
+ (kbd/raw 'x11 "c") (lambda ()
+                      (interactive)
+                      (exwm/open exwm/preferred-browser)))
+
+;; TODO: Support searching all "launchable" applications like OSX's Spotlight.
+;; TODO: Model this as key-value pairs.
+(defconst window-manager/applications
+  (list "google-chrome --new-window --app=https://chat.google.com"
+        "google-chrome --new-window --app=https://calendar.google.com"
+        "google-chrome --new-window --app=https://gmail.com"
+        "google-chrome --new-window --app=https://web.telegram.org"
+        "google-chrome --new-window --app=https://teknql.slack.com"
+        "google-chrome --new-window --app=https://web.whatsapp.com"
+        "google-chrome --new-window --app=https://irccloud.com"
+        exwm/preferred-browser
+        exwm/preferred-terminal)
+  "Applications that I commonly use.
+These are the types of items that would usually appear in dmenu.")
+
+;; TODO: Consider replacing the `ivy-read' call with something like `hydra' that
+;; can provide a small mode for accepting user-input.
+;; TODO: Put this somewhere more diliberate.
+
+(defun window-manager/screenshot ()
+  "Choose between \"Local\" and \"Google\" screenshots."
+  (interactive)
+  (pcase (ivy-read "Type of screenshot: " '("Google" "Local"))
+    ;; TODO: Drop `zsh -i -c' dependency and reimplement in Elisp.
+    ("Google" (shell-command "zsh -i -c snipit"))
+    ("Local"  (shell-command "zsh -i -c screenshot"))))
+
+;; TODO: Configure the environment variables for xsecurelock so that the font is
+;; smaller, different, and the glinux wallpaper doesn't show.
+;; - XSECURELOCK_FONT="InputMono-Black 10"
+;; - XSECURE_SAVER=""
+;; - XSECURE_LOGO_IMAGE=""
+;; Maybe just create a ~/.xsecurelockrc
+;; TODO: Is there a shell-command API that accepts an alist and serializes it
+;; into variables to pass to the shell command?
+(defconst window-manager/xsecurelock
+  "/usr/share/goobuntu-desktop-files/xsecurelock.sh"
+  "Path to the proper xsecurelock executable.
+The other path to xsecurelock is /usr/bin/xsecurelock, which works fine, but it
+is not optimized for Goobuntu devices.  Goobuntu attempts to check a user's
+password using the network.  When there is no network connection available, the
+login attempts fail with an \"unknown error\", which isn't very helpful.  To
+avoid this, prefer the goobuntu wrapper around xsecurelock when on a goobuntu
+device.  This all relates to PAM (i.e. pluggable authentication modules).")
+
+(defun window-manager/logout ()
+  "Prompt the user for options for logging out, shutting down, etc.
+
+The following options are supported:
+- Lock
+- Logout
+- Suspend
+- Hibernate
+- Reboot
+- Shutdown
+
+Ivy is used to capture the user's input."
+  (interactive)
+  (let* ((name->cmd `(("Lock" . ,window-manager/xsecurelock)
+                      ("Logout" . "sudo systemctl stop lightdm")
+                      ("Suspend" . ,(string/concat
+                                     window-manager/xsecurelock
+                                     " && systemctl suspend"))
+                      ("Hibernate" . ,(string/concat
+                                       window-manager/xsecurelock
+                                       " && systemctl hibernate"))
+                      ("Reboot" . "systemctl reboot")
+                      ("Shutdown" . "systemctl poweroff"))))
+    (funcall
+     (lambda ()
+       (shell-command
+        (alist/get (ivy-read "System: " (alist/keys name->cmd))
+                   name->cmd))))))
+
+(cl-defun exwm/open (command &key
+                             (process-name command)
+                             (buffer-name command))
+  "Open COMMAND, which should be an X11 window."
+  (start-process-shell-command process-name buffer-name command))
+
+(cl-defun window-manager/execute-from-counsel (&key prompt list)
+  "Display a counsel menu of `LIST' with `PROMPT' and pipe the output through
+`start-process-shell-command'."
+  (let ((x (ivy-read prompt list)))
+    (exwm/open
+     x
+     :buffer-name (string/format "*exwm/open*<%s>" x)
+     :process-name x)))
+
+(defun window-manager/apps ()
+  "Open commonly used applications from counsel."
+  (interactive)
+  (window-manager/execute-from-counsel
+   :prompt "Application: "
+   :list window-manager/applications))
+
+;; TODO: KBDs for {enlarge,shrink}-window
+
+(use-package window-purpose
+  :config
+  (purpose-mode 1)
+
+  ;; call `purpose-compile-user-configuration' after making changes.
+
+  ;; Example configuration:
+  ;; (setq purpose-user-mode-purposes
+  ;;       '((term-mode . terminal)
+  ;;         (shell-mode . terminal)
+  ;;         (ansi-term-mode . terminal)
+  ;;         (tuareg-mode . coding)
+  ;;         (compilation-mode . messages)))
+
+  (setq purpose-user-mode-purposes
+        '(
+          ;; Overview:
+          ;; - coding: buffers for editing code
+          ;; - repl: interactive REPLs -- including terminals
+          ;; - documentation: help buffers and language documentation
+          ;;
+          ;; Ideas:
+          ;; - racket and racket-project and two different variants where the
+          ;;   project version includes a file browser.
+          ;; - google3 workspace
+
+          ;; Racket
+          (racket-mode . coding)
+          (racket-repl-mode . repl)
+          (racket-describe-mode . documentation)
+          ;; Elisp
+          (emacs-lisp-mode . coding)
+          (ielm-mode . repl)
+          ;; Python
+          ;; (python-mode . coding)
+          ;; (emacs-lisp-mode . coding)
+          ))
+
+  (macros/comment
+   (purpose-compile-user-configuration))
+
+  ;; (setq purpose-user-name-purposes
+  ;;       `(("name" . "purpose")
+  ;;         ("name" . "purpose")))
+
+  ;; (setq purpose-user-regexp-purposes
+  ;;       `(("regexp" . "purpose")
+  ;;         ("regexp" . "purpose")))
+
+  )
+
+(defun exwm/label->index (label workspaces)
+  "Return the index of the workspace in WORKSPACES named LABEL."
+  (let ((workspace (->> workspaces
+                        (list/find
+                         (lambda (x)
+                           (equal label
+                                  (exwm/named-workspace-label x)))))))
+    (if (prelude/set? workspace)
+        (exwm/named-workspace-index workspace)
+      (error (string/concat "No workspace found for label: " label)))))
+
+(defun exwm/register-kbd (workspace)
+  "Registers a keybinding for WORKSPACE struct.
+Currently using super- as the prefix for switching workspaces."
+  (let ((handler (lambda ()
+                   (interactive)
+                   (exwm/switch (exwm/named-workspace-label workspace))))
+        (key (exwm/named-workspace-kbd workspace)))
+    (exwm-input-set-key
+     (kbd/for 'workspace key)
+     handler)
+    ;; Note: We need to capitalize the KBD here because of the signals that my
+    ;; Ergodox is sending Emacs on my desktop.
+    (exwm-input-set-key
+     (kbd/for 'workspace (s-capitalize key))
+     handler)))
+
+(defun exwm/switch (label)
+  "Switch to a named workspaces using LABEL."
+  (cycle/focus
+   (lambda (x)
+     (equal label
+            (exwm/named-workspace-label x)))
+   exwm/workspaces)
+  (exwm-workspace-switch
+   (exwm/named-workspace-index (cycle/current exwm/workspaces)))
+  (window-manager/alert
+   (string/concat "Switched to: " label)))
+
+(defun exwm/ivy-switch ()
+  "Use ivy to switched between named workspaces."
+  (interactive)
+  (ivy-read
+   "Workspace: "
+   (->> exwm/named-workspaces
+        (list/map #'exwm/named-workspace-label))
+   :action #'exwm/switch))
+
+(when exwm/install-workspace-kbds?
+  (progn
+    (->> exwm/named-workspaces
+         (list/map #'exwm/register-kbd))
+    (window-manager/alert "Registered workspace KBDs!")))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Startup Applications in `exwm/named-workspaces'
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(add-hook
+ 'exwm-init-hook
+ (lambda ()
+   ;; TODO: Refactor this into a bigger solution where the named-workspaces are
+   ;; coupled to their startup commands.  Expedience wins this time.
+   (progn
+     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+     ;; Chrome
+     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+     (progn
+       (exwm/switch "Web surfing")
+       ;; make sure this blocks.
+       ;; TODO: Support shell-cmd.el that has `shell-cmd/{sync,async}'.
+       ;; (call-process-shell-command "google-chrome")
+       )
+     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+     ;; Project
+     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+     (progn
+       (exwm/switch "Project")
+       (find-file constants/current-project))
+     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+     ;; Scratch
+     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+     (progn
+       (exwm/switch "Scratch")
+       (switch-to-buffer "*scratch*"))
+     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+     ;; Terminal
+     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+     (progn
+       (exwm/switch "Terminal")
+       ;; TODO: Why does "gnome-terminal" work but not "terminator"?
+       ;; (call-process-shell-command "gnome-terminal")
+       )
+     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+     ;; Todos
+     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+     (progn
+       (exwm/switch "Todos")
+       (find-file "~/Dropbox/org/today.org")
+       (wpc/evil-window-vsplit-right)
+       (find-file "~/Dropbox/org/emacs.org"))
+     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+     ;; Dotfiles
+     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+     (progn
+       (exwm/switch "Dotfiles")
+       ;; TODO: Support (dotfiles/find-file "window-manager.el")?
+       (find-file "~/Dropbox/dotfiles/configs/shared/.emacs.d/init.el")
+       (wpc/evil-window-vsplit-right)
+       (find-file
+        "~/Dropbox/dotfiles/configs/shared/.emacs.d/wpc/window-manager.el"))
+     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+     ;; Chatter
+     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+     (progn
+       (exwm/switch "Chatter")
+       ;; TODO: Support the following chat applications:
+       ;; - Slack teknql
+       ;; - irccloud.net
+       ;; - web.whatsapp.com
+       ;; - Telegram
+       ;; NOTE: Perhaps all of these should be borderless.
+       ;; (call-process-shell-command "terminator")
+       )
+     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+     ;; Work
+     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+     (progn
+       (exwm/switch "Work")
+       ;; TODO: Support opening the following in chrome:
+       ;; - calendar
+       ;; - gmail
+       ;; - chat (in a horizontal split)
+       )
+     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+     ;; Reset to default
+     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+     (exwm/switch "Dotfiles")
+     )))
+
+(provide 'window-manager)
+;;; window-manager.el ends here
diff --git a/configs/shared/.emacs.d/wpc/window.el b/configs/shared/.emacs.d/wpc/window.el
new file mode 100644
index 0000000000..132156bc44
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/window.el
@@ -0,0 +1,37 @@
+;;; window.el --- Working with Emacs windows -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; Utilities to make CRUDing windows in Emacs easier.
+
+;;; Code:
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Dependencies
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(require 'prelude)
+(require 'macros)
+(require 'maybe)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Library
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun window/find (name)
+  "Find a window by the NAME of the buffer it's hosting."
+  (let ((buffer (get-buffer name)))
+    (if (maybe/some? buffer)
+        (get-buffer-window buffer)
+      nil)))
+
+;; TODO: Find a way to incorporate these into function documentation.
+(macros/comment
+ (window/find "*scratch*"))
+
+(defun window/delete (window)
+  "Delete the WINDOW reference."
+  (delete-window window))
+
+(provide 'window)
+;;; window.el ends here
diff --git a/configs/shared/.emacs.d/wpc/wpgtk.el b/configs/shared/.emacs.d/wpc/wpgtk.el
new file mode 100644
index 0000000000..432d828843
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/wpgtk.el
@@ -0,0 +1,45 @@
+;; wpgtk.el -- A base16 colorscheme template for wpgtk.
+
+;;; Commentary:
+
+;;; Authors:
+;; Template: William Carroll <wpcarro@gmail.com>
+
+;;; Code:
+
+(require 'base16-theme)
+(require 'colorscheme)
+
+(defvar base16-wpgtk-colors
+  '(:base00 "#31213f"
+    :base01 "#E29B61"
+    :base02 "#E8C35F"
+    :base03 "#565B87"
+    :base04 "#A56785"
+    :base05 "#20A89E"
+    :base06 "#3CC2B5"
+    :base07 "#8de0e1"
+    :base08 "#629c9d"
+    :base09 "#E29B61"
+    :base0A "#E8C35F"
+    :base0B "#565B87"
+    :base0C "#A56785"
+    :base0D "#20A89E"
+    :base0E "#3CC2B5"
+    :base0F "#8de0e1")
+  "All colors for Base16 wpgtk are defined here.")
+
+;; Define the theme
+(deftheme base16-wpgtk)
+
+;; Add all the faces to the theme
+(base16-theme-define 'base16-wpgtk base16-wpgtk-colors)
+
+;; Mark the theme as provided
+(provide-theme 'base16-wpgtk)
+
+(macros/comment
+ (colorscheme/set 'base16-wpgtk))
+
+(provide 'wpgtk)
+;;; wpgtk.el ends here
diff --git a/configs/shared/.emacs.d/wpc/zle.el b/configs/shared/.emacs.d/wpc/zle.el
new file mode 100644
index 0000000000..1b01da9384
--- /dev/null
+++ b/configs/shared/.emacs.d/wpc/zle.el
@@ -0,0 +1,90 @@
+;;; zle.el --- Functions to mimmick my ZLE KBDs -*- lexical-binding: t -*-
+;; Author: William Carroll <wpcarro@gmail.com>
+
+;;; Commentary:
+;; This is primarily for personal use.  The keybindings that I choose are those
+;; that feel slightly mnemonic while also not shadowing important bindings.
+;; It's quite possible that our tastes will differ here.
+;;
+;; All of these keybindings are intended to shave off milliseconds off your
+;; typing.  I don't expect these numbers to sum up to a meaningful amount.  The
+;; primary reason that I wrote this, is that it introduces a small amount of
+;; structural editing to my workflow.  I've been using these exact keybindings
+;; on the command line, and I find them subtely delightful to use.  So much so
+;; that I decided to bring them to my Emacs configuration.
+;;
+;; ZLE is the Z-shell line editor.  I have some KBDs and functions that I often
+;; want in Emacs.
+;;
+;; Usage:
+;; Consider running `(zle-minor-mode)' to run this globally.  Depending on your
+;; configuration, it could be non-disruptive, disruptive, or extremely
+;; disruptive.
+;;
+;; TODO: Consider adding (general-unbind 'insert "C-v") herein.
+
+;;; Code:
+
+;; subshell (C-j)
+(defun zle/subshell ()
+  "Insert the characters necessary to create a subshell."
+  (interactive)
+  (insert-char ?$)
+  (insert-char ?\()
+  (save-excursion
+    (insert-char ?\))))
+
+;; variable (C-v)
+(defun zle/variable ()
+  "Insert the characters to reference a variable."
+  (interactive)
+  (insert-char ?$)
+  (insert-char ?{)
+  (save-excursion
+    (insert-char ?})))
+
+;; 2x dash (C-M--)
+(defun zle/dash-dash ()
+  "Insert the characters for flags with 2x dashes."
+  (interactive)
+  (insert-char ? )
+  (insert-char ?-)
+  (insert-char ?-))
+
+;; 1x quotes (M-')
+(defun zle/single-quote ()
+  "Insert the characters to quickly create single quotes."
+  (interactive)
+  (insert-char ? )
+  (insert-char ?')
+  (save-excursion
+    (insert-char ?')))
+
+;; 2x quotes (M-")
+(defun zle/double-quote ()
+  "Insert the characters to quickly create double quotes."
+  (interactive)
+  (insert-char ? )
+  (insert-char ?\")
+  (save-excursion
+    (insert-char ?\")))
+
+(defvar zle/kbds
+  (let ((map (make-sparse-keymap)))
+    (bind-keys :map map
+               ("C-j"   . zle/subshell)
+               ("C-v"   . zle/variable)
+               ("C-M--" . zle/dash-dash)
+               ("M-'"   . zle/single-quote)
+               ("M-\""  . zle/double-quote))
+    map)
+  "Keybindings shaving milliseconds off of typing.")
+
+(define-minor-mode zle-minor-mode
+  "A minor mode mirroring my ZLE keybindings."
+  :init-value nil
+  :lighter " zle"
+  :keymap zle/kbds)
+
+(provide 'zle)
+;;; zle.el ends here
diff --git a/configs/shared/google/.g4d b/configs/shared/.g4d
index 10ecbf4996..7eaf1eea1c 100644
--- a/configs/shared/google/.g4d
+++ b/configs/shared/.g4d
@@ -6,3 +6,10 @@ alias @spewall_protos /google3/google/internal/alkali/applications/speakeasydash
 alias @spewall_tests  /google3/javatests/com/google/alkali/applications/speakeasydashboard
 
 alias @gti            /google3/experimental/engedu/gti/projects/week20190422/mtv/Team10
+
+alias @authwf         /google3/customer_support/automation/workflow
+alias @redwood        /google3/customer_support/kms/redwood/ui
+alias @wf-fe          /google3/customer_support/kms/redwood/ui/client/components/item/workflow_editor
+
+# Auto Consult
+alias @ac /google3/google/internal/alkali/applications/casesconsultservice
diff --git a/configs/shared/git/.gitconfig b/configs/shared/.gitconfig
index dbeef54c78..f35279a77a 100644
--- a/configs/shared/git/.gitconfig
+++ b/configs/shared/.gitconfig
@@ -9,6 +9,7 @@
 	yday = ! git log --name-only --since=yesterday.midnight --until=today.midnight --author=\"$(git config --get user.email)\"
 	patch-grep = log -p -S
 	unstage = reset HEAD --
+	appraise = ! $HOME/go/bin/git-appraise
 [push]
 	default = current
 [rebase]
diff --git a/configs/shared/git/.gitignore b/configs/shared/.gitignore
index 0d9002511e..0d9002511e 100644
--- a/configs/shared/git/.gitignore
+++ b/configs/shared/.gitignore
diff --git a/configs/shared/.gnupg/crls.d/DIR.txt b/configs/shared/.gnupg/crls.d/DIR.txt
new file mode 100644
index 0000000000..2a29a47b8d
--- /dev/null
+++ b/configs/shared/.gnupg/crls.d/DIR.txt
@@ -0,0 +1 @@
+v:1:
diff --git a/configs/shared/gpg/.gnupg/export.sh b/configs/shared/.gnupg/export.sh
index 571689773b..571689773b 100755
--- a/configs/shared/gpg/.gnupg/export.sh
+++ b/configs/shared/.gnupg/export.sh
diff --git a/configs/shared/.gnupg/exported/ownertrust.txt b/configs/shared/.gnupg/exported/ownertrust.txt
new file mode 100644
index 0000000000..79b727914f
--- /dev/null
+++ b/configs/shared/.gnupg/exported/ownertrust.txt
@@ -0,0 +1,3 @@
+# List of assigned trustvalues, created Mon 29 Jul 2019 15:01:24 BST
+# (Use "gpg --import-ownertrust" to restore them)
+7E87921AAC9C514E9341C4F1C7A53CC58D3B1F8C:6:
diff --git a/configs/shared/.gnupg/exported/public.asc b/configs/shared/.gnupg/exported/public.asc
new file mode 100644
index 0000000000..8b5547f4c3
--- /dev/null
+++ b/configs/shared/.gnupg/exported/public.asc
@@ -0,0 +1,225 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBFk52cEBEADW2uF8AjpGxbd/yrtCguVzl7fWCCo/vZYGTomoHy7K3ru7bQEN
+upIBj1ElcsLGxbNLqdEqb17blTOUpaLLxWhEUw38rTpRyepBH0y2u5INDiw9GlpU
+uXKnkvaAF2f7DJH24jQA2mLI5Jcgc2M0Kzmuh1Q1foAy3frORBnYlrd9TlSPU7Og
+Jj0T20jtZIsIORov2TFC2cEpwa+9jHkNaBK2Bdg5c0SyI2r3TSJq+L7X8Vkf3Hmb
+NEWJj286+ElcFP/FyVgRCtSJPjBg/MF0ucukm96cel5qYfK5RkMA/HCyv6xI8iNn
+eZj8sJnozDY4rMxFwNkTxIjwH9cCTW0CR9FMsc1wlIe6Zx0ic8Fu7PZCS5MjM8cQ
+LnruOunVnb0YodQ+cLde6FlKu7kNUlLJrH5NnuFxjWPxzC63u+/K6CcRV9ilWe5r
+so/ImtNfGO1JiCvisYeOqlTYBKceQgjvu5tZtLJoGxH0UzoJARLCLRwyHN8dGqgp
+STRd0Ze6LtzYLG0uuedyPNXDKci7GyrVdAmxVIo+eLA1a7n3YCcluGKZlM0IBWx8
+fTKJ16ASTXpK7Hqr3XSf5V7tUcwxiFFtxh5C7kXglyd4QI6Jk6Xp8HlPLvYXNSNj
+VYRMHi/ueFI92jlt3kCodD26btgIEfD3e3JxKfHhOtwSoA2i1Hr43qdvtQARAQAB
+tCNXaWxsaWFtIENhcnJvbGwgPHdwY2Fycm9AZ21haWwuY29tPokCVAQTAQgAPhYh
+BH6HkhqsnFFOk0HE8celPMWNOx+MBQJZOdnBAhsDBQkJZgGABQsJCAcCBhUICQoL
+AgQWAgMBAh4BAheAAAoJEMelPMWNOx+MGm8P/RYqv5mnneRbyJ6CgisYn2iIBQvz
++rmpdGDfkFqsd2YqDoGjzEJLVkan+I1oLnKSv5QJqPw1gG7fSv6X7Trov9J+Cma3
+h1bSn2BBiq8L9paWTILYmsrBe7kU9bQjNKFu0qjfvPqkGX6HXO6c81N00Qgie574
+MCByWgPtJTcbPLJodIxu6+aibwNBc3XInL/d0ZbXLs8Fc0+z2/dO7cmzAdE77d5Q
+QaG9fGyztiYlZoUS9g3xT4ZulpPqs9zFa04fPvOXWVl+RQjZOYVYW/T8aVRnXohz
+3y7tnxOWs8cmCFd91DDR099DZXstAesWllPsdSld18aMjeM2XrzuaWVDYktaraiY
+RUdz6ZRPcaCpsIA2RHn++xEg+3q6QRz1J4bsbqEOKys+KlQO9uIgPMIkiMaLFoe5
+nu63XI4EMezrti86ETUxFPFL107P9KZ0gitjUXP0KSbnGQ7jt5FmuZgSAkbCSlis
+Ulm8PZ/cmKj9OZysezDKkXFGtyskAELkpToIy48GtyEVIMk+CXcgNydUXDiLnWI8
+VwgmR1Q+hClLYMPvrk7OR6zK8txXsglJItCRUF5fmAn4Q7loh6i/BCfQpHdylO7G
+nn7BOEJ0CJ8Hrr4Y785dtswAX8hWMIuzS4mxAHCjqkkfsOObBfLi+XpkZ6lDkfrQ
+jAt2KuAjQR58dHDSiQEzBBABCAAdFiEEDxGpiYeei7v9weI2RO9bXoYcCacFAlmu
+vnAACgkQRO9bXoYcCacQ4AgAmjDO+8Sd8d+cezwIjZgq1nPPb+/K0KTGsALe7jdF
+MDOKwwPKd75mKbAVyJRu8CMEfgFW04YKbkeVp9bLeD2lpMYsIgpNYy5bU6DNCgi5
+QO501sTqeaWc/rlm7Ng5AlF8GIK6FagrPS31eUexxJ62VFozi3EiibKYepgeIUHR
+3ukw6+PWBkvOYSQjZ0Uc08nci8UsewDQaQvuDABR+6WbLDYX6PuyUEzV7MPbyzME
+QOvGuYpgcAq5gGB6NNe9zFQK0xAQob1UhDlaa1p8VSZyH/RLnyYCdlq0Bmf95PNq
+eE8YkmqFCPKNoWwzOa6pJOk/Y2mXhJm/eD4Avmlo122LN4kCMwQQAQgAHRYhBBP5
+Ly1Y78tmaShOtNywW0z4mvxmBQJZvs4vAAoJENywW0z4mvxmIAoQAMM6QLexK9fK
+88EZxYC6x+qYkb3rzjaGyO3dzGhfRQTFJ8HtFrWTR5s/m+1ACKFnbf1xo7AWbsYq
+jVIxXsqUt9a4jserpaczlzDQLojFCKSGFmfCVV40FwQHL3W+C40xLHLOq93bpHLD
+knp38daRzSryW11ev9y0J3to0qX03WpgFKKwT3fQMT5+V4wZNuzOFmWGaPUsuCQh
+SQj5VU+p9Q4soIIzu2gaal4vW3/qZgIlkAmkg0FV5iW7mwScWPcF/kPlkHFMj9pG
+aTNVgegxtUQBJEXx+VF0vDiOtRnBjE2woVLq1FWGkn7feX4Jvnajqpf6A8dKeNcv
+Egfm00HHhhR5f7LTOYTSXWCqhCmIBKGpYlZo/PDGHdlVoRSR5+qN/1kyP7WZg35u
++7XR0paCTR71RwO+oHZHiv97u6P/iPvVWE7aqCJe6kBW6Q8hB4zjLfH6AbjcIN/9
+Vy0k3ALBfNxatkJZAyl/PQpgSpfpAkbk5upBPvOKVGCWsYA5sYRH4MMiwrOuSgCh
+nibnUT4jJjgU7hK7iOTJB1mbNEvyMSksgxtbdA4XWee4iv5qS3ZCX+1RUspZk3IS
+8NePnaycg+OlI5gMbSEVEmLCat2V3l5KNZRFWpbmNTCo+Mi4t1i8kgJAHRtn0r6t
+sIS9beklhQz1p7KZAphYWjl6kO9p80cnuQINBFk52cEBEAC8e3b6SN4t5I/RRmRt
+/YbPFyC81yElaPzBM+OFsbRDr9MrtfeDUp/wgcihQIw01HUDlm4F2WjbGwth/8Zs
+tEML3CFwtv4V+sYhKqfg+sS5YqzFrFWfZYod8ppFKNMaw9Pcjl70td2egcBDt1SR
+51ni4SdhyMt/KOm4mym/Lf4UNyzlYwykbjtb3nsmvxYI/uVdceDv+7vZoW1rapSw
+Zj4ZS8+jhgHrO2p5B5TCHdsDJEYQ2SOYeIm8tfqb4oQlTWwjG0frl5eOp/+9HfK1
+q7R049FMAzmd6fbm0jpzxDveDe58qWWq2aj+7HwTZhmvr9l7uFyR+3TL6s9hEALl
+B3RGpOy5hGmvwLIAi4qylZuRJzW0tMveDcaDEdMhtyEKF9DYpk1Ug/01uG+PzK8e
+TiFyTCN6OAawWIe7pIxRhlk4+CIqRPEprMTfDJxKEUS7RnUYZ76E94FSV9nEqIJj
+UWFLq3aTMqSiSN5LAgT6AJKHrR2+cJVHM1cEILvCIugeuw1GUC+Bxs1qaxIpp4SS
+xi9Givx8PkKuCukp1J4B8Alx0ZpRELsBEuhZdEN2LP+Hpz7uyD875r8BvEJ+hU20
+Qfnj2wHmKVF+6jBPwrpzZ/gbXuQzfstmrSJCY6p6izfcQSJmbSNpaTsrOvgmaUev
+Wuss4bjuG4loSRwFb/7fsPsX9wARAQABiQI8BBgBCAAmFiEEfoeSGqycUU6TQcTx
+x6U8xY07H4wFAlk52cECGwwFCQlmAYAACgkQx6U8xY07H4xvTg/+MbWyGFmLe9b8
+AMJtqwX+3EyP44Mo2CeafvmbPSqxoXh1NdOezlEESZU9fHMDY50IA2hpariO/Le3
+Ck8py5NAznCc4avS+gnahcPyhvUaMCskmN4UaRsohMvxKrdAGyRfXZcQqE5Tu6zM
+6TxycQkT00qe+PTSQnV2dvGXE4iBFV5kj3NHV7RBC+7sDZ7cYuLHrw1gOaMWeCcF
+oQ0l+DW3CNh3klFds/PIfPALjV25+niwOYcenxqp8GVjooWj7xkASkFyZAqusFTa
++/XY2y7+jvdSmm36gfWiPXWdpPiesekPK1NqPGdAtyv1/EKJd+7cYCbkSH6qPJpb
+FnpfK/ItVm39OIe7OVUuZYd4lGeFvKK/nDqSQ+9STVar2+n8Wths4C8KJbLdZxGE
+QYWKw5aL09tpQRy/skReAt9hVDq3qflODyuWPqS/oDbSGERA2NndkV3LIkU+ZCXI
+xsin4IP8XzC8yJjv11PAzM8wmhlXWOdKDIZXMV/2wO+cyM/t9WtfeXUOuk2NyWO4
+nQ+gD3cDPTJS+t8ReKb/bEXSeHiRfgiYuZXcwT5vGmx4HiYgJ7d9i+8Ikcew75zw
+EvR+OLXYVICsI9PiQPzqVBfp+2u5saEvmWORrNLLUBQt24R2CF4Y63pLumsCB3gv
+n+cUG+sEsct2sSKhQEEU7Yra9tppHlO5Ag0EWT7OXAEQANUBV3/GFcAtsM9XiSGL
+GuWs+S8np+A7WRIISsR5BU22u9XqF7P8/5o/ZJIvoNu9EwTkFZYP9pAxx7F+I/62
+x8YbXCU5byiOG0X/RKRafW1j9zJdZHK2jdga2pRUiCexpk43knTMyYUxyNlOFM+r
+UKJlMErTaN8PJldD9f7qq+assxFN+rLW+tWwxtcL9WxdCIBBMKE7ldyaIRzKNMbZ
+b+mckdP412Ht05sn2BijgHj/co07M0zw+MLWNc9c50wI+/CYBZXerDp7TZoB2HxD
+JH9FqQ+ypjZQkNArieMj8IB6o8nZRbOqs+FO3LJf4A2WuHSLb187LpTLGoL/WaGG
+YK5ZE/0DuR7lSZmVYt2qaKqzDUJbbETLNJlhEykKI0f4bkhjI9UPjxlFgarDuFOe
+V7KkZXJoapda6lwy+W8GDAcrtMasMIgN5lMQdYJllIOJVs0wTJyMbLFN1hcr8oGc
+09tLEPr0FO5lxygMHqcNiia1SO34IJF6HaRHZQeX6Hv2M+FHWpZ3fcu9dkY9i9JK
+RM0W3x0OLFBNfCAvBVFxat9xmYYJuRqomPAFIlt3hik/Dl3dWOkPLdVoE97T/r1/
+5DDNBpaO/g7XU24bH6ja9/WO8T9g0L4nTLCtdKSaGFxwT0No7jmgTJxJQan7hHDZ
++0CHj8jCUsMNSK587HTWiZFZABEBAAGJBHIEGAEIACYWIQR+h5IarJxRTpNBxPHH
+pTzFjTsfjAUCWT7OXAIbAgUJCWYBgAJACRDHpTzFjTsfjMF0IAQZAQgAHRYhBOpX
+PxAcncyJjCSg9h7cm2rmkT65BQJZPs5cAAoJEB7cm2rmkT65H2sQAMlGuoA6pKlA
+W9L+Mdn3aHaGHzxiLU0mxJZHLPxLru9YNkEF2uDiSzHRMSSbJCujF8O2Z8jg08f2
++r/ZVHK1wWd/J7zikh/1pMVj9KVNG0JdyqiHuQ02i5vWdBg6lZZku4uUvU616Ynh
+PMDVoEQ6QXQ24BhrSBH9B1tgSnIRc9EHzzW5lTF3+qttA1tJETJODzEZGmSlBene
+kUxBZVuH7daEa1pRPGNVSa4TmCTkxgYZUIdnIDC7CeDREldAftCvEll37Ewy8QTi
+goAPYYZQd9jJ7ywq1qWFiTt6n6IYvjfVm2ttO/3PBtla5FdCW3U0MZyxOiIIpHjh
+IgVFWknvOEsKQhaN4rbq7YSMLLZW5Y0ukHk8c3OsRpO5Clc/yl0hHURGtjhvHgSg
+kL8z80WhnP+XiMa/vaWIsats1/LGc+uvstmohI4np9+jF/6Byk9Y85ki1ilQszVP
+/JEIj2IvH6/OsjcXlgAs8In7EBeixlERLneK9F0D+rb99m21rhkXmy/EQ75yeSV/
+z7sy9suK3SuULqYSuTKuw+mbAY3KOF3JLjQdW1NXCZhqRaxYF+5nMq1f6VDwGcpO
+pPSF+9fY6/R5/cyEk8LOY4kS9O9rqc4PIi1ieYoyxezTBdX1aWpZEsAzVDWuJRCd
+pwaKM8YF7ofZxEo5QAnfOO/gc1opPVIUMzAP/2md27adc9Qn0AkWf4Gbr5HSbArq
+urGjqUa8HCUcishzW/TrWbDtuy0ZplvWv4z1KgqoAAr+U2rZwck8mk02UCmjpaDL
+KliTiBAuRei6wgW0y7rLE0S1q9wjoJZemhVrI5C0hu7jIPzl1r/ZRNEqcKtsl6UG
++2zlo0loGiLt+G+p5KpcwuscYGEU0Ekasu+68sual5UUdRXpu8J9ePnqSIZUHanj
+mrARW5iv17NGG3ZtGeX+rDZ2G23Ymnc/IOK1Qeyz07GE3OcxaikTk4EvNDJcl33E
+uI7Dcauz+1msBxGwkib/BUx686ZI8e3Qa9cxzmzGBAwJGqtuOv0BrKbmT6dJ1FG2
+XtRCKsYDGttvoEM8fnhAeVXLIEidiMg3ri8cE/uhIKQlTCoel/hr6yM0BztxQRIk
+PIkFDGSpOq6pknv0KgAxhymJlHmC002e3FAl+B+q71FUthwjs7h110CrI6yZTwbC
+La9FZEODAFWkWLghV3iLP0D8HD+rsBxDttpJOC0lndsONIMkb2Xf4ue8pceUehEN
+zf+mkS6B5ilfHOhrcY3vkfV/cuF2Zv1kBpjayCbanweeyEIok720eP4RoTu8NJGZ
+gD0qLo2iJBW65FRr557CWET+X22k2vDO92PeB6MXdZ+PGNgPWw+SZfY5nUN6hsbm
+73dNlPTad6zfMtHRuQINBFk+zuMBEADd0yUpELWiFKezO/GLaqBs5iI5fRvO97pk
+5yhROIjaM4xz2tmZMvenO9AdVSchgh6w1CCNMvhbE9MkEakh8qN5hWl0XeN+UarF
+XvIx1ARfzmI+Xwz40wNRNHkGMwZipvHQ0oFW2NI+qQaxu1QzX7eGIF1uQPhyw5wg
+dQeO3fbAKR7G1YNOiBM5KyEPSFj29fSyPVjhqM5orHyrD3rtHir+978hA0W4yFY3
+0lY7OqaHs2crU4txy30bc2oYL93J5uMDeXmDg+K7NEGeih1vJnh3lF73yh3i6d+t
+MxrMyzkhLf8GBD+38QqJ4npkcd4E66g0kB3Q1EYfh4R2eMkYCCcTuRuQVrtIyC81
+r490Kx3WFB2ioIOARk/0NUrnqO0tze4KuLKc4wVpKFCeRkBpN5ZxoF+NJ2DLodg8
+w5G5xkMluLpcUWU+D/LEf52Nu8JBro4BVOv8h+D3MwC8icaQaL4xTVqCBtOvhA3/
+0gxrEJ98g5jpR/Puspa/zQVpY2MP632m6Ctfw6mdHtcq3PKX2sJIF8UKLGhJsAYg
+9bUSD4ka+IV1BLXY71b2DFZoTA9WaprG4GDTV4x3PcERq1/LSUBIKl9kHw9DvGzW
+uBcQQOwUR564ghGPt4Lxq8fc5G03h2Oou6LZx1lfYHuwQs8iJtiX6EtkVhZxxQX5
+TClQMdVgEwARAQABiQI8BBgBCAAmFiEEfoeSGqycUU6TQcTxx6U8xY07H4wFAlk+
+zuMCGwwFCQlmAYAACgkQx6U8xY07H4yNohAApKlliONc+s6PMtwAOJ3j3NzOCPDy
+MOiA24kKHMg4yCUiJDJ+xX2tQs6Jf99IcCIF625nnsUqyRDgdHyDeu4ZTneo1aFB
+YMf4fgxqUkEiV7VNxvw2idDfW2Wy0fmyGCdS8UOw9UOjSMURNjfvY/pQlFNG+cWx
+ZUfrU2HgXzdAchTlYQnpPwaDaMQE7xsV/Q+VVtWNe9gAuycrGNgPhh4zNAmjqiGN
+a+YS0vW4v+TSaA7Y/jMTEJYEz9+60dYy4I64Wv1NWODT03KExQoINrROLwhn/wD8
+AZhyJKBNuAbSZpMXNMD+2QKtqeNxE7HbTQY7Bqx5feBvDkDgr7ox+KyzR3NuXOHQ
+CSbmSEQPN3miiGglHGASctp3Fd93PhXzVtiiRAnqfBw7zGDSgdpaNC8z9DAG6iUY
+ZtcNz5UoiCHSOqE1vxV38poWDtZLkKuQRXvXy/uNyPcPx2efaDNf/FxH3gM6L7+6
+gfJ9vDMKUI9Xa9A5u3BMR/1Xiehx/GL7kZ16fZDWhJH1iCUcPwu/wSPDCmzGaX3B
+O/FT+H1m/Fql8oKWOy82K1zBVMx7cx+b+3/Qlkbx3wGPGtNLPH1m5QFKoPV7z2zP
+tM9VziUSLPPlIEbsT3I4lXYdhFsHbGBk++ZbY9kRUTXkNRciqX2NFcFtNSo9RH8F
+KOmVBBI+ZQ28HDGJAh8EKAEIAAkFAlm/5kACHQMACgkQx6U8xY07H4yS/xAAiHYW
+T+wgYgFR0e0DYNOlz3KeYZwhORc5/ED07qCxUMFkChpBnXbKLzGViiKK3H9FyaFy
+fOhuIqb0GgXX4TTYdHShvceBtMfTfeYMLXQC+WaJgIydbjRK978mDBgIDs96ylEj
+ErtgP3J/GXTk616nv9VYYjGGNKQVJNxDGCRzfZks3m/gWH/whbctFQXaBOshstra
+nGpoR6EEZERpDkDMdLqd1JEhCPK8YUSPwT0LKm2yQpeR3ly5phZiJC7uZVmq518P
+f8UoHYhtb6P18kJeMVbrNpEzDTdGCZ6eKC3B+1tfoft8MXF3fEINFzZKqAXKqsHD
+sQtVWPshg49J8HNpc0NbQi90+8ph4oVrWDHoDulhGg9xUTlY1fXUye1uDXhVn8gL
+rAeLqz6WP2i7jPnNCJgTXw5+e2kAye0rCvKH0pw8a1Aq2iaxvxr0L1MzAgtKaTh/
+AU3K5j8r7YRUdOMUHMGS5CwwdhwNkABM2Sm7FmlZL/BNwmgxekhJSivLL3M6qPY3
+LjcxxJBfe4gk9RRX9/YCgSkKTwvx1Ko9368G4WcxYOSTP3eVol6o0yBqd0rV/P+l
+CCgiAZ/ZoVOvi5jmTy2I9flafPzGp51EdH+RS/rGwW1feP5JMg+NULwc1y4kTru6
+pkHTUu3Ol+M2616HU32p8XJi4mDV5qMRWmLn+UCZAQ0EVKyAeQEIALyGS95q8aCp
+8rjM35kpabNOhr9hAcdq0DrxwjOWZd5u569X1sS81VjPqoj1jpA+/GgheWeYrNxm
+RbMT1fdtd22W5yiNd5TNXF+RMhZYvnT4Mxm3NNggZoriHsnrG4XbtLZZmMTXwF/6
+a/CsaCXYHp4J3YvYnDc/B0fssj37OXQH0SjpBQnU7U1m7mvLXfm7Mh+zi7VTSz45
+WcFyr7Lg1HRN6OzDtbBjn8kuWWMzYIlg+EUZPuHLHoCkjhN6g7AM5eDhQqXvzOcy
+lSIk/TIPy7n8EeKrrgfijGQOJF6c6d5n0Hq+6lejT6uL3iHUOKtv8PYGr8vF01ao
+vP/EOVTkYQEAEQEAAbQrR3JpZmZpbiBTbWl0aCA8Z3NtaXRoQHNlY3VyaXR5c2Nv
+cmVjYXJkLmlvPokBNwQTAQgAIQUCWCuGZQIbAwULCQgHAgYVCAkKCwIEFgIDAQIe
+AQIXgAAKCRBE71tehhwJp2lCCACiTsLoGbq44A11+k24oWItbJTrg5pISwKUwfwt
+hvik0oQPWfQoz/sr0w/Ie0rUnCuSyOVUXuJZSgzFOjEcwmw1dDv0hsanyt+NZ3SC
+r/hSasAOMIeXS7+hyL894E6NKIGDi25+Yhpj1AFneCu9cOoxlEXqynVaiBJbpHIw
+atwB5i7ZvUz+krTBjf6wwgLzBi1EHw7IJYhgS1Ye9A/+h+iur7d/4/C6cC31IgBd
+r8d8iNbMhqyk66+fhdZ5Vd2QO4DUq4CUgFoakO9X383Jf8azR0zXIPPphJ2QpQzD
+sfriUT0J18bP546tknwOsNYlt1XPYwlLvXKljXr1YkRyTdPTtCdHcmlmZmluIFNt
+aXRoIDx3aWxkZ3JpZmZpbjQ1QGdtYWlsLmNvbT6JATcEEwEIACEFAlSsgHkCGwMF
+CwkIBwIGFQgJCgsCBBYCAwECHgECF4AACgkQRO9bXoYcCaed+Qf+JSDZ3odMwlnr
+bb2kwslduAt9VhRm+dfdIm25nAgxJUxIju8uIgE9v+8dRdGFwrV8pKBYYOCMi8MF
+NYuu9zS66wXS4opd/DeYDj2yaN0wBYEfeXMCwVLVDHU7AHrsxQWRSxbcUOi2Mm2s
+ig70ZSq2iNicX2f6eUSr/4CjocTP6jOqcHd6Di4odEy/hK6ukCCW8ia1Uujh7JYC
+U7quHnuE1N184W2Jf6hUieFC2kE+Nmhix0LsYYe6c1InembHRZ85BpOsWWuE9cS6
+IuVO/jbNZcgS7NkuCHkG7CubPnSZX/EDwmyr9Pd57tr9BANuDNvTGgcbaXhJj5nl
+Ix/usDsrRLQxR3JpZmZpbiBTbWl0aCAoS2V5YmFzZSkgPGdsaXR0ZXJzaGFya0Br
+ZXliYXNlLmlvPokBNwQTAQgAIQUCWCuHlgIbAwULCQgHAgYVCAkKCwIEFgIDAQIe
+AQIXgAAKCRBE71tehhwJpxWTB/0ehZJ1Bjkf7AvtWYn7PEwr1y9aAWHLhAxNNXOE
+M5IhXjnpL5o3Pic8DonUrzDVxRsNxaGU8jvAvbQpWgtQXJFi0qgDxS6b1hf5CSlS
+kcjqtkcMMqyi7XAydSyCXr5s0sZ2ZBn0tri0AKN7JW4Wd0aXJrP/RmmXNeTTARI/
+LGy5Em/PBFogDPTHRWwJQ5uCaddwev3pcOzNvrSvR0m1JXG+ZtP/Z+c4QQA3YGdT
+TSxanK2w9NXTQVToJKO8Lig3ivYNgpbscE0ywrbXVfu3pzB1+9uTa3zd9MmQ0QL9
+mX3RiJeExNE+Vxj5jG+kE8GhcRxXKefXkg+UweaYfkcX8vEEuQENBFSsgHkBCADI
+E/6vQg1OW9aGffzp3atrHtCjEHU6ZONE6unlez4CGHZXIZYTAbA0Nmgd3d3JA7wd
+d0p48whI/tREFHlBD4lxQBN3wrpmDFVq0OiSLuMSAZaTXrX5ctY4CiHJVOIJUK16
+6zsoQFqvTBW7hYTsmFml1frOZrnyeYD9Hyj1Kkk1kaUkf+JrtnZzcftqD0hFzYHe
+645YsLS2ub/ZoXrlV1hznDdIH64TYwlvabvBcZR6Exn6+hByMSbem1nNqB4PN2GV
+/dO2OrkolThctGaxVoChDoauA+vfUQRWbpxzMJQHAJ3/PtKMKyMjv0+TTSIO1zsp
+i2mayI7XUyXLu5fcTfQxABEBAAGJAR8EGAEIAAkFAlSsgHkCGwwACgkQRO9bXoYc
+Cae2+Qf/QWJ+sVhFHNHUjPWSL1o+dSUMIv6qseCGyojGLZxAl9z6IKUng638XMrV
+kgAy1aoy91N+HY0IPg45huTvU36uFoD2Hr9dd+ZVftO38jfviiowqu+iPt16sfZq
+f9VUTDTJpsLzoxiwq+x5FbJYt2iqDqK30JyQD2EMn5Li0qtR1ohunxR2CE5byNRA
+1ymk1BKMDb0tDHl87fCY5+bHZBrG0svqyDsxxK0T4bqRl0gSUfhVA67xcL1C7wG1
+MmtNZM+Ks9AepFlxmRDJnX0XNdaw7P6QtK4igLw5hSiFpVYmdfEyL9W0yn4No4Pj
+rJnQvrCvIJqJ+1ANxY9H9ArCl3iF/5kCDQRZvrPlARAA1DjXoVu6jU9Rfojm7iFu
+XJm2Suq7W3v4HjsycExn3ZBh2Lh5Jc7EdncPbP3UWnNBI5MlerHS5VMfC1OFzG/Z
+IRXZyWIVOu1ajRH39i/8pIxOfcCQ1Y4msN0QntL79Z1qAtOdUGqppViiywgTA7XC
+yGU8lvVEx7TlgXdmviRSI2Mm2McbeD/YLdTgqD8+8J00sIW5DUk1n/gUkyU2z4mk
+4rwvGLJR2bGv1KIndZzfg7c+fNd2UsXjcJV8+eMRJCjE+xlrviBnJHnrNj75Ps9v
+xX4WDX2PQZycS4NEictsFOmWmyiAHWcW8ZOrqsrDbd2QGUxjKrh6kdrZvVhCogsO
+StwdVm39TfBykLt3K5jdhU5QK4AyNBbVoikoBtZFyVg2G6e0vbVAYF5NDoy+uDyM
+jK9cHeJfMHRPCW+rBkaNh4+i0uj97SML9F1G1s3+dlPSNIofvJvZ69VxJi5w0OCT
+vwdgmR/na7DQTBikZK+F0hoZRJAmKgxh0yUMzExYUq9rvdgNeEyIWs3nh6GVPs15
+iZfcRITiGFZsi/BWeSH/ce96qYG+c5UkN1QOvFqMZdneF/uUfUI/qOc3KGmhjW+f
+lcO/qqtROO3UisckjvUZL1/80YQISMn96iJpG8mOUrDHiHndSMwErMyyxz3XXYzQ
+ys7W2oihWL5iKU+SHmisNA0AEQEAAbQqSnVzdGluIERlTWFyaXMgKGh0dHA0MDIp
+IDxqdXN0aW5AZGVtYXIuaXM+iQI+BBMBAgAoBQJZvrPlAhsDBQkDwmcABgsJCAcD
+AgYVCAIJCgsEFgIDAQIeAQIXgAAKCRDcsFtM+Jr8ZiuBD/9dOkCFWDZWAj1LKBc6
+nKci16H8tazePpvjYeZFxJw2w5NEGgwg1iGsdhKm60EOA8Okh8cEmmfq+AriFPEH
+nAbnSePGNeXTRFy7njaApxnRQGaVTV+++B/J/zQTA+2iJXh4gWR2/ip6gmyAGQJK
+u63jA/fwoeWqcQDI1FnHqpGEHb6BLeeyRA7iXd3TYTOYpuFJGx57yhZflFssbmwY
+3MW3NyWdOYXkWiH1OfujYHuh5du5txiEMvN78q5F18byIaLSkoa3eOM6osGOn8kj
+X3iJEAOk+HzMONQd2O59OWmozzyxHicr4rv7LIOeAvL9gi+gpEflT65/AJbgLa5N
+JLcvQwAD/iRRv9fs7CSsOlwLyZEVGy0huZ2iyxSguBwkDsHd6yFAr90F8eehV4z6
+DlW3g5UREVQEcUIKW4FEg+E0XMe7tILOcqTzhsMrd3PwMmC/RDPoyOOhJLCLFAg9
+hN+xaFEr4cDUPT1PwudHqQ9u9uqyeH47O3Qi0KJ2IsrWgcjTy3z0setCZDh3APlv
+Y9o+Go4ykvMNV/iHwnui/CS/sIX64VKrBq5L+0cq3PnbJfeqxi/Q7CRBko4Zf2h1
+A5SkSM3lwSuLk+zLNu+erS13EjwfainK4eOgFism7lN5CD4Z7VrKxtOTKjozidG0
+N3Ez7edUYQ28NGWJBIMEb6qn/7kCDQRZvrPlARAAoWI61RD8wjDINkiXAtX0jcoG
+dvO9oMXvVFWqsGEGivqciifdA5VvB/9jK0YfFQbLvQtkfvcqITuGflBExCK47CDg
+lv4AxI0xNkj1jKwgvm/tU6y+Oe1mrw+b64Z/V5naptNnIU4VgVSNsWvZkH2EKxgq
+6k+fAoCCwxlctw2JMmbnmUNOiu2miwoiq/Agl8Jfd4xSrAGZn77ZHM+XNLgabKiJ
+782E3alCFOXbIftOXIcxgOQWbiiPEUjzCJ5llMdjVnOkn7uP+ZXm3/h7IsrC9/GP
+DqSsebGPbNuxgNrDj9HigYPNK6jjZ95bLImaADfd2h/OXA9FYz+HwJ2kBZRNGtDj
+FxsmLvqNolu8WZKSjiw7SNK0Ya+55y8KU2iO/G3T5ilAB6nRPliP9aE6IIEzNWgK
+9nNM92S34CZQMhOnVjRqH4WEi9i3j/rlSAX4mJLbe2pi6cueSBc53qisBs6H8p5Z
+hqPQJfUlVeRxF4ZNKF7wt6dhQcEbi3/IxoABBizIt5DSBybOMLOAB65A5GQkPlJ7
+VyHhzlIoS5RqzwOqg6TCQ4UUtifQqtFXuwVHlHAPhi56U10IiCWJd4hy635Eei6C
+WDmGr4+eXTK14h93f79JxIqqve5y7cZgcQ+dQPSBVl19FZnvQUA4/5E8UPI1X3cQ
+o8I1542PpL74CcXBZ1kAEQEAAYkCJQQYAQIADwUCWb6z5QIbDAUJA8JnAAAKCRDc
+sFtM+Jr8ZqSQEACFW1xrxu8mmXGXpLlXpGx9CFWBfJSFtWBYNjbLZ8Rcdu8FweBt
+HVIAmdwYbBHYgT/xQd9Gxg+Z+JmnaAZFi88pN5Pmh2dy53nysLsjYZS8G7p2lKdu
+alXrM90PxGpwugNNPVEr//+Bb6ahQgnJQLDY6wz3DuA3L1vk+sBN+00iuGbaW992
+kPRcz2KSDXY0jR3lh3938qBXJR6jbYN2YxHMhfCeK8y9hpNSP5UVUYlLeEjyEIT7
+HgbMwsX8WX8OvL+uacwSzwC1JE8Vn98pIEQgMveZn9ylwuJZp1zv5eSulDsDRWA8
+S8Agjb/fjdQGsck4REiahw3DIPqcIvUFr3yDybB8dTLp509UqK+HLw/bf8QMmpc8
+YazIquk0/HVm0tdijDCgAIw+Dh8LEP1gmCVxynlrHs9ItCjlipuTao8LopjwOiGE
+9LnYy19ESF7kUbtyFenmp+FX0WAvlUfhrSfeeM+vR1yD8dJSa1XDI/WafkxBQRuV
+sd3cfQIxDn7JGlhwytRkxl7oabxHokc3wCSzu5Sb4ok6A91HPbSNqJ2nKSkbAwQE
+u6d5vx6SSO02stvyHPUFLM7zTTNa2B5Vrz9e7eItKEm6taXqzx1e7A8w+kOlP/0p
+4oLlBDWgklpqVZcPWtFDsldyNZlxwo5xw9czlTZ+hVuaHdSqwP2NNQegYw==
+=5XsB
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/configs/shared/gpg/.gnupg/gpg-agent.conf b/configs/shared/.gnupg/gpg-agent.conf
index 10e50547b9..10e50547b9 100644
--- a/configs/shared/gpg/.gnupg/gpg-agent.conf
+++ b/configs/shared/.gnupg/gpg-agent.conf
diff --git a/configs/shared/gpg/.gnupg/gpg.conf b/configs/shared/.gnupg/gpg.conf
index 774a454209..774a454209 100644
--- a/configs/shared/gpg/.gnupg/gpg.conf
+++ b/configs/shared/.gnupg/gpg.conf
diff --git a/configs/shared/gpg/.gnupg/import.sh b/configs/shared/.gnupg/import.sh
index e698aa3d2b..e698aa3d2b 100755
--- a/configs/shared/gpg/.gnupg/import.sh
+++ b/configs/shared/.gnupg/import.sh
diff --git a/configs/shared/.gnupg/pubring.kbx b/configs/shared/.gnupg/pubring.kbx
new file mode 100644
index 0000000000..208fad71b7
--- /dev/null
+++ b/configs/shared/.gnupg/pubring.kbx
Binary files differdiff --git a/configs/shared/.gnupg/trustdb.gpg b/configs/shared/.gnupg/trustdb.gpg
new file mode 100644
index 0000000000..8781b2ad9b
--- /dev/null
+++ b/configs/shared/.gnupg/trustdb.gpg
Binary files differdiff --git a/configs/shared/.gvcci/themes/bike_tire_blue_4k/colors.sh b/configs/shared/.gvcci/themes/bike_tire_blue_4k/colors.sh
new file mode 100644
index 0000000000..83170d7c6b
--- /dev/null
+++ b/configs/shared/.gvcci/themes/bike_tire_blue_4k/colors.sh
@@ -0,0 +1,23 @@
+
+# Special
+background='#e4dcda'
+foreground='#162a26'
+cursor='#162a26'
+
+# Colors
+color0='#3b2e2b'
+color1='#715b5c'
+color2='#388994'
+color3='#834e7a'
+color4='#3a8992'
+color5='#6c5b56'
+color6='#3d888f'
+color7='#f4bdc3'
+color8='#584541'
+color9='#937678'
+color10='#4dafbc'
+color11='#a6689b'
+color12='#4fb0ba'
+color13='#8f7870'
+color14='#52aeb7'
+color15='#fdf2f3'
diff --git a/configs/shared/.gvcci/themes/bike_tire_blue_4k/column.txt b/configs/shared/.gvcci/themes/bike_tire_blue_4k/column.txt
new file mode 100644
index 0000000000..07fe20fea8
--- /dev/null
+++ b/configs/shared/.gvcci/themes/bike_tire_blue_4k/column.txt
@@ -0,0 +1,18 @@
+#e4dcda
+#162a26
+#3b2e2b
+#715b5c
+#388994
+#834e7a
+#3a8992
+#6c5b56
+#3d888f
+#f4bdc3
+#584541
+#937678
+#4dafbc
+#a6689b
+#4fb0ba
+#8f7870
+#52aeb7
+#fdf2f3
diff --git a/configs/shared/.gvcci/themes/bike_tire_blue_4k/columns-with-headers.txt b/configs/shared/.gvcci/themes/bike_tire_blue_4k/columns-with-headers.txt
new file mode 100644
index 0000000000..7b548baf07
--- /dev/null
+++ b/configs/shared/.gvcci/themes/bike_tire_blue_4k/columns-with-headers.txt
@@ -0,0 +1,25 @@
+Background
+#e4dcda
+
+Foreground
+#162a26
+
+Normal ANSI Colors
+#3b2e2b
+#715b5c
+#388994
+#834e7a
+#3a8992
+#6c5b56
+#3d888f
+#f4bdc3
+
+Bright ANSI Colors
+#584541
+#937678
+#4dafbc
+#a6689b
+#4fb0ba
+#8f7870
+#52aeb7
+#fdf2f3
diff --git a/configs/shared/.gvcci/themes/bike_tire_blue_4k/iterm.itermcolors b/configs/shared/.gvcci/themes/bike_tire_blue_4k/iterm.itermcolors
new file mode 100644
index 0000000000..69ce452169
--- /dev/null
+++ b/configs/shared/.gvcci/themes/bike_tire_blue_4k/iterm.itermcolors
@@ -0,0 +1,344 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>Ansi 0 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.16862745098039217</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.1803921568627451</real>
+		<key>Red Component</key>
+        <real>0.23137254901960785</real>
+	</dict>
+	<key>Ansi 1 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.3607843137254902</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.3568627450980392</real>
+		<key>Red Component</key>
+        <real>0.44313725490196076</real>
+	</dict>
+	<key>Ansi 10 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.7372549019607844</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.6862745098039216</real>
+		<key>Red Component</key>
+        <real>0.30196078431372547</real>
+	</dict>
+	<key>Ansi 11 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.6078431372549019</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.40784313725490196</real>
+		<key>Red Component</key>
+        <real>0.6509803921568628</real>
+	</dict>
+	<key>Ansi 12 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.7294117647058823</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.6901960784313725</real>
+		<key>Red Component</key>
+        <real>0.30980392156862746</real>
+	</dict>
+	<key>Ansi 13 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.4392156862745098</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.47058823529411764</real>
+		<key>Red Component</key>
+        <real>0.5607843137254902</real>
+	</dict>
+	<key>Ansi 14 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.7176470588235294</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.6823529411764706</real>
+		<key>Red Component</key>
+        <real>0.3215686274509804</real>
+	</dict>
+	<key>Ansi 15 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9529411764705882</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.9490196078431372</real>
+		<key>Red Component</key>
+        <real>0.9921568627450981</real>
+	</dict>
+	<key>Ansi 2 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.5803921568627451</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5372549019607843</real>
+		<key>Red Component</key>
+        <real>0.2196078431372549</real>
+	</dict>
+	<key>Ansi 3 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.47843137254901963</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.3058823529411765</real>
+		<key>Red Component</key>
+        <real>0.5137254901960784</real>
+	</dict>
+	<key>Ansi 4 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.5725490196078431</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5372549019607843</real>
+		<key>Red Component</key>
+        <real>0.22745098039215686</real>
+	</dict>
+	<key>Ansi 5 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.33725490196078434</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.3568627450980392</real>
+		<key>Red Component</key>
+        <real>0.4235294117647059</real>
+	</dict>
+	<key>Ansi 6 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.5607843137254902</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5333333333333333</real>
+		<key>Red Component</key>
+        <real>0.23921568627450981</real>
+	</dict>
+	<key>Ansi 7 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.7647058823529411</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.7411764705882353</real>
+		<key>Red Component</key>
+        <real>0.9568627450980393</real>
+	</dict>
+	<key>Ansi 8 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.2549019607843137</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.27058823529411763</real>
+		<key>Red Component</key>
+        <real>0.34509803921568627</real>
+	</dict>
+	<key>Ansi 9 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.47058823529411764</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.4627450980392157</real>
+		<key>Red Component</key>
+        <real>0.5764705882352941</real>
+	</dict>
+	<key>Background Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.8549019607843137</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.8627450980392157</real>
+		<key>Red Component</key>
+        <real>0.8941176470588236</real>
+	</dict>
+	<key>Badge Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>0.5</real>
+		<key>Blue Component</key>
+		<real>0.0</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.1491314172744751</real>
+		<key>Red Component</key>
+		<real>1</real>
+	</dict>
+	<key>Bold Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.14901960784313725</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.16470588235294117</real>
+		<key>Red Component</key>
+        <real>0.08627450980392157</real>
+	</dict>
+	<key>Cursor Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.3254901960784314</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.34901960784313724</real>
+		<key>Red Component</key>
+        <real>0.4549019607843137</real>
+	</dict>
+	<key>Cursor Guide Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>0.25</real>
+		<key>Blue Component</key>
+		<real>1</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.9268307089805603</real>
+		<key>Red Component</key>
+		<real>0.70213186740875244</real>
+	</dict>
+	<key>Cursor Text Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.62745100259780884</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.50980395078659058</real>
+		<key>Red Component</key>
+		<real>0.54901963472366333</real>
+	</dict>
+	<key>Foreground Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.14901960784313725</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.16470588235294117</real>
+		<key>Red Component</key>
+        <real>0.08627450980392157</real>
+	</dict>
+	<key>Link Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.73423302173614502</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.35916060209274292</real>
+		<key>Red Component</key>
+		<real>0.0</real>
+	</dict>
+	<key>Selected Text Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.8549019607843137</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.8627450980392157</real>
+		<key>Red Component</key>
+		<real>0.8941176470588236</real>
+	</dict>
+	<key>Selection Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.4235294117647059</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.4588235294117647</real>
+		<key>Red Component</key>
+		<real>0.596078431372549</real>
+	</dict>
+</dict>
+</plist>
diff --git a/configs/shared/.gvcci/themes/bike_tire_blue_4k/iterm.plist b/configs/shared/.gvcci/themes/bike_tire_blue_4k/iterm.plist
new file mode 100644
index 0000000000..04212d0bb3
--- /dev/null
+++ b/configs/shared/.gvcci/themes/bike_tire_blue_4k/iterm.plist
@@ -0,0 +1,412 @@
+{
+  "Profiles": [
+    {
+      "Use Non-ASCII Font" : false,
+      "Tags" : [
+
+      ],
+      "Ansi 12 Color" : {
+        "Red Component" : 0.30980392156862746,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.7294117647058823,
+        "Alpha Component" : 1,
+        "Green Component" : 0.6901960784313725
+      },
+      "Ansi 7 Color" : {
+        "Red Component" : 0.9568627450980393,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.7647058823529411,
+        "Alpha Component" : 1,
+        "Green Component" : 0.7411764705882353
+      },
+      "Ansi 8 Color" : {
+        "Red Component" : 0.34509803921568627,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.2549019607843137,
+        "Alpha Component" : 1,
+        "Green Component" : 0.27058823529411763
+      },
+      "Bold Color" : {
+        "Red Component" : 0.08627450980392157,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.14901960784313725,
+        "Alpha Component" : 1,
+        "Green Component" : 0.16470588235294117
+      },
+      "Ansi 9 Color" : {
+        "Red Component" : 0.5764705882352941,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.47058823529411764,
+        "Alpha Component" : 1,
+        "Green Component" : 0.4627450980392157
+      },
+      "Ansi 6 Color" : {
+        "Red Component" : 0.23921568627450981,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.5607843137254902,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5333333333333333
+      },
+      "Right Option Key Sends" : 0,
+      "Rows" : 25,
+      "Default Bookmark" : "No",
+      "Cursor Guide Color" : {
+        "Red Component" : 1,
+        "Color Space" : "Calibrated",
+        "Blue Component" : 0.9999912977218628,
+        "Alpha Component" : 0.04705882352941176,
+        "Green Component" : 0.9999743700027466
+      },
+      "Non-ASCII Anti Aliased" : true,
+      "Use Bright Bold" : true,
+      "Ansi 10 Color" : {
+        "Red Component" : 0.30196078431372547,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.7372549019607844,
+        "Alpha Component" : 1,
+        "Green Component" : 0.6862745098039216
+      },
+      "Use Cursor Guide" : false,
+      "Ambiguous Double Width" : false,
+      "Jobs to Ignore" : [
+        "rlogin",
+        "ssh",
+        "slogin",
+        "telnet"
+      ],
+      "Ansi 15 Color" : {
+        "Red Component" : 0.9921568627450981,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9529411764705882,
+        "Alpha Component" : 1,
+        "Green Component" : 0.9490196078431372
+      },
+      "Foreground Color" : {
+        "Red Component" : 0.08627450980392157,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.14901960784313725,
+        "Alpha Component" : 1,
+        "Green Component" : 0.16470588235294117
+      },
+      "Working Directory" : "\/Users\/fabricecastel",
+      "Bound Hosts" : [
+
+      ],
+      "Blinking Cursor" : false,
+      "Disable Window Resizing" : true,
+      "Sync Title" : false,
+      "Prompt Before Closing 2" : false,
+      "BM Growl" : false,
+      "Description" : "Default",
+      "Mouse Reporting" : true,
+      "Smart Cursor Color" : false,
+      "Screen" : -1,
+      "Selection Color" : {
+        "Red Component" : 0.596078431372549,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.4235294117647059,
+        "Alpha Component" : 1,
+        "Green Component" : 0.4588235294117647
+      },
+      "Columns" : 80,
+      "Idle Code" : 0,
+      "Ansi 13 Color" : {
+        "Red Component" : 0.5607843137254902,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.4392156862745098,
+        "Alpha Component" : 1,
+        "Green Component" : 0.47058823529411764
+      },
+      "Custom Command" : "Yes",
+      "ASCII Anti Aliased" : true,
+      "Non Ascii Font" : "Monaco 12",
+      "Vertical Spacing" : 1,
+      "Use Bold Font" : true,
+      "Option Key Sends" : 0,
+      "Selected Text Color" : {
+        "Red Component" : 0.8941176470588236,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.8549019607843137,
+        "Alpha Component" : 1,
+        "Green Component" : 0.8627450980392157
+      },
+      "Background Color" : {
+        "Red Component" : 0.8941176470588236,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.8549019607843137,
+        "Alpha Component" : 1,
+        "Green Component" : 0.8627450980392157
+      },
+      "Character Encoding" : 4,
+      "Ansi 11 Color" : {
+        "Red Component" : 0.6509803921568628,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.6078431372549019,
+        "Alpha Component" : 1,
+        "Green Component" : 0.40784313725490196
+      },
+      "Use Italic Font" : true,
+      "Unlimited Scrollback" : false,
+      "Keyboard Map" : {
+        "0xf700-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6A"
+        },
+        "0x37-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1f"
+        },
+        "0x32-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x00"
+        },
+        "0xf709-0x20000" : {
+          "Action" : 10,
+          "Text" : "[17;2~"
+        },
+        "0xf70c-0x20000" : {
+          "Action" : 10,
+          "Text" : "[20;2~"
+        },
+        "0xf729-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2H"
+        },
+        "0xf72b-0x40000" : {
+          "Action" : 10,
+          "Text" : "[1;5F"
+        },
+        "0xf705-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2Q"
+        },
+        "0xf703-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6C"
+        },
+        "0xf700-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2A"
+        },
+        "0xf701-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x42"
+        },
+        "0x38-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x7f"
+        },
+        "0x33-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1b"
+        },
+        "0xf703-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2C"
+        },
+        "0xf701-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5B"
+        },
+        "0xf70d-0x20000" : {
+          "Action" : 10,
+          "Text" : "[21;2~"
+        },
+        "0xf702-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6D"
+        },
+        "0xf729-0x40000" : {
+          "Action" : 10,
+          "Text" : "[1;5H"
+        },
+        "0xf706-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2R"
+        },
+        "0x34-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1c"
+        },
+        "0xf700-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x41"
+        },
+        "0x2d-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1f"
+        },
+        "0xf70e-0x20000" : {
+          "Action" : 10,
+          "Text" : "[23;2~"
+        },
+        "0xf702-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2D"
+        },
+        "0xf703-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x43"
+        },
+        "0xf700-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5A"
+        },
+        "0xf707-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2S"
+        },
+        "0xf70a-0x20000" : {
+          "Action" : 10,
+          "Text" : "[18;2~"
+        },
+        "0x35-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1d"
+        },
+        "0xf70f-0x20000" : {
+          "Action" : 10,
+          "Text" : "[24;2~"
+        },
+        "0xf703-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5C"
+        },
+        "0xf701-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6B"
+        },
+        "0xf702-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x44"
+        },
+        "0xf72b-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2F"
+        },
+        "0x36-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1e"
+        },
+        "0xf708-0x20000" : {
+          "Action" : 10,
+          "Text" : "[15;2~"
+        },
+        "0xf701-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2B"
+        },
+        "0xf70b-0x20000" : {
+          "Action" : 10,
+          "Text" : "[19;2~"
+        },
+        "0xf702-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5D"
+        },
+        "0xf704-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2P"
+        }
+      },
+      "Window Type" : 12,
+      "Blur Radius" : 5.168569711538462,
+      "Cursor Type" : 2,
+      "Background Image Location" : "",
+      "Blur" : false,
+      "Badge Color" : {
+        "Red Component" : 1,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0,
+        "Alpha Component" : 0.5,
+        "Green Component" : 0.1491314172744751
+      },
+      "Cursor Boost" : 0,
+      "Scrollback Lines" : 1000,
+      "Send Code When Idle" : false,
+      "Close Sessions On End" : true,
+      "Terminal Type" : "xterm-256color",
+      "Visual Bell" : true,
+      "Flashing Bell" : false,
+      "Silence Bell" : true,
+      "Ansi 14 Color" : {
+        "Red Component" : 0.3215686274509804,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.7176470588235294,
+        "Alpha Component" : 1,
+        "Green Component" : 0.6823529411764706
+      },
+      "Name" : "gvcci",
+      "Cursor Text Color" : {
+        "Red Component" : 0.5490196347236633,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.6274510025978088,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5098039507865906
+      },
+      "Minimum Contrast" : 0,
+      "Shortcut" : "",
+      "Cursor Color" : {
+        "Red Component" : 0.4549019607843137,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.3254901960784314,
+        "Alpha Component" : 1,
+        "Green Component" : 0.34901960784313724
+      },
+      "Ansi 0 Color" : {
+        "Red Component" : 0.23137254901960785,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.16862745098039217,
+        "Alpha Component" : 1,
+        "Green Component" : 0.1803921568627451
+      },
+      "Ansi 1 Color" : {
+        "Red Component" : 0.44313725490196076,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.3607843137254902,
+        "Alpha Component" : 1,
+        "Green Component" : 0.3568627450980392
+      },
+      "Horizontal Spacing" : 1,
+      "Ansi 3 Color" : {
+        "Red Component" : 0.5137254901960784,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.47843137254901963,
+        "Alpha Component" : 1,
+        "Green Component" : 0.3058823529411765
+      },
+      "Ansi 4 Color" : {
+        "Red Component" : 0.22745098039215686,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.5725490196078431,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5372549019607843
+      },
+      "Transparency" : 0,
+      "Guid" : "FBF27982-5D1C-4625-8221-8FFAB9F4A445",
+      "Ansi 2 Color" : {
+        "Red Component" : 0.2196078431372549,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.5803921568627451,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5372549019607843
+      },
+      "Normal Font" : "MesloLGSForPowerline-Regular 12",
+      "Custom Directory" : "No",
+      "Link Color" : {
+        "Red Component" : 0,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.734233021736145,
+        "Alpha Component" : 1,
+        "Green Component" : 0.3591606020927429
+      },
+      "Ansi 5 Color" : {
+        "Red Component" : 0.4235294117647059,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.33725490196078434,
+        "Alpha Component" : 1,
+        "Green Component" : 0.3568627450980392
+      },
+    }
+  ]
+}
diff --git a/configs/shared/.gvcci/themes/bike_tire_blue_4k/json-scheme.json b/configs/shared/.gvcci/themes/bike_tire_blue_4k/json-scheme.json
new file mode 100644
index 0000000000..07505e2444
--- /dev/null
+++ b/configs/shared/.gvcci/themes/bike_tire_blue_4k/json-scheme.json
@@ -0,0 +1,24 @@
+{
+  "name": "GVCCI Color Scheme",
+  "author": "",
+  "color": [
+    "#3b2e2b",
+    "#715b5c",
+    "#388994",
+    "#834e7a",
+    "#3a8992",
+    "#6c5b56",
+    "#3d888f",
+    "#f4bdc3",
+    "#584541",
+    "#937678",
+    "#4dafbc",
+    "#a6689b",
+    "#4fb0ba",
+    "#8f7870",
+    "#52aeb7",
+    "#fdf2f3"
+  ],
+  "foreground": "#162a26",
+  "background": "#e4dcda"
+}
diff --git a/configs/shared/.gvcci/themes/bike_tire_blue_4k/nospace.txt b/configs/shared/.gvcci/themes/bike_tire_blue_4k/nospace.txt
new file mode 100644
index 0000000000..f61449813f
--- /dev/null
+++ b/configs/shared/.gvcci/themes/bike_tire_blue_4k/nospace.txt
@@ -0,0 +1 @@
+#e4dcda#162a26#3b2e2b#715b5c#388994#834e7a#3a8992#6c5b56#3d888f#f4bdc3#584541#937678#4dafbc#a6689b#4fb0ba#8f7870#52aeb7#fdf2f3
diff --git a/configs/shared/.gvcci/themes/bike_tire_blue_4k/tilix.json b/configs/shared/.gvcci/themes/bike_tire_blue_4k/tilix.json
new file mode 100644
index 0000000000..6c3632b263
--- /dev/null
+++ b/configs/shared/.gvcci/themes/bike_tire_blue_4k/tilix.json
@@ -0,0 +1,33 @@
+{
+    "name": "Gvcci",
+    "comment": "Gvcci generated theme.",
+    "foreground-color": "#162a26",
+    "background-color": "#e4dcda",
+    "use-theme-colors": false,
+    "use-highlight-color": false,
+    "highlight-foreground-color": "#e4dcda",
+    "highlight-background-color": "#98756c",
+    "use-cursor-color": false,
+    "cursor-foreground-color": "#745953",
+    "cursor-background-color": "#745953",
+    "use-badge-color": true,
+    "badge-color": "#162a26",
+    "palette": [
+        "#3b2e2b",
+        "#715b5c",
+        "#388994",
+        "#834e7a",
+        "#3a8992",
+        "#6c5b56",
+        "#3d888f",
+        "#f4bdc3",
+        "#584541",
+        "#937678",
+        "#4dafbc",
+        "#a6689b",
+        "#4fb0ba",
+        "#8f7870",
+        "#52aeb7",
+        "#fdf2f3"
+    ]
+}
\ No newline at end of file
diff --git a/configs/shared/.gvcci/themes/bike_tire_blue_4k/wallpaper b/configs/shared/.gvcci/themes/bike_tire_blue_4k/wallpaper
new file mode 100644
index 0000000000..5576e5b8a5
--- /dev/null
+++ b/configs/shared/.gvcci/themes/bike_tire_blue_4k/wallpaper
Binary files differdiff --git a/configs/shared/.gvcci/themes/bike_tire_blue_4k/xresources-colors.txt b/configs/shared/.gvcci/themes/bike_tire_blue_4k/xresources-colors.txt
new file mode 100644
index 0000000000..00a5fbc626
--- /dev/null
+++ b/configs/shared/.gvcci/themes/bike_tire_blue_4k/xresources-colors.txt
@@ -0,0 +1,37 @@
+! COLORS
+! special
+*.foreground:   #162a26
+*.background:   #e4dcda
+*.cursorColor:  #162a26
+
+! black
+*.color0:       #3b2e2b
+*.color8:       #584541
+
+! red
+*.color1:       #715b5c
+*.color9:       #937678
+
+! green
+*.color2:       #388994
+*.color10:      #4dafbc
+
+! yellow
+*.color3:       #834e7a
+*.color11:      #a6689b
+
+! blue
+*.color4:       #3a8992
+*.color12:      #4fb0ba
+
+! magenta
+*.color5:       #6c5b56
+*.color13:      #8f7870
+
+! cyan
+*.color6:       #3d888f
+*.color14:      #52aeb7
+
+! white
+*.color7:       #f4bdc3
+*.color15:      #fdf2f3
diff --git a/configs/shared/.gvcci/themes/cartoon_outdoors/colors.sh b/configs/shared/.gvcci/themes/cartoon_outdoors/colors.sh
new file mode 100644
index 0000000000..ad3cd017a4
--- /dev/null
+++ b/configs/shared/.gvcci/themes/cartoon_outdoors/colors.sh
@@ -0,0 +1,23 @@
+
+# Special
+background='#0a0a16'
+foreground='#70e4ff'
+cursor='#70e4ff'
+
+# Colors
+color0='#191b3a'
+color1='#7950be'
+color2='#2c67a5'
+color3='#04adf0'
+color4='#0287d3'
+color5='#019be2'
+color6='#07b4c6'
+color7='#b5e9fd'
+color8='#282c5e'
+color9='#9a7ad1'
+color10='#4086ce'
+color11='#34c4fd'
+color12='#14a9fe'
+color13='#22b9ff'
+color14='#13e2f7'
+color15='#f0fbff'
diff --git a/configs/shared/.gvcci/themes/cartoon_outdoors/column.txt b/configs/shared/.gvcci/themes/cartoon_outdoors/column.txt
new file mode 100644
index 0000000000..2d361b0045
--- /dev/null
+++ b/configs/shared/.gvcci/themes/cartoon_outdoors/column.txt
@@ -0,0 +1,18 @@
+#0a0a16
+#70e4ff
+#191b3a
+#7950be
+#2c67a5
+#04adf0
+#0287d3
+#019be2
+#07b4c6
+#b5e9fd
+#282c5e
+#9a7ad1
+#4086ce
+#34c4fd
+#14a9fe
+#22b9ff
+#13e2f7
+#f0fbff
diff --git a/configs/shared/.gvcci/themes/cartoon_outdoors/columns-with-headers.txt b/configs/shared/.gvcci/themes/cartoon_outdoors/columns-with-headers.txt
new file mode 100644
index 0000000000..a3023861af
--- /dev/null
+++ b/configs/shared/.gvcci/themes/cartoon_outdoors/columns-with-headers.txt
@@ -0,0 +1,25 @@
+Background
+#0a0a16
+
+Foreground
+#70e4ff
+
+Normal ANSI Colors
+#191b3a
+#7950be
+#2c67a5
+#04adf0
+#0287d3
+#019be2
+#07b4c6
+#b5e9fd
+
+Bright ANSI Colors
+#282c5e
+#9a7ad1
+#4086ce
+#34c4fd
+#14a9fe
+#22b9ff
+#13e2f7
+#f0fbff
diff --git a/configs/shared/.gvcci/themes/cartoon_outdoors/iterm.itermcolors b/configs/shared/.gvcci/themes/cartoon_outdoors/iterm.itermcolors
new file mode 100644
index 0000000000..614041601b
--- /dev/null
+++ b/configs/shared/.gvcci/themes/cartoon_outdoors/iterm.itermcolors
@@ -0,0 +1,344 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>Ansi 0 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.22745098039215686</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.10588235294117647</real>
+		<key>Red Component</key>
+        <real>0.09803921568627451</real>
+	</dict>
+	<key>Ansi 1 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.7450980392156863</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.3137254901960784</real>
+		<key>Red Component</key>
+        <real>0.4745098039215686</real>
+	</dict>
+	<key>Ansi 10 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.807843137254902</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5254901960784314</real>
+		<key>Red Component</key>
+        <real>0.25098039215686274</real>
+	</dict>
+	<key>Ansi 11 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9921568627450981</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.7686274509803922</real>
+		<key>Red Component</key>
+        <real>0.20392156862745098</real>
+	</dict>
+	<key>Ansi 12 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.996078431372549</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.6627450980392157</real>
+		<key>Red Component</key>
+        <real>0.0784313725490196</real>
+	</dict>
+	<key>Ansi 13 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>1.0</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.7254901960784313</real>
+		<key>Red Component</key>
+        <real>0.13333333333333333</real>
+	</dict>
+	<key>Ansi 14 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9686274509803922</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.8862745098039215</real>
+		<key>Red Component</key>
+        <real>0.07450980392156863</real>
+	</dict>
+	<key>Ansi 15 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>1.0</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.984313725490196</real>
+		<key>Red Component</key>
+        <real>0.9411764705882353</real>
+	</dict>
+	<key>Ansi 2 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.6470588235294118</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.403921568627451</real>
+		<key>Red Component</key>
+        <real>0.17254901960784313</real>
+	</dict>
+	<key>Ansi 3 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9411764705882353</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.6784313725490196</real>
+		<key>Red Component</key>
+        <real>0.01568627450980392</real>
+	</dict>
+	<key>Ansi 4 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.8274509803921568</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5294117647058824</real>
+		<key>Red Component</key>
+        <real>0.00784313725490196</real>
+	</dict>
+	<key>Ansi 5 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.8862745098039215</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.6078431372549019</real>
+		<key>Red Component</key>
+        <real>0.00392156862745098</real>
+	</dict>
+	<key>Ansi 6 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.7764705882352941</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.7058823529411765</real>
+		<key>Red Component</key>
+        <real>0.027450980392156862</real>
+	</dict>
+	<key>Ansi 7 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9921568627450981</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.9137254901960784</real>
+		<key>Red Component</key>
+        <real>0.7098039215686275</real>
+	</dict>
+	<key>Ansi 8 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.3686274509803922</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.17254901960784313</real>
+		<key>Red Component</key>
+        <real>0.1568627450980392</real>
+	</dict>
+	<key>Ansi 9 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.8196078431372549</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.47843137254901963</real>
+		<key>Red Component</key>
+        <real>0.6039215686274509</real>
+	</dict>
+	<key>Background Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.08627450980392157</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.0392156862745098</real>
+		<key>Red Component</key>
+        <real>0.0392156862745098</real>
+	</dict>
+	<key>Badge Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>0.5</real>
+		<key>Blue Component</key>
+		<real>0.0</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.1491314172744751</real>
+		<key>Red Component</key>
+		<real>1</real>
+	</dict>
+	<key>Bold Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>1.0</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.8941176470588236</real>
+		<key>Red Component</key>
+        <real>0.4392156862745098</real>
+	</dict>
+	<key>Cursor Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9254901960784314</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.6823529411764706</real>
+		<key>Red Component</key>
+        <real>0.00784313725490196</real>
+	</dict>
+	<key>Cursor Guide Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>0.25</real>
+		<key>Blue Component</key>
+		<real>1</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.9268307089805603</real>
+		<key>Red Component</key>
+		<real>0.70213186740875244</real>
+	</dict>
+	<key>Cursor Text Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.62745100259780884</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.50980395078659058</real>
+		<key>Red Component</key>
+		<real>0.54901963472366333</real>
+	</dict>
+	<key>Foreground Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>1.0</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.8941176470588236</real>
+		<key>Red Component</key>
+        <real>0.4392156862745098</real>
+	</dict>
+	<key>Link Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.73423302173614502</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.35916060209274292</real>
+		<key>Red Component</key>
+		<real>0.0</real>
+	</dict>
+	<key>Selected Text Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.08627450980392157</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.0392156862745098</real>
+		<key>Red Component</key>
+		<real>0.0392156862745098</real>
+	</dict>
+	<key>Selection Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.996078431372549</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.7803921568627451</real>
+		<key>Red Component</key>
+		<real>0.17647058823529413</real>
+	</dict>
+</dict>
+</plist>
diff --git a/configs/shared/.gvcci/themes/cartoon_outdoors/iterm.plist b/configs/shared/.gvcci/themes/cartoon_outdoors/iterm.plist
new file mode 100644
index 0000000000..e3c7c22f77
--- /dev/null
+++ b/configs/shared/.gvcci/themes/cartoon_outdoors/iterm.plist
@@ -0,0 +1,412 @@
+{
+  "Profiles": [
+    {
+      "Use Non-ASCII Font" : false,
+      "Tags" : [
+
+      ],
+      "Ansi 12 Color" : {
+        "Red Component" : 0.0784313725490196,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.996078431372549,
+        "Alpha Component" : 1,
+        "Green Component" : 0.6627450980392157
+      },
+      "Ansi 7 Color" : {
+        "Red Component" : 0.7098039215686275,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9921568627450981,
+        "Alpha Component" : 1,
+        "Green Component" : 0.9137254901960784
+      },
+      "Ansi 8 Color" : {
+        "Red Component" : 0.1568627450980392,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.3686274509803922,
+        "Alpha Component" : 1,
+        "Green Component" : 0.17254901960784313
+      },
+      "Bold Color" : {
+        "Red Component" : 0.4392156862745098,
+        "Color Space" : "sRGB",
+        "Blue Component" : 1.0,
+        "Alpha Component" : 1,
+        "Green Component" : 0.8941176470588236
+      },
+      "Ansi 9 Color" : {
+        "Red Component" : 0.6039215686274509,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.8196078431372549,
+        "Alpha Component" : 1,
+        "Green Component" : 0.47843137254901963
+      },
+      "Ansi 6 Color" : {
+        "Red Component" : 0.027450980392156862,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.7764705882352941,
+        "Alpha Component" : 1,
+        "Green Component" : 0.7058823529411765
+      },
+      "Right Option Key Sends" : 0,
+      "Rows" : 25,
+      "Default Bookmark" : "No",
+      "Cursor Guide Color" : {
+        "Red Component" : 1,
+        "Color Space" : "Calibrated",
+        "Blue Component" : 0.9999912977218628,
+        "Alpha Component" : 0.04705882352941176,
+        "Green Component" : 0.9999743700027466
+      },
+      "Non-ASCII Anti Aliased" : true,
+      "Use Bright Bold" : true,
+      "Ansi 10 Color" : {
+        "Red Component" : 0.25098039215686274,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.807843137254902,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5254901960784314
+      },
+      "Use Cursor Guide" : false,
+      "Ambiguous Double Width" : false,
+      "Jobs to Ignore" : [
+        "rlogin",
+        "ssh",
+        "slogin",
+        "telnet"
+      ],
+      "Ansi 15 Color" : {
+        "Red Component" : 0.9411764705882353,
+        "Color Space" : "sRGB",
+        "Blue Component" : 1.0,
+        "Alpha Component" : 1,
+        "Green Component" : 0.984313725490196
+      },
+      "Foreground Color" : {
+        "Red Component" : 0.4392156862745098,
+        "Color Space" : "sRGB",
+        "Blue Component" : 1.0,
+        "Alpha Component" : 1,
+        "Green Component" : 0.8941176470588236
+      },
+      "Working Directory" : "\/Users\/fabricecastel",
+      "Bound Hosts" : [
+
+      ],
+      "Blinking Cursor" : false,
+      "Disable Window Resizing" : true,
+      "Sync Title" : false,
+      "Prompt Before Closing 2" : false,
+      "BM Growl" : false,
+      "Description" : "Default",
+      "Mouse Reporting" : true,
+      "Smart Cursor Color" : false,
+      "Screen" : -1,
+      "Selection Color" : {
+        "Red Component" : 0.17647058823529413,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.996078431372549,
+        "Alpha Component" : 1,
+        "Green Component" : 0.7803921568627451
+      },
+      "Columns" : 80,
+      "Idle Code" : 0,
+      "Ansi 13 Color" : {
+        "Red Component" : 0.13333333333333333,
+        "Color Space" : "sRGB",
+        "Blue Component" : 1.0,
+        "Alpha Component" : 1,
+        "Green Component" : 0.7254901960784313
+      },
+      "Custom Command" : "Yes",
+      "ASCII Anti Aliased" : true,
+      "Non Ascii Font" : "Monaco 12",
+      "Vertical Spacing" : 1,
+      "Use Bold Font" : true,
+      "Option Key Sends" : 0,
+      "Selected Text Color" : {
+        "Red Component" : 0.0392156862745098,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.08627450980392157,
+        "Alpha Component" : 1,
+        "Green Component" : 0.0392156862745098
+      },
+      "Background Color" : {
+        "Red Component" : 0.0392156862745098,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.08627450980392157,
+        "Alpha Component" : 1,
+        "Green Component" : 0.0392156862745098
+      },
+      "Character Encoding" : 4,
+      "Ansi 11 Color" : {
+        "Red Component" : 0.20392156862745098,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9921568627450981,
+        "Alpha Component" : 1,
+        "Green Component" : 0.7686274509803922
+      },
+      "Use Italic Font" : true,
+      "Unlimited Scrollback" : false,
+      "Keyboard Map" : {
+        "0xf700-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6A"
+        },
+        "0x37-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1f"
+        },
+        "0x32-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x00"
+        },
+        "0xf709-0x20000" : {
+          "Action" : 10,
+          "Text" : "[17;2~"
+        },
+        "0xf70c-0x20000" : {
+          "Action" : 10,
+          "Text" : "[20;2~"
+        },
+        "0xf729-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2H"
+        },
+        "0xf72b-0x40000" : {
+          "Action" : 10,
+          "Text" : "[1;5F"
+        },
+        "0xf705-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2Q"
+        },
+        "0xf703-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6C"
+        },
+        "0xf700-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2A"
+        },
+        "0xf701-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x42"
+        },
+        "0x38-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x7f"
+        },
+        "0x33-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1b"
+        },
+        "0xf703-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2C"
+        },
+        "0xf701-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5B"
+        },
+        "0xf70d-0x20000" : {
+          "Action" : 10,
+          "Text" : "[21;2~"
+        },
+        "0xf702-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6D"
+        },
+        "0xf729-0x40000" : {
+          "Action" : 10,
+          "Text" : "[1;5H"
+        },
+        "0xf706-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2R"
+        },
+        "0x34-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1c"
+        },
+        "0xf700-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x41"
+        },
+        "0x2d-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1f"
+        },
+        "0xf70e-0x20000" : {
+          "Action" : 10,
+          "Text" : "[23;2~"
+        },
+        "0xf702-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2D"
+        },
+        "0xf703-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x43"
+        },
+        "0xf700-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5A"
+        },
+        "0xf707-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2S"
+        },
+        "0xf70a-0x20000" : {
+          "Action" : 10,
+          "Text" : "[18;2~"
+        },
+        "0x35-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1d"
+        },
+        "0xf70f-0x20000" : {
+          "Action" : 10,
+          "Text" : "[24;2~"
+        },
+        "0xf703-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5C"
+        },
+        "0xf701-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6B"
+        },
+        "0xf702-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x44"
+        },
+        "0xf72b-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2F"
+        },
+        "0x36-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1e"
+        },
+        "0xf708-0x20000" : {
+          "Action" : 10,
+          "Text" : "[15;2~"
+        },
+        "0xf701-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2B"
+        },
+        "0xf70b-0x20000" : {
+          "Action" : 10,
+          "Text" : "[19;2~"
+        },
+        "0xf702-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5D"
+        },
+        "0xf704-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2P"
+        }
+      },
+      "Window Type" : 12,
+      "Blur Radius" : 5.168569711538462,
+      "Cursor Type" : 2,
+      "Background Image Location" : "",
+      "Blur" : false,
+      "Badge Color" : {
+        "Red Component" : 1,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0,
+        "Alpha Component" : 0.5,
+        "Green Component" : 0.1491314172744751
+      },
+      "Cursor Boost" : 0,
+      "Scrollback Lines" : 1000,
+      "Send Code When Idle" : false,
+      "Close Sessions On End" : true,
+      "Terminal Type" : "xterm-256color",
+      "Visual Bell" : true,
+      "Flashing Bell" : false,
+      "Silence Bell" : true,
+      "Ansi 14 Color" : {
+        "Red Component" : 0.07450980392156863,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9686274509803922,
+        "Alpha Component" : 1,
+        "Green Component" : 0.8862745098039215
+      },
+      "Name" : "gvcci",
+      "Cursor Text Color" : {
+        "Red Component" : 0.5490196347236633,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.6274510025978088,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5098039507865906
+      },
+      "Minimum Contrast" : 0,
+      "Shortcut" : "",
+      "Cursor Color" : {
+        "Red Component" : 0.00784313725490196,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9254901960784314,
+        "Alpha Component" : 1,
+        "Green Component" : 0.6823529411764706
+      },
+      "Ansi 0 Color" : {
+        "Red Component" : 0.09803921568627451,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.22745098039215686,
+        "Alpha Component" : 1,
+        "Green Component" : 0.10588235294117647
+      },
+      "Ansi 1 Color" : {
+        "Red Component" : 0.4745098039215686,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.7450980392156863,
+        "Alpha Component" : 1,
+        "Green Component" : 0.3137254901960784
+      },
+      "Horizontal Spacing" : 1,
+      "Ansi 3 Color" : {
+        "Red Component" : 0.01568627450980392,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9411764705882353,
+        "Alpha Component" : 1,
+        "Green Component" : 0.6784313725490196
+      },
+      "Ansi 4 Color" : {
+        "Red Component" : 0.00784313725490196,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.8274509803921568,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5294117647058824
+      },
+      "Transparency" : 0,
+      "Guid" : "FBF27982-5D1C-4625-8221-8FFAB9F4A445",
+      "Ansi 2 Color" : {
+        "Red Component" : 0.17254901960784313,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.6470588235294118,
+        "Alpha Component" : 1,
+        "Green Component" : 0.403921568627451
+      },
+      "Normal Font" : "MesloLGSForPowerline-Regular 12",
+      "Custom Directory" : "No",
+      "Link Color" : {
+        "Red Component" : 0,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.734233021736145,
+        "Alpha Component" : 1,
+        "Green Component" : 0.3591606020927429
+      },
+      "Ansi 5 Color" : {
+        "Red Component" : 0.00392156862745098,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.8862745098039215,
+        "Alpha Component" : 1,
+        "Green Component" : 0.6078431372549019
+      },
+    }
+  ]
+}
diff --git a/configs/shared/.gvcci/themes/cartoon_outdoors/json-scheme.json b/configs/shared/.gvcci/themes/cartoon_outdoors/json-scheme.json
new file mode 100644
index 0000000000..b7ae03e990
--- /dev/null
+++ b/configs/shared/.gvcci/themes/cartoon_outdoors/json-scheme.json
@@ -0,0 +1,24 @@
+{
+  "name": "GVCCI Color Scheme",
+  "author": "",
+  "color": [
+    "#191b3a",
+    "#7950be",
+    "#2c67a5",
+    "#04adf0",
+    "#0287d3",
+    "#019be2",
+    "#07b4c6",
+    "#b5e9fd",
+    "#282c5e",
+    "#9a7ad1",
+    "#4086ce",
+    "#34c4fd",
+    "#14a9fe",
+    "#22b9ff",
+    "#13e2f7",
+    "#f0fbff"
+  ],
+  "foreground": "#70e4ff",
+  "background": "#0a0a16"
+}
diff --git a/configs/shared/.gvcci/themes/cartoon_outdoors/nospace.txt b/configs/shared/.gvcci/themes/cartoon_outdoors/nospace.txt
new file mode 100644
index 0000000000..c73dd1e36d
--- /dev/null
+++ b/configs/shared/.gvcci/themes/cartoon_outdoors/nospace.txt
@@ -0,0 +1 @@
+#0a0a16#70e4ff#191b3a#7950be#2c67a5#04adf0#0287d3#019be2#07b4c6#b5e9fd#282c5e#9a7ad1#4086ce#34c4fd#14a9fe#22b9ff#13e2f7#f0fbff
diff --git a/configs/shared/.gvcci/themes/cartoon_outdoors/tilix.json b/configs/shared/.gvcci/themes/cartoon_outdoors/tilix.json
new file mode 100644
index 0000000000..b0fd8794bb
--- /dev/null
+++ b/configs/shared/.gvcci/themes/cartoon_outdoors/tilix.json
@@ -0,0 +1,33 @@
+{
+    "name": "Gvcci",
+    "comment": "Gvcci generated theme.",
+    "foreground-color": "#70e4ff",
+    "background-color": "#0a0a16",
+    "use-theme-colors": false,
+    "use-highlight-color": false,
+    "highlight-foreground-color": "#0a0a16",
+    "highlight-background-color": "#2dc7fe",
+    "use-cursor-color": false,
+    "cursor-foreground-color": "#02aeec",
+    "cursor-background-color": "#02aeec",
+    "use-badge-color": true,
+    "badge-color": "#70e4ff",
+    "palette": [
+        "#191b3a",
+        "#7950be",
+        "#2c67a5",
+        "#04adf0",
+        "#0287d3",
+        "#019be2",
+        "#07b4c6",
+        "#b5e9fd",
+        "#282c5e",
+        "#9a7ad1",
+        "#4086ce",
+        "#34c4fd",
+        "#14a9fe",
+        "#22b9ff",
+        "#13e2f7",
+        "#f0fbff"
+    ]
+}
\ No newline at end of file
diff --git a/configs/shared/misc/.local/share/wallpaper/cartoon-outdoors.jpg b/configs/shared/.gvcci/themes/cartoon_outdoors/wallpaper
index 1fdee71f88..1fdee71f88 100644
--- a/configs/shared/misc/.local/share/wallpaper/cartoon-outdoors.jpg
+++ b/configs/shared/.gvcci/themes/cartoon_outdoors/wallpaper
Binary files differdiff --git a/configs/shared/.gvcci/themes/cartoon_outdoors/xresources-colors.txt b/configs/shared/.gvcci/themes/cartoon_outdoors/xresources-colors.txt
new file mode 100644
index 0000000000..b2269245ff
--- /dev/null
+++ b/configs/shared/.gvcci/themes/cartoon_outdoors/xresources-colors.txt
@@ -0,0 +1,37 @@
+! COLORS
+! special
+*.foreground:   #70e4ff
+*.background:   #0a0a16
+*.cursorColor:  #70e4ff
+
+! black
+*.color0:       #191b3a
+*.color8:       #282c5e
+
+! red
+*.color1:       #7950be
+*.color9:       #9a7ad1
+
+! green
+*.color2:       #2c67a5
+*.color10:      #4086ce
+
+! yellow
+*.color3:       #04adf0
+*.color11:      #34c4fd
+
+! blue
+*.color4:       #0287d3
+*.color12:      #14a9fe
+
+! magenta
+*.color5:       #019be2
+*.color13:      #22b9ff
+
+! cyan
+*.color6:       #07b4c6
+*.color14:      #13e2f7
+
+! white
+*.color7:       #b5e9fd
+*.color15:      #f0fbff
diff --git a/configs/shared/.gvcci/themes/construction_paper_iceberg_4k/colors.sh b/configs/shared/.gvcci/themes/construction_paper_iceberg_4k/colors.sh
new file mode 100644
index 0000000000..6ccda6facf
--- /dev/null
+++ b/configs/shared/.gvcci/themes/construction_paper_iceberg_4k/colors.sh
@@ -0,0 +1,23 @@
+
+# Special
+background='#dad0df'
+foreground='#0c024d'
+cursor='#0c024d'
+
+# Colors
+color0='#37293d'
+color1='#767676'
+color2='#1133fa'
+color3='#92669b'
+color4='#5328e6'
+color5='#c00bfb'
+color6='#8702f8'
+color7='#e7bcf6'
+color8='#523e5b'
+color9='#969393'
+color10='#4a65fe'
+color11='#ad89b5'
+color12='#7d5cef'
+color13='#d145ff'
+color14='#a339ff'
+color15='#faf1fd'
diff --git a/configs/shared/.gvcci/themes/construction_paper_iceberg_4k/column.txt b/configs/shared/.gvcci/themes/construction_paper_iceberg_4k/column.txt
new file mode 100644
index 0000000000..2c9d45a447
--- /dev/null
+++ b/configs/shared/.gvcci/themes/construction_paper_iceberg_4k/column.txt
@@ -0,0 +1,18 @@
+#dad0df
+#0c024d
+#37293d
+#767676
+#1133fa
+#92669b
+#5328e6
+#c00bfb
+#8702f8
+#e7bcf6
+#523e5b
+#969393
+#4a65fe
+#ad89b5
+#7d5cef
+#d145ff
+#a339ff
+#faf1fd
diff --git a/configs/shared/.gvcci/themes/construction_paper_iceberg_4k/columns-with-headers.txt b/configs/shared/.gvcci/themes/construction_paper_iceberg_4k/columns-with-headers.txt
new file mode 100644
index 0000000000..2829886abb
--- /dev/null
+++ b/configs/shared/.gvcci/themes/construction_paper_iceberg_4k/columns-with-headers.txt
@@ -0,0 +1,25 @@
+Background
+#dad0df
+
+Foreground
+#0c024d
+
+Normal ANSI Colors
+#37293d
+#767676
+#1133fa
+#92669b
+#5328e6
+#c00bfb
+#8702f8
+#e7bcf6
+
+Bright ANSI Colors
+#523e5b
+#969393
+#4a65fe
+#ad89b5
+#7d5cef
+#d145ff
+#a339ff
+#faf1fd
diff --git a/configs/shared/.gvcci/themes/construction_paper_iceberg_4k/iterm.itermcolors b/configs/shared/.gvcci/themes/construction_paper_iceberg_4k/iterm.itermcolors
new file mode 100644
index 0000000000..bedbe39e7b
--- /dev/null
+++ b/configs/shared/.gvcci/themes/construction_paper_iceberg_4k/iterm.itermcolors
@@ -0,0 +1,344 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>Ansi 0 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.23921568627450981</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.1607843137254902</real>
+		<key>Red Component</key>
+        <real>0.21568627450980393</real>
+	</dict>
+	<key>Ansi 1 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.4627450980392157</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.4627450980392157</real>
+		<key>Red Component</key>
+        <real>0.4627450980392157</real>
+	</dict>
+	<key>Ansi 10 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.996078431372549</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.396078431372549</real>
+		<key>Red Component</key>
+        <real>0.2901960784313726</real>
+	</dict>
+	<key>Ansi 11 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.7098039215686275</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5372549019607843</real>
+		<key>Red Component</key>
+        <real>0.6784313725490196</real>
+	</dict>
+	<key>Ansi 12 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9372549019607843</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.3607843137254902</real>
+		<key>Red Component</key>
+        <real>0.49019607843137253</real>
+	</dict>
+	<key>Ansi 13 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>1.0</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.27058823529411763</real>
+		<key>Red Component</key>
+        <real>0.8196078431372549</real>
+	</dict>
+	<key>Ansi 14 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>1.0</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.2235294117647059</real>
+		<key>Red Component</key>
+        <real>0.6392156862745098</real>
+	</dict>
+	<key>Ansi 15 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9921568627450981</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.9450980392156862</real>
+		<key>Red Component</key>
+        <real>0.9803921568627451</real>
+	</dict>
+	<key>Ansi 2 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9803921568627451</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.2</real>
+		<key>Red Component</key>
+        <real>0.06666666666666667</real>
+	</dict>
+	<key>Ansi 3 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.6078431372549019</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.4</real>
+		<key>Red Component</key>
+        <real>0.5725490196078431</real>
+	</dict>
+	<key>Ansi 4 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9019607843137255</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.1568627450980392</real>
+		<key>Red Component</key>
+        <real>0.3254901960784314</real>
+	</dict>
+	<key>Ansi 5 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.984313725490196</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.043137254901960784</real>
+		<key>Red Component</key>
+        <real>0.7529411764705882</real>
+	</dict>
+	<key>Ansi 6 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9725490196078431</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.00784313725490196</real>
+		<key>Red Component</key>
+        <real>0.5294117647058824</real>
+	</dict>
+	<key>Ansi 7 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9647058823529412</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.7372549019607844</real>
+		<key>Red Component</key>
+        <real>0.9058823529411765</real>
+	</dict>
+	<key>Ansi 8 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.3568627450980392</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.24313725490196078</real>
+		<key>Red Component</key>
+        <real>0.3215686274509804</real>
+	</dict>
+	<key>Ansi 9 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.5764705882352941</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5764705882352941</real>
+		<key>Red Component</key>
+        <real>0.5882352941176471</real>
+	</dict>
+	<key>Background Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.8745098039215686</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.8156862745098039</real>
+		<key>Red Component</key>
+        <real>0.8549019607843137</real>
+	</dict>
+	<key>Badge Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>0.5</real>
+		<key>Blue Component</key>
+		<real>0.0</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.1491314172744751</real>
+		<key>Red Component</key>
+		<real>1</real>
+	</dict>
+	<key>Bold Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.30196078431372547</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.00784313725490196</real>
+		<key>Red Component</key>
+        <real>0.047058823529411764</real>
+	</dict>
+	<key>Cursor Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.5803921568627451</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.4235294117647059</real>
+		<key>Red Component</key>
+        <real>0.5137254901960784</real>
+	</dict>
+	<key>Cursor Guide Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>0.25</real>
+		<key>Blue Component</key>
+		<real>1</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.9268307089805603</real>
+		<key>Red Component</key>
+		<real>0.70213186740875244</real>
+	</dict>
+	<key>Cursor Text Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.62745100259780884</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.50980395078659058</real>
+		<key>Red Component</key>
+		<real>0.54901963472366333</real>
+	</dict>
+	<key>Foreground Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.30196078431372547</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.00784313725490196</real>
+		<key>Red Component</key>
+        <real>0.047058823529411764</real>
+	</dict>
+	<key>Link Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.73423302173614502</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.35916060209274292</real>
+		<key>Red Component</key>
+		<real>0.0</real>
+	</dict>
+	<key>Selected Text Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.8745098039215686</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.8156862745098039</real>
+		<key>Red Component</key>
+		<real>0.8549019607843137</real>
+	</dict>
+	<key>Selection Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.6901960784313725</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.5529411764705883</real>
+		<key>Red Component</key>
+		<real>0.6313725490196078</real>
+	</dict>
+</dict>
+</plist>
diff --git a/configs/shared/.gvcci/themes/construction_paper_iceberg_4k/iterm.plist b/configs/shared/.gvcci/themes/construction_paper_iceberg_4k/iterm.plist
new file mode 100644
index 0000000000..aa77104bd0
--- /dev/null
+++ b/configs/shared/.gvcci/themes/construction_paper_iceberg_4k/iterm.plist
@@ -0,0 +1,412 @@
+{
+  "Profiles": [
+    {
+      "Use Non-ASCII Font" : false,
+      "Tags" : [
+
+      ],
+      "Ansi 12 Color" : {
+        "Red Component" : 0.49019607843137253,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9372549019607843,
+        "Alpha Component" : 1,
+        "Green Component" : 0.3607843137254902
+      },
+      "Ansi 7 Color" : {
+        "Red Component" : 0.9058823529411765,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9647058823529412,
+        "Alpha Component" : 1,
+        "Green Component" : 0.7372549019607844
+      },
+      "Ansi 8 Color" : {
+        "Red Component" : 0.3215686274509804,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.3568627450980392,
+        "Alpha Component" : 1,
+        "Green Component" : 0.24313725490196078
+      },
+      "Bold Color" : {
+        "Red Component" : 0.047058823529411764,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.30196078431372547,
+        "Alpha Component" : 1,
+        "Green Component" : 0.00784313725490196
+      },
+      "Ansi 9 Color" : {
+        "Red Component" : 0.5882352941176471,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.5764705882352941,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5764705882352941
+      },
+      "Ansi 6 Color" : {
+        "Red Component" : 0.5294117647058824,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9725490196078431,
+        "Alpha Component" : 1,
+        "Green Component" : 0.00784313725490196
+      },
+      "Right Option Key Sends" : 0,
+      "Rows" : 25,
+      "Default Bookmark" : "No",
+      "Cursor Guide Color" : {
+        "Red Component" : 1,
+        "Color Space" : "Calibrated",
+        "Blue Component" : 0.9999912977218628,
+        "Alpha Component" : 0.04705882352941176,
+        "Green Component" : 0.9999743700027466
+      },
+      "Non-ASCII Anti Aliased" : true,
+      "Use Bright Bold" : true,
+      "Ansi 10 Color" : {
+        "Red Component" : 0.2901960784313726,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.996078431372549,
+        "Alpha Component" : 1,
+        "Green Component" : 0.396078431372549
+      },
+      "Use Cursor Guide" : false,
+      "Ambiguous Double Width" : false,
+      "Jobs to Ignore" : [
+        "rlogin",
+        "ssh",
+        "slogin",
+        "telnet"
+      ],
+      "Ansi 15 Color" : {
+        "Red Component" : 0.9803921568627451,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9921568627450981,
+        "Alpha Component" : 1,
+        "Green Component" : 0.9450980392156862
+      },
+      "Foreground Color" : {
+        "Red Component" : 0.047058823529411764,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.30196078431372547,
+        "Alpha Component" : 1,
+        "Green Component" : 0.00784313725490196
+      },
+      "Working Directory" : "\/Users\/fabricecastel",
+      "Bound Hosts" : [
+
+      ],
+      "Blinking Cursor" : false,
+      "Disable Window Resizing" : true,
+      "Sync Title" : false,
+      "Prompt Before Closing 2" : false,
+      "BM Growl" : false,
+      "Description" : "Default",
+      "Mouse Reporting" : true,
+      "Smart Cursor Color" : false,
+      "Screen" : -1,
+      "Selection Color" : {
+        "Red Component" : 0.6313725490196078,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.6901960784313725,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5529411764705883
+      },
+      "Columns" : 80,
+      "Idle Code" : 0,
+      "Ansi 13 Color" : {
+        "Red Component" : 0.8196078431372549,
+        "Color Space" : "sRGB",
+        "Blue Component" : 1.0,
+        "Alpha Component" : 1,
+        "Green Component" : 0.27058823529411763
+      },
+      "Custom Command" : "Yes",
+      "ASCII Anti Aliased" : true,
+      "Non Ascii Font" : "Monaco 12",
+      "Vertical Spacing" : 1,
+      "Use Bold Font" : true,
+      "Option Key Sends" : 0,
+      "Selected Text Color" : {
+        "Red Component" : 0.8549019607843137,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.8745098039215686,
+        "Alpha Component" : 1,
+        "Green Component" : 0.8156862745098039
+      },
+      "Background Color" : {
+        "Red Component" : 0.8549019607843137,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.8745098039215686,
+        "Alpha Component" : 1,
+        "Green Component" : 0.8156862745098039
+      },
+      "Character Encoding" : 4,
+      "Ansi 11 Color" : {
+        "Red Component" : 0.6784313725490196,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.7098039215686275,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5372549019607843
+      },
+      "Use Italic Font" : true,
+      "Unlimited Scrollback" : false,
+      "Keyboard Map" : {
+        "0xf700-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6A"
+        },
+        "0x37-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1f"
+        },
+        "0x32-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x00"
+        },
+        "0xf709-0x20000" : {
+          "Action" : 10,
+          "Text" : "[17;2~"
+        },
+        "0xf70c-0x20000" : {
+          "Action" : 10,
+          "Text" : "[20;2~"
+        },
+        "0xf729-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2H"
+        },
+        "0xf72b-0x40000" : {
+          "Action" : 10,
+          "Text" : "[1;5F"
+        },
+        "0xf705-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2Q"
+        },
+        "0xf703-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6C"
+        },
+        "0xf700-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2A"
+        },
+        "0xf701-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x42"
+        },
+        "0x38-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x7f"
+        },
+        "0x33-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1b"
+        },
+        "0xf703-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2C"
+        },
+        "0xf701-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5B"
+        },
+        "0xf70d-0x20000" : {
+          "Action" : 10,
+          "Text" : "[21;2~"
+        },
+        "0xf702-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6D"
+        },
+        "0xf729-0x40000" : {
+          "Action" : 10,
+          "Text" : "[1;5H"
+        },
+        "0xf706-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2R"
+        },
+        "0x34-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1c"
+        },
+        "0xf700-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x41"
+        },
+        "0x2d-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1f"
+        },
+        "0xf70e-0x20000" : {
+          "Action" : 10,
+          "Text" : "[23;2~"
+        },
+        "0xf702-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2D"
+        },
+        "0xf703-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x43"
+        },
+        "0xf700-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5A"
+        },
+        "0xf707-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2S"
+        },
+        "0xf70a-0x20000" : {
+          "Action" : 10,
+          "Text" : "[18;2~"
+        },
+        "0x35-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1d"
+        },
+        "0xf70f-0x20000" : {
+          "Action" : 10,
+          "Text" : "[24;2~"
+        },
+        "0xf703-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5C"
+        },
+        "0xf701-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6B"
+        },
+        "0xf702-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x44"
+        },
+        "0xf72b-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2F"
+        },
+        "0x36-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1e"
+        },
+        "0xf708-0x20000" : {
+          "Action" : 10,
+          "Text" : "[15;2~"
+        },
+        "0xf701-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2B"
+        },
+        "0xf70b-0x20000" : {
+          "Action" : 10,
+          "Text" : "[19;2~"
+        },
+        "0xf702-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5D"
+        },
+        "0xf704-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2P"
+        }
+      },
+      "Window Type" : 12,
+      "Blur Radius" : 5.168569711538462,
+      "Cursor Type" : 2,
+      "Background Image Location" : "",
+      "Blur" : false,
+      "Badge Color" : {
+        "Red Component" : 1,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0,
+        "Alpha Component" : 0.5,
+        "Green Component" : 0.1491314172744751
+      },
+      "Cursor Boost" : 0,
+      "Scrollback Lines" : 1000,
+      "Send Code When Idle" : false,
+      "Close Sessions On End" : true,
+      "Terminal Type" : "xterm-256color",
+      "Visual Bell" : true,
+      "Flashing Bell" : false,
+      "Silence Bell" : true,
+      "Ansi 14 Color" : {
+        "Red Component" : 0.6392156862745098,
+        "Color Space" : "sRGB",
+        "Blue Component" : 1.0,
+        "Alpha Component" : 1,
+        "Green Component" : 0.2235294117647059
+      },
+      "Name" : "gvcci",
+      "Cursor Text Color" : {
+        "Red Component" : 0.5490196347236633,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.6274510025978088,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5098039507865906
+      },
+      "Minimum Contrast" : 0,
+      "Shortcut" : "",
+      "Cursor Color" : {
+        "Red Component" : 0.5137254901960784,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.5803921568627451,
+        "Alpha Component" : 1,
+        "Green Component" : 0.4235294117647059
+      },
+      "Ansi 0 Color" : {
+        "Red Component" : 0.21568627450980393,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.23921568627450981,
+        "Alpha Component" : 1,
+        "Green Component" : 0.1607843137254902
+      },
+      "Ansi 1 Color" : {
+        "Red Component" : 0.4627450980392157,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.4627450980392157,
+        "Alpha Component" : 1,
+        "Green Component" : 0.4627450980392157
+      },
+      "Horizontal Spacing" : 1,
+      "Ansi 3 Color" : {
+        "Red Component" : 0.5725490196078431,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.6078431372549019,
+        "Alpha Component" : 1,
+        "Green Component" : 0.4
+      },
+      "Ansi 4 Color" : {
+        "Red Component" : 0.3254901960784314,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9019607843137255,
+        "Alpha Component" : 1,
+        "Green Component" : 0.1568627450980392
+      },
+      "Transparency" : 0,
+      "Guid" : "FBF27982-5D1C-4625-8221-8FFAB9F4A445",
+      "Ansi 2 Color" : {
+        "Red Component" : 0.06666666666666667,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9803921568627451,
+        "Alpha Component" : 1,
+        "Green Component" : 0.2
+      },
+      "Normal Font" : "MesloLGSForPowerline-Regular 12",
+      "Custom Directory" : "No",
+      "Link Color" : {
+        "Red Component" : 0,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.734233021736145,
+        "Alpha Component" : 1,
+        "Green Component" : 0.3591606020927429
+      },
+      "Ansi 5 Color" : {
+        "Red Component" : 0.7529411764705882,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.984313725490196,
+        "Alpha Component" : 1,
+        "Green Component" : 0.043137254901960784
+      },
+    }
+  ]
+}
diff --git a/configs/shared/.gvcci/themes/construction_paper_iceberg_4k/json-scheme.json b/configs/shared/.gvcci/themes/construction_paper_iceberg_4k/json-scheme.json
new file mode 100644
index 0000000000..fe79182996
--- /dev/null
+++ b/configs/shared/.gvcci/themes/construction_paper_iceberg_4k/json-scheme.json
@@ -0,0 +1,24 @@
+{
+  "name": "GVCCI Color Scheme",
+  "author": "",
+  "color": [
+    "#37293d",
+    "#767676",
+    "#1133fa",
+    "#92669b",
+    "#5328e6",
+    "#c00bfb",
+    "#8702f8",
+    "#e7bcf6",
+    "#523e5b",
+    "#969393",
+    "#4a65fe",
+    "#ad89b5",
+    "#7d5cef",
+    "#d145ff",
+    "#a339ff",
+    "#faf1fd"
+  ],
+  "foreground": "#0c024d",
+  "background": "#dad0df"
+}
diff --git a/configs/shared/.gvcci/themes/construction_paper_iceberg_4k/nospace.txt b/configs/shared/.gvcci/themes/construction_paper_iceberg_4k/nospace.txt
new file mode 100644
index 0000000000..1510455f6c
--- /dev/null
+++ b/configs/shared/.gvcci/themes/construction_paper_iceberg_4k/nospace.txt
@@ -0,0 +1 @@
+#dad0df#0c024d#37293d#767676#1133fa#92669b#5328e6#c00bfb#8702f8#e7bcf6#523e5b#969393#4a65fe#ad89b5#7d5cef#d145ff#a339ff#faf1fd
diff --git a/configs/shared/.gvcci/themes/construction_paper_iceberg_4k/tilix.json b/configs/shared/.gvcci/themes/construction_paper_iceberg_4k/tilix.json
new file mode 100644
index 0000000000..978be9cb20
--- /dev/null
+++ b/configs/shared/.gvcci/themes/construction_paper_iceberg_4k/tilix.json
@@ -0,0 +1,33 @@
+{
+    "name": "Gvcci",
+    "comment": "Gvcci generated theme.",
+    "foreground-color": "#0c024d",
+    "background-color": "#dad0df",
+    "use-theme-colors": false,
+    "use-highlight-color": false,
+    "highlight-foreground-color": "#dad0df",
+    "highlight-background-color": "#a18db0",
+    "use-cursor-color": false,
+    "cursor-foreground-color": "#836c94",
+    "cursor-background-color": "#836c94",
+    "use-badge-color": true,
+    "badge-color": "#0c024d",
+    "palette": [
+        "#37293d",
+        "#767676",
+        "#1133fa",
+        "#92669b",
+        "#5328e6",
+        "#c00bfb",
+        "#8702f8",
+        "#e7bcf6",
+        "#523e5b",
+        "#969393",
+        "#4a65fe",
+        "#ad89b5",
+        "#7d5cef",
+        "#d145ff",
+        "#a339ff",
+        "#faf1fd"
+    ]
+}
\ No newline at end of file
diff --git a/configs/shared/.gvcci/themes/construction_paper_iceberg_4k/wallpaper b/configs/shared/.gvcci/themes/construction_paper_iceberg_4k/wallpaper
new file mode 100644
index 0000000000..246445d133
--- /dev/null
+++ b/configs/shared/.gvcci/themes/construction_paper_iceberg_4k/wallpaper
Binary files differdiff --git a/configs/shared/.gvcci/themes/construction_paper_iceberg_4k/xresources-colors.txt b/configs/shared/.gvcci/themes/construction_paper_iceberg_4k/xresources-colors.txt
new file mode 100644
index 0000000000..ecff842a3a
--- /dev/null
+++ b/configs/shared/.gvcci/themes/construction_paper_iceberg_4k/xresources-colors.txt
@@ -0,0 +1,37 @@
+! COLORS
+! special
+*.foreground:   #0c024d
+*.background:   #dad0df
+*.cursorColor:  #0c024d
+
+! black
+*.color0:       #37293d
+*.color8:       #523e5b
+
+! red
+*.color1:       #767676
+*.color9:       #969393
+
+! green
+*.color2:       #1133fa
+*.color10:      #4a65fe
+
+! yellow
+*.color3:       #92669b
+*.color11:      #ad89b5
+
+! blue
+*.color4:       #5328e6
+*.color12:      #7d5cef
+
+! magenta
+*.color5:       #c00bfb
+*.color13:      #d145ff
+
+! cyan
+*.color6:       #8702f8
+*.color14:      #a339ff
+
+! white
+*.color7:       #e7bcf6
+*.color15:      #faf1fd
diff --git a/configs/shared/.gvcci/themes/finding_nemo/colors.sh b/configs/shared/.gvcci/themes/finding_nemo/colors.sh
new file mode 100644
index 0000000000..d8b67b894b
--- /dev/null
+++ b/configs/shared/.gvcci/themes/finding_nemo/colors.sh
@@ -0,0 +1,23 @@
+
+# Special
+background='#0e1021'
+foreground='#76d3e9'
+cursor='#76d3e9'
+
+# Colors
+color0='#1e2045'
+color1='#c24405'
+color2='#7063c8'
+color3='#a79808'
+color4='#4f945b'
+color5='#ab924c'
+color6='#36a5b3'
+color7='#c2dcef'
+color8='#2d3169'
+color9='#f95a0c'
+color10='#968cdc'
+color11='#e2cd0b'
+color12='#6db37a'
+color13='#c3ad72'
+color14='#58c1ce'
+color15='#f3f8fc'
diff --git a/configs/shared/.gvcci/themes/finding_nemo/column.txt b/configs/shared/.gvcci/themes/finding_nemo/column.txt
new file mode 100644
index 0000000000..e87107497d
--- /dev/null
+++ b/configs/shared/.gvcci/themes/finding_nemo/column.txt
@@ -0,0 +1,18 @@
+#0e1021
+#76d3e9
+#1e2045
+#c24405
+#7063c8
+#a79808
+#4f945b
+#ab924c
+#36a5b3
+#c2dcef
+#2d3169
+#f95a0c
+#968cdc
+#e2cd0b
+#6db37a
+#c3ad72
+#58c1ce
+#f3f8fc
diff --git a/configs/shared/.gvcci/themes/finding_nemo/columns-with-headers.txt b/configs/shared/.gvcci/themes/finding_nemo/columns-with-headers.txt
new file mode 100644
index 0000000000..115370c1aa
--- /dev/null
+++ b/configs/shared/.gvcci/themes/finding_nemo/columns-with-headers.txt
@@ -0,0 +1,25 @@
+Background
+#0e1021
+
+Foreground
+#76d3e9
+
+Normal ANSI Colors
+#1e2045
+#c24405
+#7063c8
+#a79808
+#4f945b
+#ab924c
+#36a5b3
+#c2dcef
+
+Bright ANSI Colors
+#2d3169
+#f95a0c
+#968cdc
+#e2cd0b
+#6db37a
+#c3ad72
+#58c1ce
+#f3f8fc
diff --git a/configs/shared/.gvcci/themes/finding_nemo/iterm.itermcolors b/configs/shared/.gvcci/themes/finding_nemo/iterm.itermcolors
new file mode 100644
index 0000000000..b00aba15a1
--- /dev/null
+++ b/configs/shared/.gvcci/themes/finding_nemo/iterm.itermcolors
@@ -0,0 +1,344 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>Ansi 0 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.27058823529411763</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.12549019607843137</real>
+		<key>Red Component</key>
+        <real>0.11764705882352941</real>
+	</dict>
+	<key>Ansi 1 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.0196078431372549</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.26666666666666666</real>
+		<key>Red Component</key>
+        <real>0.7607843137254902</real>
+	</dict>
+	<key>Ansi 10 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.8627450980392157</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5490196078431373</real>
+		<key>Red Component</key>
+        <real>0.5882352941176471</real>
+	</dict>
+	<key>Ansi 11 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.043137254901960784</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.803921568627451</real>
+		<key>Red Component</key>
+        <real>0.8862745098039215</real>
+	</dict>
+	<key>Ansi 12 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.47843137254901963</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.7019607843137254</real>
+		<key>Red Component</key>
+        <real>0.42745098039215684</real>
+	</dict>
+	<key>Ansi 13 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.4470588235294118</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.6784313725490196</real>
+		<key>Red Component</key>
+        <real>0.7647058823529411</real>
+	</dict>
+	<key>Ansi 14 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.807843137254902</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.7568627450980392</real>
+		<key>Red Component</key>
+        <real>0.34509803921568627</real>
+	</dict>
+	<key>Ansi 15 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9882352941176471</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.9725490196078431</real>
+		<key>Red Component</key>
+        <real>0.9529411764705882</real>
+	</dict>
+	<key>Ansi 2 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.7843137254901961</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.38823529411764707</real>
+		<key>Red Component</key>
+        <real>0.4392156862745098</real>
+	</dict>
+	<key>Ansi 3 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.03137254901960784</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.596078431372549</real>
+		<key>Red Component</key>
+        <real>0.6549019607843137</real>
+	</dict>
+	<key>Ansi 4 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.3568627450980392</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5803921568627451</real>
+		<key>Red Component</key>
+        <real>0.30980392156862746</real>
+	</dict>
+	<key>Ansi 5 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.2980392156862745</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5725490196078431</real>
+		<key>Red Component</key>
+        <real>0.6705882352941176</real>
+	</dict>
+	<key>Ansi 6 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.7019607843137254</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.6470588235294118</real>
+		<key>Red Component</key>
+        <real>0.21176470588235294</real>
+	</dict>
+	<key>Ansi 7 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9372549019607843</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.8627450980392157</real>
+		<key>Red Component</key>
+        <real>0.7607843137254902</real>
+	</dict>
+	<key>Ansi 8 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.4117647058823529</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.19215686274509805</real>
+		<key>Red Component</key>
+        <real>0.17647058823529413</real>
+	</dict>
+	<key>Ansi 9 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.047058823529411764</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.35294117647058826</real>
+		<key>Red Component</key>
+        <real>0.9764705882352941</real>
+	</dict>
+	<key>Background Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.12941176470588237</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.06274509803921569</real>
+		<key>Red Component</key>
+        <real>0.054901960784313725</real>
+	</dict>
+	<key>Badge Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>0.5</real>
+		<key>Blue Component</key>
+		<real>0.0</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.1491314172744751</real>
+		<key>Red Component</key>
+		<real>1</real>
+	</dict>
+	<key>Bold Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9137254901960784</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.8274509803921568</real>
+		<key>Red Component</key>
+        <real>0.4627450980392157</real>
+	</dict>
+	<key>Cursor Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.27058823529411763</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.6588235294117647</real>
+		<key>Red Component</key>
+        <real>0.3607843137254902</real>
+	</dict>
+	<key>Cursor Guide Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>0.25</real>
+		<key>Blue Component</key>
+		<real>1</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.9268307089805603</real>
+		<key>Red Component</key>
+		<real>0.70213186740875244</real>
+	</dict>
+	<key>Cursor Text Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.62745100259780884</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.50980395078659058</real>
+		<key>Red Component</key>
+		<real>0.54901963472366333</real>
+	</dict>
+	<key>Foreground Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9137254901960784</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.8274509803921568</real>
+		<key>Red Component</key>
+        <real>0.4627450980392157</real>
+	</dict>
+	<key>Link Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.73423302173614502</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.35916060209274292</real>
+		<key>Red Component</key>
+		<real>0.0</real>
+	</dict>
+	<key>Selected Text Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.12941176470588237</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.06274509803921569</real>
+		<key>Red Component</key>
+		<real>0.054901960784313725</real>
+	</dict>
+	<key>Selection Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.403921568627451</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.7647058823529411</real>
+		<key>Red Component</key>
+		<real>0.48627450980392156</real>
+	</dict>
+</dict>
+</plist>
diff --git a/configs/shared/.gvcci/themes/finding_nemo/iterm.plist b/configs/shared/.gvcci/themes/finding_nemo/iterm.plist
new file mode 100644
index 0000000000..392dcbfc17
--- /dev/null
+++ b/configs/shared/.gvcci/themes/finding_nemo/iterm.plist
@@ -0,0 +1,412 @@
+{
+  "Profiles": [
+    {
+      "Use Non-ASCII Font" : false,
+      "Tags" : [
+
+      ],
+      "Ansi 12 Color" : {
+        "Red Component" : 0.42745098039215684,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.47843137254901963,
+        "Alpha Component" : 1,
+        "Green Component" : 0.7019607843137254
+      },
+      "Ansi 7 Color" : {
+        "Red Component" : 0.7607843137254902,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9372549019607843,
+        "Alpha Component" : 1,
+        "Green Component" : 0.8627450980392157
+      },
+      "Ansi 8 Color" : {
+        "Red Component" : 0.17647058823529413,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.4117647058823529,
+        "Alpha Component" : 1,
+        "Green Component" : 0.19215686274509805
+      },
+      "Bold Color" : {
+        "Red Component" : 0.4627450980392157,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9137254901960784,
+        "Alpha Component" : 1,
+        "Green Component" : 0.8274509803921568
+      },
+      "Ansi 9 Color" : {
+        "Red Component" : 0.9764705882352941,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.047058823529411764,
+        "Alpha Component" : 1,
+        "Green Component" : 0.35294117647058826
+      },
+      "Ansi 6 Color" : {
+        "Red Component" : 0.21176470588235294,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.7019607843137254,
+        "Alpha Component" : 1,
+        "Green Component" : 0.6470588235294118
+      },
+      "Right Option Key Sends" : 0,
+      "Rows" : 25,
+      "Default Bookmark" : "No",
+      "Cursor Guide Color" : {
+        "Red Component" : 1,
+        "Color Space" : "Calibrated",
+        "Blue Component" : 0.9999912977218628,
+        "Alpha Component" : 0.04705882352941176,
+        "Green Component" : 0.9999743700027466
+      },
+      "Non-ASCII Anti Aliased" : true,
+      "Use Bright Bold" : true,
+      "Ansi 10 Color" : {
+        "Red Component" : 0.5882352941176471,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.8627450980392157,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5490196078431373
+      },
+      "Use Cursor Guide" : false,
+      "Ambiguous Double Width" : false,
+      "Jobs to Ignore" : [
+        "rlogin",
+        "ssh",
+        "slogin",
+        "telnet"
+      ],
+      "Ansi 15 Color" : {
+        "Red Component" : 0.9529411764705882,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9882352941176471,
+        "Alpha Component" : 1,
+        "Green Component" : 0.9725490196078431
+      },
+      "Foreground Color" : {
+        "Red Component" : 0.4627450980392157,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9137254901960784,
+        "Alpha Component" : 1,
+        "Green Component" : 0.8274509803921568
+      },
+      "Working Directory" : "\/Users\/fabricecastel",
+      "Bound Hosts" : [
+
+      ],
+      "Blinking Cursor" : false,
+      "Disable Window Resizing" : true,
+      "Sync Title" : false,
+      "Prompt Before Closing 2" : false,
+      "BM Growl" : false,
+      "Description" : "Default",
+      "Mouse Reporting" : true,
+      "Smart Cursor Color" : false,
+      "Screen" : -1,
+      "Selection Color" : {
+        "Red Component" : 0.48627450980392156,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.403921568627451,
+        "Alpha Component" : 1,
+        "Green Component" : 0.7647058823529411
+      },
+      "Columns" : 80,
+      "Idle Code" : 0,
+      "Ansi 13 Color" : {
+        "Red Component" : 0.7647058823529411,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.4470588235294118,
+        "Alpha Component" : 1,
+        "Green Component" : 0.6784313725490196
+      },
+      "Custom Command" : "Yes",
+      "ASCII Anti Aliased" : true,
+      "Non Ascii Font" : "Monaco 12",
+      "Vertical Spacing" : 1,
+      "Use Bold Font" : true,
+      "Option Key Sends" : 0,
+      "Selected Text Color" : {
+        "Red Component" : 0.054901960784313725,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.12941176470588237,
+        "Alpha Component" : 1,
+        "Green Component" : 0.06274509803921569
+      },
+      "Background Color" : {
+        "Red Component" : 0.054901960784313725,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.12941176470588237,
+        "Alpha Component" : 1,
+        "Green Component" : 0.06274509803921569
+      },
+      "Character Encoding" : 4,
+      "Ansi 11 Color" : {
+        "Red Component" : 0.8862745098039215,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.043137254901960784,
+        "Alpha Component" : 1,
+        "Green Component" : 0.803921568627451
+      },
+      "Use Italic Font" : true,
+      "Unlimited Scrollback" : false,
+      "Keyboard Map" : {
+        "0xf700-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6A"
+        },
+        "0x37-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1f"
+        },
+        "0x32-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x00"
+        },
+        "0xf709-0x20000" : {
+          "Action" : 10,
+          "Text" : "[17;2~"
+        },
+        "0xf70c-0x20000" : {
+          "Action" : 10,
+          "Text" : "[20;2~"
+        },
+        "0xf729-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2H"
+        },
+        "0xf72b-0x40000" : {
+          "Action" : 10,
+          "Text" : "[1;5F"
+        },
+        "0xf705-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2Q"
+        },
+        "0xf703-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6C"
+        },
+        "0xf700-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2A"
+        },
+        "0xf701-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x42"
+        },
+        "0x38-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x7f"
+        },
+        "0x33-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1b"
+        },
+        "0xf703-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2C"
+        },
+        "0xf701-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5B"
+        },
+        "0xf70d-0x20000" : {
+          "Action" : 10,
+          "Text" : "[21;2~"
+        },
+        "0xf702-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6D"
+        },
+        "0xf729-0x40000" : {
+          "Action" : 10,
+          "Text" : "[1;5H"
+        },
+        "0xf706-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2R"
+        },
+        "0x34-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1c"
+        },
+        "0xf700-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x41"
+        },
+        "0x2d-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1f"
+        },
+        "0xf70e-0x20000" : {
+          "Action" : 10,
+          "Text" : "[23;2~"
+        },
+        "0xf702-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2D"
+        },
+        "0xf703-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x43"
+        },
+        "0xf700-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5A"
+        },
+        "0xf707-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2S"
+        },
+        "0xf70a-0x20000" : {
+          "Action" : 10,
+          "Text" : "[18;2~"
+        },
+        "0x35-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1d"
+        },
+        "0xf70f-0x20000" : {
+          "Action" : 10,
+          "Text" : "[24;2~"
+        },
+        "0xf703-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5C"
+        },
+        "0xf701-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6B"
+        },
+        "0xf702-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x44"
+        },
+        "0xf72b-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2F"
+        },
+        "0x36-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1e"
+        },
+        "0xf708-0x20000" : {
+          "Action" : 10,
+          "Text" : "[15;2~"
+        },
+        "0xf701-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2B"
+        },
+        "0xf70b-0x20000" : {
+          "Action" : 10,
+          "Text" : "[19;2~"
+        },
+        "0xf702-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5D"
+        },
+        "0xf704-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2P"
+        }
+      },
+      "Window Type" : 12,
+      "Blur Radius" : 5.168569711538462,
+      "Cursor Type" : 2,
+      "Background Image Location" : "",
+      "Blur" : false,
+      "Badge Color" : {
+        "Red Component" : 1,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0,
+        "Alpha Component" : 0.5,
+        "Green Component" : 0.1491314172744751
+      },
+      "Cursor Boost" : 0,
+      "Scrollback Lines" : 1000,
+      "Send Code When Idle" : false,
+      "Close Sessions On End" : true,
+      "Terminal Type" : "xterm-256color",
+      "Visual Bell" : true,
+      "Flashing Bell" : false,
+      "Silence Bell" : true,
+      "Ansi 14 Color" : {
+        "Red Component" : 0.34509803921568627,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.807843137254902,
+        "Alpha Component" : 1,
+        "Green Component" : 0.7568627450980392
+      },
+      "Name" : "gvcci",
+      "Cursor Text Color" : {
+        "Red Component" : 0.5490196347236633,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.6274510025978088,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5098039507865906
+      },
+      "Minimum Contrast" : 0,
+      "Shortcut" : "",
+      "Cursor Color" : {
+        "Red Component" : 0.3607843137254902,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.27058823529411763,
+        "Alpha Component" : 1,
+        "Green Component" : 0.6588235294117647
+      },
+      "Ansi 0 Color" : {
+        "Red Component" : 0.11764705882352941,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.27058823529411763,
+        "Alpha Component" : 1,
+        "Green Component" : 0.12549019607843137
+      },
+      "Ansi 1 Color" : {
+        "Red Component" : 0.7607843137254902,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.0196078431372549,
+        "Alpha Component" : 1,
+        "Green Component" : 0.26666666666666666
+      },
+      "Horizontal Spacing" : 1,
+      "Ansi 3 Color" : {
+        "Red Component" : 0.6549019607843137,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.03137254901960784,
+        "Alpha Component" : 1,
+        "Green Component" : 0.596078431372549
+      },
+      "Ansi 4 Color" : {
+        "Red Component" : 0.30980392156862746,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.3568627450980392,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5803921568627451
+      },
+      "Transparency" : 0,
+      "Guid" : "FBF27982-5D1C-4625-8221-8FFAB9F4A445",
+      "Ansi 2 Color" : {
+        "Red Component" : 0.4392156862745098,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.7843137254901961,
+        "Alpha Component" : 1,
+        "Green Component" : 0.38823529411764707
+      },
+      "Normal Font" : "MesloLGSForPowerline-Regular 12",
+      "Custom Directory" : "No",
+      "Link Color" : {
+        "Red Component" : 0,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.734233021736145,
+        "Alpha Component" : 1,
+        "Green Component" : 0.3591606020927429
+      },
+      "Ansi 5 Color" : {
+        "Red Component" : 0.6705882352941176,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.2980392156862745,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5725490196078431
+      },
+    }
+  ]
+}
diff --git a/configs/shared/.gvcci/themes/finding_nemo/json-scheme.json b/configs/shared/.gvcci/themes/finding_nemo/json-scheme.json
new file mode 100644
index 0000000000..477165eb52
--- /dev/null
+++ b/configs/shared/.gvcci/themes/finding_nemo/json-scheme.json
@@ -0,0 +1,24 @@
+{
+  "name": "GVCCI Color Scheme",
+  "author": "",
+  "color": [
+    "#1e2045",
+    "#c24405",
+    "#7063c8",
+    "#a79808",
+    "#4f945b",
+    "#ab924c",
+    "#36a5b3",
+    "#c2dcef",
+    "#2d3169",
+    "#f95a0c",
+    "#968cdc",
+    "#e2cd0b",
+    "#6db37a",
+    "#c3ad72",
+    "#58c1ce",
+    "#f3f8fc"
+  ],
+  "foreground": "#76d3e9",
+  "background": "#0e1021"
+}
diff --git a/configs/shared/.gvcci/themes/finding_nemo/nospace.txt b/configs/shared/.gvcci/themes/finding_nemo/nospace.txt
new file mode 100644
index 0000000000..6ff5b2d561
--- /dev/null
+++ b/configs/shared/.gvcci/themes/finding_nemo/nospace.txt
@@ -0,0 +1 @@
+#0e1021#76d3e9#1e2045#c24405#7063c8#a79808#4f945b#ab924c#36a5b3#c2dcef#2d3169#f95a0c#968cdc#e2cd0b#6db37a#c3ad72#58c1ce#f3f8fc
diff --git a/configs/shared/.gvcci/themes/finding_nemo/tilix.json b/configs/shared/.gvcci/themes/finding_nemo/tilix.json
new file mode 100644
index 0000000000..52128a4183
--- /dev/null
+++ b/configs/shared/.gvcci/themes/finding_nemo/tilix.json
@@ -0,0 +1,33 @@
+{
+    "name": "Gvcci",
+    "comment": "Gvcci generated theme.",
+    "foreground-color": "#76d3e9",
+    "background-color": "#0e1021",
+    "use-theme-colors": false,
+    "use-highlight-color": false,
+    "highlight-foreground-color": "#0e1021",
+    "highlight-background-color": "#7cc367",
+    "use-cursor-color": false,
+    "cursor-foreground-color": "#5ca845",
+    "cursor-background-color": "#5ca845",
+    "use-badge-color": true,
+    "badge-color": "#76d3e9",
+    "palette": [
+        "#1e2045",
+        "#c24405",
+        "#7063c8",
+        "#a79808",
+        "#4f945b",
+        "#ab924c",
+        "#36a5b3",
+        "#c2dcef",
+        "#2d3169",
+        "#f95a0c",
+        "#968cdc",
+        "#e2cd0b",
+        "#6db37a",
+        "#c3ad72",
+        "#58c1ce",
+        "#f3f8fc"
+    ]
+}
\ No newline at end of file
diff --git a/configs/shared/.gvcci/themes/finding_nemo/wallpaper b/configs/shared/.gvcci/themes/finding_nemo/wallpaper
new file mode 100644
index 0000000000..385b674b8d
--- /dev/null
+++ b/configs/shared/.gvcci/themes/finding_nemo/wallpaper
Binary files differdiff --git a/configs/shared/.gvcci/themes/finding_nemo/xresources-colors.txt b/configs/shared/.gvcci/themes/finding_nemo/xresources-colors.txt
new file mode 100644
index 0000000000..59c32bbe35
--- /dev/null
+++ b/configs/shared/.gvcci/themes/finding_nemo/xresources-colors.txt
@@ -0,0 +1,37 @@
+! COLORS
+! special
+*.foreground:   #76d3e9
+*.background:   #0e1021
+*.cursorColor:  #76d3e9
+
+! black
+*.color0:       #1e2045
+*.color8:       #2d3169
+
+! red
+*.color1:       #c24405
+*.color9:       #f95a0c
+
+! green
+*.color2:       #7063c8
+*.color10:      #968cdc
+
+! yellow
+*.color3:       #a79808
+*.color11:      #e2cd0b
+
+! blue
+*.color4:       #4f945b
+*.color12:      #6db37a
+
+! magenta
+*.color5:       #ab924c
+*.color13:      #c3ad72
+
+! cyan
+*.color6:       #36a5b3
+*.color14:      #58c1ce
+
+! white
+*.color7:       #c2dcef
+*.color15:      #f3f8fc
diff --git a/configs/shared/.gvcci/themes/forest_8k/colors.sh b/configs/shared/.gvcci/themes/forest_8k/colors.sh
new file mode 100644
index 0000000000..801844b8c2
--- /dev/null
+++ b/configs/shared/.gvcci/themes/forest_8k/colors.sh
@@ -0,0 +1,23 @@
+
+# Special
+background='#14100c'
+foreground='#a3d08f'
+cursor='#a3d08f'
+
+# Colors
+color0='#342b1f'
+color1='#74613d'
+color2='#3b6f3d'
+color3='#59684e'
+color4='#489352'
+color5='#5ba72e'
+color6='#53774a'
+color7='#d3ebc6'
+color8='#544532'
+color9='#9c8252'
+color10='#509753'
+color11='#788b67'
+color12='#64b56f'
+color13='#78cd45'
+color14='#6d9d61'
+color15='#f6fbf4'
diff --git a/configs/shared/.gvcci/themes/forest_8k/column.txt b/configs/shared/.gvcci/themes/forest_8k/column.txt
new file mode 100644
index 0000000000..5feef91aa8
--- /dev/null
+++ b/configs/shared/.gvcci/themes/forest_8k/column.txt
@@ -0,0 +1,18 @@
+#14100c
+#a3d08f
+#342b1f
+#74613d
+#3b6f3d
+#59684e
+#489352
+#5ba72e
+#53774a
+#d3ebc6
+#544532
+#9c8252
+#509753
+#788b67
+#64b56f
+#78cd45
+#6d9d61
+#f6fbf4
diff --git a/configs/shared/.gvcci/themes/forest_8k/columns-with-headers.txt b/configs/shared/.gvcci/themes/forest_8k/columns-with-headers.txt
new file mode 100644
index 0000000000..08fe7d4002
--- /dev/null
+++ b/configs/shared/.gvcci/themes/forest_8k/columns-with-headers.txt
@@ -0,0 +1,25 @@
+Background
+#14100c
+
+Foreground
+#a3d08f
+
+Normal ANSI Colors
+#342b1f
+#74613d
+#3b6f3d
+#59684e
+#489352
+#5ba72e
+#53774a
+#d3ebc6
+
+Bright ANSI Colors
+#544532
+#9c8252
+#509753
+#788b67
+#64b56f
+#78cd45
+#6d9d61
+#f6fbf4
diff --git a/configs/shared/.gvcci/themes/forest_8k/iterm.itermcolors b/configs/shared/.gvcci/themes/forest_8k/iterm.itermcolors
new file mode 100644
index 0000000000..b761646057
--- /dev/null
+++ b/configs/shared/.gvcci/themes/forest_8k/iterm.itermcolors
@@ -0,0 +1,344 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>Ansi 0 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.12156862745098039</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.16862745098039217</real>
+		<key>Red Component</key>
+        <real>0.20392156862745098</real>
+	</dict>
+	<key>Ansi 1 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.23921568627450981</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.3803921568627451</real>
+		<key>Red Component</key>
+        <real>0.4549019607843137</real>
+	</dict>
+	<key>Ansi 10 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.3254901960784314</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.592156862745098</real>
+		<key>Red Component</key>
+        <real>0.3137254901960784</real>
+	</dict>
+	<key>Ansi 11 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.403921568627451</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5450980392156862</real>
+		<key>Red Component</key>
+        <real>0.47058823529411764</real>
+	</dict>
+	<key>Ansi 12 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.43529411764705883</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.7098039215686275</real>
+		<key>Red Component</key>
+        <real>0.39215686274509803</real>
+	</dict>
+	<key>Ansi 13 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.27058823529411763</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.803921568627451</real>
+		<key>Red Component</key>
+        <real>0.47058823529411764</real>
+	</dict>
+	<key>Ansi 14 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.3803921568627451</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.615686274509804</real>
+		<key>Red Component</key>
+        <real>0.42745098039215684</real>
+	</dict>
+	<key>Ansi 15 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9568627450980393</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.984313725490196</real>
+		<key>Red Component</key>
+        <real>0.9647058823529412</real>
+	</dict>
+	<key>Ansi 2 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.23921568627450981</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.43529411764705883</real>
+		<key>Red Component</key>
+        <real>0.23137254901960785</real>
+	</dict>
+	<key>Ansi 3 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.3058823529411765</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.40784313725490196</real>
+		<key>Red Component</key>
+        <real>0.34901960784313724</real>
+	</dict>
+	<key>Ansi 4 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.3215686274509804</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5764705882352941</real>
+		<key>Red Component</key>
+        <real>0.2823529411764706</real>
+	</dict>
+	<key>Ansi 5 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.1803921568627451</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.6549019607843137</real>
+		<key>Red Component</key>
+        <real>0.3568627450980392</real>
+	</dict>
+	<key>Ansi 6 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.2901960784313726</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.4666666666666667</real>
+		<key>Red Component</key>
+        <real>0.3254901960784314</real>
+	</dict>
+	<key>Ansi 7 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.7764705882352941</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.9215686274509803</real>
+		<key>Red Component</key>
+        <real>0.8274509803921568</real>
+	</dict>
+	<key>Ansi 8 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.19607843137254902</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.27058823529411763</real>
+		<key>Red Component</key>
+        <real>0.32941176470588235</real>
+	</dict>
+	<key>Ansi 9 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.3215686274509804</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5098039215686274</real>
+		<key>Red Component</key>
+        <real>0.611764705882353</real>
+	</dict>
+	<key>Background Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.047058823529411764</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.06274509803921569</real>
+		<key>Red Component</key>
+        <real>0.0784313725490196</real>
+	</dict>
+	<key>Badge Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>0.5</real>
+		<key>Blue Component</key>
+		<real>0.0</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.1491314172744751</real>
+		<key>Red Component</key>
+		<real>1</real>
+	</dict>
+	<key>Bold Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.5607843137254902</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.8156862745098039</real>
+		<key>Red Component</key>
+        <real>0.6392156862745098</real>
+	</dict>
+	<key>Cursor Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.07450980392156863</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.6039215686274509</real>
+		<key>Red Component</key>
+        <real>0.25882352941176473</real>
+	</dict>
+	<key>Cursor Guide Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>0.25</real>
+		<key>Blue Component</key>
+		<real>1</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.9268307089805603</real>
+		<key>Red Component</key>
+		<real>0.70213186740875244</real>
+	</dict>
+	<key>Cursor Text Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.62745100259780884</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.50980395078659058</real>
+		<key>Red Component</key>
+		<real>0.54901963472366333</real>
+	</dict>
+	<key>Foreground Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.5607843137254902</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.8156862745098039</real>
+		<key>Red Component</key>
+        <real>0.6392156862745098</real>
+	</dict>
+	<key>Link Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.73423302173614502</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.35916060209274292</real>
+		<key>Red Component</key>
+		<real>0.0</real>
+	</dict>
+	<key>Selected Text Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.047058823529411764</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.06274509803921569</real>
+		<key>Red Component</key>
+		<real>0.0784313725490196</real>
+	</dict>
+	<key>Selection Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.09803921568627451</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.8196078431372549</real>
+		<key>Red Component</key>
+		<real>0.35294117647058826</real>
+	</dict>
+</dict>
+</plist>
diff --git a/configs/shared/.gvcci/themes/forest_8k/iterm.plist b/configs/shared/.gvcci/themes/forest_8k/iterm.plist
new file mode 100644
index 0000000000..b7e8fae6d2
--- /dev/null
+++ b/configs/shared/.gvcci/themes/forest_8k/iterm.plist
@@ -0,0 +1,412 @@
+{
+  "Profiles": [
+    {
+      "Use Non-ASCII Font" : false,
+      "Tags" : [
+
+      ],
+      "Ansi 12 Color" : {
+        "Red Component" : 0.39215686274509803,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.43529411764705883,
+        "Alpha Component" : 1,
+        "Green Component" : 0.7098039215686275
+      },
+      "Ansi 7 Color" : {
+        "Red Component" : 0.8274509803921568,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.7764705882352941,
+        "Alpha Component" : 1,
+        "Green Component" : 0.9215686274509803
+      },
+      "Ansi 8 Color" : {
+        "Red Component" : 0.32941176470588235,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.19607843137254902,
+        "Alpha Component" : 1,
+        "Green Component" : 0.27058823529411763
+      },
+      "Bold Color" : {
+        "Red Component" : 0.6392156862745098,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.5607843137254902,
+        "Alpha Component" : 1,
+        "Green Component" : 0.8156862745098039
+      },
+      "Ansi 9 Color" : {
+        "Red Component" : 0.611764705882353,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.3215686274509804,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5098039215686274
+      },
+      "Ansi 6 Color" : {
+        "Red Component" : 0.3254901960784314,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.2901960784313726,
+        "Alpha Component" : 1,
+        "Green Component" : 0.4666666666666667
+      },
+      "Right Option Key Sends" : 0,
+      "Rows" : 25,
+      "Default Bookmark" : "No",
+      "Cursor Guide Color" : {
+        "Red Component" : 1,
+        "Color Space" : "Calibrated",
+        "Blue Component" : 0.9999912977218628,
+        "Alpha Component" : 0.04705882352941176,
+        "Green Component" : 0.9999743700027466
+      },
+      "Non-ASCII Anti Aliased" : true,
+      "Use Bright Bold" : true,
+      "Ansi 10 Color" : {
+        "Red Component" : 0.3137254901960784,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.3254901960784314,
+        "Alpha Component" : 1,
+        "Green Component" : 0.592156862745098
+      },
+      "Use Cursor Guide" : false,
+      "Ambiguous Double Width" : false,
+      "Jobs to Ignore" : [
+        "rlogin",
+        "ssh",
+        "slogin",
+        "telnet"
+      ],
+      "Ansi 15 Color" : {
+        "Red Component" : 0.9647058823529412,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9568627450980393,
+        "Alpha Component" : 1,
+        "Green Component" : 0.984313725490196
+      },
+      "Foreground Color" : {
+        "Red Component" : 0.6392156862745098,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.5607843137254902,
+        "Alpha Component" : 1,
+        "Green Component" : 0.8156862745098039
+      },
+      "Working Directory" : "\/Users\/fabricecastel",
+      "Bound Hosts" : [
+
+      ],
+      "Blinking Cursor" : false,
+      "Disable Window Resizing" : true,
+      "Sync Title" : false,
+      "Prompt Before Closing 2" : false,
+      "BM Growl" : false,
+      "Description" : "Default",
+      "Mouse Reporting" : true,
+      "Smart Cursor Color" : false,
+      "Screen" : -1,
+      "Selection Color" : {
+        "Red Component" : 0.35294117647058826,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.09803921568627451,
+        "Alpha Component" : 1,
+        "Green Component" : 0.8196078431372549
+      },
+      "Columns" : 80,
+      "Idle Code" : 0,
+      "Ansi 13 Color" : {
+        "Red Component" : 0.47058823529411764,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.27058823529411763,
+        "Alpha Component" : 1,
+        "Green Component" : 0.803921568627451
+      },
+      "Custom Command" : "Yes",
+      "ASCII Anti Aliased" : true,
+      "Non Ascii Font" : "Monaco 12",
+      "Vertical Spacing" : 1,
+      "Use Bold Font" : true,
+      "Option Key Sends" : 0,
+      "Selected Text Color" : {
+        "Red Component" : 0.0784313725490196,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.047058823529411764,
+        "Alpha Component" : 1,
+        "Green Component" : 0.06274509803921569
+      },
+      "Background Color" : {
+        "Red Component" : 0.0784313725490196,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.047058823529411764,
+        "Alpha Component" : 1,
+        "Green Component" : 0.06274509803921569
+      },
+      "Character Encoding" : 4,
+      "Ansi 11 Color" : {
+        "Red Component" : 0.47058823529411764,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.403921568627451,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5450980392156862
+      },
+      "Use Italic Font" : true,
+      "Unlimited Scrollback" : false,
+      "Keyboard Map" : {
+        "0xf700-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6A"
+        },
+        "0x37-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1f"
+        },
+        "0x32-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x00"
+        },
+        "0xf709-0x20000" : {
+          "Action" : 10,
+          "Text" : "[17;2~"
+        },
+        "0xf70c-0x20000" : {
+          "Action" : 10,
+          "Text" : "[20;2~"
+        },
+        "0xf729-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2H"
+        },
+        "0xf72b-0x40000" : {
+          "Action" : 10,
+          "Text" : "[1;5F"
+        },
+        "0xf705-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2Q"
+        },
+        "0xf703-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6C"
+        },
+        "0xf700-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2A"
+        },
+        "0xf701-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x42"
+        },
+        "0x38-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x7f"
+        },
+        "0x33-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1b"
+        },
+        "0xf703-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2C"
+        },
+        "0xf701-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5B"
+        },
+        "0xf70d-0x20000" : {
+          "Action" : 10,
+          "Text" : "[21;2~"
+        },
+        "0xf702-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6D"
+        },
+        "0xf729-0x40000" : {
+          "Action" : 10,
+          "Text" : "[1;5H"
+        },
+        "0xf706-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2R"
+        },
+        "0x34-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1c"
+        },
+        "0xf700-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x41"
+        },
+        "0x2d-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1f"
+        },
+        "0xf70e-0x20000" : {
+          "Action" : 10,
+          "Text" : "[23;2~"
+        },
+        "0xf702-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2D"
+        },
+        "0xf703-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x43"
+        },
+        "0xf700-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5A"
+        },
+        "0xf707-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2S"
+        },
+        "0xf70a-0x20000" : {
+          "Action" : 10,
+          "Text" : "[18;2~"
+        },
+        "0x35-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1d"
+        },
+        "0xf70f-0x20000" : {
+          "Action" : 10,
+          "Text" : "[24;2~"
+        },
+        "0xf703-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5C"
+        },
+        "0xf701-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6B"
+        },
+        "0xf702-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x44"
+        },
+        "0xf72b-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2F"
+        },
+        "0x36-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1e"
+        },
+        "0xf708-0x20000" : {
+          "Action" : 10,
+          "Text" : "[15;2~"
+        },
+        "0xf701-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2B"
+        },
+        "0xf70b-0x20000" : {
+          "Action" : 10,
+          "Text" : "[19;2~"
+        },
+        "0xf702-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5D"
+        },
+        "0xf704-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2P"
+        }
+      },
+      "Window Type" : 12,
+      "Blur Radius" : 5.168569711538462,
+      "Cursor Type" : 2,
+      "Background Image Location" : "",
+      "Blur" : false,
+      "Badge Color" : {
+        "Red Component" : 1,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0,
+        "Alpha Component" : 0.5,
+        "Green Component" : 0.1491314172744751
+      },
+      "Cursor Boost" : 0,
+      "Scrollback Lines" : 1000,
+      "Send Code When Idle" : false,
+      "Close Sessions On End" : true,
+      "Terminal Type" : "xterm-256color",
+      "Visual Bell" : true,
+      "Flashing Bell" : false,
+      "Silence Bell" : true,
+      "Ansi 14 Color" : {
+        "Red Component" : 0.42745098039215684,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.3803921568627451,
+        "Alpha Component" : 1,
+        "Green Component" : 0.615686274509804
+      },
+      "Name" : "gvcci",
+      "Cursor Text Color" : {
+        "Red Component" : 0.5490196347236633,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.6274510025978088,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5098039507865906
+      },
+      "Minimum Contrast" : 0,
+      "Shortcut" : "",
+      "Cursor Color" : {
+        "Red Component" : 0.25882352941176473,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.07450980392156863,
+        "Alpha Component" : 1,
+        "Green Component" : 0.6039215686274509
+      },
+      "Ansi 0 Color" : {
+        "Red Component" : 0.20392156862745098,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.12156862745098039,
+        "Alpha Component" : 1,
+        "Green Component" : 0.16862745098039217
+      },
+      "Ansi 1 Color" : {
+        "Red Component" : 0.4549019607843137,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.23921568627450981,
+        "Alpha Component" : 1,
+        "Green Component" : 0.3803921568627451
+      },
+      "Horizontal Spacing" : 1,
+      "Ansi 3 Color" : {
+        "Red Component" : 0.34901960784313724,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.3058823529411765,
+        "Alpha Component" : 1,
+        "Green Component" : 0.40784313725490196
+      },
+      "Ansi 4 Color" : {
+        "Red Component" : 0.2823529411764706,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.3215686274509804,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5764705882352941
+      },
+      "Transparency" : 0,
+      "Guid" : "FBF27982-5D1C-4625-8221-8FFAB9F4A445",
+      "Ansi 2 Color" : {
+        "Red Component" : 0.23137254901960785,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.23921568627450981,
+        "Alpha Component" : 1,
+        "Green Component" : 0.43529411764705883
+      },
+      "Normal Font" : "MesloLGSForPowerline-Regular 12",
+      "Custom Directory" : "No",
+      "Link Color" : {
+        "Red Component" : 0,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.734233021736145,
+        "Alpha Component" : 1,
+        "Green Component" : 0.3591606020927429
+      },
+      "Ansi 5 Color" : {
+        "Red Component" : 0.3568627450980392,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.1803921568627451,
+        "Alpha Component" : 1,
+        "Green Component" : 0.6549019607843137
+      },
+    }
+  ]
+}
diff --git a/configs/shared/.gvcci/themes/forest_8k/json-scheme.json b/configs/shared/.gvcci/themes/forest_8k/json-scheme.json
new file mode 100644
index 0000000000..f277c5e27f
--- /dev/null
+++ b/configs/shared/.gvcci/themes/forest_8k/json-scheme.json
@@ -0,0 +1,24 @@
+{
+  "name": "GVCCI Color Scheme",
+  "author": "",
+  "color": [
+    "#342b1f",
+    "#74613d",
+    "#3b6f3d",
+    "#59684e",
+    "#489352",
+    "#5ba72e",
+    "#53774a",
+    "#d3ebc6",
+    "#544532",
+    "#9c8252",
+    "#509753",
+    "#788b67",
+    "#64b56f",
+    "#78cd45",
+    "#6d9d61",
+    "#f6fbf4"
+  ],
+  "foreground": "#a3d08f",
+  "background": "#14100c"
+}
diff --git a/configs/shared/.gvcci/themes/forest_8k/nospace.txt b/configs/shared/.gvcci/themes/forest_8k/nospace.txt
new file mode 100644
index 0000000000..98e1b9777f
--- /dev/null
+++ b/configs/shared/.gvcci/themes/forest_8k/nospace.txt
@@ -0,0 +1 @@
+#14100c#a3d08f#342b1f#74613d#3b6f3d#59684e#489352#5ba72e#53774a#d3ebc6#544532#9c8252#509753#788b67#64b56f#78cd45#6d9d61#f6fbf4
diff --git a/configs/shared/.gvcci/themes/forest_8k/tilix.json b/configs/shared/.gvcci/themes/forest_8k/tilix.json
new file mode 100644
index 0000000000..59bd2afaa9
--- /dev/null
+++ b/configs/shared/.gvcci/themes/forest_8k/tilix.json
@@ -0,0 +1,33 @@
+{
+    "name": "Gvcci",
+    "comment": "Gvcci generated theme.",
+    "foreground-color": "#a3d08f",
+    "background-color": "#14100c",
+    "use-theme-colors": false,
+    "use-highlight-color": false,
+    "highlight-foreground-color": "#14100c",
+    "highlight-background-color": "#5ad119",
+    "use-cursor-color": false,
+    "cursor-foreground-color": "#429a13",
+    "cursor-background-color": "#429a13",
+    "use-badge-color": true,
+    "badge-color": "#a3d08f",
+    "palette": [
+        "#342b1f",
+        "#74613d",
+        "#3b6f3d",
+        "#59684e",
+        "#489352",
+        "#5ba72e",
+        "#53774a",
+        "#d3ebc6",
+        "#544532",
+        "#9c8252",
+        "#509753",
+        "#788b67",
+        "#64b56f",
+        "#78cd45",
+        "#6d9d61",
+        "#f6fbf4"
+    ]
+}
\ No newline at end of file
diff --git a/configs/shared/.gvcci/themes/forest_8k/wallpaper b/configs/shared/.gvcci/themes/forest_8k/wallpaper
new file mode 100644
index 0000000000..f66a4c11c0
--- /dev/null
+++ b/configs/shared/.gvcci/themes/forest_8k/wallpaper
Binary files differdiff --git a/configs/shared/.gvcci/themes/forest_8k/xresources-colors.txt b/configs/shared/.gvcci/themes/forest_8k/xresources-colors.txt
new file mode 100644
index 0000000000..3bfb74606e
--- /dev/null
+++ b/configs/shared/.gvcci/themes/forest_8k/xresources-colors.txt
@@ -0,0 +1,37 @@
+! COLORS
+! special
+*.foreground:   #a3d08f
+*.background:   #14100c
+*.cursorColor:  #a3d08f
+
+! black
+*.color0:       #342b1f
+*.color8:       #544532
+
+! red
+*.color1:       #74613d
+*.color9:       #9c8252
+
+! green
+*.color2:       #3b6f3d
+*.color10:      #509753
+
+! yellow
+*.color3:       #59684e
+*.color11:      #788b67
+
+! blue
+*.color4:       #489352
+*.color12:      #64b56f
+
+! magenta
+*.color5:       #5ba72e
+*.color13:      #78cd45
+
+! cyan
+*.color6:       #53774a
+*.color14:      #6d9d61
+
+! white
+*.color7:       #d3ebc6
+*.color15:      #f6fbf4
diff --git a/configs/shared/.gvcci/themes/geometric_4k/colors.sh b/configs/shared/.gvcci/themes/geometric_4k/colors.sh
new file mode 100644
index 0000000000..59c5950fc1
--- /dev/null
+++ b/configs/shared/.gvcci/themes/geometric_4k/colors.sh
@@ -0,0 +1,23 @@
+
+# Special
+background='#0e1321'
+foreground='#fd9c62'
+cursor='#fd9c62'
+
+# Colors
+color0='#1e2845'
+color1='#b1454d'
+color2='#5e916f'
+color3='#9d8265'
+color4='#629184'
+color5='#e40f3f'
+color6='#27957f'
+color7='#fcb6be'
+color8='#2d3c69'
+color9='#c86b72'
+color10='#7eae8e'
+color11='#b7a089'
+color12='#83aea2'
+color13='#f43c65'
+color14='#33c6a8'
+color15='#fff0f2'
diff --git a/configs/shared/.gvcci/themes/geometric_4k/column.txt b/configs/shared/.gvcci/themes/geometric_4k/column.txt
new file mode 100644
index 0000000000..b0293c9ce1
--- /dev/null
+++ b/configs/shared/.gvcci/themes/geometric_4k/column.txt
@@ -0,0 +1,18 @@
+#0e1321
+#fd9c62
+#1e2845
+#b1454d
+#5e916f
+#9d8265
+#629184
+#e40f3f
+#27957f
+#fcb6be
+#2d3c69
+#c86b72
+#7eae8e
+#b7a089
+#83aea2
+#f43c65
+#33c6a8
+#fff0f2
diff --git a/configs/shared/.gvcci/themes/geometric_4k/columns-with-headers.txt b/configs/shared/.gvcci/themes/geometric_4k/columns-with-headers.txt
new file mode 100644
index 0000000000..0f9928346f
--- /dev/null
+++ b/configs/shared/.gvcci/themes/geometric_4k/columns-with-headers.txt
@@ -0,0 +1,25 @@
+Background
+#0e1321
+
+Foreground
+#fd9c62
+
+Normal ANSI Colors
+#1e2845
+#b1454d
+#5e916f
+#9d8265
+#629184
+#e40f3f
+#27957f
+#fcb6be
+
+Bright ANSI Colors
+#2d3c69
+#c86b72
+#7eae8e
+#b7a089
+#83aea2
+#f43c65
+#33c6a8
+#fff0f2
diff --git a/configs/shared/.gvcci/themes/geometric_4k/iterm.itermcolors b/configs/shared/.gvcci/themes/geometric_4k/iterm.itermcolors
new file mode 100644
index 0000000000..200117784c
--- /dev/null
+++ b/configs/shared/.gvcci/themes/geometric_4k/iterm.itermcolors
@@ -0,0 +1,344 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>Ansi 0 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.27058823529411763</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.1568627450980392</real>
+		<key>Red Component</key>
+        <real>0.11764705882352941</real>
+	</dict>
+	<key>Ansi 1 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.30196078431372547</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.27058823529411763</real>
+		<key>Red Component</key>
+        <real>0.6941176470588235</real>
+	</dict>
+	<key>Ansi 10 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.5568627450980392</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.6823529411764706</real>
+		<key>Red Component</key>
+        <real>0.49411764705882355</real>
+	</dict>
+	<key>Ansi 11 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.5372549019607843</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.6274509803921569</real>
+		<key>Red Component</key>
+        <real>0.7176470588235294</real>
+	</dict>
+	<key>Ansi 12 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.6352941176470588</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.6823529411764706</real>
+		<key>Red Component</key>
+        <real>0.5137254901960784</real>
+	</dict>
+	<key>Ansi 13 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.396078431372549</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.23529411764705882</real>
+		<key>Red Component</key>
+        <real>0.9568627450980393</real>
+	</dict>
+	<key>Ansi 14 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.6588235294117647</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.7764705882352941</real>
+		<key>Red Component</key>
+        <real>0.2</real>
+	</dict>
+	<key>Ansi 15 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9490196078431372</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.9411764705882353</real>
+		<key>Red Component</key>
+        <real>1.0</real>
+	</dict>
+	<key>Ansi 2 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.43529411764705883</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5686274509803921</real>
+		<key>Red Component</key>
+        <real>0.3686274509803922</real>
+	</dict>
+	<key>Ansi 3 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.396078431372549</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5098039215686274</real>
+		<key>Red Component</key>
+        <real>0.615686274509804</real>
+	</dict>
+	<key>Ansi 4 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.5176470588235295</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5686274509803921</real>
+		<key>Red Component</key>
+        <real>0.3843137254901961</real>
+	</dict>
+	<key>Ansi 5 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.24705882352941178</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.058823529411764705</real>
+		<key>Red Component</key>
+        <real>0.8941176470588236</real>
+	</dict>
+	<key>Ansi 6 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.4980392156862745</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5843137254901961</real>
+		<key>Red Component</key>
+        <real>0.15294117647058825</real>
+	</dict>
+	<key>Ansi 7 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.7450980392156863</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.7137254901960784</real>
+		<key>Red Component</key>
+        <real>0.9882352941176471</real>
+	</dict>
+	<key>Ansi 8 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.4117647058823529</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.23529411764705882</real>
+		<key>Red Component</key>
+        <real>0.17647058823529413</real>
+	</dict>
+	<key>Ansi 9 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.4470588235294118</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.4196078431372549</real>
+		<key>Red Component</key>
+        <real>0.7843137254901961</real>
+	</dict>
+	<key>Background Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.12941176470588237</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.07450980392156863</real>
+		<key>Red Component</key>
+        <real>0.054901960784313725</real>
+	</dict>
+	<key>Badge Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>0.5</real>
+		<key>Blue Component</key>
+		<real>0.0</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.1491314172744751</real>
+		<key>Red Component</key>
+		<real>1</real>
+	</dict>
+	<key>Bold Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.3843137254901961</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.611764705882353</real>
+		<key>Red Component</key>
+        <real>0.9921568627450981</real>
+	</dict>
+	<key>Cursor Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.10196078431372549</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.24313725490196078</real>
+		<key>Red Component</key>
+        <real>0.7647058823529411</real>
+	</dict>
+	<key>Cursor Guide Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>0.25</real>
+		<key>Blue Component</key>
+		<real>1</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.9268307089805603</real>
+		<key>Red Component</key>
+		<real>0.70213186740875244</real>
+	</dict>
+	<key>Cursor Text Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.62745100259780884</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.50980395078659058</real>
+		<key>Red Component</key>
+		<real>0.54901963472366333</real>
+	</dict>
+	<key>Foreground Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.3843137254901961</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.611764705882353</real>
+		<key>Red Component</key>
+        <real>0.9921568627450981</real>
+	</dict>
+	<key>Link Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.73423302173614502</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.35916060209274292</real>
+		<key>Red Component</key>
+		<real>0.0</real>
+	</dict>
+	<key>Selected Text Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.12941176470588237</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.07450980392156863</real>
+		<key>Red Component</key>
+		<real>0.054901960784313725</real>
+	</dict>
+	<key>Selection Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.20392156862745098</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.35294117647058826</real>
+		<key>Red Component</key>
+		<real>0.8980392156862745</real>
+	</dict>
+</dict>
+</plist>
diff --git a/configs/shared/.gvcci/themes/geometric_4k/iterm.plist b/configs/shared/.gvcci/themes/geometric_4k/iterm.plist
new file mode 100644
index 0000000000..2ee0f70a39
--- /dev/null
+++ b/configs/shared/.gvcci/themes/geometric_4k/iterm.plist
@@ -0,0 +1,412 @@
+{
+  "Profiles": [
+    {
+      "Use Non-ASCII Font" : false,
+      "Tags" : [
+
+      ],
+      "Ansi 12 Color" : {
+        "Red Component" : 0.5137254901960784,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.6352941176470588,
+        "Alpha Component" : 1,
+        "Green Component" : 0.6823529411764706
+      },
+      "Ansi 7 Color" : {
+        "Red Component" : 0.9882352941176471,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.7450980392156863,
+        "Alpha Component" : 1,
+        "Green Component" : 0.7137254901960784
+      },
+      "Ansi 8 Color" : {
+        "Red Component" : 0.17647058823529413,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.4117647058823529,
+        "Alpha Component" : 1,
+        "Green Component" : 0.23529411764705882
+      },
+      "Bold Color" : {
+        "Red Component" : 0.9921568627450981,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.3843137254901961,
+        "Alpha Component" : 1,
+        "Green Component" : 0.611764705882353
+      },
+      "Ansi 9 Color" : {
+        "Red Component" : 0.7843137254901961,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.4470588235294118,
+        "Alpha Component" : 1,
+        "Green Component" : 0.4196078431372549
+      },
+      "Ansi 6 Color" : {
+        "Red Component" : 0.15294117647058825,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.4980392156862745,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5843137254901961
+      },
+      "Right Option Key Sends" : 0,
+      "Rows" : 25,
+      "Default Bookmark" : "No",
+      "Cursor Guide Color" : {
+        "Red Component" : 1,
+        "Color Space" : "Calibrated",
+        "Blue Component" : 0.9999912977218628,
+        "Alpha Component" : 0.04705882352941176,
+        "Green Component" : 0.9999743700027466
+      },
+      "Non-ASCII Anti Aliased" : true,
+      "Use Bright Bold" : true,
+      "Ansi 10 Color" : {
+        "Red Component" : 0.49411764705882355,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.5568627450980392,
+        "Alpha Component" : 1,
+        "Green Component" : 0.6823529411764706
+      },
+      "Use Cursor Guide" : false,
+      "Ambiguous Double Width" : false,
+      "Jobs to Ignore" : [
+        "rlogin",
+        "ssh",
+        "slogin",
+        "telnet"
+      ],
+      "Ansi 15 Color" : {
+        "Red Component" : 1.0,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9490196078431372,
+        "Alpha Component" : 1,
+        "Green Component" : 0.9411764705882353
+      },
+      "Foreground Color" : {
+        "Red Component" : 0.9921568627450981,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.3843137254901961,
+        "Alpha Component" : 1,
+        "Green Component" : 0.611764705882353
+      },
+      "Working Directory" : "\/Users\/fabricecastel",
+      "Bound Hosts" : [
+
+      ],
+      "Blinking Cursor" : false,
+      "Disable Window Resizing" : true,
+      "Sync Title" : false,
+      "Prompt Before Closing 2" : false,
+      "BM Growl" : false,
+      "Description" : "Default",
+      "Mouse Reporting" : true,
+      "Smart Cursor Color" : false,
+      "Screen" : -1,
+      "Selection Color" : {
+        "Red Component" : 0.8980392156862745,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.20392156862745098,
+        "Alpha Component" : 1,
+        "Green Component" : 0.35294117647058826
+      },
+      "Columns" : 80,
+      "Idle Code" : 0,
+      "Ansi 13 Color" : {
+        "Red Component" : 0.9568627450980393,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.396078431372549,
+        "Alpha Component" : 1,
+        "Green Component" : 0.23529411764705882
+      },
+      "Custom Command" : "Yes",
+      "ASCII Anti Aliased" : true,
+      "Non Ascii Font" : "Monaco 12",
+      "Vertical Spacing" : 1,
+      "Use Bold Font" : true,
+      "Option Key Sends" : 0,
+      "Selected Text Color" : {
+        "Red Component" : 0.054901960784313725,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.12941176470588237,
+        "Alpha Component" : 1,
+        "Green Component" : 0.07450980392156863
+      },
+      "Background Color" : {
+        "Red Component" : 0.054901960784313725,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.12941176470588237,
+        "Alpha Component" : 1,
+        "Green Component" : 0.07450980392156863
+      },
+      "Character Encoding" : 4,
+      "Ansi 11 Color" : {
+        "Red Component" : 0.7176470588235294,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.5372549019607843,
+        "Alpha Component" : 1,
+        "Green Component" : 0.6274509803921569
+      },
+      "Use Italic Font" : true,
+      "Unlimited Scrollback" : false,
+      "Keyboard Map" : {
+        "0xf700-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6A"
+        },
+        "0x37-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1f"
+        },
+        "0x32-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x00"
+        },
+        "0xf709-0x20000" : {
+          "Action" : 10,
+          "Text" : "[17;2~"
+        },
+        "0xf70c-0x20000" : {
+          "Action" : 10,
+          "Text" : "[20;2~"
+        },
+        "0xf729-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2H"
+        },
+        "0xf72b-0x40000" : {
+          "Action" : 10,
+          "Text" : "[1;5F"
+        },
+        "0xf705-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2Q"
+        },
+        "0xf703-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6C"
+        },
+        "0xf700-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2A"
+        },
+        "0xf701-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x42"
+        },
+        "0x38-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x7f"
+        },
+        "0x33-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1b"
+        },
+        "0xf703-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2C"
+        },
+        "0xf701-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5B"
+        },
+        "0xf70d-0x20000" : {
+          "Action" : 10,
+          "Text" : "[21;2~"
+        },
+        "0xf702-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6D"
+        },
+        "0xf729-0x40000" : {
+          "Action" : 10,
+          "Text" : "[1;5H"
+        },
+        "0xf706-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2R"
+        },
+        "0x34-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1c"
+        },
+        "0xf700-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x41"
+        },
+        "0x2d-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1f"
+        },
+        "0xf70e-0x20000" : {
+          "Action" : 10,
+          "Text" : "[23;2~"
+        },
+        "0xf702-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2D"
+        },
+        "0xf703-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x43"
+        },
+        "0xf700-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5A"
+        },
+        "0xf707-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2S"
+        },
+        "0xf70a-0x20000" : {
+          "Action" : 10,
+          "Text" : "[18;2~"
+        },
+        "0x35-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1d"
+        },
+        "0xf70f-0x20000" : {
+          "Action" : 10,
+          "Text" : "[24;2~"
+        },
+        "0xf703-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5C"
+        },
+        "0xf701-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6B"
+        },
+        "0xf702-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x44"
+        },
+        "0xf72b-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2F"
+        },
+        "0x36-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1e"
+        },
+        "0xf708-0x20000" : {
+          "Action" : 10,
+          "Text" : "[15;2~"
+        },
+        "0xf701-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2B"
+        },
+        "0xf70b-0x20000" : {
+          "Action" : 10,
+          "Text" : "[19;2~"
+        },
+        "0xf702-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5D"
+        },
+        "0xf704-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2P"
+        }
+      },
+      "Window Type" : 12,
+      "Blur Radius" : 5.168569711538462,
+      "Cursor Type" : 2,
+      "Background Image Location" : "",
+      "Blur" : false,
+      "Badge Color" : {
+        "Red Component" : 1,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0,
+        "Alpha Component" : 0.5,
+        "Green Component" : 0.1491314172744751
+      },
+      "Cursor Boost" : 0,
+      "Scrollback Lines" : 1000,
+      "Send Code When Idle" : false,
+      "Close Sessions On End" : true,
+      "Terminal Type" : "xterm-256color",
+      "Visual Bell" : true,
+      "Flashing Bell" : false,
+      "Silence Bell" : true,
+      "Ansi 14 Color" : {
+        "Red Component" : 0.2,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.6588235294117647,
+        "Alpha Component" : 1,
+        "Green Component" : 0.7764705882352941
+      },
+      "Name" : "gvcci",
+      "Cursor Text Color" : {
+        "Red Component" : 0.5490196347236633,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.6274510025978088,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5098039507865906
+      },
+      "Minimum Contrast" : 0,
+      "Shortcut" : "",
+      "Cursor Color" : {
+        "Red Component" : 0.7647058823529411,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.10196078431372549,
+        "Alpha Component" : 1,
+        "Green Component" : 0.24313725490196078
+      },
+      "Ansi 0 Color" : {
+        "Red Component" : 0.11764705882352941,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.27058823529411763,
+        "Alpha Component" : 1,
+        "Green Component" : 0.1568627450980392
+      },
+      "Ansi 1 Color" : {
+        "Red Component" : 0.6941176470588235,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.30196078431372547,
+        "Alpha Component" : 1,
+        "Green Component" : 0.27058823529411763
+      },
+      "Horizontal Spacing" : 1,
+      "Ansi 3 Color" : {
+        "Red Component" : 0.615686274509804,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.396078431372549,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5098039215686274
+      },
+      "Ansi 4 Color" : {
+        "Red Component" : 0.3843137254901961,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.5176470588235295,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5686274509803921
+      },
+      "Transparency" : 0,
+      "Guid" : "FBF27982-5D1C-4625-8221-8FFAB9F4A445",
+      "Ansi 2 Color" : {
+        "Red Component" : 0.3686274509803922,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.43529411764705883,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5686274509803921
+      },
+      "Normal Font" : "MesloLGSForPowerline-Regular 12",
+      "Custom Directory" : "No",
+      "Link Color" : {
+        "Red Component" : 0,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.734233021736145,
+        "Alpha Component" : 1,
+        "Green Component" : 0.3591606020927429
+      },
+      "Ansi 5 Color" : {
+        "Red Component" : 0.8941176470588236,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.24705882352941178,
+        "Alpha Component" : 1,
+        "Green Component" : 0.058823529411764705
+      },
+    }
+  ]
+}
diff --git a/configs/shared/.gvcci/themes/geometric_4k/json-scheme.json b/configs/shared/.gvcci/themes/geometric_4k/json-scheme.json
new file mode 100644
index 0000000000..1830e6666f
--- /dev/null
+++ b/configs/shared/.gvcci/themes/geometric_4k/json-scheme.json
@@ -0,0 +1,24 @@
+{
+  "name": "GVCCI Color Scheme",
+  "author": "",
+  "color": [
+    "#1e2845",
+    "#b1454d",
+    "#5e916f",
+    "#9d8265",
+    "#629184",
+    "#e40f3f",
+    "#27957f",
+    "#fcb6be",
+    "#2d3c69",
+    "#c86b72",
+    "#7eae8e",
+    "#b7a089",
+    "#83aea2",
+    "#f43c65",
+    "#33c6a8",
+    "#fff0f2"
+  ],
+  "foreground": "#fd9c62",
+  "background": "#0e1321"
+}
diff --git a/configs/shared/.gvcci/themes/geometric_4k/nospace.txt b/configs/shared/.gvcci/themes/geometric_4k/nospace.txt
new file mode 100644
index 0000000000..31ca4b6638
--- /dev/null
+++ b/configs/shared/.gvcci/themes/geometric_4k/nospace.txt
@@ -0,0 +1 @@
+#0e1321#fd9c62#1e2845#b1454d#5e916f#9d8265#629184#e40f3f#27957f#fcb6be#2d3c69#c86b72#7eae8e#b7a089#83aea2#f43c65#33c6a8#fff0f2
diff --git a/configs/shared/.gvcci/themes/geometric_4k/tilix.json b/configs/shared/.gvcci/themes/geometric_4k/tilix.json
new file mode 100644
index 0000000000..eb6148fba0
--- /dev/null
+++ b/configs/shared/.gvcci/themes/geometric_4k/tilix.json
@@ -0,0 +1,33 @@
+{
+    "name": "Gvcci",
+    "comment": "Gvcci generated theme.",
+    "foreground-color": "#fd9c62",
+    "background-color": "#0e1321",
+    "use-theme-colors": false,
+    "use-highlight-color": false,
+    "highlight-foreground-color": "#0e1321",
+    "highlight-background-color": "#e55a34",
+    "use-cursor-color": false,
+    "cursor-foreground-color": "#c33e1a",
+    "cursor-background-color": "#c33e1a",
+    "use-badge-color": true,
+    "badge-color": "#fd9c62",
+    "palette": [
+        "#1e2845",
+        "#b1454d",
+        "#5e916f",
+        "#9d8265",
+        "#629184",
+        "#e40f3f",
+        "#27957f",
+        "#fcb6be",
+        "#2d3c69",
+        "#c86b72",
+        "#7eae8e",
+        "#b7a089",
+        "#83aea2",
+        "#f43c65",
+        "#33c6a8",
+        "#fff0f2"
+    ]
+}
\ No newline at end of file
diff --git a/configs/shared/.gvcci/themes/geometric_4k/wallpaper b/configs/shared/.gvcci/themes/geometric_4k/wallpaper
new file mode 100644
index 0000000000..337bd41b5e
--- /dev/null
+++ b/configs/shared/.gvcci/themes/geometric_4k/wallpaper
Binary files differdiff --git a/configs/shared/.gvcci/themes/geometric_4k/xresources-colors.txt b/configs/shared/.gvcci/themes/geometric_4k/xresources-colors.txt
new file mode 100644
index 0000000000..676fc8fe59
--- /dev/null
+++ b/configs/shared/.gvcci/themes/geometric_4k/xresources-colors.txt
@@ -0,0 +1,37 @@
+! COLORS
+! special
+*.foreground:   #fd9c62
+*.background:   #0e1321
+*.cursorColor:  #fd9c62
+
+! black
+*.color0:       #1e2845
+*.color8:       #2d3c69
+
+! red
+*.color1:       #b1454d
+*.color9:       #c86b72
+
+! green
+*.color2:       #5e916f
+*.color10:      #7eae8e
+
+! yellow
+*.color3:       #9d8265
+*.color11:      #b7a089
+
+! blue
+*.color4:       #629184
+*.color12:      #83aea2
+
+! magenta
+*.color5:       #e40f3f
+*.color13:      #f43c65
+
+! cyan
+*.color6:       #27957f
+*.color14:      #33c6a8
+
+! white
+*.color7:       #fcb6be
+*.color15:      #fff0f2
diff --git a/configs/shared/.gvcci/themes/geometric_dark_4k/colors.sh b/configs/shared/.gvcci/themes/geometric_dark_4k/colors.sh
new file mode 100644
index 0000000000..72edadf31e
--- /dev/null
+++ b/configs/shared/.gvcci/themes/geometric_dark_4k/colors.sh
@@ -0,0 +1,23 @@
+
+# Special
+background='#0e1721'
+foreground='#efefef'
+cursor='#efefef'
+
+# Colors
+color0='#1e2f45'
+color1='#999999'
+color2='#704dc2'
+color3='#e80bb2'
+color4='#3c69b4'
+color5='#c38b35'
+color6='#3992aa'
+color7='#f6d0bb'
+color8='#2d4769'
+color9='#b8b8b8'
+color10='#9378d5'
+color11='#f739c9'
+color12='#6189cc'
+color13='#d6a75f'
+color14='#58b0c8'
+color15='#fef6f1'
diff --git a/configs/shared/.gvcci/themes/geometric_dark_4k/column.txt b/configs/shared/.gvcci/themes/geometric_dark_4k/column.txt
new file mode 100644
index 0000000000..31436b3780
--- /dev/null
+++ b/configs/shared/.gvcci/themes/geometric_dark_4k/column.txt
@@ -0,0 +1,18 @@
+#0e1721
+#efefef
+#1e2f45
+#999999
+#704dc2
+#e80bb2
+#3c69b4
+#c38b35
+#3992aa
+#f6d0bb
+#2d4769
+#b8b8b8
+#9378d5
+#f739c9
+#6189cc
+#d6a75f
+#58b0c8
+#fef6f1
diff --git a/configs/shared/.gvcci/themes/geometric_dark_4k/columns-with-headers.txt b/configs/shared/.gvcci/themes/geometric_dark_4k/columns-with-headers.txt
new file mode 100644
index 0000000000..ddd8ba9716
--- /dev/null
+++ b/configs/shared/.gvcci/themes/geometric_dark_4k/columns-with-headers.txt
@@ -0,0 +1,25 @@
+Background
+#0e1721
+
+Foreground
+#efefef
+
+Normal ANSI Colors
+#1e2f45
+#999999
+#704dc2
+#e80bb2
+#3c69b4
+#c38b35
+#3992aa
+#f6d0bb
+
+Bright ANSI Colors
+#2d4769
+#b8b8b8
+#9378d5
+#f739c9
+#6189cc
+#d6a75f
+#58b0c8
+#fef6f1
diff --git a/configs/shared/.gvcci/themes/geometric_dark_4k/iterm.itermcolors b/configs/shared/.gvcci/themes/geometric_dark_4k/iterm.itermcolors
new file mode 100644
index 0000000000..c581194ff6
--- /dev/null
+++ b/configs/shared/.gvcci/themes/geometric_dark_4k/iterm.itermcolors
@@ -0,0 +1,344 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>Ansi 0 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.27058823529411763</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.1843137254901961</real>
+		<key>Red Component</key>
+        <real>0.11764705882352941</real>
+	</dict>
+	<key>Ansi 1 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.6</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.6</real>
+		<key>Red Component</key>
+        <real>0.6</real>
+	</dict>
+	<key>Ansi 10 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.8352941176470589</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.47058823529411764</real>
+		<key>Red Component</key>
+        <real>0.5764705882352941</real>
+	</dict>
+	<key>Ansi 11 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.788235294117647</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.2235294117647059</real>
+		<key>Red Component</key>
+        <real>0.9686274509803922</real>
+	</dict>
+	<key>Ansi 12 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.8</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5372549019607843</real>
+		<key>Red Component</key>
+        <real>0.3803921568627451</real>
+	</dict>
+	<key>Ansi 13 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.37254901960784315</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.6549019607843137</real>
+		<key>Red Component</key>
+        <real>0.8392156862745098</real>
+	</dict>
+	<key>Ansi 14 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.7843137254901961</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.6901960784313725</real>
+		<key>Red Component</key>
+        <real>0.34509803921568627</real>
+	</dict>
+	<key>Ansi 15 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9450980392156862</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.9647058823529412</real>
+		<key>Red Component</key>
+        <real>0.996078431372549</real>
+	</dict>
+	<key>Ansi 2 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.7607843137254902</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.30196078431372547</real>
+		<key>Red Component</key>
+        <real>0.4392156862745098</real>
+	</dict>
+	<key>Ansi 3 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.6980392156862745</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.043137254901960784</real>
+		<key>Red Component</key>
+        <real>0.9098039215686274</real>
+	</dict>
+	<key>Ansi 4 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.7058823529411765</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.4117647058823529</real>
+		<key>Red Component</key>
+        <real>0.23529411764705882</real>
+	</dict>
+	<key>Ansi 5 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.20784313725490197</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5450980392156862</real>
+		<key>Red Component</key>
+        <real>0.7647058823529411</real>
+	</dict>
+	<key>Ansi 6 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.6666666666666666</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5725490196078431</real>
+		<key>Red Component</key>
+        <real>0.2235294117647059</real>
+	</dict>
+	<key>Ansi 7 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.7333333333333333</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.8156862745098039</real>
+		<key>Red Component</key>
+        <real>0.9647058823529412</real>
+	</dict>
+	<key>Ansi 8 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.4117647058823529</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.2784313725490196</real>
+		<key>Red Component</key>
+        <real>0.17647058823529413</real>
+	</dict>
+	<key>Ansi 9 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.7215686274509804</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.7215686274509804</real>
+		<key>Red Component</key>
+        <real>0.7215686274509804</real>
+	</dict>
+	<key>Background Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.12941176470588237</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.09019607843137255</real>
+		<key>Red Component</key>
+        <real>0.054901960784313725</real>
+	</dict>
+	<key>Badge Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>0.5</real>
+		<key>Blue Component</key>
+		<real>0.0</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.1491314172744751</real>
+		<key>Red Component</key>
+		<real>1</real>
+	</dict>
+	<key>Bold Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9372549019607843</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.9372549019607843</real>
+		<key>Red Component</key>
+        <real>0.9372549019607843</real>
+	</dict>
+	<key>Cursor Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.7764705882352941</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5568627450980392</real>
+		<key>Red Component</key>
+        <real>0.28627450980392155</real>
+	</dict>
+	<key>Cursor Guide Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>0.25</real>
+		<key>Blue Component</key>
+		<real>1</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.9268307089805603</real>
+		<key>Red Component</key>
+		<real>0.70213186740875244</real>
+	</dict>
+	<key>Cursor Text Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.62745100259780884</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.50980395078659058</real>
+		<key>Red Component</key>
+		<real>0.54901963472366333</real>
+	</dict>
+	<key>Foreground Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9372549019607843</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.9372549019607843</real>
+		<key>Red Component</key>
+        <real>0.9372549019607843</real>
+	</dict>
+	<key>Link Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.73423302173614502</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.35916060209274292</real>
+		<key>Red Component</key>
+		<real>0.0</real>
+	</dict>
+	<key>Selected Text Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.12941176470588237</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.09019607843137255</real>
+		<key>Red Component</key>
+		<real>0.054901960784313725</real>
+	</dict>
+	<key>Selection Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.8431372549019608</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.6705882352941176</real>
+		<key>Red Component</key>
+		<real>0.4588235294117647</real>
+	</dict>
+</dict>
+</plist>
diff --git a/configs/shared/.gvcci/themes/geometric_dark_4k/iterm.plist b/configs/shared/.gvcci/themes/geometric_dark_4k/iterm.plist
new file mode 100644
index 0000000000..be09c1f1ca
--- /dev/null
+++ b/configs/shared/.gvcci/themes/geometric_dark_4k/iterm.plist
@@ -0,0 +1,412 @@
+{
+  "Profiles": [
+    {
+      "Use Non-ASCII Font" : false,
+      "Tags" : [
+
+      ],
+      "Ansi 12 Color" : {
+        "Red Component" : 0.3803921568627451,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.8,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5372549019607843
+      },
+      "Ansi 7 Color" : {
+        "Red Component" : 0.9647058823529412,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.7333333333333333,
+        "Alpha Component" : 1,
+        "Green Component" : 0.8156862745098039
+      },
+      "Ansi 8 Color" : {
+        "Red Component" : 0.17647058823529413,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.4117647058823529,
+        "Alpha Component" : 1,
+        "Green Component" : 0.2784313725490196
+      },
+      "Bold Color" : {
+        "Red Component" : 0.9372549019607843,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9372549019607843,
+        "Alpha Component" : 1,
+        "Green Component" : 0.9372549019607843
+      },
+      "Ansi 9 Color" : {
+        "Red Component" : 0.7215686274509804,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.7215686274509804,
+        "Alpha Component" : 1,
+        "Green Component" : 0.7215686274509804
+      },
+      "Ansi 6 Color" : {
+        "Red Component" : 0.2235294117647059,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.6666666666666666,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5725490196078431
+      },
+      "Right Option Key Sends" : 0,
+      "Rows" : 25,
+      "Default Bookmark" : "No",
+      "Cursor Guide Color" : {
+        "Red Component" : 1,
+        "Color Space" : "Calibrated",
+        "Blue Component" : 0.9999912977218628,
+        "Alpha Component" : 0.04705882352941176,
+        "Green Component" : 0.9999743700027466
+      },
+      "Non-ASCII Anti Aliased" : true,
+      "Use Bright Bold" : true,
+      "Ansi 10 Color" : {
+        "Red Component" : 0.5764705882352941,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.8352941176470589,
+        "Alpha Component" : 1,
+        "Green Component" : 0.47058823529411764
+      },
+      "Use Cursor Guide" : false,
+      "Ambiguous Double Width" : false,
+      "Jobs to Ignore" : [
+        "rlogin",
+        "ssh",
+        "slogin",
+        "telnet"
+      ],
+      "Ansi 15 Color" : {
+        "Red Component" : 0.996078431372549,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9450980392156862,
+        "Alpha Component" : 1,
+        "Green Component" : 0.9647058823529412
+      },
+      "Foreground Color" : {
+        "Red Component" : 0.9372549019607843,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9372549019607843,
+        "Alpha Component" : 1,
+        "Green Component" : 0.9372549019607843
+      },
+      "Working Directory" : "\/Users\/fabricecastel",
+      "Bound Hosts" : [
+
+      ],
+      "Blinking Cursor" : false,
+      "Disable Window Resizing" : true,
+      "Sync Title" : false,
+      "Prompt Before Closing 2" : false,
+      "BM Growl" : false,
+      "Description" : "Default",
+      "Mouse Reporting" : true,
+      "Smart Cursor Color" : false,
+      "Screen" : -1,
+      "Selection Color" : {
+        "Red Component" : 0.4588235294117647,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.8431372549019608,
+        "Alpha Component" : 1,
+        "Green Component" : 0.6705882352941176
+      },
+      "Columns" : 80,
+      "Idle Code" : 0,
+      "Ansi 13 Color" : {
+        "Red Component" : 0.8392156862745098,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.37254901960784315,
+        "Alpha Component" : 1,
+        "Green Component" : 0.6549019607843137
+      },
+      "Custom Command" : "Yes",
+      "ASCII Anti Aliased" : true,
+      "Non Ascii Font" : "Monaco 12",
+      "Vertical Spacing" : 1,
+      "Use Bold Font" : true,
+      "Option Key Sends" : 0,
+      "Selected Text Color" : {
+        "Red Component" : 0.054901960784313725,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.12941176470588237,
+        "Alpha Component" : 1,
+        "Green Component" : 0.09019607843137255
+      },
+      "Background Color" : {
+        "Red Component" : 0.054901960784313725,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.12941176470588237,
+        "Alpha Component" : 1,
+        "Green Component" : 0.09019607843137255
+      },
+      "Character Encoding" : 4,
+      "Ansi 11 Color" : {
+        "Red Component" : 0.9686274509803922,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.788235294117647,
+        "Alpha Component" : 1,
+        "Green Component" : 0.2235294117647059
+      },
+      "Use Italic Font" : true,
+      "Unlimited Scrollback" : false,
+      "Keyboard Map" : {
+        "0xf700-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6A"
+        },
+        "0x37-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1f"
+        },
+        "0x32-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x00"
+        },
+        "0xf709-0x20000" : {
+          "Action" : 10,
+          "Text" : "[17;2~"
+        },
+        "0xf70c-0x20000" : {
+          "Action" : 10,
+          "Text" : "[20;2~"
+        },
+        "0xf729-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2H"
+        },
+        "0xf72b-0x40000" : {
+          "Action" : 10,
+          "Text" : "[1;5F"
+        },
+        "0xf705-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2Q"
+        },
+        "0xf703-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6C"
+        },
+        "0xf700-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2A"
+        },
+        "0xf701-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x42"
+        },
+        "0x38-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x7f"
+        },
+        "0x33-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1b"
+        },
+        "0xf703-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2C"
+        },
+        "0xf701-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5B"
+        },
+        "0xf70d-0x20000" : {
+          "Action" : 10,
+          "Text" : "[21;2~"
+        },
+        "0xf702-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6D"
+        },
+        "0xf729-0x40000" : {
+          "Action" : 10,
+          "Text" : "[1;5H"
+        },
+        "0xf706-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2R"
+        },
+        "0x34-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1c"
+        },
+        "0xf700-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x41"
+        },
+        "0x2d-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1f"
+        },
+        "0xf70e-0x20000" : {
+          "Action" : 10,
+          "Text" : "[23;2~"
+        },
+        "0xf702-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2D"
+        },
+        "0xf703-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x43"
+        },
+        "0xf700-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5A"
+        },
+        "0xf707-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2S"
+        },
+        "0xf70a-0x20000" : {
+          "Action" : 10,
+          "Text" : "[18;2~"
+        },
+        "0x35-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1d"
+        },
+        "0xf70f-0x20000" : {
+          "Action" : 10,
+          "Text" : "[24;2~"
+        },
+        "0xf703-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5C"
+        },
+        "0xf701-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6B"
+        },
+        "0xf702-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x44"
+        },
+        "0xf72b-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2F"
+        },
+        "0x36-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1e"
+        },
+        "0xf708-0x20000" : {
+          "Action" : 10,
+          "Text" : "[15;2~"
+        },
+        "0xf701-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2B"
+        },
+        "0xf70b-0x20000" : {
+          "Action" : 10,
+          "Text" : "[19;2~"
+        },
+        "0xf702-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5D"
+        },
+        "0xf704-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2P"
+        }
+      },
+      "Window Type" : 12,
+      "Blur Radius" : 5.168569711538462,
+      "Cursor Type" : 2,
+      "Background Image Location" : "",
+      "Blur" : false,
+      "Badge Color" : {
+        "Red Component" : 1,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0,
+        "Alpha Component" : 0.5,
+        "Green Component" : 0.1491314172744751
+      },
+      "Cursor Boost" : 0,
+      "Scrollback Lines" : 1000,
+      "Send Code When Idle" : false,
+      "Close Sessions On End" : true,
+      "Terminal Type" : "xterm-256color",
+      "Visual Bell" : true,
+      "Flashing Bell" : false,
+      "Silence Bell" : true,
+      "Ansi 14 Color" : {
+        "Red Component" : 0.34509803921568627,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.7843137254901961,
+        "Alpha Component" : 1,
+        "Green Component" : 0.6901960784313725
+      },
+      "Name" : "gvcci",
+      "Cursor Text Color" : {
+        "Red Component" : 0.5490196347236633,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.6274510025978088,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5098039507865906
+      },
+      "Minimum Contrast" : 0,
+      "Shortcut" : "",
+      "Cursor Color" : {
+        "Red Component" : 0.28627450980392155,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.7764705882352941,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5568627450980392
+      },
+      "Ansi 0 Color" : {
+        "Red Component" : 0.11764705882352941,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.27058823529411763,
+        "Alpha Component" : 1,
+        "Green Component" : 0.1843137254901961
+      },
+      "Ansi 1 Color" : {
+        "Red Component" : 0.6,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.6,
+        "Alpha Component" : 1,
+        "Green Component" : 0.6
+      },
+      "Horizontal Spacing" : 1,
+      "Ansi 3 Color" : {
+        "Red Component" : 0.9098039215686274,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.6980392156862745,
+        "Alpha Component" : 1,
+        "Green Component" : 0.043137254901960784
+      },
+      "Ansi 4 Color" : {
+        "Red Component" : 0.23529411764705882,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.7058823529411765,
+        "Alpha Component" : 1,
+        "Green Component" : 0.4117647058823529
+      },
+      "Transparency" : 0,
+      "Guid" : "FBF27982-5D1C-4625-8221-8FFAB9F4A445",
+      "Ansi 2 Color" : {
+        "Red Component" : 0.4392156862745098,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.7607843137254902,
+        "Alpha Component" : 1,
+        "Green Component" : 0.30196078431372547
+      },
+      "Normal Font" : "MesloLGSForPowerline-Regular 12",
+      "Custom Directory" : "No",
+      "Link Color" : {
+        "Red Component" : 0,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.734233021736145,
+        "Alpha Component" : 1,
+        "Green Component" : 0.3591606020927429
+      },
+      "Ansi 5 Color" : {
+        "Red Component" : 0.7647058823529411,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.20784313725490197,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5450980392156862
+      },
+    }
+  ]
+}
diff --git a/configs/shared/.gvcci/themes/geometric_dark_4k/json-scheme.json b/configs/shared/.gvcci/themes/geometric_dark_4k/json-scheme.json
new file mode 100644
index 0000000000..054a1d4e47
--- /dev/null
+++ b/configs/shared/.gvcci/themes/geometric_dark_4k/json-scheme.json
@@ -0,0 +1,24 @@
+{
+  "name": "GVCCI Color Scheme",
+  "author": "",
+  "color": [
+    "#1e2f45",
+    "#999999",
+    "#704dc2",
+    "#e80bb2",
+    "#3c69b4",
+    "#c38b35",
+    "#3992aa",
+    "#f6d0bb",
+    "#2d4769",
+    "#b8b8b8",
+    "#9378d5",
+    "#f739c9",
+    "#6189cc",
+    "#d6a75f",
+    "#58b0c8",
+    "#fef6f1"
+  ],
+  "foreground": "#efefef",
+  "background": "#0e1721"
+}
diff --git a/configs/shared/.gvcci/themes/geometric_dark_4k/nospace.txt b/configs/shared/.gvcci/themes/geometric_dark_4k/nospace.txt
new file mode 100644
index 0000000000..dfd6f6f1e0
--- /dev/null
+++ b/configs/shared/.gvcci/themes/geometric_dark_4k/nospace.txt
@@ -0,0 +1 @@
+#0e1721#efefef#1e2f45#999999#704dc2#e80bb2#3c69b4#c38b35#3992aa#f6d0bb#2d4769#b8b8b8#9378d5#f739c9#6189cc#d6a75f#58b0c8#fef6f1
diff --git a/configs/shared/.gvcci/themes/geometric_dark_4k/tilix.json b/configs/shared/.gvcci/themes/geometric_dark_4k/tilix.json
new file mode 100644
index 0000000000..4d16ec4371
--- /dev/null
+++ b/configs/shared/.gvcci/themes/geometric_dark_4k/tilix.json
@@ -0,0 +1,33 @@
+{
+    "name": "Gvcci",
+    "comment": "Gvcci generated theme.",
+    "foreground-color": "#efefef",
+    "background-color": "#0e1721",
+    "use-theme-colors": false,
+    "use-highlight-color": false,
+    "highlight-foreground-color": "#0e1721",
+    "highlight-background-color": "#75abd7",
+    "use-cursor-color": false,
+    "cursor-foreground-color": "#498ec6",
+    "cursor-background-color": "#498ec6",
+    "use-badge-color": true,
+    "badge-color": "#efefef",
+    "palette": [
+        "#1e2f45",
+        "#999999",
+        "#704dc2",
+        "#e80bb2",
+        "#3c69b4",
+        "#c38b35",
+        "#3992aa",
+        "#f6d0bb",
+        "#2d4769",
+        "#b8b8b8",
+        "#9378d5",
+        "#f739c9",
+        "#6189cc",
+        "#d6a75f",
+        "#58b0c8",
+        "#fef6f1"
+    ]
+}
\ No newline at end of file
diff --git a/configs/shared/.gvcci/themes/geometric_dark_4k/wallpaper b/configs/shared/.gvcci/themes/geometric_dark_4k/wallpaper
new file mode 100644
index 0000000000..c5d72ecf65
--- /dev/null
+++ b/configs/shared/.gvcci/themes/geometric_dark_4k/wallpaper
Binary files differdiff --git a/configs/shared/.gvcci/themes/geometric_dark_4k/xresources-colors.txt b/configs/shared/.gvcci/themes/geometric_dark_4k/xresources-colors.txt
new file mode 100644
index 0000000000..fb87e04740
--- /dev/null
+++ b/configs/shared/.gvcci/themes/geometric_dark_4k/xresources-colors.txt
@@ -0,0 +1,37 @@
+! COLORS
+! special
+*.foreground:   #efefef
+*.background:   #0e1721
+*.cursorColor:  #efefef
+
+! black
+*.color0:       #1e2f45
+*.color8:       #2d4769
+
+! red
+*.color1:       #999999
+*.color9:       #b8b8b8
+
+! green
+*.color2:       #704dc2
+*.color10:      #9378d5
+
+! yellow
+*.color3:       #e80bb2
+*.color11:      #f739c9
+
+! blue
+*.color4:       #3c69b4
+*.color12:      #6189cc
+
+! magenta
+*.color5:       #c38b35
+*.color13:      #d6a75f
+
+! cyan
+*.color6:       #3992aa
+*.color14:      #58b0c8
+
+! white
+*.color7:       #f6d0bb
+*.color15:      #fef6f1
diff --git a/configs/shared/.gvcci/themes/japan_cherry_blossoms_4k/colors.sh b/configs/shared/.gvcci/themes/japan_cherry_blossoms_4k/colors.sh
new file mode 100644
index 0000000000..c246b484a5
--- /dev/null
+++ b/configs/shared/.gvcci/themes/japan_cherry_blossoms_4k/colors.sh
@@ -0,0 +1,23 @@
+
+# Special
+background='#eeecd0'
+foreground='#000000'
+cursor='#000000'
+
+# Colors
+color0='#4a481c'
+color1='#72614b'
+color2='#51683d'
+color3='#646346'
+color4='#4f6b60'
+color5='#948905'
+color6='#788c1c'
+color7='#e9dfc9'
+color8='#706b29'
+color9='#988163'
+color10='#6f8e53'
+color11='#888760'
+color12='#688f80'
+color13='#cfc006'
+color14='#a4bf26'
+color15='#fbf9f4'
diff --git a/configs/shared/.gvcci/themes/japan_cherry_blossoms_4k/column.txt b/configs/shared/.gvcci/themes/japan_cherry_blossoms_4k/column.txt
new file mode 100644
index 0000000000..023486721c
--- /dev/null
+++ b/configs/shared/.gvcci/themes/japan_cherry_blossoms_4k/column.txt
@@ -0,0 +1,18 @@
+#eeecd0
+#000000
+#4a481c
+#72614b
+#51683d
+#646346
+#4f6b60
+#948905
+#788c1c
+#e9dfc9
+#706b29
+#988163
+#6f8e53
+#888760
+#688f80
+#cfc006
+#a4bf26
+#fbf9f4
diff --git a/configs/shared/.gvcci/themes/japan_cherry_blossoms_4k/columns-with-headers.txt b/configs/shared/.gvcci/themes/japan_cherry_blossoms_4k/columns-with-headers.txt
new file mode 100644
index 0000000000..7c0661833d
--- /dev/null
+++ b/configs/shared/.gvcci/themes/japan_cherry_blossoms_4k/columns-with-headers.txt
@@ -0,0 +1,25 @@
+Background
+#eeecd0
+
+Foreground
+#000000
+
+Normal ANSI Colors
+#4a481c
+#72614b
+#51683d
+#646346
+#4f6b60
+#948905
+#788c1c
+#e9dfc9
+
+Bright ANSI Colors
+#706b29
+#988163
+#6f8e53
+#888760
+#688f80
+#cfc006
+#a4bf26
+#fbf9f4
diff --git a/configs/shared/.gvcci/themes/japan_cherry_blossoms_4k/iterm.itermcolors b/configs/shared/.gvcci/themes/japan_cherry_blossoms_4k/iterm.itermcolors
new file mode 100644
index 0000000000..3c08abdf0b
--- /dev/null
+++ b/configs/shared/.gvcci/themes/japan_cherry_blossoms_4k/iterm.itermcolors
@@ -0,0 +1,344 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>Ansi 0 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.10980392156862745</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.2823529411764706</real>
+		<key>Red Component</key>
+        <real>0.2901960784313726</real>
+	</dict>
+	<key>Ansi 1 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.29411764705882354</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.3803921568627451</real>
+		<key>Red Component</key>
+        <real>0.4470588235294118</real>
+	</dict>
+	<key>Ansi 10 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.3254901960784314</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5568627450980392</real>
+		<key>Red Component</key>
+        <real>0.43529411764705883</real>
+	</dict>
+	<key>Ansi 11 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.3764705882352941</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5294117647058824</real>
+		<key>Red Component</key>
+        <real>0.5333333333333333</real>
+	</dict>
+	<key>Ansi 12 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.5019607843137255</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5607843137254902</real>
+		<key>Red Component</key>
+        <real>0.40784313725490196</real>
+	</dict>
+	<key>Ansi 13 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.023529411764705882</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.7529411764705882</real>
+		<key>Red Component</key>
+        <real>0.8117647058823529</real>
+	</dict>
+	<key>Ansi 14 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.14901960784313725</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.7490196078431373</real>
+		<key>Red Component</key>
+        <real>0.6431372549019608</real>
+	</dict>
+	<key>Ansi 15 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9568627450980393</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.9764705882352941</real>
+		<key>Red Component</key>
+        <real>0.984313725490196</real>
+	</dict>
+	<key>Ansi 2 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.23921568627450981</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.40784313725490196</real>
+		<key>Red Component</key>
+        <real>0.3176470588235294</real>
+	</dict>
+	<key>Ansi 3 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.27450980392156865</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.38823529411764707</real>
+		<key>Red Component</key>
+        <real>0.39215686274509803</real>
+	</dict>
+	<key>Ansi 4 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.3764705882352941</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.4196078431372549</real>
+		<key>Red Component</key>
+        <real>0.30980392156862746</real>
+	</dict>
+	<key>Ansi 5 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.0196078431372549</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5372549019607843</real>
+		<key>Red Component</key>
+        <real>0.5803921568627451</real>
+	</dict>
+	<key>Ansi 6 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.10980392156862745</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5490196078431373</real>
+		<key>Red Component</key>
+        <real>0.47058823529411764</real>
+	</dict>
+	<key>Ansi 7 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.788235294117647</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.8745098039215686</real>
+		<key>Red Component</key>
+        <real>0.9137254901960784</real>
+	</dict>
+	<key>Ansi 8 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.1607843137254902</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.4196078431372549</real>
+		<key>Red Component</key>
+        <real>0.4392156862745098</real>
+	</dict>
+	<key>Ansi 9 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.38823529411764707</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5058823529411764</real>
+		<key>Red Component</key>
+        <real>0.596078431372549</real>
+	</dict>
+	<key>Background Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.8156862745098039</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.9254901960784314</real>
+		<key>Red Component</key>
+        <real>0.9333333333333333</real>
+	</dict>
+	<key>Badge Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>0.5</real>
+		<key>Blue Component</key>
+		<real>0.0</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.1491314172744751</real>
+		<key>Red Component</key>
+		<real>1</real>
+	</dict>
+	<key>Bold Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.0</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.0</real>
+		<key>Red Component</key>
+        <real>0.0</real>
+	</dict>
+	<key>Cursor Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.11764705882352941</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.4980392156862745</real>
+		<key>Red Component</key>
+        <real>0.6313725490196078</real>
+	</dict>
+	<key>Cursor Guide Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>0.25</real>
+		<key>Blue Component</key>
+		<real>1</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.9268307089805603</real>
+		<key>Red Component</key>
+		<real>0.70213186740875244</real>
+	</dict>
+	<key>Cursor Text Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.62745100259780884</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.50980395078659058</real>
+		<key>Red Component</key>
+		<real>0.54901963472366333</real>
+	</dict>
+	<key>Foreground Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.0</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.0</real>
+		<key>Red Component</key>
+        <real>0.0</real>
+	</dict>
+	<key>Link Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.73423302173614502</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.35916060209274292</real>
+		<key>Red Component</key>
+		<real>0.0</real>
+	</dict>
+	<key>Selected Text Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.8156862745098039</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.9254901960784314</real>
+		<key>Red Component</key>
+		<real>0.9333333333333333</real>
+	</dict>
+	<key>Selection Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.15294117647058825</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.6588235294117647</real>
+		<key>Red Component</key>
+		<real>0.8352941176470589</real>
+	</dict>
+</dict>
+</plist>
diff --git a/configs/shared/.gvcci/themes/japan_cherry_blossoms_4k/iterm.plist b/configs/shared/.gvcci/themes/japan_cherry_blossoms_4k/iterm.plist
new file mode 100644
index 0000000000..5a535fc632
--- /dev/null
+++ b/configs/shared/.gvcci/themes/japan_cherry_blossoms_4k/iterm.plist
@@ -0,0 +1,412 @@
+{
+  "Profiles": [
+    {
+      "Use Non-ASCII Font" : false,
+      "Tags" : [
+
+      ],
+      "Ansi 12 Color" : {
+        "Red Component" : 0.40784313725490196,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.5019607843137255,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5607843137254902
+      },
+      "Ansi 7 Color" : {
+        "Red Component" : 0.9137254901960784,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.788235294117647,
+        "Alpha Component" : 1,
+        "Green Component" : 0.8745098039215686
+      },
+      "Ansi 8 Color" : {
+        "Red Component" : 0.4392156862745098,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.1607843137254902,
+        "Alpha Component" : 1,
+        "Green Component" : 0.4196078431372549
+      },
+      "Bold Color" : {
+        "Red Component" : 0.0,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.0,
+        "Alpha Component" : 1,
+        "Green Component" : 0.0
+      },
+      "Ansi 9 Color" : {
+        "Red Component" : 0.596078431372549,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.38823529411764707,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5058823529411764
+      },
+      "Ansi 6 Color" : {
+        "Red Component" : 0.47058823529411764,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.10980392156862745,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5490196078431373
+      },
+      "Right Option Key Sends" : 0,
+      "Rows" : 25,
+      "Default Bookmark" : "No",
+      "Cursor Guide Color" : {
+        "Red Component" : 1,
+        "Color Space" : "Calibrated",
+        "Blue Component" : 0.9999912977218628,
+        "Alpha Component" : 0.04705882352941176,
+        "Green Component" : 0.9999743700027466
+      },
+      "Non-ASCII Anti Aliased" : true,
+      "Use Bright Bold" : true,
+      "Ansi 10 Color" : {
+        "Red Component" : 0.43529411764705883,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.3254901960784314,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5568627450980392
+      },
+      "Use Cursor Guide" : false,
+      "Ambiguous Double Width" : false,
+      "Jobs to Ignore" : [
+        "rlogin",
+        "ssh",
+        "slogin",
+        "telnet"
+      ],
+      "Ansi 15 Color" : {
+        "Red Component" : 0.984313725490196,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9568627450980393,
+        "Alpha Component" : 1,
+        "Green Component" : 0.9764705882352941
+      },
+      "Foreground Color" : {
+        "Red Component" : 0.0,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.0,
+        "Alpha Component" : 1,
+        "Green Component" : 0.0
+      },
+      "Working Directory" : "\/Users\/fabricecastel",
+      "Bound Hosts" : [
+
+      ],
+      "Blinking Cursor" : false,
+      "Disable Window Resizing" : true,
+      "Sync Title" : false,
+      "Prompt Before Closing 2" : false,
+      "BM Growl" : false,
+      "Description" : "Default",
+      "Mouse Reporting" : true,
+      "Smart Cursor Color" : false,
+      "Screen" : -1,
+      "Selection Color" : {
+        "Red Component" : 0.8352941176470589,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.15294117647058825,
+        "Alpha Component" : 1,
+        "Green Component" : 0.6588235294117647
+      },
+      "Columns" : 80,
+      "Idle Code" : 0,
+      "Ansi 13 Color" : {
+        "Red Component" : 0.8117647058823529,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.023529411764705882,
+        "Alpha Component" : 1,
+        "Green Component" : 0.7529411764705882
+      },
+      "Custom Command" : "Yes",
+      "ASCII Anti Aliased" : true,
+      "Non Ascii Font" : "Monaco 12",
+      "Vertical Spacing" : 1,
+      "Use Bold Font" : true,
+      "Option Key Sends" : 0,
+      "Selected Text Color" : {
+        "Red Component" : 0.9333333333333333,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.8156862745098039,
+        "Alpha Component" : 1,
+        "Green Component" : 0.9254901960784314
+      },
+      "Background Color" : {
+        "Red Component" : 0.9333333333333333,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.8156862745098039,
+        "Alpha Component" : 1,
+        "Green Component" : 0.9254901960784314
+      },
+      "Character Encoding" : 4,
+      "Ansi 11 Color" : {
+        "Red Component" : 0.5333333333333333,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.3764705882352941,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5294117647058824
+      },
+      "Use Italic Font" : true,
+      "Unlimited Scrollback" : false,
+      "Keyboard Map" : {
+        "0xf700-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6A"
+        },
+        "0x37-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1f"
+        },
+        "0x32-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x00"
+        },
+        "0xf709-0x20000" : {
+          "Action" : 10,
+          "Text" : "[17;2~"
+        },
+        "0xf70c-0x20000" : {
+          "Action" : 10,
+          "Text" : "[20;2~"
+        },
+        "0xf729-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2H"
+        },
+        "0xf72b-0x40000" : {
+          "Action" : 10,
+          "Text" : "[1;5F"
+        },
+        "0xf705-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2Q"
+        },
+        "0xf703-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6C"
+        },
+        "0xf700-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2A"
+        },
+        "0xf701-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x42"
+        },
+        "0x38-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x7f"
+        },
+        "0x33-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1b"
+        },
+        "0xf703-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2C"
+        },
+        "0xf701-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5B"
+        },
+        "0xf70d-0x20000" : {
+          "Action" : 10,
+          "Text" : "[21;2~"
+        },
+        "0xf702-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6D"
+        },
+        "0xf729-0x40000" : {
+          "Action" : 10,
+          "Text" : "[1;5H"
+        },
+        "0xf706-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2R"
+        },
+        "0x34-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1c"
+        },
+        "0xf700-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x41"
+        },
+        "0x2d-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1f"
+        },
+        "0xf70e-0x20000" : {
+          "Action" : 10,
+          "Text" : "[23;2~"
+        },
+        "0xf702-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2D"
+        },
+        "0xf703-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x43"
+        },
+        "0xf700-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5A"
+        },
+        "0xf707-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2S"
+        },
+        "0xf70a-0x20000" : {
+          "Action" : 10,
+          "Text" : "[18;2~"
+        },
+        "0x35-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1d"
+        },
+        "0xf70f-0x20000" : {
+          "Action" : 10,
+          "Text" : "[24;2~"
+        },
+        "0xf703-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5C"
+        },
+        "0xf701-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6B"
+        },
+        "0xf702-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x44"
+        },
+        "0xf72b-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2F"
+        },
+        "0x36-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1e"
+        },
+        "0xf708-0x20000" : {
+          "Action" : 10,
+          "Text" : "[15;2~"
+        },
+        "0xf701-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2B"
+        },
+        "0xf70b-0x20000" : {
+          "Action" : 10,
+          "Text" : "[19;2~"
+        },
+        "0xf702-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5D"
+        },
+        "0xf704-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2P"
+        }
+      },
+      "Window Type" : 12,
+      "Blur Radius" : 5.168569711538462,
+      "Cursor Type" : 2,
+      "Background Image Location" : "",
+      "Blur" : false,
+      "Badge Color" : {
+        "Red Component" : 1,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0,
+        "Alpha Component" : 0.5,
+        "Green Component" : 0.1491314172744751
+      },
+      "Cursor Boost" : 0,
+      "Scrollback Lines" : 1000,
+      "Send Code When Idle" : false,
+      "Close Sessions On End" : true,
+      "Terminal Type" : "xterm-256color",
+      "Visual Bell" : true,
+      "Flashing Bell" : false,
+      "Silence Bell" : true,
+      "Ansi 14 Color" : {
+        "Red Component" : 0.6431372549019608,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.14901960784313725,
+        "Alpha Component" : 1,
+        "Green Component" : 0.7490196078431373
+      },
+      "Name" : "gvcci",
+      "Cursor Text Color" : {
+        "Red Component" : 0.5490196347236633,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.6274510025978088,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5098039507865906
+      },
+      "Minimum Contrast" : 0,
+      "Shortcut" : "",
+      "Cursor Color" : {
+        "Red Component" : 0.6313725490196078,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.11764705882352941,
+        "Alpha Component" : 1,
+        "Green Component" : 0.4980392156862745
+      },
+      "Ansi 0 Color" : {
+        "Red Component" : 0.2901960784313726,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.10980392156862745,
+        "Alpha Component" : 1,
+        "Green Component" : 0.2823529411764706
+      },
+      "Ansi 1 Color" : {
+        "Red Component" : 0.4470588235294118,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.29411764705882354,
+        "Alpha Component" : 1,
+        "Green Component" : 0.3803921568627451
+      },
+      "Horizontal Spacing" : 1,
+      "Ansi 3 Color" : {
+        "Red Component" : 0.39215686274509803,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.27450980392156865,
+        "Alpha Component" : 1,
+        "Green Component" : 0.38823529411764707
+      },
+      "Ansi 4 Color" : {
+        "Red Component" : 0.30980392156862746,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.3764705882352941,
+        "Alpha Component" : 1,
+        "Green Component" : 0.4196078431372549
+      },
+      "Transparency" : 0,
+      "Guid" : "FBF27982-5D1C-4625-8221-8FFAB9F4A445",
+      "Ansi 2 Color" : {
+        "Red Component" : 0.3176470588235294,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.23921568627450981,
+        "Alpha Component" : 1,
+        "Green Component" : 0.40784313725490196
+      },
+      "Normal Font" : "MesloLGSForPowerline-Regular 12",
+      "Custom Directory" : "No",
+      "Link Color" : {
+        "Red Component" : 0,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.734233021736145,
+        "Alpha Component" : 1,
+        "Green Component" : 0.3591606020927429
+      },
+      "Ansi 5 Color" : {
+        "Red Component" : 0.5803921568627451,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.0196078431372549,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5372549019607843
+      },
+    }
+  ]
+}
diff --git a/configs/shared/.gvcci/themes/japan_cherry_blossoms_4k/json-scheme.json b/configs/shared/.gvcci/themes/japan_cherry_blossoms_4k/json-scheme.json
new file mode 100644
index 0000000000..b5e4ac3eff
--- /dev/null
+++ b/configs/shared/.gvcci/themes/japan_cherry_blossoms_4k/json-scheme.json
@@ -0,0 +1,24 @@
+{
+  "name": "GVCCI Color Scheme",
+  "author": "",
+  "color": [
+    "#4a481c",
+    "#72614b",
+    "#51683d",
+    "#646346",
+    "#4f6b60",
+    "#948905",
+    "#788c1c",
+    "#e9dfc9",
+    "#706b29",
+    "#988163",
+    "#6f8e53",
+    "#888760",
+    "#688f80",
+    "#cfc006",
+    "#a4bf26",
+    "#fbf9f4"
+  ],
+  "foreground": "#000000",
+  "background": "#eeecd0"
+}
diff --git a/configs/shared/.gvcci/themes/japan_cherry_blossoms_4k/nospace.txt b/configs/shared/.gvcci/themes/japan_cherry_blossoms_4k/nospace.txt
new file mode 100644
index 0000000000..ce38805875
--- /dev/null
+++ b/configs/shared/.gvcci/themes/japan_cherry_blossoms_4k/nospace.txt
@@ -0,0 +1 @@
+#eeecd0#000000#4a481c#72614b#51683d#646346#4f6b60#948905#788c1c#e9dfc9#706b29#988163#6f8e53#888760#688f80#cfc006#a4bf26#fbf9f4
diff --git a/configs/shared/.gvcci/themes/japan_cherry_blossoms_4k/tilix.json b/configs/shared/.gvcci/themes/japan_cherry_blossoms_4k/tilix.json
new file mode 100644
index 0000000000..b6c0cb55b4
--- /dev/null
+++ b/configs/shared/.gvcci/themes/japan_cherry_blossoms_4k/tilix.json
@@ -0,0 +1,33 @@
+{
+    "name": "Gvcci",
+    "comment": "Gvcci generated theme.",
+    "foreground-color": "#000000",
+    "background-color": "#eeecd0",
+    "use-theme-colors": false,
+    "use-highlight-color": false,
+    "highlight-foreground-color": "#eeecd0",
+    "highlight-background-color": "#d5a827",
+    "use-cursor-color": false,
+    "cursor-foreground-color": "#a17f1e",
+    "cursor-background-color": "#a17f1e",
+    "use-badge-color": true,
+    "badge-color": "#000000",
+    "palette": [
+        "#4a481c",
+        "#72614b",
+        "#51683d",
+        "#646346",
+        "#4f6b60",
+        "#948905",
+        "#788c1c",
+        "#e9dfc9",
+        "#706b29",
+        "#988163",
+        "#6f8e53",
+        "#888760",
+        "#688f80",
+        "#cfc006",
+        "#a4bf26",
+        "#fbf9f4"
+    ]
+}
\ No newline at end of file
diff --git a/configs/shared/.gvcci/themes/japan_cherry_blossoms_4k/wallpaper b/configs/shared/.gvcci/themes/japan_cherry_blossoms_4k/wallpaper
new file mode 100644
index 0000000000..7f2bdbf3eb
--- /dev/null
+++ b/configs/shared/.gvcci/themes/japan_cherry_blossoms_4k/wallpaper
Binary files differdiff --git a/configs/shared/.gvcci/themes/japan_cherry_blossoms_4k/xresources-colors.txt b/configs/shared/.gvcci/themes/japan_cherry_blossoms_4k/xresources-colors.txt
new file mode 100644
index 0000000000..74b9da4baf
--- /dev/null
+++ b/configs/shared/.gvcci/themes/japan_cherry_blossoms_4k/xresources-colors.txt
@@ -0,0 +1,37 @@
+! COLORS
+! special
+*.foreground:   #000000
+*.background:   #eeecd0
+*.cursorColor:  #000000
+
+! black
+*.color0:       #4a481c
+*.color8:       #706b29
+
+! red
+*.color1:       #72614b
+*.color9:       #988163
+
+! green
+*.color2:       #51683d
+*.color10:      #6f8e53
+
+! yellow
+*.color3:       #646346
+*.color11:      #888760
+
+! blue
+*.color4:       #4f6b60
+*.color12:      #688f80
+
+! magenta
+*.color5:       #948905
+*.color13:      #cfc006
+
+! cyan
+*.color6:       #788c1c
+*.color14:      #a4bf26
+
+! white
+*.color7:       #e9dfc9
+*.color15:      #fbf9f4
diff --git a/configs/shared/.gvcci/themes/lego_manhattan/colors.sh b/configs/shared/.gvcci/themes/lego_manhattan/colors.sh
new file mode 100644
index 0000000000..ca083161d4
--- /dev/null
+++ b/configs/shared/.gvcci/themes/lego_manhattan/colors.sh
@@ -0,0 +1,23 @@
+
+# Special
+background='#d5c699'
+foreground='#400000'
+cursor='#400000'
+
+# Colors
+color0='#483e1e'
+color1='#7f3508'
+color2='#144a32'
+color3='#7e6a09'
+color4='#167584'
+color5='#5a400e'
+color6='#1f7778'
+color7='#bdf4ee'
+color8='#6d5d2c'
+color9='#b84d0b'
+color10='#207b53'
+color11='#b79a0d'
+color12='#1ea3b9'
+color13='#8f6516'
+color14='#2ba7a8'
+color15='#f2fdfc'
diff --git a/configs/shared/.gvcci/themes/lego_manhattan/column.txt b/configs/shared/.gvcci/themes/lego_manhattan/column.txt
new file mode 100644
index 0000000000..cb4180919f
--- /dev/null
+++ b/configs/shared/.gvcci/themes/lego_manhattan/column.txt
@@ -0,0 +1,18 @@
+#d5c699
+#400000
+#483e1e
+#7f3508
+#144a32
+#7e6a09
+#167584
+#5a400e
+#1f7778
+#bdf4ee
+#6d5d2c
+#b84d0b
+#207b53
+#b79a0d
+#1ea3b9
+#8f6516
+#2ba7a8
+#f2fdfc
diff --git a/configs/shared/.gvcci/themes/lego_manhattan/columns-with-headers.txt b/configs/shared/.gvcci/themes/lego_manhattan/columns-with-headers.txt
new file mode 100644
index 0000000000..9db8902179
--- /dev/null
+++ b/configs/shared/.gvcci/themes/lego_manhattan/columns-with-headers.txt
@@ -0,0 +1,25 @@
+Background
+#d5c699
+
+Foreground
+#400000
+
+Normal ANSI Colors
+#483e1e
+#7f3508
+#144a32
+#7e6a09
+#167584
+#5a400e
+#1f7778
+#bdf4ee
+
+Bright ANSI Colors
+#6d5d2c
+#b84d0b
+#207b53
+#b79a0d
+#1ea3b9
+#8f6516
+#2ba7a8
+#f2fdfc
diff --git a/configs/shared/.gvcci/themes/lego_manhattan/iterm.itermcolors b/configs/shared/.gvcci/themes/lego_manhattan/iterm.itermcolors
new file mode 100644
index 0000000000..1bb698a10d
--- /dev/null
+++ b/configs/shared/.gvcci/themes/lego_manhattan/iterm.itermcolors
@@ -0,0 +1,344 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>Ansi 0 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.11764705882352941</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.24313725490196078</real>
+		<key>Red Component</key>
+        <real>0.2823529411764706</real>
+	</dict>
+	<key>Ansi 1 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.03137254901960784</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.20784313725490197</real>
+		<key>Red Component</key>
+        <real>0.4980392156862745</real>
+	</dict>
+	<key>Ansi 10 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.3254901960784314</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.4823529411764706</real>
+		<key>Red Component</key>
+        <real>0.12549019607843137</real>
+	</dict>
+	<key>Ansi 11 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.050980392156862744</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.6039215686274509</real>
+		<key>Red Component</key>
+        <real>0.7176470588235294</real>
+	</dict>
+	<key>Ansi 12 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.7254901960784313</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.6392156862745098</real>
+		<key>Red Component</key>
+        <real>0.11764705882352941</real>
+	</dict>
+	<key>Ansi 13 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.08627450980392157</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.396078431372549</real>
+		<key>Red Component</key>
+        <real>0.5607843137254902</real>
+	</dict>
+	<key>Ansi 14 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.6588235294117647</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.6549019607843137</real>
+		<key>Red Component</key>
+        <real>0.16862745098039217</real>
+	</dict>
+	<key>Ansi 15 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9882352941176471</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.9921568627450981</real>
+		<key>Red Component</key>
+        <real>0.9490196078431372</real>
+	</dict>
+	<key>Ansi 2 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.19607843137254902</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.2901960784313726</real>
+		<key>Red Component</key>
+        <real>0.0784313725490196</real>
+	</dict>
+	<key>Ansi 3 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.03529411764705882</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.41568627450980394</real>
+		<key>Red Component</key>
+        <real>0.49411764705882355</real>
+	</dict>
+	<key>Ansi 4 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.5176470588235295</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.4588235294117647</real>
+		<key>Red Component</key>
+        <real>0.08627450980392157</real>
+	</dict>
+	<key>Ansi 5 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.054901960784313725</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.25098039215686274</real>
+		<key>Red Component</key>
+        <real>0.35294117647058826</real>
+	</dict>
+	<key>Ansi 6 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.47058823529411764</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.4666666666666667</real>
+		<key>Red Component</key>
+        <real>0.12156862745098039</real>
+	</dict>
+	<key>Ansi 7 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9333333333333333</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.9568627450980393</real>
+		<key>Red Component</key>
+        <real>0.7411764705882353</real>
+	</dict>
+	<key>Ansi 8 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.17254901960784313</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.36470588235294116</real>
+		<key>Red Component</key>
+        <real>0.42745098039215684</real>
+	</dict>
+	<key>Ansi 9 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.043137254901960784</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.30196078431372547</real>
+		<key>Red Component</key>
+        <real>0.7215686274509804</real>
+	</dict>
+	<key>Background Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.6</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.7764705882352941</real>
+		<key>Red Component</key>
+        <real>0.8352941176470589</real>
+	</dict>
+	<key>Badge Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>0.5</real>
+		<key>Blue Component</key>
+		<real>0.0</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.1491314172744751</real>
+		<key>Red Component</key>
+		<real>1</real>
+	</dict>
+	<key>Bold Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.0</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.0</real>
+		<key>Red Component</key>
+        <real>0.25098039215686274</real>
+	</dict>
+	<key>Cursor Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.5019607843137255</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.47058823529411764</real>
+		<key>Red Component</key>
+        <real>0.03137254901960784</real>
+	</dict>
+	<key>Cursor Guide Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>0.25</real>
+		<key>Blue Component</key>
+		<real>1</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.9268307089805603</real>
+		<key>Red Component</key>
+		<real>0.70213186740875244</real>
+	</dict>
+	<key>Cursor Text Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.62745100259780884</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.50980395078659058</real>
+		<key>Red Component</key>
+		<real>0.54901963472366333</real>
+	</dict>
+	<key>Foreground Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.0</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.0</real>
+		<key>Red Component</key>
+        <real>0.25098039215686274</real>
+	</dict>
+	<key>Link Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.73423302173614502</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.35916060209274292</real>
+		<key>Red Component</key>
+		<real>0.0</real>
+	</dict>
+	<key>Selected Text Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.6</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.7764705882352941</real>
+		<key>Red Component</key>
+		<real>0.8352941176470589</real>
+	</dict>
+	<key>Selection Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.7254901960784313</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.6823529411764706</real>
+		<key>Red Component</key>
+		<real>0.043137254901960784</real>
+	</dict>
+</dict>
+</plist>
diff --git a/configs/shared/.gvcci/themes/lego_manhattan/iterm.plist b/configs/shared/.gvcci/themes/lego_manhattan/iterm.plist
new file mode 100644
index 0000000000..25b7e082c6
--- /dev/null
+++ b/configs/shared/.gvcci/themes/lego_manhattan/iterm.plist
@@ -0,0 +1,412 @@
+{
+  "Profiles": [
+    {
+      "Use Non-ASCII Font" : false,
+      "Tags" : [
+
+      ],
+      "Ansi 12 Color" : {
+        "Red Component" : 0.11764705882352941,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.7254901960784313,
+        "Alpha Component" : 1,
+        "Green Component" : 0.6392156862745098
+      },
+      "Ansi 7 Color" : {
+        "Red Component" : 0.7411764705882353,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9333333333333333,
+        "Alpha Component" : 1,
+        "Green Component" : 0.9568627450980393
+      },
+      "Ansi 8 Color" : {
+        "Red Component" : 0.42745098039215684,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.17254901960784313,
+        "Alpha Component" : 1,
+        "Green Component" : 0.36470588235294116
+      },
+      "Bold Color" : {
+        "Red Component" : 0.25098039215686274,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.0,
+        "Alpha Component" : 1,
+        "Green Component" : 0.0
+      },
+      "Ansi 9 Color" : {
+        "Red Component" : 0.7215686274509804,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.043137254901960784,
+        "Alpha Component" : 1,
+        "Green Component" : 0.30196078431372547
+      },
+      "Ansi 6 Color" : {
+        "Red Component" : 0.12156862745098039,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.47058823529411764,
+        "Alpha Component" : 1,
+        "Green Component" : 0.4666666666666667
+      },
+      "Right Option Key Sends" : 0,
+      "Rows" : 25,
+      "Default Bookmark" : "No",
+      "Cursor Guide Color" : {
+        "Red Component" : 1,
+        "Color Space" : "Calibrated",
+        "Blue Component" : 0.9999912977218628,
+        "Alpha Component" : 0.04705882352941176,
+        "Green Component" : 0.9999743700027466
+      },
+      "Non-ASCII Anti Aliased" : true,
+      "Use Bright Bold" : true,
+      "Ansi 10 Color" : {
+        "Red Component" : 0.12549019607843137,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.3254901960784314,
+        "Alpha Component" : 1,
+        "Green Component" : 0.4823529411764706
+      },
+      "Use Cursor Guide" : false,
+      "Ambiguous Double Width" : false,
+      "Jobs to Ignore" : [
+        "rlogin",
+        "ssh",
+        "slogin",
+        "telnet"
+      ],
+      "Ansi 15 Color" : {
+        "Red Component" : 0.9490196078431372,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9882352941176471,
+        "Alpha Component" : 1,
+        "Green Component" : 0.9921568627450981
+      },
+      "Foreground Color" : {
+        "Red Component" : 0.25098039215686274,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.0,
+        "Alpha Component" : 1,
+        "Green Component" : 0.0
+      },
+      "Working Directory" : "\/Users\/fabricecastel",
+      "Bound Hosts" : [
+
+      ],
+      "Blinking Cursor" : false,
+      "Disable Window Resizing" : true,
+      "Sync Title" : false,
+      "Prompt Before Closing 2" : false,
+      "BM Growl" : false,
+      "Description" : "Default",
+      "Mouse Reporting" : true,
+      "Smart Cursor Color" : false,
+      "Screen" : -1,
+      "Selection Color" : {
+        "Red Component" : 0.043137254901960784,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.7254901960784313,
+        "Alpha Component" : 1,
+        "Green Component" : 0.6823529411764706
+      },
+      "Columns" : 80,
+      "Idle Code" : 0,
+      "Ansi 13 Color" : {
+        "Red Component" : 0.5607843137254902,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.08627450980392157,
+        "Alpha Component" : 1,
+        "Green Component" : 0.396078431372549
+      },
+      "Custom Command" : "Yes",
+      "ASCII Anti Aliased" : true,
+      "Non Ascii Font" : "Monaco 12",
+      "Vertical Spacing" : 1,
+      "Use Bold Font" : true,
+      "Option Key Sends" : 0,
+      "Selected Text Color" : {
+        "Red Component" : 0.8352941176470589,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.6,
+        "Alpha Component" : 1,
+        "Green Component" : 0.7764705882352941
+      },
+      "Background Color" : {
+        "Red Component" : 0.8352941176470589,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.6,
+        "Alpha Component" : 1,
+        "Green Component" : 0.7764705882352941
+      },
+      "Character Encoding" : 4,
+      "Ansi 11 Color" : {
+        "Red Component" : 0.7176470588235294,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.050980392156862744,
+        "Alpha Component" : 1,
+        "Green Component" : 0.6039215686274509
+      },
+      "Use Italic Font" : true,
+      "Unlimited Scrollback" : false,
+      "Keyboard Map" : {
+        "0xf700-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6A"
+        },
+        "0x37-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1f"
+        },
+        "0x32-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x00"
+        },
+        "0xf709-0x20000" : {
+          "Action" : 10,
+          "Text" : "[17;2~"
+        },
+        "0xf70c-0x20000" : {
+          "Action" : 10,
+          "Text" : "[20;2~"
+        },
+        "0xf729-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2H"
+        },
+        "0xf72b-0x40000" : {
+          "Action" : 10,
+          "Text" : "[1;5F"
+        },
+        "0xf705-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2Q"
+        },
+        "0xf703-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6C"
+        },
+        "0xf700-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2A"
+        },
+        "0xf701-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x42"
+        },
+        "0x38-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x7f"
+        },
+        "0x33-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1b"
+        },
+        "0xf703-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2C"
+        },
+        "0xf701-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5B"
+        },
+        "0xf70d-0x20000" : {
+          "Action" : 10,
+          "Text" : "[21;2~"
+        },
+        "0xf702-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6D"
+        },
+        "0xf729-0x40000" : {
+          "Action" : 10,
+          "Text" : "[1;5H"
+        },
+        "0xf706-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2R"
+        },
+        "0x34-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1c"
+        },
+        "0xf700-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x41"
+        },
+        "0x2d-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1f"
+        },
+        "0xf70e-0x20000" : {
+          "Action" : 10,
+          "Text" : "[23;2~"
+        },
+        "0xf702-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2D"
+        },
+        "0xf703-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x43"
+        },
+        "0xf700-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5A"
+        },
+        "0xf707-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2S"
+        },
+        "0xf70a-0x20000" : {
+          "Action" : 10,
+          "Text" : "[18;2~"
+        },
+        "0x35-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1d"
+        },
+        "0xf70f-0x20000" : {
+          "Action" : 10,
+          "Text" : "[24;2~"
+        },
+        "0xf703-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5C"
+        },
+        "0xf701-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6B"
+        },
+        "0xf702-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x44"
+        },
+        "0xf72b-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2F"
+        },
+        "0x36-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1e"
+        },
+        "0xf708-0x20000" : {
+          "Action" : 10,
+          "Text" : "[15;2~"
+        },
+        "0xf701-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2B"
+        },
+        "0xf70b-0x20000" : {
+          "Action" : 10,
+          "Text" : "[19;2~"
+        },
+        "0xf702-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5D"
+        },
+        "0xf704-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2P"
+        }
+      },
+      "Window Type" : 12,
+      "Blur Radius" : 5.168569711538462,
+      "Cursor Type" : 2,
+      "Background Image Location" : "",
+      "Blur" : false,
+      "Badge Color" : {
+        "Red Component" : 1,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0,
+        "Alpha Component" : 0.5,
+        "Green Component" : 0.1491314172744751
+      },
+      "Cursor Boost" : 0,
+      "Scrollback Lines" : 1000,
+      "Send Code When Idle" : false,
+      "Close Sessions On End" : true,
+      "Terminal Type" : "xterm-256color",
+      "Visual Bell" : true,
+      "Flashing Bell" : false,
+      "Silence Bell" : true,
+      "Ansi 14 Color" : {
+        "Red Component" : 0.16862745098039217,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.6588235294117647,
+        "Alpha Component" : 1,
+        "Green Component" : 0.6549019607843137
+      },
+      "Name" : "gvcci",
+      "Cursor Text Color" : {
+        "Red Component" : 0.5490196347236633,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.6274510025978088,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5098039507865906
+      },
+      "Minimum Contrast" : 0,
+      "Shortcut" : "",
+      "Cursor Color" : {
+        "Red Component" : 0.03137254901960784,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.5019607843137255,
+        "Alpha Component" : 1,
+        "Green Component" : 0.47058823529411764
+      },
+      "Ansi 0 Color" : {
+        "Red Component" : 0.2823529411764706,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.11764705882352941,
+        "Alpha Component" : 1,
+        "Green Component" : 0.24313725490196078
+      },
+      "Ansi 1 Color" : {
+        "Red Component" : 0.4980392156862745,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.03137254901960784,
+        "Alpha Component" : 1,
+        "Green Component" : 0.20784313725490197
+      },
+      "Horizontal Spacing" : 1,
+      "Ansi 3 Color" : {
+        "Red Component" : 0.49411764705882355,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.03529411764705882,
+        "Alpha Component" : 1,
+        "Green Component" : 0.41568627450980394
+      },
+      "Ansi 4 Color" : {
+        "Red Component" : 0.08627450980392157,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.5176470588235295,
+        "Alpha Component" : 1,
+        "Green Component" : 0.4588235294117647
+      },
+      "Transparency" : 0,
+      "Guid" : "FBF27982-5D1C-4625-8221-8FFAB9F4A445",
+      "Ansi 2 Color" : {
+        "Red Component" : 0.0784313725490196,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.19607843137254902,
+        "Alpha Component" : 1,
+        "Green Component" : 0.2901960784313726
+      },
+      "Normal Font" : "MesloLGSForPowerline-Regular 12",
+      "Custom Directory" : "No",
+      "Link Color" : {
+        "Red Component" : 0,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.734233021736145,
+        "Alpha Component" : 1,
+        "Green Component" : 0.3591606020927429
+      },
+      "Ansi 5 Color" : {
+        "Red Component" : 0.35294117647058826,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.054901960784313725,
+        "Alpha Component" : 1,
+        "Green Component" : 0.25098039215686274
+      },
+    }
+  ]
+}
diff --git a/configs/shared/.gvcci/themes/lego_manhattan/json-scheme.json b/configs/shared/.gvcci/themes/lego_manhattan/json-scheme.json
new file mode 100644
index 0000000000..c1185bffc6
--- /dev/null
+++ b/configs/shared/.gvcci/themes/lego_manhattan/json-scheme.json
@@ -0,0 +1,24 @@
+{
+  "name": "GVCCI Color Scheme",
+  "author": "",
+  "color": [
+    "#483e1e",
+    "#7f3508",
+    "#144a32",
+    "#7e6a09",
+    "#167584",
+    "#5a400e",
+    "#1f7778",
+    "#bdf4ee",
+    "#6d5d2c",
+    "#b84d0b",
+    "#207b53",
+    "#b79a0d",
+    "#1ea3b9",
+    "#8f6516",
+    "#2ba7a8",
+    "#f2fdfc"
+  ],
+  "foreground": "#400000",
+  "background": "#d5c699"
+}
diff --git a/configs/shared/.gvcci/themes/lego_manhattan/nospace.txt b/configs/shared/.gvcci/themes/lego_manhattan/nospace.txt
new file mode 100644
index 0000000000..0787bf3d5b
--- /dev/null
+++ b/configs/shared/.gvcci/themes/lego_manhattan/nospace.txt
@@ -0,0 +1 @@
+#d5c699#400000#483e1e#7f3508#144a32#7e6a09#167584#5a400e#1f7778#bdf4ee#6d5d2c#b84d0b#207b53#b79a0d#1ea3b9#8f6516#2ba7a8#f2fdfc
diff --git a/configs/shared/.gvcci/themes/lego_manhattan/tilix.json b/configs/shared/.gvcci/themes/lego_manhattan/tilix.json
new file mode 100644
index 0000000000..a88d72a15e
--- /dev/null
+++ b/configs/shared/.gvcci/themes/lego_manhattan/tilix.json
@@ -0,0 +1,33 @@
+{
+    "name": "Gvcci",
+    "comment": "Gvcci generated theme.",
+    "foreground-color": "#400000",
+    "background-color": "#d5c699",
+    "use-theme-colors": false,
+    "use-highlight-color": false,
+    "highlight-foreground-color": "#d5c699",
+    "highlight-background-color": "#0baeb9",
+    "use-cursor-color": false,
+    "cursor-foreground-color": "#087880",
+    "cursor-background-color": "#087880",
+    "use-badge-color": true,
+    "badge-color": "#400000",
+    "palette": [
+        "#483e1e",
+        "#7f3508",
+        "#144a32",
+        "#7e6a09",
+        "#167584",
+        "#5a400e",
+        "#1f7778",
+        "#bdf4ee",
+        "#6d5d2c",
+        "#b84d0b",
+        "#207b53",
+        "#b79a0d",
+        "#1ea3b9",
+        "#8f6516",
+        "#2ba7a8",
+        "#f2fdfc"
+    ]
+}
\ No newline at end of file
diff --git a/configs/shared/.gvcci/themes/lego_manhattan/wallpaper b/configs/shared/.gvcci/themes/lego_manhattan/wallpaper
new file mode 100644
index 0000000000..c5fa8cae26
--- /dev/null
+++ b/configs/shared/.gvcci/themes/lego_manhattan/wallpaper
Binary files differdiff --git a/configs/shared/.gvcci/themes/lego_manhattan/xresources-colors.txt b/configs/shared/.gvcci/themes/lego_manhattan/xresources-colors.txt
new file mode 100644
index 0000000000..51f6b06b58
--- /dev/null
+++ b/configs/shared/.gvcci/themes/lego_manhattan/xresources-colors.txt
@@ -0,0 +1,37 @@
+! COLORS
+! special
+*.foreground:   #400000
+*.background:   #d5c699
+*.cursorColor:  #400000
+
+! black
+*.color0:       #483e1e
+*.color8:       #6d5d2c
+
+! red
+*.color1:       #7f3508
+*.color9:       #b84d0b
+
+! green
+*.color2:       #144a32
+*.color10:      #207b53
+
+! yellow
+*.color3:       #7e6a09
+*.color11:      #b79a0d
+
+! blue
+*.color4:       #167584
+*.color12:      #1ea3b9
+
+! magenta
+*.color5:       #5a400e
+*.color13:      #8f6516
+
+! cyan
+*.color6:       #1f7778
+*.color14:      #2ba7a8
+
+! white
+*.color7:       #bdf4ee
+*.color15:      #f2fdfc
diff --git a/configs/shared/.gvcci/themes/lightbulb_4k/colors.sh b/configs/shared/.gvcci/themes/lightbulb_4k/colors.sh
new file mode 100644
index 0000000000..32c4efefa6
--- /dev/null
+++ b/configs/shared/.gvcci/themes/lightbulb_4k/colors.sh
@@ -0,0 +1,23 @@
+
+# Special
+background='#000000'
+foreground='#cfedff'
+cursor='#cfedff'
+
+# Colors
+color0='#1a1a1a'
+color1='#f43131'
+color2='#3d66c9'
+color3='#eca601'
+color4='#fe9d00'
+color5='#f58402'
+color6='#fd5807'
+color7='#fcb5c3'
+color8='#333333'
+color9='#fc6767'
+color10='#6b8bd9'
+color11='#ffc02c'
+color12='#ffb53c'
+color13='#ffa135'
+color14='#ff8042'
+color15='#fff0f3'
diff --git a/configs/shared/.gvcci/themes/lightbulb_4k/column.txt b/configs/shared/.gvcci/themes/lightbulb_4k/column.txt
new file mode 100644
index 0000000000..1ace3fcfc1
--- /dev/null
+++ b/configs/shared/.gvcci/themes/lightbulb_4k/column.txt
@@ -0,0 +1,18 @@
+#000000
+#cfedff
+#1a1a1a
+#f43131
+#3d66c9
+#eca601
+#fe9d00
+#f58402
+#fd5807
+#fcb5c3
+#333333
+#fc6767
+#6b8bd9
+#ffc02c
+#ffb53c
+#ffa135
+#ff8042
+#fff0f3
diff --git a/configs/shared/.gvcci/themes/lightbulb_4k/columns-with-headers.txt b/configs/shared/.gvcci/themes/lightbulb_4k/columns-with-headers.txt
new file mode 100644
index 0000000000..5797f1965b
--- /dev/null
+++ b/configs/shared/.gvcci/themes/lightbulb_4k/columns-with-headers.txt
@@ -0,0 +1,25 @@
+Background
+#000000
+
+Foreground
+#cfedff
+
+Normal ANSI Colors
+#1a1a1a
+#f43131
+#3d66c9
+#eca601
+#fe9d00
+#f58402
+#fd5807
+#fcb5c3
+
+Bright ANSI Colors
+#333333
+#fc6767
+#6b8bd9
+#ffc02c
+#ffb53c
+#ffa135
+#ff8042
+#fff0f3
diff --git a/configs/shared/.gvcci/themes/lightbulb_4k/iterm.itermcolors b/configs/shared/.gvcci/themes/lightbulb_4k/iterm.itermcolors
new file mode 100644
index 0000000000..fdf1c102be
--- /dev/null
+++ b/configs/shared/.gvcci/themes/lightbulb_4k/iterm.itermcolors
@@ -0,0 +1,344 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>Ansi 0 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.10196078431372549</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.10196078431372549</real>
+		<key>Red Component</key>
+        <real>0.10196078431372549</real>
+	</dict>
+	<key>Ansi 1 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.19215686274509805</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.19215686274509805</real>
+		<key>Red Component</key>
+        <real>0.9568627450980393</real>
+	</dict>
+	<key>Ansi 10 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.8509803921568627</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5450980392156862</real>
+		<key>Red Component</key>
+        <real>0.4196078431372549</real>
+	</dict>
+	<key>Ansi 11 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.17254901960784313</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.7529411764705882</real>
+		<key>Red Component</key>
+        <real>1.0</real>
+	</dict>
+	<key>Ansi 12 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.23529411764705882</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.7098039215686275</real>
+		<key>Red Component</key>
+        <real>1.0</real>
+	</dict>
+	<key>Ansi 13 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.20784313725490197</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.6313725490196078</real>
+		<key>Red Component</key>
+        <real>1.0</real>
+	</dict>
+	<key>Ansi 14 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.25882352941176473</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5019607843137255</real>
+		<key>Red Component</key>
+        <real>1.0</real>
+	</dict>
+	<key>Ansi 15 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9529411764705882</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.9411764705882353</real>
+		<key>Red Component</key>
+        <real>1.0</real>
+	</dict>
+	<key>Ansi 2 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.788235294117647</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.4</real>
+		<key>Red Component</key>
+        <real>0.23921568627450981</real>
+	</dict>
+	<key>Ansi 3 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.00392156862745098</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.6509803921568628</real>
+		<key>Red Component</key>
+        <real>0.9254901960784314</real>
+	</dict>
+	<key>Ansi 4 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.0</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.615686274509804</real>
+		<key>Red Component</key>
+        <real>0.996078431372549</real>
+	</dict>
+	<key>Ansi 5 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.00784313725490196</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5176470588235295</real>
+		<key>Red Component</key>
+        <real>0.9607843137254902</real>
+	</dict>
+	<key>Ansi 6 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.027450980392156862</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.34509803921568627</real>
+		<key>Red Component</key>
+        <real>0.9921568627450981</real>
+	</dict>
+	<key>Ansi 7 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.7647058823529411</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.7098039215686275</real>
+		<key>Red Component</key>
+        <real>0.9882352941176471</real>
+	</dict>
+	<key>Ansi 8 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.2</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.2</real>
+		<key>Red Component</key>
+        <real>0.2</real>
+	</dict>
+	<key>Ansi 9 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.403921568627451</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.403921568627451</real>
+		<key>Red Component</key>
+        <real>0.9882352941176471</real>
+	</dict>
+	<key>Background Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.0</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.0</real>
+		<key>Red Component</key>
+        <real>0.0</real>
+	</dict>
+	<key>Badge Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>0.5</real>
+		<key>Blue Component</key>
+		<real>0.0</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.1491314172744751</real>
+		<key>Red Component</key>
+		<real>1</real>
+	</dict>
+	<key>Bold Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>1.0</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.9294117647058824</real>
+		<key>Red Component</key>
+        <real>0.8117647058823529</real>
+	</dict>
+	<key>Cursor Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.1568627450980392</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.34901960784313724</real>
+		<key>Red Component</key>
+        <real>0.803921568627451</real>
+	</dict>
+	<key>Cursor Guide Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>0.25</real>
+		<key>Blue Component</key>
+		<real>1</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.9268307089805603</real>
+		<key>Red Component</key>
+		<real>0.70213186740875244</real>
+	</dict>
+	<key>Cursor Text Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.62745100259780884</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.50980395078659058</real>
+		<key>Red Component</key>
+		<real>0.54901963472366333</real>
+	</dict>
+	<key>Foreground Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>1.0</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.9294117647058824</real>
+		<key>Red Component</key>
+        <real>0.8117647058823529</real>
+	</dict>
+	<key>Link Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.73423302173614502</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.35916060209274292</real>
+		<key>Red Component</key>
+		<real>0.0</real>
+	</dict>
+	<key>Selected Text Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.0</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.0</real>
+		<key>Red Component</key>
+		<real>0.0</real>
+	</dict>
+	<key>Selection Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.32941176470588235</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.49019607843137253</real>
+		<key>Red Component</key>
+		<real>0.8745098039215686</real>
+	</dict>
+</dict>
+</plist>
diff --git a/configs/shared/.gvcci/themes/lightbulb_4k/iterm.plist b/configs/shared/.gvcci/themes/lightbulb_4k/iterm.plist
new file mode 100644
index 0000000000..768f8ff7fe
--- /dev/null
+++ b/configs/shared/.gvcci/themes/lightbulb_4k/iterm.plist
@@ -0,0 +1,412 @@
+{
+  "Profiles": [
+    {
+      "Use Non-ASCII Font" : false,
+      "Tags" : [
+
+      ],
+      "Ansi 12 Color" : {
+        "Red Component" : 1.0,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.23529411764705882,
+        "Alpha Component" : 1,
+        "Green Component" : 0.7098039215686275
+      },
+      "Ansi 7 Color" : {
+        "Red Component" : 0.9882352941176471,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.7647058823529411,
+        "Alpha Component" : 1,
+        "Green Component" : 0.7098039215686275
+      },
+      "Ansi 8 Color" : {
+        "Red Component" : 0.2,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.2,
+        "Alpha Component" : 1,
+        "Green Component" : 0.2
+      },
+      "Bold Color" : {
+        "Red Component" : 0.8117647058823529,
+        "Color Space" : "sRGB",
+        "Blue Component" : 1.0,
+        "Alpha Component" : 1,
+        "Green Component" : 0.9294117647058824
+      },
+      "Ansi 9 Color" : {
+        "Red Component" : 0.9882352941176471,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.403921568627451,
+        "Alpha Component" : 1,
+        "Green Component" : 0.403921568627451
+      },
+      "Ansi 6 Color" : {
+        "Red Component" : 0.9921568627450981,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.027450980392156862,
+        "Alpha Component" : 1,
+        "Green Component" : 0.34509803921568627
+      },
+      "Right Option Key Sends" : 0,
+      "Rows" : 25,
+      "Default Bookmark" : "No",
+      "Cursor Guide Color" : {
+        "Red Component" : 1,
+        "Color Space" : "Calibrated",
+        "Blue Component" : 0.9999912977218628,
+        "Alpha Component" : 0.04705882352941176,
+        "Green Component" : 0.9999743700027466
+      },
+      "Non-ASCII Anti Aliased" : true,
+      "Use Bright Bold" : true,
+      "Ansi 10 Color" : {
+        "Red Component" : 0.4196078431372549,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.8509803921568627,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5450980392156862
+      },
+      "Use Cursor Guide" : false,
+      "Ambiguous Double Width" : false,
+      "Jobs to Ignore" : [
+        "rlogin",
+        "ssh",
+        "slogin",
+        "telnet"
+      ],
+      "Ansi 15 Color" : {
+        "Red Component" : 1.0,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9529411764705882,
+        "Alpha Component" : 1,
+        "Green Component" : 0.9411764705882353
+      },
+      "Foreground Color" : {
+        "Red Component" : 0.8117647058823529,
+        "Color Space" : "sRGB",
+        "Blue Component" : 1.0,
+        "Alpha Component" : 1,
+        "Green Component" : 0.9294117647058824
+      },
+      "Working Directory" : "\/Users\/fabricecastel",
+      "Bound Hosts" : [
+
+      ],
+      "Blinking Cursor" : false,
+      "Disable Window Resizing" : true,
+      "Sync Title" : false,
+      "Prompt Before Closing 2" : false,
+      "BM Growl" : false,
+      "Description" : "Default",
+      "Mouse Reporting" : true,
+      "Smart Cursor Color" : false,
+      "Screen" : -1,
+      "Selection Color" : {
+        "Red Component" : 0.8745098039215686,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.32941176470588235,
+        "Alpha Component" : 1,
+        "Green Component" : 0.49019607843137253
+      },
+      "Columns" : 80,
+      "Idle Code" : 0,
+      "Ansi 13 Color" : {
+        "Red Component" : 1.0,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.20784313725490197,
+        "Alpha Component" : 1,
+        "Green Component" : 0.6313725490196078
+      },
+      "Custom Command" : "Yes",
+      "ASCII Anti Aliased" : true,
+      "Non Ascii Font" : "Monaco 12",
+      "Vertical Spacing" : 1,
+      "Use Bold Font" : true,
+      "Option Key Sends" : 0,
+      "Selected Text Color" : {
+        "Red Component" : 0.0,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.0,
+        "Alpha Component" : 1,
+        "Green Component" : 0.0
+      },
+      "Background Color" : {
+        "Red Component" : 0.0,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.0,
+        "Alpha Component" : 1,
+        "Green Component" : 0.0
+      },
+      "Character Encoding" : 4,
+      "Ansi 11 Color" : {
+        "Red Component" : 1.0,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.17254901960784313,
+        "Alpha Component" : 1,
+        "Green Component" : 0.7529411764705882
+      },
+      "Use Italic Font" : true,
+      "Unlimited Scrollback" : false,
+      "Keyboard Map" : {
+        "0xf700-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6A"
+        },
+        "0x37-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1f"
+        },
+        "0x32-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x00"
+        },
+        "0xf709-0x20000" : {
+          "Action" : 10,
+          "Text" : "[17;2~"
+        },
+        "0xf70c-0x20000" : {
+          "Action" : 10,
+          "Text" : "[20;2~"
+        },
+        "0xf729-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2H"
+        },
+        "0xf72b-0x40000" : {
+          "Action" : 10,
+          "Text" : "[1;5F"
+        },
+        "0xf705-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2Q"
+        },
+        "0xf703-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6C"
+        },
+        "0xf700-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2A"
+        },
+        "0xf701-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x42"
+        },
+        "0x38-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x7f"
+        },
+        "0x33-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1b"
+        },
+        "0xf703-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2C"
+        },
+        "0xf701-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5B"
+        },
+        "0xf70d-0x20000" : {
+          "Action" : 10,
+          "Text" : "[21;2~"
+        },
+        "0xf702-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6D"
+        },
+        "0xf729-0x40000" : {
+          "Action" : 10,
+          "Text" : "[1;5H"
+        },
+        "0xf706-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2R"
+        },
+        "0x34-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1c"
+        },
+        "0xf700-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x41"
+        },
+        "0x2d-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1f"
+        },
+        "0xf70e-0x20000" : {
+          "Action" : 10,
+          "Text" : "[23;2~"
+        },
+        "0xf702-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2D"
+        },
+        "0xf703-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x43"
+        },
+        "0xf700-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5A"
+        },
+        "0xf707-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2S"
+        },
+        "0xf70a-0x20000" : {
+          "Action" : 10,
+          "Text" : "[18;2~"
+        },
+        "0x35-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1d"
+        },
+        "0xf70f-0x20000" : {
+          "Action" : 10,
+          "Text" : "[24;2~"
+        },
+        "0xf703-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5C"
+        },
+        "0xf701-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6B"
+        },
+        "0xf702-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x44"
+        },
+        "0xf72b-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2F"
+        },
+        "0x36-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1e"
+        },
+        "0xf708-0x20000" : {
+          "Action" : 10,
+          "Text" : "[15;2~"
+        },
+        "0xf701-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2B"
+        },
+        "0xf70b-0x20000" : {
+          "Action" : 10,
+          "Text" : "[19;2~"
+        },
+        "0xf702-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5D"
+        },
+        "0xf704-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2P"
+        }
+      },
+      "Window Type" : 12,
+      "Blur Radius" : 5.168569711538462,
+      "Cursor Type" : 2,
+      "Background Image Location" : "",
+      "Blur" : false,
+      "Badge Color" : {
+        "Red Component" : 1,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0,
+        "Alpha Component" : 0.5,
+        "Green Component" : 0.1491314172744751
+      },
+      "Cursor Boost" : 0,
+      "Scrollback Lines" : 1000,
+      "Send Code When Idle" : false,
+      "Close Sessions On End" : true,
+      "Terminal Type" : "xterm-256color",
+      "Visual Bell" : true,
+      "Flashing Bell" : false,
+      "Silence Bell" : true,
+      "Ansi 14 Color" : {
+        "Red Component" : 1.0,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.25882352941176473,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5019607843137255
+      },
+      "Name" : "gvcci",
+      "Cursor Text Color" : {
+        "Red Component" : 0.5490196347236633,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.6274510025978088,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5098039507865906
+      },
+      "Minimum Contrast" : 0,
+      "Shortcut" : "",
+      "Cursor Color" : {
+        "Red Component" : 0.803921568627451,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.1568627450980392,
+        "Alpha Component" : 1,
+        "Green Component" : 0.34901960784313724
+      },
+      "Ansi 0 Color" : {
+        "Red Component" : 0.10196078431372549,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.10196078431372549,
+        "Alpha Component" : 1,
+        "Green Component" : 0.10196078431372549
+      },
+      "Ansi 1 Color" : {
+        "Red Component" : 0.9568627450980393,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.19215686274509805,
+        "Alpha Component" : 1,
+        "Green Component" : 0.19215686274509805
+      },
+      "Horizontal Spacing" : 1,
+      "Ansi 3 Color" : {
+        "Red Component" : 0.9254901960784314,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.00392156862745098,
+        "Alpha Component" : 1,
+        "Green Component" : 0.6509803921568628
+      },
+      "Ansi 4 Color" : {
+        "Red Component" : 0.996078431372549,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.0,
+        "Alpha Component" : 1,
+        "Green Component" : 0.615686274509804
+      },
+      "Transparency" : 0,
+      "Guid" : "FBF27982-5D1C-4625-8221-8FFAB9F4A445",
+      "Ansi 2 Color" : {
+        "Red Component" : 0.23921568627450981,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.788235294117647,
+        "Alpha Component" : 1,
+        "Green Component" : 0.4
+      },
+      "Normal Font" : "MesloLGSForPowerline-Regular 12",
+      "Custom Directory" : "No",
+      "Link Color" : {
+        "Red Component" : 0,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.734233021736145,
+        "Alpha Component" : 1,
+        "Green Component" : 0.3591606020927429
+      },
+      "Ansi 5 Color" : {
+        "Red Component" : 0.9607843137254902,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.00784313725490196,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5176470588235295
+      },
+    }
+  ]
+}
diff --git a/configs/shared/.gvcci/themes/lightbulb_4k/json-scheme.json b/configs/shared/.gvcci/themes/lightbulb_4k/json-scheme.json
new file mode 100644
index 0000000000..693a8c2568
--- /dev/null
+++ b/configs/shared/.gvcci/themes/lightbulb_4k/json-scheme.json
@@ -0,0 +1,24 @@
+{
+  "name": "GVCCI Color Scheme",
+  "author": "",
+  "color": [
+    "#1a1a1a",
+    "#f43131",
+    "#3d66c9",
+    "#eca601",
+    "#fe9d00",
+    "#f58402",
+    "#fd5807",
+    "#fcb5c3",
+    "#333333",
+    "#fc6767",
+    "#6b8bd9",
+    "#ffc02c",
+    "#ffb53c",
+    "#ffa135",
+    "#ff8042",
+    "#fff0f3"
+  ],
+  "foreground": "#cfedff",
+  "background": "#000000"
+}
diff --git a/configs/shared/.gvcci/themes/lightbulb_4k/nospace.txt b/configs/shared/.gvcci/themes/lightbulb_4k/nospace.txt
new file mode 100644
index 0000000000..65ac30278c
--- /dev/null
+++ b/configs/shared/.gvcci/themes/lightbulb_4k/nospace.txt
@@ -0,0 +1 @@
+#000000#cfedff#1a1a1a#f43131#3d66c9#eca601#fe9d00#f58402#fd5807#fcb5c3#333333#fc6767#6b8bd9#ffc02c#ffb53c#ffa135#ff8042#fff0f3
diff --git a/configs/shared/.gvcci/themes/lightbulb_4k/tilix.json b/configs/shared/.gvcci/themes/lightbulb_4k/tilix.json
new file mode 100644
index 0000000000..c2e378f9aa
--- /dev/null
+++ b/configs/shared/.gvcci/themes/lightbulb_4k/tilix.json
@@ -0,0 +1,33 @@
+{
+    "name": "Gvcci",
+    "comment": "Gvcci generated theme.",
+    "foreground-color": "#cfedff",
+    "background-color": "#000000",
+    "use-theme-colors": false,
+    "use-highlight-color": false,
+    "highlight-foreground-color": "#000000",
+    "highlight-background-color": "#df7d54",
+    "use-cursor-color": false,
+    "cursor-foreground-color": "#cd5928",
+    "cursor-background-color": "#cd5928",
+    "use-badge-color": true,
+    "badge-color": "#cfedff",
+    "palette": [
+        "#1a1a1a",
+        "#f43131",
+        "#3d66c9",
+        "#eca601",
+        "#fe9d00",
+        "#f58402",
+        "#fd5807",
+        "#fcb5c3",
+        "#333333",
+        "#fc6767",
+        "#6b8bd9",
+        "#ffc02c",
+        "#ffb53c",
+        "#ffa135",
+        "#ff8042",
+        "#fff0f3"
+    ]
+}
\ No newline at end of file
diff --git a/configs/shared/.gvcci/themes/lightbulb_4k/wallpaper b/configs/shared/.gvcci/themes/lightbulb_4k/wallpaper
new file mode 100644
index 0000000000..2319b5dfaf
--- /dev/null
+++ b/configs/shared/.gvcci/themes/lightbulb_4k/wallpaper
Binary files differdiff --git a/configs/shared/.gvcci/themes/lightbulb_4k/xresources-colors.txt b/configs/shared/.gvcci/themes/lightbulb_4k/xresources-colors.txt
new file mode 100644
index 0000000000..7644ec9ad6
--- /dev/null
+++ b/configs/shared/.gvcci/themes/lightbulb_4k/xresources-colors.txt
@@ -0,0 +1,37 @@
+! COLORS
+! special
+*.foreground:   #cfedff
+*.background:   #000000
+*.cursorColor:  #cfedff
+
+! black
+*.color0:       #1a1a1a
+*.color8:       #333333
+
+! red
+*.color1:       #f43131
+*.color9:       #fc6767
+
+! green
+*.color2:       #3d66c9
+*.color10:      #6b8bd9
+
+! yellow
+*.color3:       #eca601
+*.color11:      #ffc02c
+
+! blue
+*.color4:       #fe9d00
+*.color12:      #ffb53c
+
+! magenta
+*.color5:       #f58402
+*.color13:      #ffa135
+
+! cyan
+*.color6:       #fd5807
+*.color14:      #ff8042
+
+! white
+*.color7:       #fcb5c3
+*.color15:      #fff0f3
diff --git a/configs/shared/.gvcci/themes/mount_fuji_4k/colors.sh b/configs/shared/.gvcci/themes/mount_fuji_4k/colors.sh
new file mode 100644
index 0000000000..fb4ece50e6
--- /dev/null
+++ b/configs/shared/.gvcci/themes/mount_fuji_4k/colors.sh
@@ -0,0 +1,23 @@
+
+# Special
+background='#dce6f2'
+foreground='#400c00'
+cursor='#400c00'
+
+# Colors
+color0='#1c304a'
+color1='#b47607'
+color2='#2a53db'
+color3='#84837e'
+color4='#0551f9'
+color5='#ab791b'
+color6='#045ee0'
+color7='#cfd4e3'
+color8='#2a486f'
+color9='#f09c09'
+color10='#5c7ce7'
+color11='#a4a29b'
+color12='#3d7afd'
+color13='#de9e25'
+color14='#247dfc'
+color15='#f5f6f9'
diff --git a/configs/shared/.gvcci/themes/mount_fuji_4k/column.txt b/configs/shared/.gvcci/themes/mount_fuji_4k/column.txt
new file mode 100644
index 0000000000..fd572b515b
--- /dev/null
+++ b/configs/shared/.gvcci/themes/mount_fuji_4k/column.txt
@@ -0,0 +1,18 @@
+#dce6f2
+#400c00
+#1c304a
+#b47607
+#2a53db
+#84837e
+#0551f9
+#ab791b
+#045ee0
+#cfd4e3
+#2a486f
+#f09c09
+#5c7ce7
+#a4a29b
+#3d7afd
+#de9e25
+#247dfc
+#f5f6f9
diff --git a/configs/shared/.gvcci/themes/mount_fuji_4k/columns-with-headers.txt b/configs/shared/.gvcci/themes/mount_fuji_4k/columns-with-headers.txt
new file mode 100644
index 0000000000..697088fdb3
--- /dev/null
+++ b/configs/shared/.gvcci/themes/mount_fuji_4k/columns-with-headers.txt
@@ -0,0 +1,25 @@
+Background
+#dce6f2
+
+Foreground
+#400c00
+
+Normal ANSI Colors
+#1c304a
+#b47607
+#2a53db
+#84837e
+#0551f9
+#ab791b
+#045ee0
+#cfd4e3
+
+Bright ANSI Colors
+#2a486f
+#f09c09
+#5c7ce7
+#a4a29b
+#3d7afd
+#de9e25
+#247dfc
+#f5f6f9
diff --git a/configs/shared/.gvcci/themes/mount_fuji_4k/iterm.itermcolors b/configs/shared/.gvcci/themes/mount_fuji_4k/iterm.itermcolors
new file mode 100644
index 0000000000..19f6054446
--- /dev/null
+++ b/configs/shared/.gvcci/themes/mount_fuji_4k/iterm.itermcolors
@@ -0,0 +1,344 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>Ansi 0 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.2901960784313726</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.18823529411764706</real>
+		<key>Red Component</key>
+        <real>0.10980392156862745</real>
+	</dict>
+	<key>Ansi 1 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.027450980392156862</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.4627450980392157</real>
+		<key>Red Component</key>
+        <real>0.7058823529411765</real>
+	</dict>
+	<key>Ansi 10 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9058823529411765</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.48627450980392156</real>
+		<key>Red Component</key>
+        <real>0.3607843137254902</real>
+	</dict>
+	<key>Ansi 11 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.6078431372549019</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.6352941176470588</real>
+		<key>Red Component</key>
+        <real>0.6431372549019608</real>
+	</dict>
+	<key>Ansi 12 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9921568627450981</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.47843137254901963</real>
+		<key>Red Component</key>
+        <real>0.23921568627450981</real>
+	</dict>
+	<key>Ansi 13 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.1450980392156863</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.6196078431372549</real>
+		<key>Red Component</key>
+        <real>0.8705882352941177</real>
+	</dict>
+	<key>Ansi 14 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9882352941176471</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.49019607843137253</real>
+		<key>Red Component</key>
+        <real>0.1411764705882353</real>
+	</dict>
+	<key>Ansi 15 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9764705882352941</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.9647058823529412</real>
+		<key>Red Component</key>
+        <real>0.9607843137254902</real>
+	</dict>
+	<key>Ansi 2 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.8588235294117647</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.3254901960784314</real>
+		<key>Red Component</key>
+        <real>0.16470588235294117</real>
+	</dict>
+	<key>Ansi 3 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.49411764705882355</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5137254901960784</real>
+		<key>Red Component</key>
+        <real>0.5176470588235295</real>
+	</dict>
+	<key>Ansi 4 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9764705882352941</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.3176470588235294</real>
+		<key>Red Component</key>
+        <real>0.0196078431372549</real>
+	</dict>
+	<key>Ansi 5 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.10588235294117647</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.4745098039215686</real>
+		<key>Red Component</key>
+        <real>0.6705882352941176</real>
+	</dict>
+	<key>Ansi 6 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.8784313725490196</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.3686274509803922</real>
+		<key>Red Component</key>
+        <real>0.01568627450980392</real>
+	</dict>
+	<key>Ansi 7 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.8901960784313725</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.8313725490196079</real>
+		<key>Red Component</key>
+        <real>0.8117647058823529</real>
+	</dict>
+	<key>Ansi 8 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.43529411764705883</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.2823529411764706</real>
+		<key>Red Component</key>
+        <real>0.16470588235294117</real>
+	</dict>
+	<key>Ansi 9 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.03529411764705882</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.611764705882353</real>
+		<key>Red Component</key>
+        <real>0.9411764705882353</real>
+	</dict>
+	<key>Background Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9490196078431372</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.9019607843137255</real>
+		<key>Red Component</key>
+        <real>0.8627450980392157</real>
+	</dict>
+	<key>Badge Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>0.5</real>
+		<key>Blue Component</key>
+		<real>0.0</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.1491314172744751</real>
+		<key>Red Component</key>
+		<real>1</real>
+	</dict>
+	<key>Bold Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.0</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.047058823529411764</real>
+		<key>Red Component</key>
+        <real>0.25098039215686274</real>
+	</dict>
+	<key>Cursor Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.6980392156862745</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.396078431372549</real>
+		<key>Red Component</key>
+        <real>0.14901960784313725</real>
+	</dict>
+	<key>Cursor Guide Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>0.25</real>
+		<key>Blue Component</key>
+		<real>1</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.9268307089805603</real>
+		<key>Red Component</key>
+		<real>0.70213186740875244</real>
+	</dict>
+	<key>Cursor Text Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.62745100259780884</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.50980395078659058</real>
+		<key>Red Component</key>
+		<real>0.54901963472366333</real>
+	</dict>
+	<key>Foreground Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.0</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.047058823529411764</real>
+		<key>Red Component</key>
+        <real>0.25098039215686274</real>
+	</dict>
+	<key>Link Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.73423302173614502</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.35916060209274292</real>
+		<key>Red Component</key>
+		<real>0.0</real>
+	</dict>
+	<key>Selected Text Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.9490196078431372</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.9019607843137255</real>
+		<key>Red Component</key>
+		<real>0.8627450980392157</real>
+	</dict>
+	<key>Selection Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.8392156862745098</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.5098039215686274</real>
+		<key>Red Component</key>
+		<real>0.24705882352941178</real>
+	</dict>
+</dict>
+</plist>
diff --git a/configs/shared/.gvcci/themes/mount_fuji_4k/iterm.plist b/configs/shared/.gvcci/themes/mount_fuji_4k/iterm.plist
new file mode 100644
index 0000000000..41a8cd8c7d
--- /dev/null
+++ b/configs/shared/.gvcci/themes/mount_fuji_4k/iterm.plist
@@ -0,0 +1,412 @@
+{
+  "Profiles": [
+    {
+      "Use Non-ASCII Font" : false,
+      "Tags" : [
+
+      ],
+      "Ansi 12 Color" : {
+        "Red Component" : 0.23921568627450981,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9921568627450981,
+        "Alpha Component" : 1,
+        "Green Component" : 0.47843137254901963
+      },
+      "Ansi 7 Color" : {
+        "Red Component" : 0.8117647058823529,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.8901960784313725,
+        "Alpha Component" : 1,
+        "Green Component" : 0.8313725490196079
+      },
+      "Ansi 8 Color" : {
+        "Red Component" : 0.16470588235294117,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.43529411764705883,
+        "Alpha Component" : 1,
+        "Green Component" : 0.2823529411764706
+      },
+      "Bold Color" : {
+        "Red Component" : 0.25098039215686274,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.0,
+        "Alpha Component" : 1,
+        "Green Component" : 0.047058823529411764
+      },
+      "Ansi 9 Color" : {
+        "Red Component" : 0.9411764705882353,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.03529411764705882,
+        "Alpha Component" : 1,
+        "Green Component" : 0.611764705882353
+      },
+      "Ansi 6 Color" : {
+        "Red Component" : 0.01568627450980392,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.8784313725490196,
+        "Alpha Component" : 1,
+        "Green Component" : 0.3686274509803922
+      },
+      "Right Option Key Sends" : 0,
+      "Rows" : 25,
+      "Default Bookmark" : "No",
+      "Cursor Guide Color" : {
+        "Red Component" : 1,
+        "Color Space" : "Calibrated",
+        "Blue Component" : 0.9999912977218628,
+        "Alpha Component" : 0.04705882352941176,
+        "Green Component" : 0.9999743700027466
+      },
+      "Non-ASCII Anti Aliased" : true,
+      "Use Bright Bold" : true,
+      "Ansi 10 Color" : {
+        "Red Component" : 0.3607843137254902,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9058823529411765,
+        "Alpha Component" : 1,
+        "Green Component" : 0.48627450980392156
+      },
+      "Use Cursor Guide" : false,
+      "Ambiguous Double Width" : false,
+      "Jobs to Ignore" : [
+        "rlogin",
+        "ssh",
+        "slogin",
+        "telnet"
+      ],
+      "Ansi 15 Color" : {
+        "Red Component" : 0.9607843137254902,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9764705882352941,
+        "Alpha Component" : 1,
+        "Green Component" : 0.9647058823529412
+      },
+      "Foreground Color" : {
+        "Red Component" : 0.25098039215686274,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.0,
+        "Alpha Component" : 1,
+        "Green Component" : 0.047058823529411764
+      },
+      "Working Directory" : "\/Users\/fabricecastel",
+      "Bound Hosts" : [
+
+      ],
+      "Blinking Cursor" : false,
+      "Disable Window Resizing" : true,
+      "Sync Title" : false,
+      "Prompt Before Closing 2" : false,
+      "BM Growl" : false,
+      "Description" : "Default",
+      "Mouse Reporting" : true,
+      "Smart Cursor Color" : false,
+      "Screen" : -1,
+      "Selection Color" : {
+        "Red Component" : 0.24705882352941178,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.8392156862745098,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5098039215686274
+      },
+      "Columns" : 80,
+      "Idle Code" : 0,
+      "Ansi 13 Color" : {
+        "Red Component" : 0.8705882352941177,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.1450980392156863,
+        "Alpha Component" : 1,
+        "Green Component" : 0.6196078431372549
+      },
+      "Custom Command" : "Yes",
+      "ASCII Anti Aliased" : true,
+      "Non Ascii Font" : "Monaco 12",
+      "Vertical Spacing" : 1,
+      "Use Bold Font" : true,
+      "Option Key Sends" : 0,
+      "Selected Text Color" : {
+        "Red Component" : 0.8627450980392157,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9490196078431372,
+        "Alpha Component" : 1,
+        "Green Component" : 0.9019607843137255
+      },
+      "Background Color" : {
+        "Red Component" : 0.8627450980392157,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9490196078431372,
+        "Alpha Component" : 1,
+        "Green Component" : 0.9019607843137255
+      },
+      "Character Encoding" : 4,
+      "Ansi 11 Color" : {
+        "Red Component" : 0.6431372549019608,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.6078431372549019,
+        "Alpha Component" : 1,
+        "Green Component" : 0.6352941176470588
+      },
+      "Use Italic Font" : true,
+      "Unlimited Scrollback" : false,
+      "Keyboard Map" : {
+        "0xf700-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6A"
+        },
+        "0x37-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1f"
+        },
+        "0x32-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x00"
+        },
+        "0xf709-0x20000" : {
+          "Action" : 10,
+          "Text" : "[17;2~"
+        },
+        "0xf70c-0x20000" : {
+          "Action" : 10,
+          "Text" : "[20;2~"
+        },
+        "0xf729-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2H"
+        },
+        "0xf72b-0x40000" : {
+          "Action" : 10,
+          "Text" : "[1;5F"
+        },
+        "0xf705-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2Q"
+        },
+        "0xf703-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6C"
+        },
+        "0xf700-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2A"
+        },
+        "0xf701-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x42"
+        },
+        "0x38-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x7f"
+        },
+        "0x33-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1b"
+        },
+        "0xf703-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2C"
+        },
+        "0xf701-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5B"
+        },
+        "0xf70d-0x20000" : {
+          "Action" : 10,
+          "Text" : "[21;2~"
+        },
+        "0xf702-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6D"
+        },
+        "0xf729-0x40000" : {
+          "Action" : 10,
+          "Text" : "[1;5H"
+        },
+        "0xf706-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2R"
+        },
+        "0x34-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1c"
+        },
+        "0xf700-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x41"
+        },
+        "0x2d-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1f"
+        },
+        "0xf70e-0x20000" : {
+          "Action" : 10,
+          "Text" : "[23;2~"
+        },
+        "0xf702-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2D"
+        },
+        "0xf703-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x43"
+        },
+        "0xf700-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5A"
+        },
+        "0xf707-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2S"
+        },
+        "0xf70a-0x20000" : {
+          "Action" : 10,
+          "Text" : "[18;2~"
+        },
+        "0x35-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1d"
+        },
+        "0xf70f-0x20000" : {
+          "Action" : 10,
+          "Text" : "[24;2~"
+        },
+        "0xf703-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5C"
+        },
+        "0xf701-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6B"
+        },
+        "0xf702-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x44"
+        },
+        "0xf72b-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2F"
+        },
+        "0x36-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1e"
+        },
+        "0xf708-0x20000" : {
+          "Action" : 10,
+          "Text" : "[15;2~"
+        },
+        "0xf701-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2B"
+        },
+        "0xf70b-0x20000" : {
+          "Action" : 10,
+          "Text" : "[19;2~"
+        },
+        "0xf702-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5D"
+        },
+        "0xf704-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2P"
+        }
+      },
+      "Window Type" : 12,
+      "Blur Radius" : 5.168569711538462,
+      "Cursor Type" : 2,
+      "Background Image Location" : "",
+      "Blur" : false,
+      "Badge Color" : {
+        "Red Component" : 1,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0,
+        "Alpha Component" : 0.5,
+        "Green Component" : 0.1491314172744751
+      },
+      "Cursor Boost" : 0,
+      "Scrollback Lines" : 1000,
+      "Send Code When Idle" : false,
+      "Close Sessions On End" : true,
+      "Terminal Type" : "xterm-256color",
+      "Visual Bell" : true,
+      "Flashing Bell" : false,
+      "Silence Bell" : true,
+      "Ansi 14 Color" : {
+        "Red Component" : 0.1411764705882353,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9882352941176471,
+        "Alpha Component" : 1,
+        "Green Component" : 0.49019607843137253
+      },
+      "Name" : "gvcci",
+      "Cursor Text Color" : {
+        "Red Component" : 0.5490196347236633,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.6274510025978088,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5098039507865906
+      },
+      "Minimum Contrast" : 0,
+      "Shortcut" : "",
+      "Cursor Color" : {
+        "Red Component" : 0.14901960784313725,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.6980392156862745,
+        "Alpha Component" : 1,
+        "Green Component" : 0.396078431372549
+      },
+      "Ansi 0 Color" : {
+        "Red Component" : 0.10980392156862745,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.2901960784313726,
+        "Alpha Component" : 1,
+        "Green Component" : 0.18823529411764706
+      },
+      "Ansi 1 Color" : {
+        "Red Component" : 0.7058823529411765,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.027450980392156862,
+        "Alpha Component" : 1,
+        "Green Component" : 0.4627450980392157
+      },
+      "Horizontal Spacing" : 1,
+      "Ansi 3 Color" : {
+        "Red Component" : 0.5176470588235295,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.49411764705882355,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5137254901960784
+      },
+      "Ansi 4 Color" : {
+        "Red Component" : 0.0196078431372549,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9764705882352941,
+        "Alpha Component" : 1,
+        "Green Component" : 0.3176470588235294
+      },
+      "Transparency" : 0,
+      "Guid" : "FBF27982-5D1C-4625-8221-8FFAB9F4A445",
+      "Ansi 2 Color" : {
+        "Red Component" : 0.16470588235294117,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.8588235294117647,
+        "Alpha Component" : 1,
+        "Green Component" : 0.3254901960784314
+      },
+      "Normal Font" : "MesloLGSForPowerline-Regular 12",
+      "Custom Directory" : "No",
+      "Link Color" : {
+        "Red Component" : 0,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.734233021736145,
+        "Alpha Component" : 1,
+        "Green Component" : 0.3591606020927429
+      },
+      "Ansi 5 Color" : {
+        "Red Component" : 0.6705882352941176,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.10588235294117647,
+        "Alpha Component" : 1,
+        "Green Component" : 0.4745098039215686
+      },
+    }
+  ]
+}
diff --git a/configs/shared/.gvcci/themes/mount_fuji_4k/json-scheme.json b/configs/shared/.gvcci/themes/mount_fuji_4k/json-scheme.json
new file mode 100644
index 0000000000..623acdfd41
--- /dev/null
+++ b/configs/shared/.gvcci/themes/mount_fuji_4k/json-scheme.json
@@ -0,0 +1,24 @@
+{
+  "name": "GVCCI Color Scheme",
+  "author": "",
+  "color": [
+    "#1c304a",
+    "#b47607",
+    "#2a53db",
+    "#84837e",
+    "#0551f9",
+    "#ab791b",
+    "#045ee0",
+    "#cfd4e3",
+    "#2a486f",
+    "#f09c09",
+    "#5c7ce7",
+    "#a4a29b",
+    "#3d7afd",
+    "#de9e25",
+    "#247dfc",
+    "#f5f6f9"
+  ],
+  "foreground": "#400c00",
+  "background": "#dce6f2"
+}
diff --git a/configs/shared/.gvcci/themes/mount_fuji_4k/nospace.txt b/configs/shared/.gvcci/themes/mount_fuji_4k/nospace.txt
new file mode 100644
index 0000000000..e3b7b85fbf
--- /dev/null
+++ b/configs/shared/.gvcci/themes/mount_fuji_4k/nospace.txt
@@ -0,0 +1 @@
+#dce6f2#400c00#1c304a#b47607#2a53db#84837e#0551f9#ab791b#045ee0#cfd4e3#2a486f#f09c09#5c7ce7#a4a29b#3d7afd#de9e25#247dfc#f5f6f9
diff --git a/configs/shared/.gvcci/themes/mount_fuji_4k/tilix.json b/configs/shared/.gvcci/themes/mount_fuji_4k/tilix.json
new file mode 100644
index 0000000000..e619f83057
--- /dev/null
+++ b/configs/shared/.gvcci/themes/mount_fuji_4k/tilix.json
@@ -0,0 +1,33 @@
+{
+    "name": "Gvcci",
+    "comment": "Gvcci generated theme.",
+    "foreground-color": "#400c00",
+    "background-color": "#dce6f2",
+    "use-theme-colors": false,
+    "use-highlight-color": false,
+    "highlight-foreground-color": "#dce6f2",
+    "highlight-background-color": "#3f82d6",
+    "use-cursor-color": false,
+    "cursor-foreground-color": "#2665b2",
+    "cursor-background-color": "#2665b2",
+    "use-badge-color": true,
+    "badge-color": "#400c00",
+    "palette": [
+        "#1c304a",
+        "#b47607",
+        "#2a53db",
+        "#84837e",
+        "#0551f9",
+        "#ab791b",
+        "#045ee0",
+        "#cfd4e3",
+        "#2a486f",
+        "#f09c09",
+        "#5c7ce7",
+        "#a4a29b",
+        "#3d7afd",
+        "#de9e25",
+        "#247dfc",
+        "#f5f6f9"
+    ]
+}
\ No newline at end of file
diff --git a/configs/shared/.gvcci/themes/mount_fuji_4k/wallpaper b/configs/shared/.gvcci/themes/mount_fuji_4k/wallpaper
new file mode 100644
index 0000000000..48c8cca317
--- /dev/null
+++ b/configs/shared/.gvcci/themes/mount_fuji_4k/wallpaper
Binary files differdiff --git a/configs/shared/.gvcci/themes/mount_fuji_4k/xresources-colors.txt b/configs/shared/.gvcci/themes/mount_fuji_4k/xresources-colors.txt
new file mode 100644
index 0000000000..6fd7668bd3
--- /dev/null
+++ b/configs/shared/.gvcci/themes/mount_fuji_4k/xresources-colors.txt
@@ -0,0 +1,37 @@
+! COLORS
+! special
+*.foreground:   #400c00
+*.background:   #dce6f2
+*.cursorColor:  #400c00
+
+! black
+*.color0:       #1c304a
+*.color8:       #2a486f
+
+! red
+*.color1:       #b47607
+*.color9:       #f09c09
+
+! green
+*.color2:       #2a53db
+*.color10:      #5c7ce7
+
+! yellow
+*.color3:       #84837e
+*.color11:      #a4a29b
+
+! blue
+*.color4:       #0551f9
+*.color12:      #3d7afd
+
+! magenta
+*.color5:       #ab791b
+*.color13:      #de9e25
+
+! cyan
+*.color6:       #045ee0
+*.color14:      #247dfc
+
+! white
+*.color7:       #cfd4e3
+*.color15:      #f5f6f9
diff --git a/configs/shared/.gvcci/themes/mount_fuji_flowers_4k/colors.sh b/configs/shared/.gvcci/themes/mount_fuji_flowers_4k/colors.sh
new file mode 100644
index 0000000000..168a4bffd2
--- /dev/null
+++ b/configs/shared/.gvcci/themes/mount_fuji_flowers_4k/colors.sh
@@ -0,0 +1,23 @@
+
+# Special
+background='#a6bcd9'
+foreground='#162000'
+cursor='#162000'
+
+# Colors
+color0='#1e3048'
+color1='#6d6349'
+color2='#073cc4'
+color3='#ab0fbd'
+color4='#0b4492'
+color5='#6b0ecc'
+color6='#52696d'
+color7='#bbd4f7'
+color8='#2e496b'
+color9='#928461'
+color10='#1151f7'
+color11='#d81ced'
+color12='#105ecb'
+color13='#8925f1'
+color14='#6c8a90'
+color15='#f1f6fd'
diff --git a/configs/shared/.gvcci/themes/mount_fuji_flowers_4k/column.txt b/configs/shared/.gvcci/themes/mount_fuji_flowers_4k/column.txt
new file mode 100644
index 0000000000..2327aed5af
--- /dev/null
+++ b/configs/shared/.gvcci/themes/mount_fuji_flowers_4k/column.txt
@@ -0,0 +1,18 @@
+#a6bcd9
+#162000
+#1e3048
+#6d6349
+#073cc4
+#ab0fbd
+#0b4492
+#6b0ecc
+#52696d
+#bbd4f7
+#2e496b
+#928461
+#1151f7
+#d81ced
+#105ecb
+#8925f1
+#6c8a90
+#f1f6fd
diff --git a/configs/shared/.gvcci/themes/mount_fuji_flowers_4k/columns-with-headers.txt b/configs/shared/.gvcci/themes/mount_fuji_flowers_4k/columns-with-headers.txt
new file mode 100644
index 0000000000..9f036745d4
--- /dev/null
+++ b/configs/shared/.gvcci/themes/mount_fuji_flowers_4k/columns-with-headers.txt
@@ -0,0 +1,25 @@
+Background
+#a6bcd9
+
+Foreground
+#162000
+
+Normal ANSI Colors
+#1e3048
+#6d6349
+#073cc4
+#ab0fbd
+#0b4492
+#6b0ecc
+#52696d
+#bbd4f7
+
+Bright ANSI Colors
+#2e496b
+#928461
+#1151f7
+#d81ced
+#105ecb
+#8925f1
+#6c8a90
+#f1f6fd
diff --git a/configs/shared/.gvcci/themes/mount_fuji_flowers_4k/iterm.itermcolors b/configs/shared/.gvcci/themes/mount_fuji_flowers_4k/iterm.itermcolors
new file mode 100644
index 0000000000..2b875f17cd
--- /dev/null
+++ b/configs/shared/.gvcci/themes/mount_fuji_flowers_4k/iterm.itermcolors
@@ -0,0 +1,344 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>Ansi 0 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.2823529411764706</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.18823529411764706</real>
+		<key>Red Component</key>
+        <real>0.11764705882352941</real>
+	</dict>
+	<key>Ansi 1 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.28627450980392155</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.38823529411764707</real>
+		<key>Red Component</key>
+        <real>0.42745098039215684</real>
+	</dict>
+	<key>Ansi 10 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9686274509803922</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.3176470588235294</real>
+		<key>Red Component</key>
+        <real>0.06666666666666667</real>
+	</dict>
+	<key>Ansi 11 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9294117647058824</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.10980392156862745</real>
+		<key>Red Component</key>
+        <real>0.8470588235294118</real>
+	</dict>
+	<key>Ansi 12 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.796078431372549</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.3686274509803922</real>
+		<key>Red Component</key>
+        <real>0.06274509803921569</real>
+	</dict>
+	<key>Ansi 13 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9450980392156862</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.1450980392156863</real>
+		<key>Red Component</key>
+        <real>0.5372549019607843</real>
+	</dict>
+	<key>Ansi 14 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.5647058823529412</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5411764705882353</real>
+		<key>Red Component</key>
+        <real>0.4235294117647059</real>
+	</dict>
+	<key>Ansi 15 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9921568627450981</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.9647058823529412</real>
+		<key>Red Component</key>
+        <real>0.9450980392156862</real>
+	</dict>
+	<key>Ansi 2 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.7686274509803922</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.23529411764705882</real>
+		<key>Red Component</key>
+        <real>0.027450980392156862</real>
+	</dict>
+	<key>Ansi 3 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.7411764705882353</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.058823529411764705</real>
+		<key>Red Component</key>
+        <real>0.6705882352941176</real>
+	</dict>
+	<key>Ansi 4 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.5725490196078431</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.26666666666666666</real>
+		<key>Red Component</key>
+        <real>0.043137254901960784</real>
+	</dict>
+	<key>Ansi 5 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.8</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.054901960784313725</real>
+		<key>Red Component</key>
+        <real>0.4196078431372549</real>
+	</dict>
+	<key>Ansi 6 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.42745098039215684</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.4117647058823529</real>
+		<key>Red Component</key>
+        <real>0.3215686274509804</real>
+	</dict>
+	<key>Ansi 7 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9686274509803922</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.8313725490196079</real>
+		<key>Red Component</key>
+        <real>0.7333333333333333</real>
+	</dict>
+	<key>Ansi 8 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.4196078431372549</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.28627450980392155</real>
+		<key>Red Component</key>
+        <real>0.1803921568627451</real>
+	</dict>
+	<key>Ansi 9 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.3803921568627451</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5176470588235295</real>
+		<key>Red Component</key>
+        <real>0.5725490196078431</real>
+	</dict>
+	<key>Background Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.8509803921568627</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.7372549019607844</real>
+		<key>Red Component</key>
+        <real>0.6509803921568628</real>
+	</dict>
+	<key>Badge Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>0.5</real>
+		<key>Blue Component</key>
+		<real>0.0</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.1491314172744751</real>
+		<key>Red Component</key>
+		<real>1</real>
+	</dict>
+	<key>Bold Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.0</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.12549019607843137</real>
+		<key>Red Component</key>
+        <real>0.08627450980392157</real>
+	</dict>
+	<key>Cursor Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.4549019607843137</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.4117647058823529</real>
+		<key>Red Component</key>
+        <real>0.26666666666666666</real>
+	</dict>
+	<key>Cursor Guide Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>0.25</real>
+		<key>Blue Component</key>
+		<real>1</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.9268307089805603</real>
+		<key>Red Component</key>
+		<real>0.70213186740875244</real>
+	</dict>
+	<key>Cursor Text Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.62745100259780884</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.50980395078659058</real>
+		<key>Red Component</key>
+		<real>0.54901963472366333</real>
+	</dict>
+	<key>Foreground Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.0</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.12549019607843137</real>
+		<key>Red Component</key>
+        <real>0.08627450980392157</real>
+	</dict>
+	<key>Link Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.73423302173614502</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.35916060209274292</real>
+		<key>Red Component</key>
+		<real>0.0</real>
+	</dict>
+	<key>Selected Text Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.8509803921568627</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.7372549019607844</real>
+		<key>Red Component</key>
+		<real>0.6509803921568628</real>
+	</dict>
+	<key>Selection Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.6078431372549019</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.5490196078431373</real>
+		<key>Red Component</key>
+		<real>0.35294117647058826</real>
+	</dict>
+</dict>
+</plist>
diff --git a/configs/shared/.gvcci/themes/mount_fuji_flowers_4k/iterm.plist b/configs/shared/.gvcci/themes/mount_fuji_flowers_4k/iterm.plist
new file mode 100644
index 0000000000..507a282107
--- /dev/null
+++ b/configs/shared/.gvcci/themes/mount_fuji_flowers_4k/iterm.plist
@@ -0,0 +1,412 @@
+{
+  "Profiles": [
+    {
+      "Use Non-ASCII Font" : false,
+      "Tags" : [
+
+      ],
+      "Ansi 12 Color" : {
+        "Red Component" : 0.06274509803921569,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.796078431372549,
+        "Alpha Component" : 1,
+        "Green Component" : 0.3686274509803922
+      },
+      "Ansi 7 Color" : {
+        "Red Component" : 0.7333333333333333,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9686274509803922,
+        "Alpha Component" : 1,
+        "Green Component" : 0.8313725490196079
+      },
+      "Ansi 8 Color" : {
+        "Red Component" : 0.1803921568627451,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.4196078431372549,
+        "Alpha Component" : 1,
+        "Green Component" : 0.28627450980392155
+      },
+      "Bold Color" : {
+        "Red Component" : 0.08627450980392157,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.0,
+        "Alpha Component" : 1,
+        "Green Component" : 0.12549019607843137
+      },
+      "Ansi 9 Color" : {
+        "Red Component" : 0.5725490196078431,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.3803921568627451,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5176470588235295
+      },
+      "Ansi 6 Color" : {
+        "Red Component" : 0.3215686274509804,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.42745098039215684,
+        "Alpha Component" : 1,
+        "Green Component" : 0.4117647058823529
+      },
+      "Right Option Key Sends" : 0,
+      "Rows" : 25,
+      "Default Bookmark" : "No",
+      "Cursor Guide Color" : {
+        "Red Component" : 1,
+        "Color Space" : "Calibrated",
+        "Blue Component" : 0.9999912977218628,
+        "Alpha Component" : 0.04705882352941176,
+        "Green Component" : 0.9999743700027466
+      },
+      "Non-ASCII Anti Aliased" : true,
+      "Use Bright Bold" : true,
+      "Ansi 10 Color" : {
+        "Red Component" : 0.06666666666666667,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9686274509803922,
+        "Alpha Component" : 1,
+        "Green Component" : 0.3176470588235294
+      },
+      "Use Cursor Guide" : false,
+      "Ambiguous Double Width" : false,
+      "Jobs to Ignore" : [
+        "rlogin",
+        "ssh",
+        "slogin",
+        "telnet"
+      ],
+      "Ansi 15 Color" : {
+        "Red Component" : 0.9450980392156862,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9921568627450981,
+        "Alpha Component" : 1,
+        "Green Component" : 0.9647058823529412
+      },
+      "Foreground Color" : {
+        "Red Component" : 0.08627450980392157,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.0,
+        "Alpha Component" : 1,
+        "Green Component" : 0.12549019607843137
+      },
+      "Working Directory" : "\/Users\/fabricecastel",
+      "Bound Hosts" : [
+
+      ],
+      "Blinking Cursor" : false,
+      "Disable Window Resizing" : true,
+      "Sync Title" : false,
+      "Prompt Before Closing 2" : false,
+      "BM Growl" : false,
+      "Description" : "Default",
+      "Mouse Reporting" : true,
+      "Smart Cursor Color" : false,
+      "Screen" : -1,
+      "Selection Color" : {
+        "Red Component" : 0.35294117647058826,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.6078431372549019,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5490196078431373
+      },
+      "Columns" : 80,
+      "Idle Code" : 0,
+      "Ansi 13 Color" : {
+        "Red Component" : 0.5372549019607843,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9450980392156862,
+        "Alpha Component" : 1,
+        "Green Component" : 0.1450980392156863
+      },
+      "Custom Command" : "Yes",
+      "ASCII Anti Aliased" : true,
+      "Non Ascii Font" : "Monaco 12",
+      "Vertical Spacing" : 1,
+      "Use Bold Font" : true,
+      "Option Key Sends" : 0,
+      "Selected Text Color" : {
+        "Red Component" : 0.6509803921568628,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.8509803921568627,
+        "Alpha Component" : 1,
+        "Green Component" : 0.7372549019607844
+      },
+      "Background Color" : {
+        "Red Component" : 0.6509803921568628,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.8509803921568627,
+        "Alpha Component" : 1,
+        "Green Component" : 0.7372549019607844
+      },
+      "Character Encoding" : 4,
+      "Ansi 11 Color" : {
+        "Red Component" : 0.8470588235294118,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9294117647058824,
+        "Alpha Component" : 1,
+        "Green Component" : 0.10980392156862745
+      },
+      "Use Italic Font" : true,
+      "Unlimited Scrollback" : false,
+      "Keyboard Map" : {
+        "0xf700-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6A"
+        },
+        "0x37-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1f"
+        },
+        "0x32-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x00"
+        },
+        "0xf709-0x20000" : {
+          "Action" : 10,
+          "Text" : "[17;2~"
+        },
+        "0xf70c-0x20000" : {
+          "Action" : 10,
+          "Text" : "[20;2~"
+        },
+        "0xf729-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2H"
+        },
+        "0xf72b-0x40000" : {
+          "Action" : 10,
+          "Text" : "[1;5F"
+        },
+        "0xf705-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2Q"
+        },
+        "0xf703-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6C"
+        },
+        "0xf700-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2A"
+        },
+        "0xf701-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x42"
+        },
+        "0x38-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x7f"
+        },
+        "0x33-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1b"
+        },
+        "0xf703-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2C"
+        },
+        "0xf701-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5B"
+        },
+        "0xf70d-0x20000" : {
+          "Action" : 10,
+          "Text" : "[21;2~"
+        },
+        "0xf702-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6D"
+        },
+        "0xf729-0x40000" : {
+          "Action" : 10,
+          "Text" : "[1;5H"
+        },
+        "0xf706-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2R"
+        },
+        "0x34-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1c"
+        },
+        "0xf700-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x41"
+        },
+        "0x2d-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1f"
+        },
+        "0xf70e-0x20000" : {
+          "Action" : 10,
+          "Text" : "[23;2~"
+        },
+        "0xf702-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2D"
+        },
+        "0xf703-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x43"
+        },
+        "0xf700-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5A"
+        },
+        "0xf707-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2S"
+        },
+        "0xf70a-0x20000" : {
+          "Action" : 10,
+          "Text" : "[18;2~"
+        },
+        "0x35-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1d"
+        },
+        "0xf70f-0x20000" : {
+          "Action" : 10,
+          "Text" : "[24;2~"
+        },
+        "0xf703-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5C"
+        },
+        "0xf701-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6B"
+        },
+        "0xf702-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x44"
+        },
+        "0xf72b-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2F"
+        },
+        "0x36-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1e"
+        },
+        "0xf708-0x20000" : {
+          "Action" : 10,
+          "Text" : "[15;2~"
+        },
+        "0xf701-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2B"
+        },
+        "0xf70b-0x20000" : {
+          "Action" : 10,
+          "Text" : "[19;2~"
+        },
+        "0xf702-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5D"
+        },
+        "0xf704-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2P"
+        }
+      },
+      "Window Type" : 12,
+      "Blur Radius" : 5.168569711538462,
+      "Cursor Type" : 2,
+      "Background Image Location" : "",
+      "Blur" : false,
+      "Badge Color" : {
+        "Red Component" : 1,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0,
+        "Alpha Component" : 0.5,
+        "Green Component" : 0.1491314172744751
+      },
+      "Cursor Boost" : 0,
+      "Scrollback Lines" : 1000,
+      "Send Code When Idle" : false,
+      "Close Sessions On End" : true,
+      "Terminal Type" : "xterm-256color",
+      "Visual Bell" : true,
+      "Flashing Bell" : false,
+      "Silence Bell" : true,
+      "Ansi 14 Color" : {
+        "Red Component" : 0.4235294117647059,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.5647058823529412,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5411764705882353
+      },
+      "Name" : "gvcci",
+      "Cursor Text Color" : {
+        "Red Component" : 0.5490196347236633,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.6274510025978088,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5098039507865906
+      },
+      "Minimum Contrast" : 0,
+      "Shortcut" : "",
+      "Cursor Color" : {
+        "Red Component" : 0.26666666666666666,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.4549019607843137,
+        "Alpha Component" : 1,
+        "Green Component" : 0.4117647058823529
+      },
+      "Ansi 0 Color" : {
+        "Red Component" : 0.11764705882352941,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.2823529411764706,
+        "Alpha Component" : 1,
+        "Green Component" : 0.18823529411764706
+      },
+      "Ansi 1 Color" : {
+        "Red Component" : 0.42745098039215684,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.28627450980392155,
+        "Alpha Component" : 1,
+        "Green Component" : 0.38823529411764707
+      },
+      "Horizontal Spacing" : 1,
+      "Ansi 3 Color" : {
+        "Red Component" : 0.6705882352941176,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.7411764705882353,
+        "Alpha Component" : 1,
+        "Green Component" : 0.058823529411764705
+      },
+      "Ansi 4 Color" : {
+        "Red Component" : 0.043137254901960784,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.5725490196078431,
+        "Alpha Component" : 1,
+        "Green Component" : 0.26666666666666666
+      },
+      "Transparency" : 0,
+      "Guid" : "FBF27982-5D1C-4625-8221-8FFAB9F4A445",
+      "Ansi 2 Color" : {
+        "Red Component" : 0.027450980392156862,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.7686274509803922,
+        "Alpha Component" : 1,
+        "Green Component" : 0.23529411764705882
+      },
+      "Normal Font" : "MesloLGSForPowerline-Regular 12",
+      "Custom Directory" : "No",
+      "Link Color" : {
+        "Red Component" : 0,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.734233021736145,
+        "Alpha Component" : 1,
+        "Green Component" : 0.3591606020927429
+      },
+      "Ansi 5 Color" : {
+        "Red Component" : 0.4196078431372549,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.8,
+        "Alpha Component" : 1,
+        "Green Component" : 0.054901960784313725
+      },
+    }
+  ]
+}
diff --git a/configs/shared/.gvcci/themes/mount_fuji_flowers_4k/json-scheme.json b/configs/shared/.gvcci/themes/mount_fuji_flowers_4k/json-scheme.json
new file mode 100644
index 0000000000..3bd17977a7
--- /dev/null
+++ b/configs/shared/.gvcci/themes/mount_fuji_flowers_4k/json-scheme.json
@@ -0,0 +1,24 @@
+{
+  "name": "GVCCI Color Scheme",
+  "author": "",
+  "color": [
+    "#1e3048",
+    "#6d6349",
+    "#073cc4",
+    "#ab0fbd",
+    "#0b4492",
+    "#6b0ecc",
+    "#52696d",
+    "#bbd4f7",
+    "#2e496b",
+    "#928461",
+    "#1151f7",
+    "#d81ced",
+    "#105ecb",
+    "#8925f1",
+    "#6c8a90",
+    "#f1f6fd"
+  ],
+  "foreground": "#162000",
+  "background": "#a6bcd9"
+}
diff --git a/configs/shared/.gvcci/themes/mount_fuji_flowers_4k/nospace.txt b/configs/shared/.gvcci/themes/mount_fuji_flowers_4k/nospace.txt
new file mode 100644
index 0000000000..db95501227
--- /dev/null
+++ b/configs/shared/.gvcci/themes/mount_fuji_flowers_4k/nospace.txt
@@ -0,0 +1 @@
+#a6bcd9#162000#1e3048#6d6349#073cc4#ab0fbd#0b4492#6b0ecc#52696d#bbd4f7#2e496b#928461#1151f7#d81ced#105ecb#8925f1#6c8a90#f1f6fd
diff --git a/configs/shared/.gvcci/themes/mount_fuji_flowers_4k/tilix.json b/configs/shared/.gvcci/themes/mount_fuji_flowers_4k/tilix.json
new file mode 100644
index 0000000000..f5614addaf
--- /dev/null
+++ b/configs/shared/.gvcci/themes/mount_fuji_flowers_4k/tilix.json
@@ -0,0 +1,33 @@
+{
+    "name": "Gvcci",
+    "comment": "Gvcci generated theme.",
+    "foreground-color": "#162000",
+    "background-color": "#a6bcd9",
+    "use-theme-colors": false,
+    "use-highlight-color": false,
+    "highlight-foreground-color": "#a6bcd9",
+    "highlight-background-color": "#5a8c9b",
+    "use-cursor-color": false,
+    "cursor-foreground-color": "#446974",
+    "cursor-background-color": "#446974",
+    "use-badge-color": true,
+    "badge-color": "#162000",
+    "palette": [
+        "#1e3048",
+        "#6d6349",
+        "#073cc4",
+        "#ab0fbd",
+        "#0b4492",
+        "#6b0ecc",
+        "#52696d",
+        "#bbd4f7",
+        "#2e496b",
+        "#928461",
+        "#1151f7",
+        "#d81ced",
+        "#105ecb",
+        "#8925f1",
+        "#6c8a90",
+        "#f1f6fd"
+    ]
+}
\ No newline at end of file
diff --git a/configs/shared/.gvcci/themes/mount_fuji_flowers_4k/wallpaper b/configs/shared/.gvcci/themes/mount_fuji_flowers_4k/wallpaper
new file mode 100644
index 0000000000..238e7e8f26
--- /dev/null
+++ b/configs/shared/.gvcci/themes/mount_fuji_flowers_4k/wallpaper
Binary files differdiff --git a/configs/shared/.gvcci/themes/mount_fuji_flowers_4k/xresources-colors.txt b/configs/shared/.gvcci/themes/mount_fuji_flowers_4k/xresources-colors.txt
new file mode 100644
index 0000000000..b064347812
--- /dev/null
+++ b/configs/shared/.gvcci/themes/mount_fuji_flowers_4k/xresources-colors.txt
@@ -0,0 +1,37 @@
+! COLORS
+! special
+*.foreground:   #162000
+*.background:   #a6bcd9
+*.cursorColor:  #162000
+
+! black
+*.color0:       #1e3048
+*.color8:       #2e496b
+
+! red
+*.color1:       #6d6349
+*.color9:       #928461
+
+! green
+*.color2:       #073cc4
+*.color10:      #1151f7
+
+! yellow
+*.color3:       #ab0fbd
+*.color11:      #d81ced
+
+! blue
+*.color4:       #0b4492
+*.color12:      #105ecb
+
+! magenta
+*.color5:       #6b0ecc
+*.color13:      #8925f1
+
+! cyan
+*.color6:       #52696d
+*.color14:      #6c8a90
+
+! white
+*.color7:       #bbd4f7
+*.color15:      #f1f6fd
diff --git a/configs/shared/.gvcci/themes/pixelated_china/colors.sh b/configs/shared/.gvcci/themes/pixelated_china/colors.sh
new file mode 100644
index 0000000000..bba84d35e2
--- /dev/null
+++ b/configs/shared/.gvcci/themes/pixelated_china/colors.sh
@@ -0,0 +1,23 @@
+
+# Special
+background='#10111f'
+foreground='#71dea0'
+cursor='#71dea0'
+
+# Colors
+color0='#222441'
+color1='#db0252'
+color2='#1d61d6'
+color3='#da0252'
+color4='#0561e4'
+color5='#18af6d'
+color6='#3ea882'
+color7='#c2efdc'
+color8='#333662'
+color9='#fe1d70'
+color10='#4883e8'
+color11='#fe1d70'
+color12='#2b81fb'
+color13='#22e28e'
+color14='#5ec5a0'
+color15='#f3fcf8'
diff --git a/configs/shared/.gvcci/themes/pixelated_china/column.txt b/configs/shared/.gvcci/themes/pixelated_china/column.txt
new file mode 100644
index 0000000000..59fa991020
--- /dev/null
+++ b/configs/shared/.gvcci/themes/pixelated_china/column.txt
@@ -0,0 +1,18 @@
+#10111f
+#71dea0
+#222441
+#db0252
+#1d61d6
+#da0252
+#0561e4
+#18af6d
+#3ea882
+#c2efdc
+#333662
+#fe1d70
+#4883e8
+#fe1d70
+#2b81fb
+#22e28e
+#5ec5a0
+#f3fcf8
diff --git a/configs/shared/.gvcci/themes/pixelated_china/columns-with-headers.txt b/configs/shared/.gvcci/themes/pixelated_china/columns-with-headers.txt
new file mode 100644
index 0000000000..650ed50df1
--- /dev/null
+++ b/configs/shared/.gvcci/themes/pixelated_china/columns-with-headers.txt
@@ -0,0 +1,25 @@
+Background
+#10111f
+
+Foreground
+#71dea0
+
+Normal ANSI Colors
+#222441
+#db0252
+#1d61d6
+#da0252
+#0561e4
+#18af6d
+#3ea882
+#c2efdc
+
+Bright ANSI Colors
+#333662
+#fe1d70
+#4883e8
+#fe1d70
+#2b81fb
+#22e28e
+#5ec5a0
+#f3fcf8
diff --git a/configs/shared/.gvcci/themes/pixelated_china/iterm.itermcolors b/configs/shared/.gvcci/themes/pixelated_china/iterm.itermcolors
new file mode 100644
index 0000000000..db568d20df
--- /dev/null
+++ b/configs/shared/.gvcci/themes/pixelated_china/iterm.itermcolors
@@ -0,0 +1,344 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>Ansi 0 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.2549019607843137</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.1411764705882353</real>
+		<key>Red Component</key>
+        <real>0.13333333333333333</real>
+	</dict>
+	<key>Ansi 1 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.3215686274509804</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.00784313725490196</real>
+		<key>Red Component</key>
+        <real>0.8588235294117647</real>
+	</dict>
+	<key>Ansi 10 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9098039215686274</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5137254901960784</real>
+		<key>Red Component</key>
+        <real>0.2823529411764706</real>
+	</dict>
+	<key>Ansi 11 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.4392156862745098</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.11372549019607843</real>
+		<key>Red Component</key>
+        <real>0.996078431372549</real>
+	</dict>
+	<key>Ansi 12 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.984313725490196</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5058823529411764</real>
+		<key>Red Component</key>
+        <real>0.16862745098039217</real>
+	</dict>
+	<key>Ansi 13 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.5568627450980392</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.8862745098039215</real>
+		<key>Red Component</key>
+        <real>0.13333333333333333</real>
+	</dict>
+	<key>Ansi 14 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.6274509803921569</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.7725490196078432</real>
+		<key>Red Component</key>
+        <real>0.3686274509803922</real>
+	</dict>
+	<key>Ansi 15 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9725490196078431</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.9882352941176471</real>
+		<key>Red Component</key>
+        <real>0.9529411764705882</real>
+	</dict>
+	<key>Ansi 2 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.8392156862745098</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.3803921568627451</real>
+		<key>Red Component</key>
+        <real>0.11372549019607843</real>
+	</dict>
+	<key>Ansi 3 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.3215686274509804</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.00784313725490196</real>
+		<key>Red Component</key>
+        <real>0.8549019607843137</real>
+	</dict>
+	<key>Ansi 4 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.8941176470588236</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.3803921568627451</real>
+		<key>Red Component</key>
+        <real>0.0196078431372549</real>
+	</dict>
+	<key>Ansi 5 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.42745098039215684</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.6862745098039216</real>
+		<key>Red Component</key>
+        <real>0.09411764705882353</real>
+	</dict>
+	<key>Ansi 6 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.5098039215686274</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.6588235294117647</real>
+		<key>Red Component</key>
+        <real>0.24313725490196078</real>
+	</dict>
+	<key>Ansi 7 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.8627450980392157</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.9372549019607843</real>
+		<key>Red Component</key>
+        <real>0.7607843137254902</real>
+	</dict>
+	<key>Ansi 8 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.3843137254901961</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.21176470588235294</real>
+		<key>Red Component</key>
+        <real>0.2</real>
+	</dict>
+	<key>Ansi 9 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.4392156862745098</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.11372549019607843</real>
+		<key>Red Component</key>
+        <real>0.996078431372549</real>
+	</dict>
+	<key>Background Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.12156862745098039</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.06666666666666667</real>
+		<key>Red Component</key>
+        <real>0.06274509803921569</real>
+	</dict>
+	<key>Badge Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>0.5</real>
+		<key>Blue Component</key>
+		<real>0.0</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.1491314172744751</real>
+		<key>Red Component</key>
+		<real>1</real>
+	</dict>
+	<key>Bold Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.6274509803921569</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.8705882352941177</real>
+		<key>Red Component</key>
+        <real>0.44313725490196076</real>
+	</dict>
+	<key>Cursor Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.4627450980392157</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.6745098039215687</real>
+		<key>Red Component</key>
+        <real>0.1450980392156863</real>
+	</dict>
+	<key>Cursor Guide Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>0.25</real>
+		<key>Blue Component</key>
+		<real>1</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.9268307089805603</real>
+		<key>Red Component</key>
+		<real>0.70213186740875244</real>
+	</dict>
+	<key>Cursor Text Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.62745100259780884</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.50980395078659058</real>
+		<key>Red Component</key>
+		<real>0.54901963472366333</real>
+	</dict>
+	<key>Foreground Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.6274509803921569</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.8705882352941177</real>
+		<key>Red Component</key>
+        <real>0.44313725490196076</real>
+	</dict>
+	<key>Link Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.73423302173614502</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.35916060209274292</real>
+		<key>Red Component</key>
+		<real>0.0</real>
+	</dict>
+	<key>Selected Text Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.12156862745098039</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.06666666666666667</real>
+		<key>Red Component</key>
+		<real>0.06274509803921569</real>
+	</dict>
+	<key>Selection Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.592156862745098</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.8352941176470589</real>
+		<key>Red Component</key>
+		<real>0.2235294117647059</real>
+	</dict>
+</dict>
+</plist>
diff --git a/configs/shared/.gvcci/themes/pixelated_china/iterm.plist b/configs/shared/.gvcci/themes/pixelated_china/iterm.plist
new file mode 100644
index 0000000000..b044a8cfac
--- /dev/null
+++ b/configs/shared/.gvcci/themes/pixelated_china/iterm.plist
@@ -0,0 +1,412 @@
+{
+  "Profiles": [
+    {
+      "Use Non-ASCII Font" : false,
+      "Tags" : [
+
+      ],
+      "Ansi 12 Color" : {
+        "Red Component" : 0.16862745098039217,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.984313725490196,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5058823529411764
+      },
+      "Ansi 7 Color" : {
+        "Red Component" : 0.7607843137254902,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.8627450980392157,
+        "Alpha Component" : 1,
+        "Green Component" : 0.9372549019607843
+      },
+      "Ansi 8 Color" : {
+        "Red Component" : 0.2,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.3843137254901961,
+        "Alpha Component" : 1,
+        "Green Component" : 0.21176470588235294
+      },
+      "Bold Color" : {
+        "Red Component" : 0.44313725490196076,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.6274509803921569,
+        "Alpha Component" : 1,
+        "Green Component" : 0.8705882352941177
+      },
+      "Ansi 9 Color" : {
+        "Red Component" : 0.996078431372549,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.4392156862745098,
+        "Alpha Component" : 1,
+        "Green Component" : 0.11372549019607843
+      },
+      "Ansi 6 Color" : {
+        "Red Component" : 0.24313725490196078,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.5098039215686274,
+        "Alpha Component" : 1,
+        "Green Component" : 0.6588235294117647
+      },
+      "Right Option Key Sends" : 0,
+      "Rows" : 25,
+      "Default Bookmark" : "No",
+      "Cursor Guide Color" : {
+        "Red Component" : 1,
+        "Color Space" : "Calibrated",
+        "Blue Component" : 0.9999912977218628,
+        "Alpha Component" : 0.04705882352941176,
+        "Green Component" : 0.9999743700027466
+      },
+      "Non-ASCII Anti Aliased" : true,
+      "Use Bright Bold" : true,
+      "Ansi 10 Color" : {
+        "Red Component" : 0.2823529411764706,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9098039215686274,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5137254901960784
+      },
+      "Use Cursor Guide" : false,
+      "Ambiguous Double Width" : false,
+      "Jobs to Ignore" : [
+        "rlogin",
+        "ssh",
+        "slogin",
+        "telnet"
+      ],
+      "Ansi 15 Color" : {
+        "Red Component" : 0.9529411764705882,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9725490196078431,
+        "Alpha Component" : 1,
+        "Green Component" : 0.9882352941176471
+      },
+      "Foreground Color" : {
+        "Red Component" : 0.44313725490196076,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.6274509803921569,
+        "Alpha Component" : 1,
+        "Green Component" : 0.8705882352941177
+      },
+      "Working Directory" : "\/Users\/fabricecastel",
+      "Bound Hosts" : [
+
+      ],
+      "Blinking Cursor" : false,
+      "Disable Window Resizing" : true,
+      "Sync Title" : false,
+      "Prompt Before Closing 2" : false,
+      "BM Growl" : false,
+      "Description" : "Default",
+      "Mouse Reporting" : true,
+      "Smart Cursor Color" : false,
+      "Screen" : -1,
+      "Selection Color" : {
+        "Red Component" : 0.2235294117647059,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.592156862745098,
+        "Alpha Component" : 1,
+        "Green Component" : 0.8352941176470589
+      },
+      "Columns" : 80,
+      "Idle Code" : 0,
+      "Ansi 13 Color" : {
+        "Red Component" : 0.13333333333333333,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.5568627450980392,
+        "Alpha Component" : 1,
+        "Green Component" : 0.8862745098039215
+      },
+      "Custom Command" : "Yes",
+      "ASCII Anti Aliased" : true,
+      "Non Ascii Font" : "Monaco 12",
+      "Vertical Spacing" : 1,
+      "Use Bold Font" : true,
+      "Option Key Sends" : 0,
+      "Selected Text Color" : {
+        "Red Component" : 0.06274509803921569,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.12156862745098039,
+        "Alpha Component" : 1,
+        "Green Component" : 0.06666666666666667
+      },
+      "Background Color" : {
+        "Red Component" : 0.06274509803921569,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.12156862745098039,
+        "Alpha Component" : 1,
+        "Green Component" : 0.06666666666666667
+      },
+      "Character Encoding" : 4,
+      "Ansi 11 Color" : {
+        "Red Component" : 0.996078431372549,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.4392156862745098,
+        "Alpha Component" : 1,
+        "Green Component" : 0.11372549019607843
+      },
+      "Use Italic Font" : true,
+      "Unlimited Scrollback" : false,
+      "Keyboard Map" : {
+        "0xf700-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6A"
+        },
+        "0x37-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1f"
+        },
+        "0x32-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x00"
+        },
+        "0xf709-0x20000" : {
+          "Action" : 10,
+          "Text" : "[17;2~"
+        },
+        "0xf70c-0x20000" : {
+          "Action" : 10,
+          "Text" : "[20;2~"
+        },
+        "0xf729-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2H"
+        },
+        "0xf72b-0x40000" : {
+          "Action" : 10,
+          "Text" : "[1;5F"
+        },
+        "0xf705-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2Q"
+        },
+        "0xf703-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6C"
+        },
+        "0xf700-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2A"
+        },
+        "0xf701-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x42"
+        },
+        "0x38-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x7f"
+        },
+        "0x33-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1b"
+        },
+        "0xf703-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2C"
+        },
+        "0xf701-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5B"
+        },
+        "0xf70d-0x20000" : {
+          "Action" : 10,
+          "Text" : "[21;2~"
+        },
+        "0xf702-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6D"
+        },
+        "0xf729-0x40000" : {
+          "Action" : 10,
+          "Text" : "[1;5H"
+        },
+        "0xf706-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2R"
+        },
+        "0x34-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1c"
+        },
+        "0xf700-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x41"
+        },
+        "0x2d-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1f"
+        },
+        "0xf70e-0x20000" : {
+          "Action" : 10,
+          "Text" : "[23;2~"
+        },
+        "0xf702-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2D"
+        },
+        "0xf703-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x43"
+        },
+        "0xf700-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5A"
+        },
+        "0xf707-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2S"
+        },
+        "0xf70a-0x20000" : {
+          "Action" : 10,
+          "Text" : "[18;2~"
+        },
+        "0x35-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1d"
+        },
+        "0xf70f-0x20000" : {
+          "Action" : 10,
+          "Text" : "[24;2~"
+        },
+        "0xf703-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5C"
+        },
+        "0xf701-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6B"
+        },
+        "0xf702-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x44"
+        },
+        "0xf72b-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2F"
+        },
+        "0x36-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1e"
+        },
+        "0xf708-0x20000" : {
+          "Action" : 10,
+          "Text" : "[15;2~"
+        },
+        "0xf701-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2B"
+        },
+        "0xf70b-0x20000" : {
+          "Action" : 10,
+          "Text" : "[19;2~"
+        },
+        "0xf702-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5D"
+        },
+        "0xf704-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2P"
+        }
+      },
+      "Window Type" : 12,
+      "Blur Radius" : 5.168569711538462,
+      "Cursor Type" : 2,
+      "Background Image Location" : "",
+      "Blur" : false,
+      "Badge Color" : {
+        "Red Component" : 1,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0,
+        "Alpha Component" : 0.5,
+        "Green Component" : 0.1491314172744751
+      },
+      "Cursor Boost" : 0,
+      "Scrollback Lines" : 1000,
+      "Send Code When Idle" : false,
+      "Close Sessions On End" : true,
+      "Terminal Type" : "xterm-256color",
+      "Visual Bell" : true,
+      "Flashing Bell" : false,
+      "Silence Bell" : true,
+      "Ansi 14 Color" : {
+        "Red Component" : 0.3686274509803922,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.6274509803921569,
+        "Alpha Component" : 1,
+        "Green Component" : 0.7725490196078432
+      },
+      "Name" : "gvcci",
+      "Cursor Text Color" : {
+        "Red Component" : 0.5490196347236633,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.6274510025978088,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5098039507865906
+      },
+      "Minimum Contrast" : 0,
+      "Shortcut" : "",
+      "Cursor Color" : {
+        "Red Component" : 0.1450980392156863,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.4627450980392157,
+        "Alpha Component" : 1,
+        "Green Component" : 0.6745098039215687
+      },
+      "Ansi 0 Color" : {
+        "Red Component" : 0.13333333333333333,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.2549019607843137,
+        "Alpha Component" : 1,
+        "Green Component" : 0.1411764705882353
+      },
+      "Ansi 1 Color" : {
+        "Red Component" : 0.8588235294117647,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.3215686274509804,
+        "Alpha Component" : 1,
+        "Green Component" : 0.00784313725490196
+      },
+      "Horizontal Spacing" : 1,
+      "Ansi 3 Color" : {
+        "Red Component" : 0.8549019607843137,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.3215686274509804,
+        "Alpha Component" : 1,
+        "Green Component" : 0.00784313725490196
+      },
+      "Ansi 4 Color" : {
+        "Red Component" : 0.0196078431372549,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.8941176470588236,
+        "Alpha Component" : 1,
+        "Green Component" : 0.3803921568627451
+      },
+      "Transparency" : 0,
+      "Guid" : "FBF27982-5D1C-4625-8221-8FFAB9F4A445",
+      "Ansi 2 Color" : {
+        "Red Component" : 0.11372549019607843,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.8392156862745098,
+        "Alpha Component" : 1,
+        "Green Component" : 0.3803921568627451
+      },
+      "Normal Font" : "MesloLGSForPowerline-Regular 12",
+      "Custom Directory" : "No",
+      "Link Color" : {
+        "Red Component" : 0,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.734233021736145,
+        "Alpha Component" : 1,
+        "Green Component" : 0.3591606020927429
+      },
+      "Ansi 5 Color" : {
+        "Red Component" : 0.09411764705882353,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.42745098039215684,
+        "Alpha Component" : 1,
+        "Green Component" : 0.6862745098039216
+      },
+    }
+  ]
+}
diff --git a/configs/shared/.gvcci/themes/pixelated_china/json-scheme.json b/configs/shared/.gvcci/themes/pixelated_china/json-scheme.json
new file mode 100644
index 0000000000..9a40fc0d5f
--- /dev/null
+++ b/configs/shared/.gvcci/themes/pixelated_china/json-scheme.json
@@ -0,0 +1,24 @@
+{
+  "name": "GVCCI Color Scheme",
+  "author": "",
+  "color": [
+    "#222441",
+    "#db0252",
+    "#1d61d6",
+    "#da0252",
+    "#0561e4",
+    "#18af6d",
+    "#3ea882",
+    "#c2efdc",
+    "#333662",
+    "#fe1d70",
+    "#4883e8",
+    "#fe1d70",
+    "#2b81fb",
+    "#22e28e",
+    "#5ec5a0",
+    "#f3fcf8"
+  ],
+  "foreground": "#71dea0",
+  "background": "#10111f"
+}
diff --git a/configs/shared/.gvcci/themes/pixelated_china/nospace.txt b/configs/shared/.gvcci/themes/pixelated_china/nospace.txt
new file mode 100644
index 0000000000..7cf3a69873
--- /dev/null
+++ b/configs/shared/.gvcci/themes/pixelated_china/nospace.txt
@@ -0,0 +1 @@
+#10111f#71dea0#222441#db0252#1d61d6#da0252#0561e4#18af6d#3ea882#c2efdc#333662#fe1d70#4883e8#fe1d70#2b81fb#22e28e#5ec5a0#f3fcf8
diff --git a/configs/shared/.gvcci/themes/pixelated_china/tilix.json b/configs/shared/.gvcci/themes/pixelated_china/tilix.json
new file mode 100644
index 0000000000..a0188fed11
--- /dev/null
+++ b/configs/shared/.gvcci/themes/pixelated_china/tilix.json
@@ -0,0 +1,33 @@
+{
+    "name": "Gvcci",
+    "comment": "Gvcci generated theme.",
+    "foreground-color": "#71dea0",
+    "background-color": "#10111f",
+    "use-theme-colors": false,
+    "use-highlight-color": false,
+    "highlight-foreground-color": "#10111f",
+    "highlight-background-color": "#39d597",
+    "use-cursor-color": false,
+    "cursor-foreground-color": "#25ac76",
+    "cursor-background-color": "#25ac76",
+    "use-badge-color": true,
+    "badge-color": "#71dea0",
+    "palette": [
+        "#222441",
+        "#db0252",
+        "#1d61d6",
+        "#da0252",
+        "#0561e4",
+        "#18af6d",
+        "#3ea882",
+        "#c2efdc",
+        "#333662",
+        "#fe1d70",
+        "#4883e8",
+        "#fe1d70",
+        "#2b81fb",
+        "#22e28e",
+        "#5ec5a0",
+        "#f3fcf8"
+    ]
+}
\ No newline at end of file
diff --git a/configs/shared/.gvcci/themes/pixelated_china/wallpaper b/configs/shared/.gvcci/themes/pixelated_china/wallpaper
new file mode 100644
index 0000000000..ef1b25e443
--- /dev/null
+++ b/configs/shared/.gvcci/themes/pixelated_china/wallpaper
Binary files differdiff --git a/configs/shared/.gvcci/themes/pixelated_china/xresources-colors.txt b/configs/shared/.gvcci/themes/pixelated_china/xresources-colors.txt
new file mode 100644
index 0000000000..106586249f
--- /dev/null
+++ b/configs/shared/.gvcci/themes/pixelated_china/xresources-colors.txt
@@ -0,0 +1,37 @@
+! COLORS
+! special
+*.foreground:   #71dea0
+*.background:   #10111f
+*.cursorColor:  #71dea0
+
+! black
+*.color0:       #222441
+*.color8:       #333662
+
+! red
+*.color1:       #db0252
+*.color9:       #fe1d70
+
+! green
+*.color2:       #1d61d6
+*.color10:      #4883e8
+
+! yellow
+*.color3:       #da0252
+*.color11:      #fe1d70
+
+! blue
+*.color4:       #0561e4
+*.color12:      #2b81fb
+
+! magenta
+*.color5:       #18af6d
+*.color13:      #22e28e
+
+! cyan
+*.color6:       #3ea882
+*.color14:      #5ec5a0
+
+! white
+*.color7:       #c2efdc
+*.color15:      #f3fcf8
diff --git a/configs/shared/.gvcci/themes/pixelated_landscape/colors.sh b/configs/shared/.gvcci/themes/pixelated_landscape/colors.sh
new file mode 100644
index 0000000000..cad64d5b66
--- /dev/null
+++ b/configs/shared/.gvcci/themes/pixelated_landscape/colors.sh
@@ -0,0 +1,23 @@
+
+# Special
+background='#9cc8d3'
+foreground='#000000'
+cursor='#000000'
+
+# Colors
+color0='#203f46'
+color1='#312cc6'
+color2='#1b20e1'
+color3='#2235c7'
+color4='#37489c'
+color5='#103ec7'
+color6='#136f9d'
+color7='#bbe2f6'
+color8='#2f5f6a'
+color9='#5954db'
+color10='#4e51ec'
+color11='#4558e1'
+color12='#4e61c2'
+color13='#2658ee'
+color14='#1a95d3'
+color15='#f1f9fd'
diff --git a/configs/shared/.gvcci/themes/pixelated_landscape/column.txt b/configs/shared/.gvcci/themes/pixelated_landscape/column.txt
new file mode 100644
index 0000000000..7e9ced458e
--- /dev/null
+++ b/configs/shared/.gvcci/themes/pixelated_landscape/column.txt
@@ -0,0 +1,18 @@
+#9cc8d3
+#000000
+#203f46
+#312cc6
+#1b20e1
+#2235c7
+#37489c
+#103ec7
+#136f9d
+#bbe2f6
+#2f5f6a
+#5954db
+#4e51ec
+#4558e1
+#4e61c2
+#2658ee
+#1a95d3
+#f1f9fd
diff --git a/configs/shared/.gvcci/themes/pixelated_landscape/columns-with-headers.txt b/configs/shared/.gvcci/themes/pixelated_landscape/columns-with-headers.txt
new file mode 100644
index 0000000000..b2711884da
--- /dev/null
+++ b/configs/shared/.gvcci/themes/pixelated_landscape/columns-with-headers.txt
@@ -0,0 +1,25 @@
+Background
+#9cc8d3
+
+Foreground
+#000000
+
+Normal ANSI Colors
+#203f46
+#312cc6
+#1b20e1
+#2235c7
+#37489c
+#103ec7
+#136f9d
+#bbe2f6
+
+Bright ANSI Colors
+#2f5f6a
+#5954db
+#4e51ec
+#4558e1
+#4e61c2
+#2658ee
+#1a95d3
+#f1f9fd
diff --git a/configs/shared/.gvcci/themes/pixelated_landscape/iterm.itermcolors b/configs/shared/.gvcci/themes/pixelated_landscape/iterm.itermcolors
new file mode 100644
index 0000000000..ab600b2022
--- /dev/null
+++ b/configs/shared/.gvcci/themes/pixelated_landscape/iterm.itermcolors
@@ -0,0 +1,344 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>Ansi 0 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.27450980392156865</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.24705882352941178</real>
+		<key>Red Component</key>
+        <real>0.12549019607843137</real>
+	</dict>
+	<key>Ansi 1 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.7764705882352941</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.17254901960784313</real>
+		<key>Red Component</key>
+        <real>0.19215686274509805</real>
+	</dict>
+	<key>Ansi 10 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9254901960784314</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.3176470588235294</real>
+		<key>Red Component</key>
+        <real>0.3058823529411765</real>
+	</dict>
+	<key>Ansi 11 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.8823529411764706</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.34509803921568627</real>
+		<key>Red Component</key>
+        <real>0.27058823529411763</real>
+	</dict>
+	<key>Ansi 12 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.7607843137254902</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.3803921568627451</real>
+		<key>Red Component</key>
+        <real>0.3058823529411765</real>
+	</dict>
+	<key>Ansi 13 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9333333333333333</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.34509803921568627</real>
+		<key>Red Component</key>
+        <real>0.14901960784313725</real>
+	</dict>
+	<key>Ansi 14 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.8274509803921568</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5843137254901961</real>
+		<key>Red Component</key>
+        <real>0.10196078431372549</real>
+	</dict>
+	<key>Ansi 15 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9921568627450981</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.9764705882352941</real>
+		<key>Red Component</key>
+        <real>0.9450980392156862</real>
+	</dict>
+	<key>Ansi 2 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.8823529411764706</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.12549019607843137</real>
+		<key>Red Component</key>
+        <real>0.10588235294117647</real>
+	</dict>
+	<key>Ansi 3 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.7803921568627451</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.20784313725490197</real>
+		<key>Red Component</key>
+        <real>0.13333333333333333</real>
+	</dict>
+	<key>Ansi 4 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.611764705882353</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.2823529411764706</real>
+		<key>Red Component</key>
+        <real>0.21568627450980393</real>
+	</dict>
+	<key>Ansi 5 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.7803921568627451</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.24313725490196078</real>
+		<key>Red Component</key>
+        <real>0.06274509803921569</real>
+	</dict>
+	<key>Ansi 6 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.615686274509804</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.43529411764705883</real>
+		<key>Red Component</key>
+        <real>0.07450980392156863</real>
+	</dict>
+	<key>Ansi 7 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9647058823529412</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.8862745098039215</real>
+		<key>Red Component</key>
+        <real>0.7333333333333333</real>
+	</dict>
+	<key>Ansi 8 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.41568627450980394</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.37254901960784315</real>
+		<key>Red Component</key>
+        <real>0.1843137254901961</real>
+	</dict>
+	<key>Ansi 9 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.8588235294117647</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.32941176470588235</real>
+		<key>Red Component</key>
+        <real>0.34901960784313724</real>
+	</dict>
+	<key>Background Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.8274509803921568</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.7843137254901961</real>
+		<key>Red Component</key>
+        <real>0.611764705882353</real>
+	</dict>
+	<key>Badge Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>0.5</real>
+		<key>Blue Component</key>
+		<real>0.0</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.1491314172744751</real>
+		<key>Red Component</key>
+		<real>1</real>
+	</dict>
+	<key>Bold Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.0</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.0</real>
+		<key>Red Component</key>
+        <real>0.0</real>
+	</dict>
+	<key>Cursor Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.6431372549019608</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.42745098039215684</real>
+		<key>Red Component</key>
+        <real>0.054901960784313725</real>
+	</dict>
+	<key>Cursor Guide Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>0.25</real>
+		<key>Blue Component</key>
+		<real>1</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.9268307089805603</real>
+		<key>Red Component</key>
+		<real>0.70213186740875244</real>
+	</dict>
+	<key>Cursor Text Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.62745100259780884</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.50980395078659058</real>
+		<key>Red Component</key>
+		<real>0.54901963472366333</real>
+	</dict>
+	<key>Foreground Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.0</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.0</real>
+		<key>Red Component</key>
+        <real>0.0</real>
+	</dict>
+	<key>Link Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.73423302173614502</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.35916060209274292</real>
+		<key>Red Component</key>
+		<real>0.0</real>
+	</dict>
+	<key>Selected Text Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.8274509803921568</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.7843137254901961</real>
+		<key>Red Component</key>
+		<real>0.611764705882353</real>
+	</dict>
+	<key>Selection Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.8666666666666667</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.5764705882352941</real>
+		<key>Red Component</key>
+		<real>0.07058823529411765</real>
+	</dict>
+</dict>
+</plist>
diff --git a/configs/shared/.gvcci/themes/pixelated_landscape/iterm.plist b/configs/shared/.gvcci/themes/pixelated_landscape/iterm.plist
new file mode 100644
index 0000000000..a2b736a786
--- /dev/null
+++ b/configs/shared/.gvcci/themes/pixelated_landscape/iterm.plist
@@ -0,0 +1,412 @@
+{
+  "Profiles": [
+    {
+      "Use Non-ASCII Font" : false,
+      "Tags" : [
+
+      ],
+      "Ansi 12 Color" : {
+        "Red Component" : 0.3058823529411765,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.7607843137254902,
+        "Alpha Component" : 1,
+        "Green Component" : 0.3803921568627451
+      },
+      "Ansi 7 Color" : {
+        "Red Component" : 0.7333333333333333,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9647058823529412,
+        "Alpha Component" : 1,
+        "Green Component" : 0.8862745098039215
+      },
+      "Ansi 8 Color" : {
+        "Red Component" : 0.1843137254901961,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.41568627450980394,
+        "Alpha Component" : 1,
+        "Green Component" : 0.37254901960784315
+      },
+      "Bold Color" : {
+        "Red Component" : 0.0,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.0,
+        "Alpha Component" : 1,
+        "Green Component" : 0.0
+      },
+      "Ansi 9 Color" : {
+        "Red Component" : 0.34901960784313724,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.8588235294117647,
+        "Alpha Component" : 1,
+        "Green Component" : 0.32941176470588235
+      },
+      "Ansi 6 Color" : {
+        "Red Component" : 0.07450980392156863,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.615686274509804,
+        "Alpha Component" : 1,
+        "Green Component" : 0.43529411764705883
+      },
+      "Right Option Key Sends" : 0,
+      "Rows" : 25,
+      "Default Bookmark" : "No",
+      "Cursor Guide Color" : {
+        "Red Component" : 1,
+        "Color Space" : "Calibrated",
+        "Blue Component" : 0.9999912977218628,
+        "Alpha Component" : 0.04705882352941176,
+        "Green Component" : 0.9999743700027466
+      },
+      "Non-ASCII Anti Aliased" : true,
+      "Use Bright Bold" : true,
+      "Ansi 10 Color" : {
+        "Red Component" : 0.3058823529411765,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9254901960784314,
+        "Alpha Component" : 1,
+        "Green Component" : 0.3176470588235294
+      },
+      "Use Cursor Guide" : false,
+      "Ambiguous Double Width" : false,
+      "Jobs to Ignore" : [
+        "rlogin",
+        "ssh",
+        "slogin",
+        "telnet"
+      ],
+      "Ansi 15 Color" : {
+        "Red Component" : 0.9450980392156862,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9921568627450981,
+        "Alpha Component" : 1,
+        "Green Component" : 0.9764705882352941
+      },
+      "Foreground Color" : {
+        "Red Component" : 0.0,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.0,
+        "Alpha Component" : 1,
+        "Green Component" : 0.0
+      },
+      "Working Directory" : "\/Users\/fabricecastel",
+      "Bound Hosts" : [
+
+      ],
+      "Blinking Cursor" : false,
+      "Disable Window Resizing" : true,
+      "Sync Title" : false,
+      "Prompt Before Closing 2" : false,
+      "BM Growl" : false,
+      "Description" : "Default",
+      "Mouse Reporting" : true,
+      "Smart Cursor Color" : false,
+      "Screen" : -1,
+      "Selection Color" : {
+        "Red Component" : 0.07058823529411765,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.8666666666666667,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5764705882352941
+      },
+      "Columns" : 80,
+      "Idle Code" : 0,
+      "Ansi 13 Color" : {
+        "Red Component" : 0.14901960784313725,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9333333333333333,
+        "Alpha Component" : 1,
+        "Green Component" : 0.34509803921568627
+      },
+      "Custom Command" : "Yes",
+      "ASCII Anti Aliased" : true,
+      "Non Ascii Font" : "Monaco 12",
+      "Vertical Spacing" : 1,
+      "Use Bold Font" : true,
+      "Option Key Sends" : 0,
+      "Selected Text Color" : {
+        "Red Component" : 0.611764705882353,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.8274509803921568,
+        "Alpha Component" : 1,
+        "Green Component" : 0.7843137254901961
+      },
+      "Background Color" : {
+        "Red Component" : 0.611764705882353,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.8274509803921568,
+        "Alpha Component" : 1,
+        "Green Component" : 0.7843137254901961
+      },
+      "Character Encoding" : 4,
+      "Ansi 11 Color" : {
+        "Red Component" : 0.27058823529411763,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.8823529411764706,
+        "Alpha Component" : 1,
+        "Green Component" : 0.34509803921568627
+      },
+      "Use Italic Font" : true,
+      "Unlimited Scrollback" : false,
+      "Keyboard Map" : {
+        "0xf700-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6A"
+        },
+        "0x37-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1f"
+        },
+        "0x32-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x00"
+        },
+        "0xf709-0x20000" : {
+          "Action" : 10,
+          "Text" : "[17;2~"
+        },
+        "0xf70c-0x20000" : {
+          "Action" : 10,
+          "Text" : "[20;2~"
+        },
+        "0xf729-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2H"
+        },
+        "0xf72b-0x40000" : {
+          "Action" : 10,
+          "Text" : "[1;5F"
+        },
+        "0xf705-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2Q"
+        },
+        "0xf703-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6C"
+        },
+        "0xf700-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2A"
+        },
+        "0xf701-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x42"
+        },
+        "0x38-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x7f"
+        },
+        "0x33-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1b"
+        },
+        "0xf703-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2C"
+        },
+        "0xf701-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5B"
+        },
+        "0xf70d-0x20000" : {
+          "Action" : 10,
+          "Text" : "[21;2~"
+        },
+        "0xf702-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6D"
+        },
+        "0xf729-0x40000" : {
+          "Action" : 10,
+          "Text" : "[1;5H"
+        },
+        "0xf706-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2R"
+        },
+        "0x34-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1c"
+        },
+        "0xf700-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x41"
+        },
+        "0x2d-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1f"
+        },
+        "0xf70e-0x20000" : {
+          "Action" : 10,
+          "Text" : "[23;2~"
+        },
+        "0xf702-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2D"
+        },
+        "0xf703-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x43"
+        },
+        "0xf700-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5A"
+        },
+        "0xf707-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2S"
+        },
+        "0xf70a-0x20000" : {
+          "Action" : 10,
+          "Text" : "[18;2~"
+        },
+        "0x35-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1d"
+        },
+        "0xf70f-0x20000" : {
+          "Action" : 10,
+          "Text" : "[24;2~"
+        },
+        "0xf703-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5C"
+        },
+        "0xf701-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6B"
+        },
+        "0xf702-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x44"
+        },
+        "0xf72b-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2F"
+        },
+        "0x36-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1e"
+        },
+        "0xf708-0x20000" : {
+          "Action" : 10,
+          "Text" : "[15;2~"
+        },
+        "0xf701-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2B"
+        },
+        "0xf70b-0x20000" : {
+          "Action" : 10,
+          "Text" : "[19;2~"
+        },
+        "0xf702-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5D"
+        },
+        "0xf704-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2P"
+        }
+      },
+      "Window Type" : 12,
+      "Blur Radius" : 5.168569711538462,
+      "Cursor Type" : 2,
+      "Background Image Location" : "",
+      "Blur" : false,
+      "Badge Color" : {
+        "Red Component" : 1,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0,
+        "Alpha Component" : 0.5,
+        "Green Component" : 0.1491314172744751
+      },
+      "Cursor Boost" : 0,
+      "Scrollback Lines" : 1000,
+      "Send Code When Idle" : false,
+      "Close Sessions On End" : true,
+      "Terminal Type" : "xterm-256color",
+      "Visual Bell" : true,
+      "Flashing Bell" : false,
+      "Silence Bell" : true,
+      "Ansi 14 Color" : {
+        "Red Component" : 0.10196078431372549,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.8274509803921568,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5843137254901961
+      },
+      "Name" : "gvcci",
+      "Cursor Text Color" : {
+        "Red Component" : 0.5490196347236633,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.6274510025978088,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5098039507865906
+      },
+      "Minimum Contrast" : 0,
+      "Shortcut" : "",
+      "Cursor Color" : {
+        "Red Component" : 0.054901960784313725,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.6431372549019608,
+        "Alpha Component" : 1,
+        "Green Component" : 0.42745098039215684
+      },
+      "Ansi 0 Color" : {
+        "Red Component" : 0.12549019607843137,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.27450980392156865,
+        "Alpha Component" : 1,
+        "Green Component" : 0.24705882352941178
+      },
+      "Ansi 1 Color" : {
+        "Red Component" : 0.19215686274509805,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.7764705882352941,
+        "Alpha Component" : 1,
+        "Green Component" : 0.17254901960784313
+      },
+      "Horizontal Spacing" : 1,
+      "Ansi 3 Color" : {
+        "Red Component" : 0.13333333333333333,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.7803921568627451,
+        "Alpha Component" : 1,
+        "Green Component" : 0.20784313725490197
+      },
+      "Ansi 4 Color" : {
+        "Red Component" : 0.21568627450980393,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.611764705882353,
+        "Alpha Component" : 1,
+        "Green Component" : 0.2823529411764706
+      },
+      "Transparency" : 0,
+      "Guid" : "FBF27982-5D1C-4625-8221-8FFAB9F4A445",
+      "Ansi 2 Color" : {
+        "Red Component" : 0.10588235294117647,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.8823529411764706,
+        "Alpha Component" : 1,
+        "Green Component" : 0.12549019607843137
+      },
+      "Normal Font" : "MesloLGSForPowerline-Regular 12",
+      "Custom Directory" : "No",
+      "Link Color" : {
+        "Red Component" : 0,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.734233021736145,
+        "Alpha Component" : 1,
+        "Green Component" : 0.3591606020927429
+      },
+      "Ansi 5 Color" : {
+        "Red Component" : 0.06274509803921569,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.7803921568627451,
+        "Alpha Component" : 1,
+        "Green Component" : 0.24313725490196078
+      },
+    }
+  ]
+}
diff --git a/configs/shared/.gvcci/themes/pixelated_landscape/json-scheme.json b/configs/shared/.gvcci/themes/pixelated_landscape/json-scheme.json
new file mode 100644
index 0000000000..ac99d8b209
--- /dev/null
+++ b/configs/shared/.gvcci/themes/pixelated_landscape/json-scheme.json
@@ -0,0 +1,24 @@
+{
+  "name": "GVCCI Color Scheme",
+  "author": "",
+  "color": [
+    "#203f46",
+    "#312cc6",
+    "#1b20e1",
+    "#2235c7",
+    "#37489c",
+    "#103ec7",
+    "#136f9d",
+    "#bbe2f6",
+    "#2f5f6a",
+    "#5954db",
+    "#4e51ec",
+    "#4558e1",
+    "#4e61c2",
+    "#2658ee",
+    "#1a95d3",
+    "#f1f9fd"
+  ],
+  "foreground": "#000000",
+  "background": "#9cc8d3"
+}
diff --git a/configs/shared/.gvcci/themes/pixelated_landscape/nospace.txt b/configs/shared/.gvcci/themes/pixelated_landscape/nospace.txt
new file mode 100644
index 0000000000..547d3057a9
--- /dev/null
+++ b/configs/shared/.gvcci/themes/pixelated_landscape/nospace.txt
@@ -0,0 +1 @@
+#9cc8d3#000000#203f46#312cc6#1b20e1#2235c7#37489c#103ec7#136f9d#bbe2f6#2f5f6a#5954db#4e51ec#4558e1#4e61c2#2658ee#1a95d3#f1f9fd
diff --git a/configs/shared/.gvcci/themes/pixelated_landscape/tilix.json b/configs/shared/.gvcci/themes/pixelated_landscape/tilix.json
new file mode 100644
index 0000000000..936add01ff
--- /dev/null
+++ b/configs/shared/.gvcci/themes/pixelated_landscape/tilix.json
@@ -0,0 +1,33 @@
+{
+    "name": "Gvcci",
+    "comment": "Gvcci generated theme.",
+    "foreground-color": "#000000",
+    "background-color": "#9cc8d3",
+    "use-theme-colors": false,
+    "use-highlight-color": false,
+    "highlight-foreground-color": "#9cc8d3",
+    "highlight-background-color": "#1293dd",
+    "use-cursor-color": false,
+    "cursor-foreground-color": "#0e6da4",
+    "cursor-background-color": "#0e6da4",
+    "use-badge-color": true,
+    "badge-color": "#000000",
+    "palette": [
+        "#203f46",
+        "#312cc6",
+        "#1b20e1",
+        "#2235c7",
+        "#37489c",
+        "#103ec7",
+        "#136f9d",
+        "#bbe2f6",
+        "#2f5f6a",
+        "#5954db",
+        "#4e51ec",
+        "#4558e1",
+        "#4e61c2",
+        "#2658ee",
+        "#1a95d3",
+        "#f1f9fd"
+    ]
+}
\ No newline at end of file
diff --git a/configs/shared/.gvcci/themes/pixelated_landscape/wallpaper b/configs/shared/.gvcci/themes/pixelated_landscape/wallpaper
new file mode 100644
index 0000000000..79eb57de25
--- /dev/null
+++ b/configs/shared/.gvcci/themes/pixelated_landscape/wallpaper
Binary files differdiff --git a/configs/shared/.gvcci/themes/pixelated_landscape/xresources-colors.txt b/configs/shared/.gvcci/themes/pixelated_landscape/xresources-colors.txt
new file mode 100644
index 0000000000..08b152def5
--- /dev/null
+++ b/configs/shared/.gvcci/themes/pixelated_landscape/xresources-colors.txt
@@ -0,0 +1,37 @@
+! COLORS
+! special
+*.foreground:   #000000
+*.background:   #9cc8d3
+*.cursorColor:  #000000
+
+! black
+*.color0:       #203f46
+*.color8:       #2f5f6a
+
+! red
+*.color1:       #312cc6
+*.color9:       #5954db
+
+! green
+*.color2:       #1b20e1
+*.color10:      #4e51ec
+
+! yellow
+*.color3:       #2235c7
+*.color11:      #4558e1
+
+! blue
+*.color4:       #37489c
+*.color12:      #4e61c2
+
+! magenta
+*.color5:       #103ec7
+*.color13:      #2658ee
+
+! cyan
+*.color6:       #136f9d
+*.color14:      #1a95d3
+
+! white
+*.color7:       #bbe2f6
+*.color15:      #f1f9fd
diff --git a/configs/shared/.gvcci/themes/pixelated_outer_space/colors.sh b/configs/shared/.gvcci/themes/pixelated_outer_space/colors.sh
new file mode 100644
index 0000000000..4227f987da
--- /dev/null
+++ b/configs/shared/.gvcci/themes/pixelated_outer_space/colors.sh
@@ -0,0 +1,23 @@
+
+# Special
+background='#000000'
+foreground='#a4fbea'
+cursor='#a4fbea'
+
+# Colors
+color0='#1a1a1a'
+color1='#53b153'
+color2='#53b153'
+color3='#2090d8'
+color4='#109bf3'
+color5='#2090d8'
+color6='#04c7c2'
+color7='#b5fcf8'
+color8='#333333'
+color9='#7bc67b'
+color10='#7bc67b'
+color11='#4eabe7'
+color12='#48b4f8'
+color13='#4eabe7'
+color14='#0dfbf4'
+color15='#f0fefe'
diff --git a/configs/shared/.gvcci/themes/pixelated_outer_space/column.txt b/configs/shared/.gvcci/themes/pixelated_outer_space/column.txt
new file mode 100644
index 0000000000..2c78841a3f
--- /dev/null
+++ b/configs/shared/.gvcci/themes/pixelated_outer_space/column.txt
@@ -0,0 +1,18 @@
+#000000
+#a4fbea
+#1a1a1a
+#53b153
+#53b153
+#2090d8
+#109bf3
+#2090d8
+#04c7c2
+#b5fcf8
+#333333
+#7bc67b
+#7bc67b
+#4eabe7
+#48b4f8
+#4eabe7
+#0dfbf4
+#f0fefe
diff --git a/configs/shared/.gvcci/themes/pixelated_outer_space/columns-with-headers.txt b/configs/shared/.gvcci/themes/pixelated_outer_space/columns-with-headers.txt
new file mode 100644
index 0000000000..f9d65196cf
--- /dev/null
+++ b/configs/shared/.gvcci/themes/pixelated_outer_space/columns-with-headers.txt
@@ -0,0 +1,25 @@
+Background
+#000000
+
+Foreground
+#a4fbea
+
+Normal ANSI Colors
+#1a1a1a
+#53b153
+#53b153
+#2090d8
+#109bf3
+#2090d8
+#04c7c2
+#b5fcf8
+
+Bright ANSI Colors
+#333333
+#7bc67b
+#7bc67b
+#4eabe7
+#48b4f8
+#4eabe7
+#0dfbf4
+#f0fefe
diff --git a/configs/shared/.gvcci/themes/pixelated_outer_space/iterm.itermcolors b/configs/shared/.gvcci/themes/pixelated_outer_space/iterm.itermcolors
new file mode 100644
index 0000000000..3a8be2f652
--- /dev/null
+++ b/configs/shared/.gvcci/themes/pixelated_outer_space/iterm.itermcolors
@@ -0,0 +1,344 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>Ansi 0 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.10196078431372549</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.10196078431372549</real>
+		<key>Red Component</key>
+        <real>0.10196078431372549</real>
+	</dict>
+	<key>Ansi 1 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.3254901960784314</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.6941176470588235</real>
+		<key>Red Component</key>
+        <real>0.3254901960784314</real>
+	</dict>
+	<key>Ansi 10 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.4823529411764706</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.7764705882352941</real>
+		<key>Red Component</key>
+        <real>0.4823529411764706</real>
+	</dict>
+	<key>Ansi 11 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9058823529411765</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.6705882352941176</real>
+		<key>Red Component</key>
+        <real>0.3058823529411765</real>
+	</dict>
+	<key>Ansi 12 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9725490196078431</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.7058823529411765</real>
+		<key>Red Component</key>
+        <real>0.2823529411764706</real>
+	</dict>
+	<key>Ansi 13 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9058823529411765</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.6705882352941176</real>
+		<key>Red Component</key>
+        <real>0.3058823529411765</real>
+	</dict>
+	<key>Ansi 14 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9568627450980393</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.984313725490196</real>
+		<key>Red Component</key>
+        <real>0.050980392156862744</real>
+	</dict>
+	<key>Ansi 15 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.996078431372549</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.996078431372549</real>
+		<key>Red Component</key>
+        <real>0.9411764705882353</real>
+	</dict>
+	<key>Ansi 2 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.3254901960784314</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.6941176470588235</real>
+		<key>Red Component</key>
+        <real>0.3254901960784314</real>
+	</dict>
+	<key>Ansi 3 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.8470588235294118</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5647058823529412</real>
+		<key>Red Component</key>
+        <real>0.12549019607843137</real>
+	</dict>
+	<key>Ansi 4 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9529411764705882</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.6078431372549019</real>
+		<key>Red Component</key>
+        <real>0.06274509803921569</real>
+	</dict>
+	<key>Ansi 5 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.8470588235294118</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5647058823529412</real>
+		<key>Red Component</key>
+        <real>0.12549019607843137</real>
+	</dict>
+	<key>Ansi 6 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.7607843137254902</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.7803921568627451</real>
+		<key>Red Component</key>
+        <real>0.01568627450980392</real>
+	</dict>
+	<key>Ansi 7 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9725490196078431</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.9882352941176471</real>
+		<key>Red Component</key>
+        <real>0.7098039215686275</real>
+	</dict>
+	<key>Ansi 8 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.2</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.2</real>
+		<key>Red Component</key>
+        <real>0.2</real>
+	</dict>
+	<key>Ansi 9 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.4823529411764706</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.7764705882352941</real>
+		<key>Red Component</key>
+        <real>0.4823529411764706</real>
+	</dict>
+	<key>Background Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.0</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.0</real>
+		<key>Red Component</key>
+        <real>0.0</real>
+	</dict>
+	<key>Badge Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>0.5</real>
+		<key>Blue Component</key>
+		<real>0.0</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.1491314172744751</real>
+		<key>Red Component</key>
+		<real>1</real>
+	</dict>
+	<key>Bold Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9176470588235294</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.984313725490196</real>
+		<key>Red Component</key>
+        <real>0.6431372549019608</real>
+	</dict>
+	<key>Cursor Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.7490196078431373</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.788235294117647</real>
+		<key>Red Component</key>
+        <real>0.03137254901960784</real>
+	</dict>
+	<key>Cursor Guide Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>0.25</real>
+		<key>Blue Component</key>
+		<real>1</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.9268307089805603</real>
+		<key>Red Component</key>
+		<real>0.70213186740875244</real>
+	</dict>
+	<key>Cursor Text Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.62745100259780884</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.50980395078659058</real>
+		<key>Red Component</key>
+		<real>0.54901963472366333</real>
+	</dict>
+	<key>Foreground Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9176470588235294</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.984313725490196</real>
+		<key>Red Component</key>
+        <real>0.6431372549019608</real>
+	</dict>
+	<key>Link Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.73423302173614502</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.35916060209274292</real>
+		<key>Red Component</key>
+		<real>0.0</real>
+	</dict>
+	<key>Selected Text Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.0</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.0</real>
+		<key>Red Component</key>
+		<real>0.0</real>
+	</dict>
+	<key>Selection Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.9215686274509803</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.9686274509803922</real>
+		<key>Red Component</key>
+		<real>0.09019607843137255</real>
+	</dict>
+</dict>
+</plist>
diff --git a/configs/shared/.gvcci/themes/pixelated_outer_space/iterm.plist b/configs/shared/.gvcci/themes/pixelated_outer_space/iterm.plist
new file mode 100644
index 0000000000..cf84c6c456
--- /dev/null
+++ b/configs/shared/.gvcci/themes/pixelated_outer_space/iterm.plist
@@ -0,0 +1,412 @@
+{
+  "Profiles": [
+    {
+      "Use Non-ASCII Font" : false,
+      "Tags" : [
+
+      ],
+      "Ansi 12 Color" : {
+        "Red Component" : 0.2823529411764706,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9725490196078431,
+        "Alpha Component" : 1,
+        "Green Component" : 0.7058823529411765
+      },
+      "Ansi 7 Color" : {
+        "Red Component" : 0.7098039215686275,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9725490196078431,
+        "Alpha Component" : 1,
+        "Green Component" : 0.9882352941176471
+      },
+      "Ansi 8 Color" : {
+        "Red Component" : 0.2,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.2,
+        "Alpha Component" : 1,
+        "Green Component" : 0.2
+      },
+      "Bold Color" : {
+        "Red Component" : 0.6431372549019608,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9176470588235294,
+        "Alpha Component" : 1,
+        "Green Component" : 0.984313725490196
+      },
+      "Ansi 9 Color" : {
+        "Red Component" : 0.4823529411764706,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.4823529411764706,
+        "Alpha Component" : 1,
+        "Green Component" : 0.7764705882352941
+      },
+      "Ansi 6 Color" : {
+        "Red Component" : 0.01568627450980392,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.7607843137254902,
+        "Alpha Component" : 1,
+        "Green Component" : 0.7803921568627451
+      },
+      "Right Option Key Sends" : 0,
+      "Rows" : 25,
+      "Default Bookmark" : "No",
+      "Cursor Guide Color" : {
+        "Red Component" : 1,
+        "Color Space" : "Calibrated",
+        "Blue Component" : 0.9999912977218628,
+        "Alpha Component" : 0.04705882352941176,
+        "Green Component" : 0.9999743700027466
+      },
+      "Non-ASCII Anti Aliased" : true,
+      "Use Bright Bold" : true,
+      "Ansi 10 Color" : {
+        "Red Component" : 0.4823529411764706,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.4823529411764706,
+        "Alpha Component" : 1,
+        "Green Component" : 0.7764705882352941
+      },
+      "Use Cursor Guide" : false,
+      "Ambiguous Double Width" : false,
+      "Jobs to Ignore" : [
+        "rlogin",
+        "ssh",
+        "slogin",
+        "telnet"
+      ],
+      "Ansi 15 Color" : {
+        "Red Component" : 0.9411764705882353,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.996078431372549,
+        "Alpha Component" : 1,
+        "Green Component" : 0.996078431372549
+      },
+      "Foreground Color" : {
+        "Red Component" : 0.6431372549019608,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9176470588235294,
+        "Alpha Component" : 1,
+        "Green Component" : 0.984313725490196
+      },
+      "Working Directory" : "\/Users\/fabricecastel",
+      "Bound Hosts" : [
+
+      ],
+      "Blinking Cursor" : false,
+      "Disable Window Resizing" : true,
+      "Sync Title" : false,
+      "Prompt Before Closing 2" : false,
+      "BM Growl" : false,
+      "Description" : "Default",
+      "Mouse Reporting" : true,
+      "Smart Cursor Color" : false,
+      "Screen" : -1,
+      "Selection Color" : {
+        "Red Component" : 0.09019607843137255,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9215686274509803,
+        "Alpha Component" : 1,
+        "Green Component" : 0.9686274509803922
+      },
+      "Columns" : 80,
+      "Idle Code" : 0,
+      "Ansi 13 Color" : {
+        "Red Component" : 0.3058823529411765,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9058823529411765,
+        "Alpha Component" : 1,
+        "Green Component" : 0.6705882352941176
+      },
+      "Custom Command" : "Yes",
+      "ASCII Anti Aliased" : true,
+      "Non Ascii Font" : "Monaco 12",
+      "Vertical Spacing" : 1,
+      "Use Bold Font" : true,
+      "Option Key Sends" : 0,
+      "Selected Text Color" : {
+        "Red Component" : 0.0,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.0,
+        "Alpha Component" : 1,
+        "Green Component" : 0.0
+      },
+      "Background Color" : {
+        "Red Component" : 0.0,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.0,
+        "Alpha Component" : 1,
+        "Green Component" : 0.0
+      },
+      "Character Encoding" : 4,
+      "Ansi 11 Color" : {
+        "Red Component" : 0.3058823529411765,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9058823529411765,
+        "Alpha Component" : 1,
+        "Green Component" : 0.6705882352941176
+      },
+      "Use Italic Font" : true,
+      "Unlimited Scrollback" : false,
+      "Keyboard Map" : {
+        "0xf700-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6A"
+        },
+        "0x37-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1f"
+        },
+        "0x32-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x00"
+        },
+        "0xf709-0x20000" : {
+          "Action" : 10,
+          "Text" : "[17;2~"
+        },
+        "0xf70c-0x20000" : {
+          "Action" : 10,
+          "Text" : "[20;2~"
+        },
+        "0xf729-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2H"
+        },
+        "0xf72b-0x40000" : {
+          "Action" : 10,
+          "Text" : "[1;5F"
+        },
+        "0xf705-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2Q"
+        },
+        "0xf703-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6C"
+        },
+        "0xf700-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2A"
+        },
+        "0xf701-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x42"
+        },
+        "0x38-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x7f"
+        },
+        "0x33-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1b"
+        },
+        "0xf703-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2C"
+        },
+        "0xf701-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5B"
+        },
+        "0xf70d-0x20000" : {
+          "Action" : 10,
+          "Text" : "[21;2~"
+        },
+        "0xf702-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6D"
+        },
+        "0xf729-0x40000" : {
+          "Action" : 10,
+          "Text" : "[1;5H"
+        },
+        "0xf706-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2R"
+        },
+        "0x34-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1c"
+        },
+        "0xf700-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x41"
+        },
+        "0x2d-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1f"
+        },
+        "0xf70e-0x20000" : {
+          "Action" : 10,
+          "Text" : "[23;2~"
+        },
+        "0xf702-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2D"
+        },
+        "0xf703-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x43"
+        },
+        "0xf700-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5A"
+        },
+        "0xf707-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2S"
+        },
+        "0xf70a-0x20000" : {
+          "Action" : 10,
+          "Text" : "[18;2~"
+        },
+        "0x35-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1d"
+        },
+        "0xf70f-0x20000" : {
+          "Action" : 10,
+          "Text" : "[24;2~"
+        },
+        "0xf703-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5C"
+        },
+        "0xf701-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6B"
+        },
+        "0xf702-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x44"
+        },
+        "0xf72b-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2F"
+        },
+        "0x36-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1e"
+        },
+        "0xf708-0x20000" : {
+          "Action" : 10,
+          "Text" : "[15;2~"
+        },
+        "0xf701-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2B"
+        },
+        "0xf70b-0x20000" : {
+          "Action" : 10,
+          "Text" : "[19;2~"
+        },
+        "0xf702-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5D"
+        },
+        "0xf704-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2P"
+        }
+      },
+      "Window Type" : 12,
+      "Blur Radius" : 5.168569711538462,
+      "Cursor Type" : 2,
+      "Background Image Location" : "",
+      "Blur" : false,
+      "Badge Color" : {
+        "Red Component" : 1,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0,
+        "Alpha Component" : 0.5,
+        "Green Component" : 0.1491314172744751
+      },
+      "Cursor Boost" : 0,
+      "Scrollback Lines" : 1000,
+      "Send Code When Idle" : false,
+      "Close Sessions On End" : true,
+      "Terminal Type" : "xterm-256color",
+      "Visual Bell" : true,
+      "Flashing Bell" : false,
+      "Silence Bell" : true,
+      "Ansi 14 Color" : {
+        "Red Component" : 0.050980392156862744,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9568627450980393,
+        "Alpha Component" : 1,
+        "Green Component" : 0.984313725490196
+      },
+      "Name" : "gvcci",
+      "Cursor Text Color" : {
+        "Red Component" : 0.5490196347236633,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.6274510025978088,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5098039507865906
+      },
+      "Minimum Contrast" : 0,
+      "Shortcut" : "",
+      "Cursor Color" : {
+        "Red Component" : 0.03137254901960784,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.7490196078431373,
+        "Alpha Component" : 1,
+        "Green Component" : 0.788235294117647
+      },
+      "Ansi 0 Color" : {
+        "Red Component" : 0.10196078431372549,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.10196078431372549,
+        "Alpha Component" : 1,
+        "Green Component" : 0.10196078431372549
+      },
+      "Ansi 1 Color" : {
+        "Red Component" : 0.3254901960784314,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.3254901960784314,
+        "Alpha Component" : 1,
+        "Green Component" : 0.6941176470588235
+      },
+      "Horizontal Spacing" : 1,
+      "Ansi 3 Color" : {
+        "Red Component" : 0.12549019607843137,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.8470588235294118,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5647058823529412
+      },
+      "Ansi 4 Color" : {
+        "Red Component" : 0.06274509803921569,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9529411764705882,
+        "Alpha Component" : 1,
+        "Green Component" : 0.6078431372549019
+      },
+      "Transparency" : 0,
+      "Guid" : "FBF27982-5D1C-4625-8221-8FFAB9F4A445",
+      "Ansi 2 Color" : {
+        "Red Component" : 0.3254901960784314,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.3254901960784314,
+        "Alpha Component" : 1,
+        "Green Component" : 0.6941176470588235
+      },
+      "Normal Font" : "MesloLGSForPowerline-Regular 12",
+      "Custom Directory" : "No",
+      "Link Color" : {
+        "Red Component" : 0,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.734233021736145,
+        "Alpha Component" : 1,
+        "Green Component" : 0.3591606020927429
+      },
+      "Ansi 5 Color" : {
+        "Red Component" : 0.12549019607843137,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.8470588235294118,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5647058823529412
+      },
+    }
+  ]
+}
diff --git a/configs/shared/.gvcci/themes/pixelated_outer_space/json-scheme.json b/configs/shared/.gvcci/themes/pixelated_outer_space/json-scheme.json
new file mode 100644
index 0000000000..0aa8498882
--- /dev/null
+++ b/configs/shared/.gvcci/themes/pixelated_outer_space/json-scheme.json
@@ -0,0 +1,24 @@
+{
+  "name": "GVCCI Color Scheme",
+  "author": "",
+  "color": [
+    "#1a1a1a",
+    "#53b153",
+    "#53b153",
+    "#2090d8",
+    "#109bf3",
+    "#2090d8",
+    "#04c7c2",
+    "#b5fcf8",
+    "#333333",
+    "#7bc67b",
+    "#7bc67b",
+    "#4eabe7",
+    "#48b4f8",
+    "#4eabe7",
+    "#0dfbf4",
+    "#f0fefe"
+  ],
+  "foreground": "#a4fbea",
+  "background": "#000000"
+}
diff --git a/configs/shared/.gvcci/themes/pixelated_outer_space/nospace.txt b/configs/shared/.gvcci/themes/pixelated_outer_space/nospace.txt
new file mode 100644
index 0000000000..307b4a2057
--- /dev/null
+++ b/configs/shared/.gvcci/themes/pixelated_outer_space/nospace.txt
@@ -0,0 +1 @@
+#000000#a4fbea#1a1a1a#53b153#53b153#2090d8#109bf3#2090d8#04c7c2#b5fcf8#333333#7bc67b#7bc67b#4eabe7#48b4f8#4eabe7#0dfbf4#f0fefe
diff --git a/configs/shared/.gvcci/themes/pixelated_outer_space/tilix.json b/configs/shared/.gvcci/themes/pixelated_outer_space/tilix.json
new file mode 100644
index 0000000000..c79faa700f
--- /dev/null
+++ b/configs/shared/.gvcci/themes/pixelated_outer_space/tilix.json
@@ -0,0 +1,33 @@
+{
+    "name": "Gvcci",
+    "comment": "Gvcci generated theme.",
+    "foreground-color": "#a4fbea",
+    "background-color": "#000000",
+    "use-theme-colors": false,
+    "use-highlight-color": false,
+    "highlight-foreground-color": "#000000",
+    "highlight-background-color": "#17f7eb",
+    "use-cursor-color": false,
+    "cursor-foreground-color": "#08c9bf",
+    "cursor-background-color": "#08c9bf",
+    "use-badge-color": true,
+    "badge-color": "#a4fbea",
+    "palette": [
+        "#1a1a1a",
+        "#53b153",
+        "#53b153",
+        "#2090d8",
+        "#109bf3",
+        "#2090d8",
+        "#04c7c2",
+        "#b5fcf8",
+        "#333333",
+        "#7bc67b",
+        "#7bc67b",
+        "#4eabe7",
+        "#48b4f8",
+        "#4eabe7",
+        "#0dfbf4",
+        "#f0fefe"
+    ]
+}
\ No newline at end of file
diff --git a/configs/shared/.gvcci/themes/pixelated_outer_space/wallpaper b/configs/shared/.gvcci/themes/pixelated_outer_space/wallpaper
new file mode 100644
index 0000000000..cf635989d2
--- /dev/null
+++ b/configs/shared/.gvcci/themes/pixelated_outer_space/wallpaper
Binary files differdiff --git a/configs/shared/.gvcci/themes/pixelated_outer_space/xresources-colors.txt b/configs/shared/.gvcci/themes/pixelated_outer_space/xresources-colors.txt
new file mode 100644
index 0000000000..40fa9c4d84
--- /dev/null
+++ b/configs/shared/.gvcci/themes/pixelated_outer_space/xresources-colors.txt
@@ -0,0 +1,37 @@
+! COLORS
+! special
+*.foreground:   #a4fbea
+*.background:   #000000
+*.cursorColor:  #a4fbea
+
+! black
+*.color0:       #1a1a1a
+*.color8:       #333333
+
+! red
+*.color1:       #53b153
+*.color9:       #7bc67b
+
+! green
+*.color2:       #53b153
+*.color10:      #7bc67b
+
+! yellow
+*.color3:       #2090d8
+*.color11:      #4eabe7
+
+! blue
+*.color4:       #109bf3
+*.color12:      #48b4f8
+
+! magenta
+*.color5:       #2090d8
+*.color13:      #4eabe7
+
+! cyan
+*.color6:       #04c7c2
+*.color14:      #0dfbf4
+
+! white
+*.color7:       #b5fcf8
+*.color15:      #f0fefe
diff --git a/configs/shared/.gvcci/themes/walle_4k/colors.sh b/configs/shared/.gvcci/themes/walle_4k/colors.sh
new file mode 100644
index 0000000000..e1c5d06913
--- /dev/null
+++ b/configs/shared/.gvcci/themes/walle_4k/colors.sh
@@ -0,0 +1,23 @@
+
+# Special
+background='#05050b'
+foreground='#cd91a8'
+cursor='#cd91a8'
+
+# Colors
+color0='#14162f'
+color1='#ad6265'
+color2='#7e70ac'
+color3='#976982'
+color4='#407baf'
+color5='#a5667e'
+color6='#9e6b77'
+color7='#e9d1c8'
+color8='#232653'
+color9='#c5878a'
+color10='#9f93c6'
+color11='#b28ba1'
+color12='#6499c8'
+color13='#be899e'
+color14='#b98e98'
+color15='#fef5f1'
diff --git a/configs/shared/.gvcci/themes/walle_4k/column.txt b/configs/shared/.gvcci/themes/walle_4k/column.txt
new file mode 100644
index 0000000000..6cb305bea1
--- /dev/null
+++ b/configs/shared/.gvcci/themes/walle_4k/column.txt
@@ -0,0 +1,18 @@
+#05050b
+#cd91a8
+#14162f
+#ad6265
+#7e70ac
+#976982
+#407baf
+#a5667e
+#9e6b77
+#e9d1c8
+#232653
+#c5878a
+#9f93c6
+#b28ba1
+#6499c8
+#be899e
+#b98e98
+#fef5f1
diff --git a/configs/shared/.gvcci/themes/walle_4k/columns-with-headers.txt b/configs/shared/.gvcci/themes/walle_4k/columns-with-headers.txt
new file mode 100644
index 0000000000..d401b59ec8
--- /dev/null
+++ b/configs/shared/.gvcci/themes/walle_4k/columns-with-headers.txt
@@ -0,0 +1,25 @@
+Background
+#05050b
+
+Foreground
+#cd91a8
+
+Normal ANSI Colors
+#14162f
+#ad6265
+#7e70ac
+#976982
+#407baf
+#a5667e
+#9e6b77
+#e9d1c8
+
+Bright ANSI Colors
+#232653
+#c5878a
+#9f93c6
+#b28ba1
+#6499c8
+#be899e
+#b98e98
+#fef5f1
diff --git a/configs/shared/.gvcci/themes/walle_4k/iterm.itermcolors b/configs/shared/.gvcci/themes/walle_4k/iterm.itermcolors
new file mode 100644
index 0000000000..46f3bf42ff
--- /dev/null
+++ b/configs/shared/.gvcci/themes/walle_4k/iterm.itermcolors
@@ -0,0 +1,344 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>Ansi 0 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.1843137254901961</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.08627450980392157</real>
+		<key>Red Component</key>
+        <real>0.0784313725490196</real>
+	</dict>
+	<key>Ansi 1 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.396078431372549</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.3843137254901961</real>
+		<key>Red Component</key>
+        <real>0.6784313725490196</real>
+	</dict>
+	<key>Ansi 10 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.7764705882352941</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5764705882352941</real>
+		<key>Red Component</key>
+        <real>0.6235294117647059</real>
+	</dict>
+	<key>Ansi 11 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.6313725490196078</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5450980392156862</real>
+		<key>Red Component</key>
+        <real>0.6980392156862745</real>
+	</dict>
+	<key>Ansi 12 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.7843137254901961</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.6</real>
+		<key>Red Component</key>
+        <real>0.39215686274509803</real>
+	</dict>
+	<key>Ansi 13 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.6196078431372549</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5372549019607843</real>
+		<key>Red Component</key>
+        <real>0.7450980392156863</real>
+	</dict>
+	<key>Ansi 14 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.596078431372549</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5568627450980392</real>
+		<key>Red Component</key>
+        <real>0.7254901960784313</real>
+	</dict>
+	<key>Ansi 15 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.9450980392156862</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.9607843137254902</real>
+		<key>Red Component</key>
+        <real>0.996078431372549</real>
+	</dict>
+	<key>Ansi 2 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.6745098039215687</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.4392156862745098</real>
+		<key>Red Component</key>
+        <real>0.49411764705882355</real>
+	</dict>
+	<key>Ansi 3 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.5098039215686274</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.4117647058823529</real>
+		<key>Red Component</key>
+        <real>0.592156862745098</real>
+	</dict>
+	<key>Ansi 4 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.6862745098039216</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.4823529411764706</real>
+		<key>Red Component</key>
+        <real>0.25098039215686274</real>
+	</dict>
+	<key>Ansi 5 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.49411764705882355</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.4</real>
+		<key>Red Component</key>
+        <real>0.6470588235294118</real>
+	</dict>
+	<key>Ansi 6 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.4666666666666667</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.4196078431372549</real>
+		<key>Red Component</key>
+        <real>0.6196078431372549</real>
+	</dict>
+	<key>Ansi 7 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.7843137254901961</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.8196078431372549</real>
+		<key>Red Component</key>
+        <real>0.9137254901960784</real>
+	</dict>
+	<key>Ansi 8 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.3254901960784314</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.14901960784313725</real>
+		<key>Red Component</key>
+        <real>0.13725490196078433</real>
+	</dict>
+	<key>Ansi 9 Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.5411764705882353</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5294117647058824</real>
+		<key>Red Component</key>
+        <real>0.7725490196078432</real>
+	</dict>
+	<key>Background Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.043137254901960784</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.0196078431372549</real>
+		<key>Red Component</key>
+        <real>0.0196078431372549</real>
+	</dict>
+	<key>Badge Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>0.5</real>
+		<key>Blue Component</key>
+		<real>0.0</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.1491314172744751</real>
+		<key>Red Component</key>
+		<real>1</real>
+	</dict>
+	<key>Bold Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.6588235294117647</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5686274509803921</real>
+		<key>Red Component</key>
+        <real>0.803921568627451</real>
+	</dict>
+	<key>Cursor Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.44313725490196076</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.4117647058823529</real>
+		<key>Red Component</key>
+        <real>0.6313725490196078</real>
+	</dict>
+	<key>Cursor Guide Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>0.25</real>
+		<key>Blue Component</key>
+		<real>1</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.9268307089805603</real>
+		<key>Red Component</key>
+		<real>0.70213186740875244</real>
+	</dict>
+	<key>Cursor Text Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.62745100259780884</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.50980395078659058</real>
+		<key>Red Component</key>
+		<real>0.54901963472366333</real>
+	</dict>
+	<key>Foreground Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+        <real>0.6588235294117647</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+        <real>0.5686274509803921</real>
+		<key>Red Component</key>
+        <real>0.803921568627451</real>
+	</dict>
+	<key>Link Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.73423302173614502</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.35916060209274292</real>
+		<key>Red Component</key>
+		<real>0.0</real>
+	</dict>
+	<key>Selected Text Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.043137254901960784</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.0196078431372549</real>
+		<key>Red Component</key>
+		<real>0.0196078431372549</real>
+	</dict>
+	<key>Selection Color</key>
+	<dict>
+		<key>Alpha Component</key>
+		<real>1</real>
+		<key>Blue Component</key>
+		<real>0.5764705882352941</real>
+		<key>Color Space</key>
+		<string>sRGB</string>
+		<key>Green Component</key>
+		<real>0.5490196078431373</real>
+		<key>Red Component</key>
+		<real>0.7333333333333333</real>
+	</dict>
+</dict>
+</plist>
diff --git a/configs/shared/.gvcci/themes/walle_4k/iterm.plist b/configs/shared/.gvcci/themes/walle_4k/iterm.plist
new file mode 100644
index 0000000000..1649b8e342
--- /dev/null
+++ b/configs/shared/.gvcci/themes/walle_4k/iterm.plist
@@ -0,0 +1,412 @@
+{
+  "Profiles": [
+    {
+      "Use Non-ASCII Font" : false,
+      "Tags" : [
+
+      ],
+      "Ansi 12 Color" : {
+        "Red Component" : 0.39215686274509803,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.7843137254901961,
+        "Alpha Component" : 1,
+        "Green Component" : 0.6
+      },
+      "Ansi 7 Color" : {
+        "Red Component" : 0.9137254901960784,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.7843137254901961,
+        "Alpha Component" : 1,
+        "Green Component" : 0.8196078431372549
+      },
+      "Ansi 8 Color" : {
+        "Red Component" : 0.13725490196078433,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.3254901960784314,
+        "Alpha Component" : 1,
+        "Green Component" : 0.14901960784313725
+      },
+      "Bold Color" : {
+        "Red Component" : 0.803921568627451,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.6588235294117647,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5686274509803921
+      },
+      "Ansi 9 Color" : {
+        "Red Component" : 0.7725490196078432,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.5411764705882353,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5294117647058824
+      },
+      "Ansi 6 Color" : {
+        "Red Component" : 0.6196078431372549,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.4666666666666667,
+        "Alpha Component" : 1,
+        "Green Component" : 0.4196078431372549
+      },
+      "Right Option Key Sends" : 0,
+      "Rows" : 25,
+      "Default Bookmark" : "No",
+      "Cursor Guide Color" : {
+        "Red Component" : 1,
+        "Color Space" : "Calibrated",
+        "Blue Component" : 0.9999912977218628,
+        "Alpha Component" : 0.04705882352941176,
+        "Green Component" : 0.9999743700027466
+      },
+      "Non-ASCII Anti Aliased" : true,
+      "Use Bright Bold" : true,
+      "Ansi 10 Color" : {
+        "Red Component" : 0.6235294117647059,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.7764705882352941,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5764705882352941
+      },
+      "Use Cursor Guide" : false,
+      "Ambiguous Double Width" : false,
+      "Jobs to Ignore" : [
+        "rlogin",
+        "ssh",
+        "slogin",
+        "telnet"
+      ],
+      "Ansi 15 Color" : {
+        "Red Component" : 0.996078431372549,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.9450980392156862,
+        "Alpha Component" : 1,
+        "Green Component" : 0.9607843137254902
+      },
+      "Foreground Color" : {
+        "Red Component" : 0.803921568627451,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.6588235294117647,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5686274509803921
+      },
+      "Working Directory" : "\/Users\/fabricecastel",
+      "Bound Hosts" : [
+
+      ],
+      "Blinking Cursor" : false,
+      "Disable Window Resizing" : true,
+      "Sync Title" : false,
+      "Prompt Before Closing 2" : false,
+      "BM Growl" : false,
+      "Description" : "Default",
+      "Mouse Reporting" : true,
+      "Smart Cursor Color" : false,
+      "Screen" : -1,
+      "Selection Color" : {
+        "Red Component" : 0.7333333333333333,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.5764705882352941,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5490196078431373
+      },
+      "Columns" : 80,
+      "Idle Code" : 0,
+      "Ansi 13 Color" : {
+        "Red Component" : 0.7450980392156863,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.6196078431372549,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5372549019607843
+      },
+      "Custom Command" : "Yes",
+      "ASCII Anti Aliased" : true,
+      "Non Ascii Font" : "Monaco 12",
+      "Vertical Spacing" : 1,
+      "Use Bold Font" : true,
+      "Option Key Sends" : 0,
+      "Selected Text Color" : {
+        "Red Component" : 0.0196078431372549,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.043137254901960784,
+        "Alpha Component" : 1,
+        "Green Component" : 0.0196078431372549
+      },
+      "Background Color" : {
+        "Red Component" : 0.0196078431372549,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.043137254901960784,
+        "Alpha Component" : 1,
+        "Green Component" : 0.0196078431372549
+      },
+      "Character Encoding" : 4,
+      "Ansi 11 Color" : {
+        "Red Component" : 0.6980392156862745,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.6313725490196078,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5450980392156862
+      },
+      "Use Italic Font" : true,
+      "Unlimited Scrollback" : false,
+      "Keyboard Map" : {
+        "0xf700-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6A"
+        },
+        "0x37-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1f"
+        },
+        "0x32-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x00"
+        },
+        "0xf709-0x20000" : {
+          "Action" : 10,
+          "Text" : "[17;2~"
+        },
+        "0xf70c-0x20000" : {
+          "Action" : 10,
+          "Text" : "[20;2~"
+        },
+        "0xf729-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2H"
+        },
+        "0xf72b-0x40000" : {
+          "Action" : 10,
+          "Text" : "[1;5F"
+        },
+        "0xf705-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2Q"
+        },
+        "0xf703-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6C"
+        },
+        "0xf700-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2A"
+        },
+        "0xf701-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x42"
+        },
+        "0x38-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x7f"
+        },
+        "0x33-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1b"
+        },
+        "0xf703-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2C"
+        },
+        "0xf701-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5B"
+        },
+        "0xf70d-0x20000" : {
+          "Action" : 10,
+          "Text" : "[21;2~"
+        },
+        "0xf702-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6D"
+        },
+        "0xf729-0x40000" : {
+          "Action" : 10,
+          "Text" : "[1;5H"
+        },
+        "0xf706-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2R"
+        },
+        "0x34-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1c"
+        },
+        "0xf700-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x41"
+        },
+        "0x2d-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1f"
+        },
+        "0xf70e-0x20000" : {
+          "Action" : 10,
+          "Text" : "[23;2~"
+        },
+        "0xf702-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2D"
+        },
+        "0xf703-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x43"
+        },
+        "0xf700-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5A"
+        },
+        "0xf707-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2S"
+        },
+        "0xf70a-0x20000" : {
+          "Action" : 10,
+          "Text" : "[18;2~"
+        },
+        "0x35-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1d"
+        },
+        "0xf70f-0x20000" : {
+          "Action" : 10,
+          "Text" : "[24;2~"
+        },
+        "0xf703-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5C"
+        },
+        "0xf701-0x260000" : {
+          "Action" : 10,
+          "Text" : "[1;6B"
+        },
+        "0xf702-0x280000" : {
+          "Action" : 11,
+          "Text" : "0x1b 0x1b 0x5b 0x44"
+        },
+        "0xf72b-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2F"
+        },
+        "0x36-0x40000" : {
+          "Action" : 11,
+          "Text" : "0x1e"
+        },
+        "0xf708-0x20000" : {
+          "Action" : 10,
+          "Text" : "[15;2~"
+        },
+        "0xf701-0x220000" : {
+          "Action" : 10,
+          "Text" : "[1;2B"
+        },
+        "0xf70b-0x20000" : {
+          "Action" : 10,
+          "Text" : "[19;2~"
+        },
+        "0xf702-0x240000" : {
+          "Action" : 10,
+          "Text" : "[1;5D"
+        },
+        "0xf704-0x20000" : {
+          "Action" : 10,
+          "Text" : "[1;2P"
+        }
+      },
+      "Window Type" : 12,
+      "Blur Radius" : 5.168569711538462,
+      "Cursor Type" : 2,
+      "Background Image Location" : "",
+      "Blur" : false,
+      "Badge Color" : {
+        "Red Component" : 1,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0,
+        "Alpha Component" : 0.5,
+        "Green Component" : 0.1491314172744751
+      },
+      "Cursor Boost" : 0,
+      "Scrollback Lines" : 1000,
+      "Send Code When Idle" : false,
+      "Close Sessions On End" : true,
+      "Terminal Type" : "xterm-256color",
+      "Visual Bell" : true,
+      "Flashing Bell" : false,
+      "Silence Bell" : true,
+      "Ansi 14 Color" : {
+        "Red Component" : 0.7254901960784313,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.596078431372549,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5568627450980392
+      },
+      "Name" : "gvcci",
+      "Cursor Text Color" : {
+        "Red Component" : 0.5490196347236633,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.6274510025978088,
+        "Alpha Component" : 1,
+        "Green Component" : 0.5098039507865906
+      },
+      "Minimum Contrast" : 0,
+      "Shortcut" : "",
+      "Cursor Color" : {
+        "Red Component" : 0.6313725490196078,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.44313725490196076,
+        "Alpha Component" : 1,
+        "Green Component" : 0.4117647058823529
+      },
+      "Ansi 0 Color" : {
+        "Red Component" : 0.0784313725490196,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.1843137254901961,
+        "Alpha Component" : 1,
+        "Green Component" : 0.08627450980392157
+      },
+      "Ansi 1 Color" : {
+        "Red Component" : 0.6784313725490196,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.396078431372549,
+        "Alpha Component" : 1,
+        "Green Component" : 0.3843137254901961
+      },
+      "Horizontal Spacing" : 1,
+      "Ansi 3 Color" : {
+        "Red Component" : 0.592156862745098,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.5098039215686274,
+        "Alpha Component" : 1,
+        "Green Component" : 0.4117647058823529
+      },
+      "Ansi 4 Color" : {
+        "Red Component" : 0.25098039215686274,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.6862745098039216,
+        "Alpha Component" : 1,
+        "Green Component" : 0.4823529411764706
+      },
+      "Transparency" : 0,
+      "Guid" : "FBF27982-5D1C-4625-8221-8FFAB9F4A445",
+      "Ansi 2 Color" : {
+        "Red Component" : 0.49411764705882355,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.6745098039215687,
+        "Alpha Component" : 1,
+        "Green Component" : 0.4392156862745098
+      },
+      "Normal Font" : "MesloLGSForPowerline-Regular 12",
+      "Custom Directory" : "No",
+      "Link Color" : {
+        "Red Component" : 0,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.734233021736145,
+        "Alpha Component" : 1,
+        "Green Component" : 0.3591606020927429
+      },
+      "Ansi 5 Color" : {
+        "Red Component" : 0.6470588235294118,
+        "Color Space" : "sRGB",
+        "Blue Component" : 0.49411764705882355,
+        "Alpha Component" : 1,
+        "Green Component" : 0.4
+      },
+    }
+  ]
+}
diff --git a/configs/shared/.gvcci/themes/walle_4k/json-scheme.json b/configs/shared/.gvcci/themes/walle_4k/json-scheme.json
new file mode 100644
index 0000000000..31c168123c
--- /dev/null
+++ b/configs/shared/.gvcci/themes/walle_4k/json-scheme.json
@@ -0,0 +1,24 @@
+{
+  "name": "GVCCI Color Scheme",
+  "author": "",
+  "color": [
+    "#14162f",
+    "#ad6265",
+    "#7e70ac",
+    "#976982",
+    "#407baf",
+    "#a5667e",
+    "#9e6b77",
+    "#e9d1c8",
+    "#232653",
+    "#c5878a",
+    "#9f93c6",
+    "#b28ba1",
+    "#6499c8",
+    "#be899e",
+    "#b98e98",
+    "#fef5f1"
+  ],
+  "foreground": "#cd91a8",
+  "background": "#05050b"
+}
diff --git a/configs/shared/.gvcci/themes/walle_4k/nospace.txt b/configs/shared/.gvcci/themes/walle_4k/nospace.txt
new file mode 100644
index 0000000000..8a8eb80973
--- /dev/null
+++ b/configs/shared/.gvcci/themes/walle_4k/nospace.txt
@@ -0,0 +1 @@
+#05050b#cd91a8#14162f#ad6265#7e70ac#976982#407baf#a5667e#9e6b77#e9d1c8#232653#c5878a#9f93c6#b28ba1#6499c8#be899e#b98e98#fef5f1
diff --git a/configs/shared/.gvcci/themes/walle_4k/tilix.json b/configs/shared/.gvcci/themes/walle_4k/tilix.json
new file mode 100644
index 0000000000..dc382e6c88
--- /dev/null
+++ b/configs/shared/.gvcci/themes/walle_4k/tilix.json
@@ -0,0 +1,33 @@
+{
+    "name": "Gvcci",
+    "comment": "Gvcci generated theme.",
+    "foreground-color": "#cd91a8",
+    "background-color": "#05050b",
+    "use-theme-colors": false,
+    "use-highlight-color": false,
+    "highlight-foreground-color": "#05050b",
+    "highlight-background-color": "#bb8c93",
+    "use-cursor-color": false,
+    "cursor-foreground-color": "#a16971",
+    "cursor-background-color": "#a16971",
+    "use-badge-color": true,
+    "badge-color": "#cd91a8",
+    "palette": [
+        "#14162f",
+        "#ad6265",
+        "#7e70ac",
+        "#976982",
+        "#407baf",
+        "#a5667e",
+        "#9e6b77",
+        "#e9d1c8",
+        "#232653",
+        "#c5878a",
+        "#9f93c6",
+        "#b28ba1",
+        "#6499c8",
+        "#be899e",
+        "#b98e98",
+        "#fef5f1"
+    ]
+}
\ No newline at end of file
diff --git a/configs/shared/.gvcci/themes/walle_4k/wallpaper b/configs/shared/.gvcci/themes/walle_4k/wallpaper
new file mode 100644
index 0000000000..df2f83ed3a
--- /dev/null
+++ b/configs/shared/.gvcci/themes/walle_4k/wallpaper
Binary files differdiff --git a/configs/shared/.gvcci/themes/walle_4k/xresources-colors.txt b/configs/shared/.gvcci/themes/walle_4k/xresources-colors.txt
new file mode 100644
index 0000000000..6be1445660
--- /dev/null
+++ b/configs/shared/.gvcci/themes/walle_4k/xresources-colors.txt
@@ -0,0 +1,37 @@
+! COLORS
+! special
+*.foreground:   #cd91a8
+*.background:   #05050b
+*.cursorColor:  #cd91a8
+
+! black
+*.color0:       #14162f
+*.color8:       #232653
+
+! red
+*.color1:       #ad6265
+*.color9:       #c5878a
+
+! green
+*.color2:       #7e70ac
+*.color10:      #9f93c6
+
+! yellow
+*.color3:       #976982
+*.color11:      #b28ba1
+
+! blue
+*.color4:       #407baf
+*.color12:      #6499c8
+
+! magenta
+*.color5:       #a5667e
+*.color13:      #be899e
+
+! cyan
+*.color6:       #9e6b77
+*.color14:      #b98e98
+
+! white
+*.color7:       #e9d1c8
+*.color15:      #fef5f1
diff --git a/configs/shared/misc/.irssi/config b/configs/shared/.irssi/config
index cfd6adcc06..cfd6adcc06 100644
--- a/configs/shared/misc/.irssi/config
+++ b/configs/shared/.irssi/config
diff --git a/configs/shared/misc/.local/share/fonts/.uuid b/configs/shared/.local/share/fonts/.uuid
index d45a157377..d45a157377 100644
--- a/configs/shared/misc/.local/share/fonts/.uuid
+++ b/configs/shared/.local/share/fonts/.uuid
diff --git a/configs/shared/.local/share/fonts/Apl385.ttf b/configs/shared/.local/share/fonts/Apl385.ttf
new file mode 100644
index 0000000000..4424ab2896
--- /dev/null
+++ b/configs/shared/.local/share/fonts/Apl385.ttf
Binary files differdiff --git a/configs/shared/misc/.local/share/fonts/FiraMono-Bold.ttf b/configs/shared/.local/share/fonts/FiraMono-Bold.ttf
index 12f05a77e5..12f05a77e5 100644
--- a/configs/shared/misc/.local/share/fonts/FiraMono-Bold.ttf
+++ b/configs/shared/.local/share/fonts/FiraMono-Bold.ttf
Binary files differdiff --git a/configs/shared/misc/.local/share/fonts/FiraMono-Medium.ttf b/configs/shared/.local/share/fonts/FiraMono-Medium.ttf
index a80896cf49..a80896cf49 100644
--- a/configs/shared/misc/.local/share/fonts/FiraMono-Medium.ttf
+++ b/configs/shared/.local/share/fonts/FiraMono-Medium.ttf
Binary files differdiff --git a/configs/shared/misc/.local/share/fonts/FiraMono-Regular.ttf b/configs/shared/.local/share/fonts/FiraMono-Regular.ttf
index f0572e14c3..f0572e14c3 100644
--- a/configs/shared/misc/.local/share/fonts/FiraMono-Regular.ttf
+++ b/configs/shared/.local/share/fonts/FiraMono-Regular.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/Go-Bold-Italic.ttf b/configs/shared/.local/share/fonts/Go-Bold-Italic.ttf
new file mode 100644
index 0000000000..46e614ac38
--- /dev/null
+++ b/configs/shared/.local/share/fonts/Go-Bold-Italic.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/Go-Bold.ttf b/configs/shared/.local/share/fonts/Go-Bold.ttf
new file mode 100644
index 0000000000..afa79ae787
--- /dev/null
+++ b/configs/shared/.local/share/fonts/Go-Bold.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/Go-Italic.ttf b/configs/shared/.local/share/fonts/Go-Italic.ttf
new file mode 100644
index 0000000000..759bd14860
--- /dev/null
+++ b/configs/shared/.local/share/fonts/Go-Italic.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/Go-Medium-Italic.ttf b/configs/shared/.local/share/fonts/Go-Medium-Italic.ttf
new file mode 100644
index 0000000000..cf408f6f13
--- /dev/null
+++ b/configs/shared/.local/share/fonts/Go-Medium-Italic.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/Go-Medium.ttf b/configs/shared/.local/share/fonts/Go-Medium.ttf
new file mode 100644
index 0000000000..a1b034affb
--- /dev/null
+++ b/configs/shared/.local/share/fonts/Go-Medium.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/Go-Mono-Bold-Italic.ttf b/configs/shared/.local/share/fonts/Go-Mono-Bold-Italic.ttf
new file mode 100644
index 0000000000..c138a9e1f3
--- /dev/null
+++ b/configs/shared/.local/share/fonts/Go-Mono-Bold-Italic.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/Go-Mono-Bold.ttf b/configs/shared/.local/share/fonts/Go-Mono-Bold.ttf
new file mode 100644
index 0000000000..551da07f1b
--- /dev/null
+++ b/configs/shared/.local/share/fonts/Go-Mono-Bold.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/Go-Mono-Italic.ttf b/configs/shared/.local/share/fonts/Go-Mono-Italic.ttf
new file mode 100644
index 0000000000..22d4390e41
--- /dev/null
+++ b/configs/shared/.local/share/fonts/Go-Mono-Italic.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/Go-Mono.ttf b/configs/shared/.local/share/fonts/Go-Mono.ttf
new file mode 100644
index 0000000000..71e3012347
--- /dev/null
+++ b/configs/shared/.local/share/fonts/Go-Mono.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/Go-Regular.ttf b/configs/shared/.local/share/fonts/Go-Regular.ttf
new file mode 100644
index 0000000000..1b6ba86e38
--- /dev/null
+++ b/configs/shared/.local/share/fonts/Go-Regular.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/Go-Smallcaps-Italic.ttf b/configs/shared/.local/share/fonts/Go-Smallcaps-Italic.ttf
new file mode 100644
index 0000000000..f43dd8362d
--- /dev/null
+++ b/configs/shared/.local/share/fonts/Go-Smallcaps-Italic.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/Go-Smallcaps.ttf b/configs/shared/.local/share/fonts/Go-Smallcaps.ttf
new file mode 100644
index 0000000000..cd0acb4a6b
--- /dev/null
+++ b/configs/shared/.local/share/fonts/Go-Smallcaps.ttf
Binary files differdiff --git a/configs/shared/misc/.local/share/fonts/Hack-Bold.ttf b/configs/shared/.local/share/fonts/Hack-Bold.ttf
index 7ff4975285..7ff4975285 100644
--- a/configs/shared/misc/.local/share/fonts/Hack-Bold.ttf
+++ b/configs/shared/.local/share/fonts/Hack-Bold.ttf
Binary files differdiff --git a/configs/shared/misc/.local/share/fonts/Hack-BoldItalic.ttf b/configs/shared/.local/share/fonts/Hack-BoldItalic.ttf
index 3b137d9715..3b137d9715 100644
--- a/configs/shared/misc/.local/share/fonts/Hack-BoldItalic.ttf
+++ b/configs/shared/.local/share/fonts/Hack-BoldItalic.ttf
Binary files differdiff --git a/configs/shared/misc/.local/share/fonts/Hack-Italic.ttf b/configs/shared/.local/share/fonts/Hack-Italic.ttf
index d26198a321..d26198a321 100644
--- a/configs/shared/misc/.local/share/fonts/Hack-Italic.ttf
+++ b/configs/shared/.local/share/fonts/Hack-Italic.ttf
Binary files differdiff --git a/configs/shared/misc/.local/share/fonts/Hack-Regular.ttf b/configs/shared/.local/share/fonts/Hack-Regular.ttf
index 92a90cb06e..92a90cb06e 100644
--- a/configs/shared/misc/.local/share/fonts/Hack-Regular.ttf
+++ b/configs/shared/.local/share/fonts/Hack-Regular.ttf
Binary files differdiff --git a/configs/shared/misc/.local/share/fonts/Hasklig-Black.otf b/configs/shared/.local/share/fonts/Hasklig-Black.otf
index a276f67210..a276f67210 100644
--- a/configs/shared/misc/.local/share/fonts/Hasklig-Black.otf
+++ b/configs/shared/.local/share/fonts/Hasklig-Black.otf
Binary files differdiff --git a/configs/shared/misc/.local/share/fonts/Hasklig-BlackIt.otf b/configs/shared/.local/share/fonts/Hasklig-BlackIt.otf
index d5981c1244..d5981c1244 100644
--- a/configs/shared/misc/.local/share/fonts/Hasklig-BlackIt.otf
+++ b/configs/shared/.local/share/fonts/Hasklig-BlackIt.otf
Binary files differdiff --git a/configs/shared/misc/.local/share/fonts/Hasklig-Bold.otf b/configs/shared/.local/share/fonts/Hasklig-Bold.otf
index 95356b671c..95356b671c 100644
--- a/configs/shared/misc/.local/share/fonts/Hasklig-Bold.otf
+++ b/configs/shared/.local/share/fonts/Hasklig-Bold.otf
Binary files differdiff --git a/configs/shared/misc/.local/share/fonts/Hasklig-BoldIt.otf b/configs/shared/.local/share/fonts/Hasklig-BoldIt.otf
index f7bff9a4c9..f7bff9a4c9 100644
--- a/configs/shared/misc/.local/share/fonts/Hasklig-BoldIt.otf
+++ b/configs/shared/.local/share/fonts/Hasklig-BoldIt.otf
Binary files differdiff --git a/configs/shared/misc/.local/share/fonts/Hasklig-ExtraLight.otf b/configs/shared/.local/share/fonts/Hasklig-ExtraLight.otf
index 510a03936c..510a03936c 100644
--- a/configs/shared/misc/.local/share/fonts/Hasklig-ExtraLight.otf
+++ b/configs/shared/.local/share/fonts/Hasklig-ExtraLight.otf
Binary files differdiff --git a/configs/shared/misc/.local/share/fonts/Hasklig-ExtraLightIt.otf b/configs/shared/.local/share/fonts/Hasklig-ExtraLightIt.otf
index 5c903455bd..5c903455bd 100644
--- a/configs/shared/misc/.local/share/fonts/Hasklig-ExtraLightIt.otf
+++ b/configs/shared/.local/share/fonts/Hasklig-ExtraLightIt.otf
Binary files differdiff --git a/configs/shared/misc/.local/share/fonts/Hasklig-It.otf b/configs/shared/.local/share/fonts/Hasklig-It.otf
index dd645861a4..dd645861a4 100644
--- a/configs/shared/misc/.local/share/fonts/Hasklig-It.otf
+++ b/configs/shared/.local/share/fonts/Hasklig-It.otf
Binary files differdiff --git a/configs/shared/misc/.local/share/fonts/Hasklig-Light.otf b/configs/shared/.local/share/fonts/Hasklig-Light.otf
index 84f3f58a45..84f3f58a45 100644
--- a/configs/shared/misc/.local/share/fonts/Hasklig-Light.otf
+++ b/configs/shared/.local/share/fonts/Hasklig-Light.otf
Binary files differdiff --git a/configs/shared/misc/.local/share/fonts/Hasklig-LightIt.otf b/configs/shared/.local/share/fonts/Hasklig-LightIt.otf
index 70d02635ce..70d02635ce 100644
--- a/configs/shared/misc/.local/share/fonts/Hasklig-LightIt.otf
+++ b/configs/shared/.local/share/fonts/Hasklig-LightIt.otf
Binary files differdiff --git a/configs/shared/misc/.local/share/fonts/Hasklig-Medium.otf b/configs/shared/.local/share/fonts/Hasklig-Medium.otf
index c89beb39f5..c89beb39f5 100644
--- a/configs/shared/misc/.local/share/fonts/Hasklig-Medium.otf
+++ b/configs/shared/.local/share/fonts/Hasklig-Medium.otf
Binary files differdiff --git a/configs/shared/misc/.local/share/fonts/Hasklig-MediumIt.otf b/configs/shared/.local/share/fonts/Hasklig-MediumIt.otf
index 197c78907b..197c78907b 100644
--- a/configs/shared/misc/.local/share/fonts/Hasklig-MediumIt.otf
+++ b/configs/shared/.local/share/fonts/Hasklig-MediumIt.otf
Binary files differdiff --git a/configs/shared/misc/.local/share/fonts/Hasklig-Regular.otf b/configs/shared/.local/share/fonts/Hasklig-Regular.otf
index 913fb8c080..913fb8c080 100644
--- a/configs/shared/misc/.local/share/fonts/Hasklig-Regular.otf
+++ b/configs/shared/.local/share/fonts/Hasklig-Regular.otf
Binary files differdiff --git a/configs/shared/misc/.local/share/fonts/Hasklig-Semibold.otf b/configs/shared/.local/share/fonts/Hasklig-Semibold.otf
index 2b4f008918..2b4f008918 100644
--- a/configs/shared/misc/.local/share/fonts/Hasklig-Semibold.otf
+++ b/configs/shared/.local/share/fonts/Hasklig-Semibold.otf
Binary files differdiff --git a/configs/shared/misc/.local/share/fonts/Hasklig-SemiboldIt.otf b/configs/shared/.local/share/fonts/Hasklig-SemiboldIt.otf
index e2d9d7a48f..e2d9d7a48f 100644
--- a/configs/shared/misc/.local/share/fonts/Hasklig-SemiboldIt.otf
+++ b/configs/shared/.local/share/fonts/Hasklig-SemiboldIt.otf
Binary files differdiff --git a/configs/shared/.local/share/fonts/InputMono-Black.ttf b/configs/shared/.local/share/fonts/InputMono-Black.ttf
new file mode 100644
index 0000000000..bc9220a5b0
--- /dev/null
+++ b/configs/shared/.local/share/fonts/InputMono-Black.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/InputMono-BlackItalic.ttf b/configs/shared/.local/share/fonts/InputMono-BlackItalic.ttf
new file mode 100644
index 0000000000..a2fac8533a
--- /dev/null
+++ b/configs/shared/.local/share/fonts/InputMono-BlackItalic.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/InputMono-Bold.ttf b/configs/shared/.local/share/fonts/InputMono-Bold.ttf
new file mode 100644
index 0000000000..62e218b5ec
--- /dev/null
+++ b/configs/shared/.local/share/fonts/InputMono-Bold.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/InputMono-BoldItalic.ttf b/configs/shared/.local/share/fonts/InputMono-BoldItalic.ttf
new file mode 100644
index 0000000000..9cbbb5ebd8
--- /dev/null
+++ b/configs/shared/.local/share/fonts/InputMono-BoldItalic.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/InputMono-ExtraLight.ttf b/configs/shared/.local/share/fonts/InputMono-ExtraLight.ttf
new file mode 100644
index 0000000000..3102a9aacd
--- /dev/null
+++ b/configs/shared/.local/share/fonts/InputMono-ExtraLight.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/InputMono-ExtraLightItalic.ttf b/configs/shared/.local/share/fonts/InputMono-ExtraLightItalic.ttf
new file mode 100644
index 0000000000..c53f2379b3
--- /dev/null
+++ b/configs/shared/.local/share/fonts/InputMono-ExtraLightItalic.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/InputMono-Italic.ttf b/configs/shared/.local/share/fonts/InputMono-Italic.ttf
new file mode 100644
index 0000000000..e11651bb29
--- /dev/null
+++ b/configs/shared/.local/share/fonts/InputMono-Italic.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/InputMono-Light.ttf b/configs/shared/.local/share/fonts/InputMono-Light.ttf
new file mode 100644
index 0000000000..b0f810da71
--- /dev/null
+++ b/configs/shared/.local/share/fonts/InputMono-Light.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/InputMono-LightItalic.ttf b/configs/shared/.local/share/fonts/InputMono-LightItalic.ttf
new file mode 100644
index 0000000000..01f64a4db4
--- /dev/null
+++ b/configs/shared/.local/share/fonts/InputMono-LightItalic.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/InputMono-Medium.ttf b/configs/shared/.local/share/fonts/InputMono-Medium.ttf
new file mode 100644
index 0000000000..0d488bf84f
--- /dev/null
+++ b/configs/shared/.local/share/fonts/InputMono-Medium.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/InputMono-MediumItalic.ttf b/configs/shared/.local/share/fonts/InputMono-MediumItalic.ttf
new file mode 100644
index 0000000000..805b387950
--- /dev/null
+++ b/configs/shared/.local/share/fonts/InputMono-MediumItalic.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/InputMono-Regular.ttf b/configs/shared/.local/share/fonts/InputMono-Regular.ttf
new file mode 100644
index 0000000000..c19c28706f
--- /dev/null
+++ b/configs/shared/.local/share/fonts/InputMono-Regular.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/InputMono-Thin.ttf b/configs/shared/.local/share/fonts/InputMono-Thin.ttf
new file mode 100644
index 0000000000..93e9214aec
--- /dev/null
+++ b/configs/shared/.local/share/fonts/InputMono-Thin.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/InputMono-ThinItalic.ttf b/configs/shared/.local/share/fonts/InputMono-ThinItalic.ttf
new file mode 100644
index 0000000000..1c6fb3b9d7
--- /dev/null
+++ b/configs/shared/.local/share/fonts/InputMono-ThinItalic.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/Monoid-Bold.ttf b/configs/shared/.local/share/fonts/Monoid-Bold.ttf
new file mode 100644
index 0000000000..730c63d4b5
--- /dev/null
+++ b/configs/shared/.local/share/fonts/Monoid-Bold.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/Monoid-Italic.ttf b/configs/shared/.local/share/fonts/Monoid-Italic.ttf
new file mode 100644
index 0000000000..97a5b8f6ed
--- /dev/null
+++ b/configs/shared/.local/share/fonts/Monoid-Italic.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/Monoid-Regular.ttf b/configs/shared/.local/share/fonts/Monoid-Regular.ttf
new file mode 100644
index 0000000000..a09e9faff2
--- /dev/null
+++ b/configs/shared/.local/share/fonts/Monoid-Regular.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/Monoid-Retina.ttf b/configs/shared/.local/share/fonts/Monoid-Retina.ttf
new file mode 100644
index 0000000000..ec881731ac
--- /dev/null
+++ b/configs/shared/.local/share/fonts/Monoid-Retina.ttf
Binary files differdiff --git a/configs/shared/misc/.local/share/fonts/NotoColorEmoji.ttf b/configs/shared/.local/share/fonts/NotoColorEmoji.ttf
index 69cf21a1a9..69cf21a1a9 100644
--- a/configs/shared/misc/.local/share/fonts/NotoColorEmoji.ttf
+++ b/configs/shared/.local/share/fonts/NotoColorEmoji.ttf
Binary files differdiff --git a/configs/shared/misc/.local/share/fonts/OperatorMono-Bold.otf b/configs/shared/.local/share/fonts/OperatorMono-Bold.otf
index 01d93a7071..01d93a7071 100644
--- a/configs/shared/misc/.local/share/fonts/OperatorMono-Bold.otf
+++ b/configs/shared/.local/share/fonts/OperatorMono-Bold.otf
Binary files differdiff --git a/configs/shared/misc/.local/share/fonts/OperatorMono-BoldItalic.otf b/configs/shared/.local/share/fonts/OperatorMono-BoldItalic.otf
index f912e44c87..f912e44c87 100644
--- a/configs/shared/misc/.local/share/fonts/OperatorMono-BoldItalic.otf
+++ b/configs/shared/.local/share/fonts/OperatorMono-BoldItalic.otf
Binary files differdiff --git a/configs/shared/misc/.local/share/fonts/OperatorMono-Book.otf b/configs/shared/.local/share/fonts/OperatorMono-Book.otf
index a636ec0c61..a636ec0c61 100644
--- a/configs/shared/misc/.local/share/fonts/OperatorMono-Book.otf
+++ b/configs/shared/.local/share/fonts/OperatorMono-Book.otf
Binary files differdiff --git a/configs/shared/misc/.local/share/fonts/OperatorMono-BookItalic.otf b/configs/shared/.local/share/fonts/OperatorMono-BookItalic.otf
index a05c10f446..a05c10f446 100644
--- a/configs/shared/misc/.local/share/fonts/OperatorMono-BookItalic.otf
+++ b/configs/shared/.local/share/fonts/OperatorMono-BookItalic.otf
Binary files differdiff --git a/configs/shared/misc/.local/share/fonts/OperatorMono-Light.otf b/configs/shared/.local/share/fonts/OperatorMono-Light.otf
index b199504c0f..b199504c0f 100644
--- a/configs/shared/misc/.local/share/fonts/OperatorMono-Light.otf
+++ b/configs/shared/.local/share/fonts/OperatorMono-Light.otf
Binary files differdiff --git a/configs/shared/misc/.local/share/fonts/OperatorMono-LightItalic.otf b/configs/shared/.local/share/fonts/OperatorMono-LightItalic.otf
index befd0390c9..befd0390c9 100644
--- a/configs/shared/misc/.local/share/fonts/OperatorMono-LightItalic.otf
+++ b/configs/shared/.local/share/fonts/OperatorMono-LightItalic.otf
Binary files differdiff --git a/configs/shared/misc/.local/share/fonts/OperatorMono-Medium.otf b/configs/shared/.local/share/fonts/OperatorMono-Medium.otf
index 6d1cc1542a..6d1cc1542a 100644
--- a/configs/shared/misc/.local/share/fonts/OperatorMono-Medium.otf
+++ b/configs/shared/.local/share/fonts/OperatorMono-Medium.otf
Binary files differdiff --git a/configs/shared/misc/.local/share/fonts/OperatorMono-MediumItalic.otf b/configs/shared/.local/share/fonts/OperatorMono-MediumItalic.otf
index af9442caa3..af9442caa3 100644
--- a/configs/shared/misc/.local/share/fonts/OperatorMono-MediumItalic.otf
+++ b/configs/shared/.local/share/fonts/OperatorMono-MediumItalic.otf
Binary files differdiff --git a/configs/shared/misc/.local/share/fonts/OperatorMono-XLight.otf b/configs/shared/.local/share/fonts/OperatorMono-XLight.otf
index 813a64247d..813a64247d 100644
--- a/configs/shared/misc/.local/share/fonts/OperatorMono-XLight.otf
+++ b/configs/shared/.local/share/fonts/OperatorMono-XLight.otf
Binary files differdiff --git a/configs/shared/misc/.local/share/fonts/OperatorMono-XLightItalic.otf b/configs/shared/.local/share/fonts/OperatorMono-XLightItalic.otf
index aa9e2c28ad..aa9e2c28ad 100644
--- a/configs/shared/misc/.local/share/fonts/OperatorMono-XLightItalic.otf
+++ b/configs/shared/.local/share/fonts/OperatorMono-XLightItalic.otf
Binary files differdiff --git a/configs/shared/misc/.local/share/fonts/SourceCodePro-Black.ttf b/configs/shared/.local/share/fonts/SourceCodePro-Black.ttf
index e2422b25fb..e2422b25fb 100644
--- a/configs/shared/misc/.local/share/fonts/SourceCodePro-Black.ttf
+++ b/configs/shared/.local/share/fonts/SourceCodePro-Black.ttf
Binary files differdiff --git a/configs/shared/misc/.local/share/fonts/SourceCodePro-Bold.ttf b/configs/shared/.local/share/fonts/SourceCodePro-Bold.ttf
index 2e545feeb3..2e545feeb3 100644
--- a/configs/shared/misc/.local/share/fonts/SourceCodePro-Bold.ttf
+++ b/configs/shared/.local/share/fonts/SourceCodePro-Bold.ttf
Binary files differdiff --git a/configs/shared/misc/.local/share/fonts/SourceCodePro-ExtraLight.ttf b/configs/shared/.local/share/fonts/SourceCodePro-ExtraLight.ttf
index 8a80a64012..8a80a64012 100644
--- a/configs/shared/misc/.local/share/fonts/SourceCodePro-ExtraLight.ttf
+++ b/configs/shared/.local/share/fonts/SourceCodePro-ExtraLight.ttf
Binary files differdiff --git a/configs/shared/misc/.local/share/fonts/SourceCodePro-Light.ttf b/configs/shared/.local/share/fonts/SourceCodePro-Light.ttf
index 8f95a47c87..8f95a47c87 100644
--- a/configs/shared/misc/.local/share/fonts/SourceCodePro-Light.ttf
+++ b/configs/shared/.local/share/fonts/SourceCodePro-Light.ttf
Binary files differdiff --git a/configs/shared/misc/.local/share/fonts/SourceCodePro-Medium.ttf b/configs/shared/.local/share/fonts/SourceCodePro-Medium.ttf
index b7471baa52..b7471baa52 100644
--- a/configs/shared/misc/.local/share/fonts/SourceCodePro-Medium.ttf
+++ b/configs/shared/.local/share/fonts/SourceCodePro-Medium.ttf
Binary files differdiff --git a/configs/shared/misc/.local/share/fonts/SourceCodePro-Regular.ttf b/configs/shared/.local/share/fonts/SourceCodePro-Regular.ttf
index fa1f90b98a..fa1f90b98a 100644
--- a/configs/shared/misc/.local/share/fonts/SourceCodePro-Regular.ttf
+++ b/configs/shared/.local/share/fonts/SourceCodePro-Regular.ttf
Binary files differdiff --git a/configs/shared/misc/.local/share/fonts/SourceCodePro-Semibold.ttf b/configs/shared/.local/share/fonts/SourceCodePro-Semibold.ttf
index 77ebab25aa..77ebab25aa 100644
--- a/configs/shared/misc/.local/share/fonts/SourceCodePro-Semibold.ttf
+++ b/configs/shared/.local/share/fonts/SourceCodePro-Semibold.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/Sudo-Bold.ttf b/configs/shared/.local/share/fonts/Sudo-Bold.ttf
new file mode 100644
index 0000000000..f8fa810cdf
--- /dev/null
+++ b/configs/shared/.local/share/fonts/Sudo-Bold.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/Sudo-BoldItalic.ttf b/configs/shared/.local/share/fonts/Sudo-BoldItalic.ttf
new file mode 100644
index 0000000000..1ee2f04762
--- /dev/null
+++ b/configs/shared/.local/share/fonts/Sudo-BoldItalic.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/Sudo-Italic.ttf b/configs/shared/.local/share/fonts/Sudo-Italic.ttf
new file mode 100644
index 0000000000..ffe3265d11
--- /dev/null
+++ b/configs/shared/.local/share/fonts/Sudo-Italic.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/Sudo-Light.ttf b/configs/shared/.local/share/fonts/Sudo-Light.ttf
new file mode 100644
index 0000000000..ef699ff49a
--- /dev/null
+++ b/configs/shared/.local/share/fonts/Sudo-Light.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/Sudo-LightItalic.ttf b/configs/shared/.local/share/fonts/Sudo-LightItalic.ttf
new file mode 100644
index 0000000000..af01d9b520
--- /dev/null
+++ b/configs/shared/.local/share/fonts/Sudo-LightItalic.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/Sudo-Medium.ttf b/configs/shared/.local/share/fonts/Sudo-Medium.ttf
new file mode 100644
index 0000000000..067c30c792
--- /dev/null
+++ b/configs/shared/.local/share/fonts/Sudo-Medium.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/Sudo-MediumItalic.ttf b/configs/shared/.local/share/fonts/Sudo-MediumItalic.ttf
new file mode 100644
index 0000000000..b5f938b92c
--- /dev/null
+++ b/configs/shared/.local/share/fonts/Sudo-MediumItalic.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/Sudo-Regular.ttf b/configs/shared/.local/share/fonts/Sudo-Regular.ttf
new file mode 100644
index 0000000000..027ad97208
--- /dev/null
+++ b/configs/shared/.local/share/fonts/Sudo-Regular.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/Sudo-Thin.ttf b/configs/shared/.local/share/fonts/Sudo-Thin.ttf
new file mode 100644
index 0000000000..189a0510a7
--- /dev/null
+++ b/configs/shared/.local/share/fonts/Sudo-Thin.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/Sudo-ThinItalic.ttf b/configs/shared/.local/share/fonts/Sudo-ThinItalic.ttf
new file mode 100644
index 0000000000..7b885502a3
--- /dev/null
+++ b/configs/shared/.local/share/fonts/Sudo-ThinItalic.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/SudoVariable.ttf b/configs/shared/.local/share/fonts/SudoVariable.ttf
new file mode 100644
index 0000000000..afe8b5afb2
--- /dev/null
+++ b/configs/shared/.local/share/fonts/SudoVariable.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/all-the-icons.ttf b/configs/shared/.local/share/fonts/all-the-icons.ttf
new file mode 100644
index 0000000000..634d48e99f
--- /dev/null
+++ b/configs/shared/.local/share/fonts/all-the-icons.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/bitmap/.uuid b/configs/shared/.local/share/fonts/bitmap/.uuid
new file mode 100644
index 0000000000..61efb42dd9
--- /dev/null
+++ b/configs/shared/.local/share/fonts/bitmap/.uuid
@@ -0,0 +1 @@
+3db61cd5-62ec-4ec9-a4d5-3aa95a025011
\ No newline at end of file
diff --git a/configs/shared/.local/share/fonts/bitmap/gohufont-11.bdf b/configs/shared/.local/share/fonts/bitmap/gohufont-11.bdf
new file mode 100644
index 0000000000..2e7578339b
--- /dev/null
+++ b/configs/shared/.local/share/fonts/bitmap/gohufont-11.bdf
@@ -0,0 +1,2714 @@
+STARTFONT 2.1
+COMMENT "Copyright by Hugo Chargois"
+COMMENT "Licensed under the WTFPL"
+FONT -Gohu-GohuFont-Medium-R-Normal--11-80-100-100-C-60-ISO8859-1
+SIZE 11 100 100
+FONTBOUNDINGBOX 6 11 0 -2
+STARTPROPERTIES 30
+FOUNDRY "Gohu"
+FAMILY_NAME "GohuFont"
+WEIGHT_NAME "Medium"
+SLANT "R"
+SETWIDTH_NAME "Normal"
+ADD_STYLE_NAME ""
+PIXEL_SIZE 11
+POINT_SIZE 80
+RESOLUTION_X 100
+RESOLUTION_Y 100
+SPACING "C"
+AVERAGE_WIDTH 60
+CHARSET_REGISTRY "ISO8859"
+CHARSET_ENCODING "1"
+FONTNAME_REGISTRY ""
+FONT_NAME "GohuFont"
+FACE_NAME "GohuFont"
+FONT_VERSION "003.000"
+FONT_ASCENT 9
+FONT_DESCENT 2
+UNDERLINE_POSITION -1
+UNDERLINE_THICKNESS 1
+X_HEIGHT 4
+CAP_HEIGHT 7
+RAW_ASCENT 818
+RAW_DESCENT 182
+NORM_SPACE 6
+FIGURE_WIDTH 6
+AVG_LOWERCASE_WIDTH 60
+AVG_UPPERCASE_WIDTH "60"
+ENDPROPERTIES
+CHARS 191
+STARTCHAR SPACE
+ENCODING 32
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR EXCLAMATION MARK
+ENCODING 33
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 8 2 0
+BITMAP
+80
+80
+80
+80
+80
+80
+00
+80
+ENDCHAR
+STARTCHAR QUOTATION MARK
+ENCODING 34
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 5
+BITMAP
+A0
+A0
+A0
+ENDCHAR
+STARTCHAR NUMBER SIGN
+ENCODING 35
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 1
+BITMAP
+50
+50
+F8
+50
+F8
+50
+50
+ENDCHAR
+STARTCHAR DOLLAR SIGN
+ENCODING 36
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+20
+70
+A8
+A0
+70
+28
+A8
+70
+20
+ENDCHAR
+STARTCHAR PERCENT SIGN
+ENCODING 37
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+48
+A8
+50
+20
+50
+A8
+90
+ENDCHAR
+STARTCHAR AMPERSAND
+ENCODING 38
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+60
+90
+A0
+40
+A8
+90
+68
+ENDCHAR
+STARTCHAR APOSTROPHE
+ENCODING 39
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 3 2 5
+BITMAP
+80
+80
+80
+ENDCHAR
+STARTCHAR LEFT PARENTHESIS
+ENCODING 40
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 9 1 -1
+BITMAP
+20
+40
+40
+80
+80
+80
+40
+40
+20
+ENDCHAR
+STARTCHAR RIGHT PARENTHESIS
+ENCODING 41
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 9 1 -1
+BITMAP
+80
+40
+40
+20
+20
+20
+40
+40
+80
+ENDCHAR
+STARTCHAR ASTERISK
+ENCODING 42
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 1
+BITMAP
+20
+A8
+70
+A8
+20
+ENDCHAR
+STARTCHAR PLUS SIGN
+ENCODING 43
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 1
+BITMAP
+20
+20
+F8
+20
+20
+ENDCHAR
+STARTCHAR COMMA
+ENCODING 44
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 4 1 -2
+BITMAP
+C0
+C0
+40
+80
+ENDCHAR
+STARTCHAR HYPHEN-MINUS
+ENCODING 45
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 1 0 3
+BITMAP
+F8
+ENDCHAR
+STARTCHAR FULL STOP
+ENCODING 46
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 2 1 0
+BITMAP
+C0
+C0
+ENDCHAR
+STARTCHAR SOLIDUS
+ENCODING 47
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 10 0 -2
+BITMAP
+08
+08
+10
+10
+20
+20
+40
+40
+80
+80
+ENDCHAR
+STARTCHAR DIGIT ZERO
+ENCODING 48
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+98
+A8
+C8
+88
+70
+ENDCHAR
+STARTCHAR DIGIT ONE
+ENCODING 49
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 0 0
+BITMAP
+20
+60
+A0
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR DIGIT TWO
+ENCODING 50
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+08
+10
+20
+40
+F8
+ENDCHAR
+STARTCHAR DIGIT THREE
+ENCODING 51
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+08
+30
+08
+88
+70
+ENDCHAR
+STARTCHAR DIGIT FOUR
+ENCODING 52
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+10
+30
+50
+90
+F8
+10
+10
+ENDCHAR
+STARTCHAR DIGIT FIVE
+ENCODING 53
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+80
+F0
+08
+08
+88
+70
+ENDCHAR
+STARTCHAR DIGIT SIX
+ENCODING 54
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+80
+F0
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR DIGIT SEVEN
+ENCODING 55
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+08
+10
+10
+20
+20
+20
+ENDCHAR
+STARTCHAR DIGIT EIGHT
+ENCODING 56
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+88
+70
+88
+88
+70
+ENDCHAR
+STARTCHAR DIGIT NINE
+ENCODING 57
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+88
+78
+08
+08
+70
+ENDCHAR
+STARTCHAR COLON
+ENCODING 58
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 5 2 0
+BITMAP
+C0
+C0
+00
+C0
+C0
+ENDCHAR
+STARTCHAR SEMICOLON
+ENCODING 59
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 7 1 -2
+BITMAP
+C0
+C0
+00
+C0
+C0
+40
+80
+ENDCHAR
+STARTCHAR LESS-THAN SIGN
+ENCODING 60
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 1 0
+BITMAP
+10
+20
+40
+80
+40
+20
+10
+ENDCHAR
+STARTCHAR EQUALS SIGN
+ENCODING 61
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 3 0 2
+BITMAP
+F8
+00
+F8
+ENDCHAR
+STARTCHAR GREATER-THAN SIGN
+ENCODING 62
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 1 0
+BITMAP
+80
+40
+20
+10
+20
+40
+80
+ENDCHAR
+STARTCHAR QUESTION MARK
+ENCODING 63
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+08
+10
+20
+00
+20
+ENDCHAR
+STARTCHAR COMMERCIAL AT
+ENCODING 64
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+B8
+A8
+B8
+80
+78
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER A
+ENCODING 65
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+88
+88
+F8
+88
+88
+88
+88
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER B
+ENCODING 66
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+F0
+88
+88
+F0
+88
+88
+88
+F0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER C
+ENCODING 67
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+88
+80
+80
+80
+80
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER D
+ENCODING 68
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+F0
+88
+88
+88
+88
+88
+88
+F0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER E
+ENCODING 69
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+F8
+80
+80
+F0
+80
+80
+80
+F8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER F
+ENCODING 70
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+F8
+80
+80
+F0
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER G
+ENCODING 71
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+88
+80
+B8
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER H
+ENCODING 72
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+88
+88
+F8
+88
+88
+88
+88
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER I
+ENCODING 73
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 8 1 0
+BITMAP
+E0
+40
+40
+40
+40
+40
+40
+E0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER J
+ENCODING 74
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+08
+08
+08
+08
+08
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER K
+ENCODING 75
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+90
+A0
+C0
+A0
+90
+88
+88
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER L
+ENCODING 76
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+80
+80
+80
+80
+80
+80
+80
+F8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER M
+ENCODING 77
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+D8
+A8
+A8
+88
+88
+88
+88
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER N
+ENCODING 78
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+C8
+C8
+A8
+A8
+98
+98
+88
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER O
+ENCODING 79
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+88
+88
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER P
+ENCODING 80
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+F0
+88
+88
+F0
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER Q
+ENCODING 81
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+70
+88
+88
+88
+88
+A8
+90
+68
+08
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER R
+ENCODING 82
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+F0
+88
+88
+F0
+90
+88
+88
+88
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER S
+ENCODING 83
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+88
+80
+70
+08
+08
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER T
+ENCODING 84
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+F8
+20
+20
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER U
+ENCODING 85
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+88
+88
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER V
+ENCODING 86
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+88
+88
+88
+50
+50
+20
+20
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER W
+ENCODING 87
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+88
+88
+A8
+A8
+A8
+50
+50
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER X
+ENCODING 88
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+88
+50
+20
+50
+88
+88
+88
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER Y
+ENCODING 89
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+88
+50
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER Z
+ENCODING 90
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+F8
+08
+10
+20
+40
+80
+80
+F8
+ENDCHAR
+STARTCHAR LEFT SQUARE BRACKET
+ENCODING 91
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 9 2 -1
+BITMAP
+E0
+80
+80
+80
+80
+80
+80
+80
+E0
+ENDCHAR
+STARTCHAR REVERSE SOLIDUS
+ENCODING 92
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 10 1 -2
+BITMAP
+80
+80
+40
+40
+20
+20
+10
+10
+08
+08
+ENDCHAR
+STARTCHAR RIGHT SQUARE BRACKET
+ENCODING 93
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 9 0 -1
+BITMAP
+E0
+20
+20
+20
+20
+20
+20
+20
+E0
+ENDCHAR
+STARTCHAR CIRCUMFLEX ACCENT
+ENCODING 94
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 3 0 4
+BITMAP
+20
+50
+88
+ENDCHAR
+STARTCHAR LOW LINE
+ENCODING 95
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 1 0 -1
+BITMAP
+FC
+ENDCHAR
+STARTCHAR GRAVE ACCENT
+ENCODING 96
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 5
+BITMAP
+80
+40
+20
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER A
+ENCODING 97
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+08
+78
+88
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER B
+ENCODING 98
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+80
+80
+80
+B0
+C8
+88
+88
+F0
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER C
+ENCODING 99
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+78
+80
+80
+80
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER D
+ENCODING 100
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+08
+08
+08
+78
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER E
+ENCODING 101
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+88
+F8
+80
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER F
+ENCODING 102
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 8 1 0
+BITMAP
+60
+80
+80
+E0
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER G
+ENCODING 103
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+78
+88
+88
+98
+68
+08
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER H
+ENCODING 104
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+80
+80
+80
+B0
+C8
+88
+88
+88
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER I
+ENCODING 105
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+40
+00
+C0
+40
+40
+40
+60
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER J
+ENCODING 106
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 9 0 -2
+BITMAP
+20
+00
+60
+20
+20
+20
+20
+20
+C0
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER K
+ENCODING 107
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+80
+80
+80
+90
+A0
+E0
+90
+88
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER L
+ENCODING 108
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 1 0
+BITMAP
+C0
+40
+40
+40
+40
+40
+40
+30
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER M
+ENCODING 109
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F0
+A8
+A8
+A8
+A8
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER N
+ENCODING 110
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F0
+88
+88
+88
+88
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER O
+ENCODING 111
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER P
+ENCODING 112
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+B0
+C8
+88
+88
+F0
+80
+80
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER Q
+ENCODING 113
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+78
+88
+88
+98
+68
+08
+08
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER R
+ENCODING 114
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+B0
+C8
+80
+80
+80
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER S
+ENCODING 115
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+80
+70
+08
+F0
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER T
+ENCODING 116
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 0 0
+BITMAP
+40
+40
+40
+F0
+40
+40
+40
+30
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER U
+ENCODING 117
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+88
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER V
+ENCODING 118
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+88
+88
+50
+50
+20
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER W
+ENCODING 119
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+88
+A8
+A8
+A8
+50
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER X
+ENCODING 120
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+88
+50
+20
+50
+88
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER Y
+ENCODING 121
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+88
+88
+88
+98
+68
+08
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER Z
+ENCODING 122
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F8
+10
+20
+40
+F8
+ENDCHAR
+STARTCHAR LEFT CURLY BRACKET
+ENCODING 123
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+18
+20
+20
+20
+20
+C0
+20
+20
+20
+20
+18
+ENDCHAR
+STARTCHAR VERTICAL LINE
+ENCODING 124
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 9 2 -1
+BITMAP
+80
+80
+80
+80
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR RIGHT CURLY BRACKET
+ENCODING 125
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+C0
+20
+20
+20
+20
+18
+20
+20
+20
+20
+C0
+ENDCHAR
+STARTCHAR TILDE
+ENCODING 126
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 3 0 2
+BITMAP
+40
+A8
+10
+ENDCHAR
+STARTCHAR NO-BREAK SPACE
+ENCODING 160
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR INVERTED EXCLAMATION MARK
+ENCODING 161
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 8 2 0
+BITMAP
+80
+00
+80
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR CENT SIGN
+ENCODING 162
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -1
+BITMAP
+20
+78
+A0
+A0
+A0
+78
+20
+ENDCHAR
+STARTCHAR POUND SIGN
+ENCODING 163
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+30
+48
+40
+40
+E0
+40
+48
+B0
+ENDCHAR
+STARTCHAR CURRENCY SIGN
+ENCODING 164
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+88
+70
+50
+70
+88
+ENDCHAR
+STARTCHAR YEN SIGN
+ENCODING 165
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+88
+88
+50
+20
+F8
+20
+F8
+20
+20
+ENDCHAR
+STARTCHAR BROKEN BAR
+ENCODING 166
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 9 2 -1
+BITMAP
+80
+80
+80
+80
+00
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR SECTION SIGN
+ENCODING 167
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 9 1 -1
+BITMAP
+70
+80
+80
+E0
+90
+70
+10
+10
+E0
+ENDCHAR
+STARTCHAR DIAERESIS
+ENCODING 168
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 1 1 7
+BITMAP
+A0
+ENDCHAR
+STARTCHAR COPYRIGHT SIGN
+ENCODING 169
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+A8
+C8
+A8
+88
+70
+ENDCHAR
+STARTCHAR FEMININE ORDINAL INDICATOR
+ENCODING 170
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 6 1 1
+BITMAP
+70
+90
+B0
+50
+00
+F0
+ENDCHAR
+STARTCHAR LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ENCODING 171
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 1
+BITMAP
+24
+48
+90
+48
+24
+ENDCHAR
+STARTCHAR NOT SIGN
+ENCODING 172
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 2 1 2
+BITMAP
+F0
+10
+ENDCHAR
+STARTCHAR SOFT HYPHEN
+ENCODING 173
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 1 1 3
+BITMAP
+F0
+ENDCHAR
+STARTCHAR REGISTERED SIGN
+ENCODING 174
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+E8
+C8
+C8
+88
+70
+ENDCHAR
+STARTCHAR MACRON
+ENCODING 175
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 1 0 7
+BITMAP
+F8
+ENDCHAR
+STARTCHAR DEGREE SIGN
+ENCODING 176
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 4
+BITMAP
+40
+A0
+40
+ENDCHAR
+STARTCHAR PLUS-MINUS SIGN
+ENCODING 177
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+20
+20
+F8
+20
+20
+F8
+ENDCHAR
+STARTCHAR SUPERSCRIPT TWO
+ENCODING 178
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 3
+BITMAP
+60
+90
+20
+40
+F0
+ENDCHAR
+STARTCHAR SUPERSCRIPT THREE
+ENCODING 179
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 3
+BITMAP
+E0
+10
+60
+10
+E0
+ENDCHAR
+STARTCHAR ACUTE ACCENT
+ENCODING 180
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 2 2 6
+BITMAP
+40
+80
+ENDCHAR
+STARTCHAR MICRO SIGN
+ENCODING 181
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 -1
+BITMAP
+88
+88
+88
+C8
+B0
+80
+ENDCHAR
+STARTCHAR PILCROW SIGN
+ENCODING 182
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+78
+E8
+E8
+68
+28
+28
+28
+ENDCHAR
+STARTCHAR MIDDLE DOT
+ENCODING 183
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 1 2 3
+BITMAP
+80
+ENDCHAR
+STARTCHAR CEDILLA
+ENCODING 184
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 2 2 -2
+BITMAP
+40
+80
+ENDCHAR
+STARTCHAR SUPERSCRIPT ONE
+ENCODING 185
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 3
+BITMAP
+40
+C0
+40
+40
+E0
+ENDCHAR
+STARTCHAR MASCULINE ORDINAL INDICATOR
+ENCODING 186
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 6 1 1
+BITMAP
+60
+90
+90
+60
+00
+F0
+ENDCHAR
+STARTCHAR RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ENCODING 187
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 1
+BITMAP
+90
+48
+24
+48
+90
+ENDCHAR
+STARTCHAR VULGAR FRACTION ONE QUARTER
+ENCODING 188
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -1
+BITMAP
+40
+C0
+40
+40
+E4
+0C
+14
+3C
+04
+ENDCHAR
+STARTCHAR VULGAR FRACTION ONE HALF
+ENCODING 189
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -1
+BITMAP
+40
+C0
+40
+40
+E8
+14
+04
+08
+1C
+ENDCHAR
+STARTCHAR VULGAR FRACTION THREE QUARTERS
+ENCODING 190
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+C0
+20
+40
+20
+C8
+18
+28
+78
+08
+ENDCHAR
+STARTCHAR INVERTED QUESTION MARK
+ENCODING 191
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+00
+20
+40
+80
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER A WITH GRAVE
+ENCODING 192
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+40
+20
+70
+88
+88
+F8
+88
+88
+88
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER A WITH ACUTE
+ENCODING 193
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+10
+20
+70
+88
+88
+F8
+88
+88
+88
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ENCODING 194
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+20
+50
+00
+70
+88
+88
+F8
+88
+88
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER A WITH TILDE
+ENCODING 195
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+68
+B0
+00
+70
+88
+88
+F8
+88
+88
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER A WITH DIAERESIS
+ENCODING 196
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+50
+00
+70
+88
+88
+F8
+88
+88
+88
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER A WITH RING ABOVE
+ENCODING 197
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+20
+50
+20
+70
+88
+88
+F8
+88
+88
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER AE
+ENCODING 198
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+78
+A0
+A0
+F0
+A0
+A0
+B8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER C WITH CEDILLA
+ENCODING 199
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+70
+88
+80
+80
+80
+88
+70
+20
+40
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER E WITH GRAVE
+ENCODING 200
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+40
+20
+F8
+80
+80
+F0
+80
+80
+F8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER E WITH ACUTE
+ENCODING 201
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+10
+20
+F8
+80
+80
+F0
+80
+80
+F8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ENCODING 202
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+20
+50
+F8
+80
+80
+F0
+80
+80
+F8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER E WITH DIAERESIS
+ENCODING 203
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+50
+00
+F8
+80
+80
+F0
+80
+80
+F8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER I WITH GRAVE
+ENCODING 204
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 9 1 0
+BITMAP
+40
+20
+00
+E0
+40
+40
+40
+40
+E0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER I WITH ACUTE
+ENCODING 205
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 9 1 0
+BITMAP
+40
+80
+00
+E0
+40
+40
+40
+40
+E0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ENCODING 206
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 9 1 0
+BITMAP
+40
+A0
+00
+E0
+40
+40
+40
+40
+E0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER I WITH DIAERESIS
+ENCODING 207
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 9 1 0
+BITMAP
+A0
+00
+E0
+40
+40
+40
+40
+40
+E0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER ETH
+ENCODING 208
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+48
+48
+E8
+48
+48
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER N WITH TILDE
+ENCODING 209
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+68
+B0
+88
+C8
+A8
+98
+88
+88
+88
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER O WITH GRAVE
+ENCODING 210
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+40
+20
+70
+88
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER O WITH ACUTE
+ENCODING 211
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+10
+20
+70
+88
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ENCODING 212
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+20
+50
+00
+70
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER O WITH TILDE
+ENCODING 213
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+68
+B0
+70
+88
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER O WITH DIAERESIS
+ENCODING 214
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+50
+00
+70
+88
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR MULTIPLICATION SIGN
+ENCODING 215
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 1
+BITMAP
+88
+50
+20
+50
+88
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER O WITH STROKE
+ENCODING 216
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 6 0 1
+BITMAP
+74
+88
+98
+A8
+C8
+F0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER U WITH GRAVE
+ENCODING 217
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+40
+20
+88
+88
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER U WITH ACUTE
+ENCODING 218
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+10
+20
+88
+88
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ENCODING 219
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+10
+20
+88
+88
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER U WITH DIAERESIS
+ENCODING 220
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+50
+00
+88
+88
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER Y WITH ACUTE
+ENCODING 221
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+10
+20
+88
+88
+88
+50
+20
+20
+20
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER THORN
+ENCODING 222
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+80
+F0
+88
+88
+F0
+80
+80
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER SHARP S
+ENCODING 223
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+30
+48
+88
+90
+90
+88
+88
+B0
+80
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER A WITH GRAVE
+ENCODING 224
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+10
+00
+70
+08
+78
+88
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER A WITH ACUTE
+ENCODING 225
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+70
+08
+78
+88
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER A WITH CIRCUMFLEX
+ENCODING 226
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+00
+70
+08
+78
+88
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER A WITH TILDE
+ENCODING 227
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+68
+B0
+00
+70
+08
+78
+88
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER A WITH DIAERESIS
+ENCODING 228
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+50
+00
+70
+08
+78
+88
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER A WITH RING ABOVE
+ENCODING 229
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+20
+70
+08
+78
+88
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER AE
+ENCODING 230
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+A8
+B8
+A0
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER C WITH CEDILLA
+ENCODING 231
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+78
+80
+80
+80
+78
+20
+40
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER E WITH GRAVE
+ENCODING 232
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+40
+20
+00
+70
+88
+F8
+80
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER E WITH ACUTE
+ENCODING 233
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+70
+88
+F8
+80
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER E WITH CIRCUMFLEX
+ENCODING 234
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+00
+70
+88
+F8
+80
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER E WITH DIAERESIS
+ENCODING 235
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+50
+00
+70
+88
+F8
+80
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER I WITH GRAVE
+ENCODING 236
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 8 2 0
+BITMAP
+80
+40
+00
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER I WITH ACUTE
+ENCODING 237
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 8 1 0
+BITMAP
+40
+80
+00
+40
+40
+40
+40
+40
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER I WITH CIRCUMFLEX
+ENCODING 238
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 8 1 0
+BITMAP
+40
+A0
+00
+40
+40
+40
+40
+40
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER I WITH DIAERESIS
+ENCODING 239
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+40
+40
+40
+40
+40
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER ETH
+ENCODING 240
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+60
+60
+10
+78
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER N WITH TILDE
+ENCODING 241
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+A0
+00
+F0
+88
+88
+88
+88
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER O WITH GRAVE
+ENCODING 242
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+40
+20
+00
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER O WITH ACUTE
+ENCODING 243
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER O WITH CIRCUMFLEX
+ENCODING 244
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+00
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER O WITH TILDE
+ENCODING 245
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+A0
+00
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER O WITH DIAERESIS
+ENCODING 246
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+50
+00
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR DIVISION SIGN
+ENCODING 247
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 1
+BITMAP
+20
+00
+F8
+00
+20
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER O WITH STROKE
+ENCODING 248
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+98
+A8
+C8
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER U WITH GRAVE
+ENCODING 249
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+40
+20
+00
+88
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER U WITH ACUTE
+ENCODING 250
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+88
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER U WITH CIRCUMFLEX
+ENCODING 251
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+00
+88
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER U WITH DIAERESIS
+ENCODING 252
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+50
+00
+88
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER Y WITH ACUTE
+ENCODING 253
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 10 0 -2
+BITMAP
+10
+20
+00
+88
+88
+88
+98
+68
+08
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER THORN
+ENCODING 254
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+80
+80
+F0
+88
+88
+88
+F0
+80
+80
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER Y WITH DIAERESIS
+ENCODING 255
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+50
+00
+88
+88
+88
+98
+68
+08
+70
+ENDCHAR
+ENDFONT
diff --git a/configs/shared/.local/share/fonts/bitmap/gohufont-11b.bdf b/configs/shared/.local/share/fonts/bitmap/gohufont-11b.bdf
new file mode 100644
index 0000000000..428a14cd37
--- /dev/null
+++ b/configs/shared/.local/share/fonts/bitmap/gohufont-11b.bdf
@@ -0,0 +1,2711 @@
+STARTFONT 2.1
+COMMENT "Copyright by Hugo Chargois"
+COMMENT "Licensed under the WTFPL"
+FONT -Gohu-GohuFont-Bold-R-Normal--11-80-100-100-C-60-ISO8859-1
+SIZE 11 100 100
+FONTBOUNDINGBOX 6 11 0 -2
+STARTPROPERTIES 30
+FOUNDRY "Gohu"
+FAMILY_NAME "GohuFont"
+WEIGHT_NAME "Bold"
+SLANT "R"
+SETWIDTH_NAME "Normal"
+ADD_STYLE_NAME ""
+PIXEL_SIZE 11
+POINT_SIZE 80
+RESOLUTION_X 100
+RESOLUTION_Y 100
+SPACING "C"
+AVERAGE_WIDTH 60
+CHARSET_REGISTRY "ISO8859"
+CHARSET_ENCODING "1"
+FONTNAME_REGISTRY ""
+FONT_NAME "GohuFont"
+FACE_NAME "GohuFont"
+FONT_VERSION "003.000"
+FONT_ASCENT 9
+FONT_DESCENT 2
+UNDERLINE_POSITION -1
+UNDERLINE_THICKNESS 1
+X_HEIGHT 4
+CAP_HEIGHT 7
+RAW_ASCENT 818
+RAW_DESCENT 182
+NORM_SPACE 6
+FIGURE_WIDTH 6
+AVG_LOWERCASE_WIDTH 60
+AVG_UPPERCASE_WIDTH "60"
+ENDPROPERTIES
+CHARS 191
+STARTCHAR SPACE
+ENCODING 32
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR EXCLAMATION MARK
+ENCODING 33
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 7 2 0
+BITMAP
+C0
+C0
+C0
+C0
+C0
+00
+C0
+ENDCHAR
+STARTCHAR QUOTATION MARK
+ENCODING 34
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 3 1 5
+BITMAP
+D8
+D8
+D8
+ENDCHAR
+STARTCHAR NUMBER SIGN
+ENCODING 35
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 2
+BITMAP
+68
+FC
+68
+FC
+68
+ENDCHAR
+STARTCHAR DOLLAR SIGN
+ENCODING 36
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -1
+BITMAP
+30
+78
+B4
+B0
+78
+34
+B4
+78
+30
+ENDCHAR
+STARTCHAR PERCENT SIGN
+ENCODING 37
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+48
+A8
+50
+20
+50
+A8
+90
+ENDCHAR
+STARTCHAR AMPERSAND
+ENCODING 38
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+70
+C8
+D0
+60
+D4
+C8
+74
+ENDCHAR
+STARTCHAR APOSTROPHE
+ENCODING 39
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 3 2 5
+BITMAP
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR LEFT PARENTHESIS
+ENCODING 40
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 9 1 -1
+BITMAP
+30
+60
+60
+C0
+C0
+C0
+60
+60
+30
+ENDCHAR
+STARTCHAR RIGHT PARENTHESIS
+ENCODING 41
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 9 1 -1
+BITMAP
+C0
+60
+60
+30
+30
+30
+60
+60
+C0
+ENDCHAR
+STARTCHAR ASTERISK
+ENCODING 42
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 1
+BITMAP
+30
+B4
+78
+B4
+30
+ENDCHAR
+STARTCHAR PLUS SIGN
+ENCODING 43
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 1
+BITMAP
+30
+30
+FC
+30
+30
+ENDCHAR
+STARTCHAR COMMA
+ENCODING 44
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 4 1 -2
+BITMAP
+E0
+E0
+60
+C0
+ENDCHAR
+STARTCHAR HYPHEN-MINUS
+ENCODING 45
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 1 0 3
+BITMAP
+F8
+ENDCHAR
+STARTCHAR FULL STOP
+ENCODING 46
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 2 2 0
+BITMAP
+E0
+E0
+ENDCHAR
+STARTCHAR SOLIDUS
+ENCODING 47
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+0C
+0C
+18
+18
+30
+30
+60
+60
+C0
+C0
+ENDCHAR
+STARTCHAR DIGIT ZERO
+ENCODING 48
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+D8
+D8
+F8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR DIGIT ONE
+ENCODING 49
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 0 0
+BITMAP
+30
+70
+B0
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR DIGIT TWO
+ENCODING 50
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+D8
+18
+30
+60
+C0
+F8
+ENDCHAR
+STARTCHAR DIGIT THREE
+ENCODING 51
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+D8
+18
+30
+18
+D8
+70
+ENDCHAR
+STARTCHAR DIGIT FOUR
+ENCODING 52
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+10
+30
+70
+B0
+F8
+30
+30
+ENDCHAR
+STARTCHAR DIGIT FIVE
+ENCODING 53
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+C0
+F0
+18
+18
+D8
+70
+ENDCHAR
+STARTCHAR DIGIT SIX
+ENCODING 54
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+C0
+F0
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR DIGIT SEVEN
+ENCODING 55
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+18
+30
+30
+60
+60
+60
+ENDCHAR
+STARTCHAR DIGIT EIGHT
+ENCODING 56
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+D8
+D8
+70
+D8
+D8
+70
+ENDCHAR
+STARTCHAR DIGIT NINE
+ENCODING 57
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+D8
+D8
+78
+18
+18
+70
+ENDCHAR
+STARTCHAR COLON
+ENCODING 58
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 2 0
+BITMAP
+E0
+E0
+00
+E0
+E0
+ENDCHAR
+STARTCHAR SEMICOLON
+ENCODING 59
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 -2
+BITMAP
+E0
+E0
+00
+E0
+E0
+60
+C0
+ENDCHAR
+STARTCHAR LESS-THAN SIGN
+ENCODING 60
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+18
+30
+60
+C0
+60
+30
+18
+ENDCHAR
+STARTCHAR EQUALS SIGN
+ENCODING 61
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 3 0 2
+BITMAP
+F8
+00
+F8
+ENDCHAR
+STARTCHAR GREATER-THAN SIGN
+ENCODING 62
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 1 0
+BITMAP
+C0
+60
+30
+18
+30
+60
+C0
+ENDCHAR
+STARTCHAR QUESTION MARK
+ENCODING 63
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+98
+18
+10
+20
+00
+20
+ENDCHAR
+STARTCHAR COMMERCIAL AT
+ENCODING 64
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+C8
+D8
+D8
+D8
+C0
+78
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER A
+ENCODING 65
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+D8
+D8
+F8
+D8
+D8
+D8
+D8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER B
+ENCODING 66
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+F0
+D8
+D8
+F0
+D8
+D8
+D8
+F0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER C
+ENCODING 67
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+C8
+C0
+C0
+C0
+C0
+C8
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER D
+ENCODING 68
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+F0
+D0
+D8
+D8
+D8
+D8
+D0
+F0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER E
+ENCODING 69
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+F8
+C0
+C0
+F0
+C0
+C0
+C0
+F8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER F
+ENCODING 70
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+F8
+C0
+C0
+F0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER G
+ENCODING 71
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+C8
+C0
+D8
+C8
+C8
+C8
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER H
+ENCODING 72
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+D8
+D8
+D8
+F8
+D8
+D8
+D8
+D8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER I
+ENCODING 73
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 1 0
+BITMAP
+F0
+60
+60
+60
+60
+60
+60
+F0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER J
+ENCODING 74
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+18
+18
+18
+18
+18
+D8
+D8
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER K
+ENCODING 75
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+C8
+D0
+E0
+C0
+E0
+D0
+C8
+C8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER L
+ENCODING 76
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+F8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER M
+ENCODING 77
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+D8
+F8
+F8
+D8
+D8
+D8
+D8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER N
+ENCODING 78
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+C8
+C8
+E8
+E8
+F8
+D8
+C8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER O
+ENCODING 79
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+D8
+D8
+D8
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER P
+ENCODING 80
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+F0
+D8
+D8
+F0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER Q
+ENCODING 81
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+70
+D8
+D8
+D8
+D8
+F8
+D8
+78
+08
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER R
+ENCODING 82
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+F0
+D8
+D8
+F0
+F0
+D8
+D8
+D8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER S
+ENCODING 83
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+C8
+C0
+70
+18
+18
+98
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER T
+ENCODING 84
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 8 0 0
+BITMAP
+FC
+30
+30
+30
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER U
+ENCODING 85
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+D8
+D8
+D8
+D8
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER V
+ENCODING 86
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+D8
+D8
+D8
+F8
+70
+70
+70
+20
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER W
+ENCODING 87
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+D8
+D8
+D8
+D8
+F8
+F8
+D8
+50
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER X
+ENCODING 88
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+D8
+D8
+50
+20
+50
+D8
+D8
+D8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER Y
+ENCODING 89
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+D8
+D8
+D8
+78
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER Z
+ENCODING 90
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+F8
+18
+38
+70
+E0
+C0
+C0
+F8
+ENDCHAR
+STARTCHAR LEFT SQUARE BRACKET
+ENCODING 91
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 9 1 -1
+BITMAP
+F0
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+F0
+ENDCHAR
+STARTCHAR REVERSE SOLIDUS
+ENCODING 92
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+C0
+C0
+60
+60
+30
+30
+18
+18
+0C
+0C
+ENDCHAR
+STARTCHAR RIGHT SQUARE BRACKET
+ENCODING 93
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 9 0 -1
+BITMAP
+F0
+30
+30
+30
+30
+30
+30
+30
+F0
+ENDCHAR
+STARTCHAR CIRCUMFLEX ACCENT
+ENCODING 94
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 3 0 4
+BITMAP
+30
+78
+CC
+ENDCHAR
+STARTCHAR LOW LINE
+ENCODING 95
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 1 0 -1
+BITMAP
+FC
+ENDCHAR
+STARTCHAR GRAVE ACCENT
+ENCODING 96
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 5
+BITMAP
+80
+C0
+60
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER A
+ENCODING 97
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+18
+78
+D8
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER B
+ENCODING 98
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+C0
+C0
+C0
+F0
+D8
+D8
+D8
+F0
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER C
+ENCODING 99
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+78
+C0
+C0
+C0
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER D
+ENCODING 100
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+18
+18
+18
+78
+D8
+D8
+D8
+68
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER E
+ENCODING 101
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+D8
+F8
+C0
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER F
+ENCODING 102
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 1 0
+BITMAP
+70
+C0
+C0
+F0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER G
+ENCODING 103
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+78
+D8
+D8
+D8
+78
+18
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER H
+ENCODING 104
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+C0
+C0
+C0
+F0
+D8
+D8
+D8
+D8
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER I
+ENCODING 105
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 1 0
+BITMAP
+60
+00
+E0
+60
+60
+60
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER J
+ENCODING 106
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 9 0 -2
+BITMAP
+30
+00
+70
+30
+30
+30
+30
+30
+E0
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER K
+ENCODING 107
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+C0
+C0
+C0
+D0
+E0
+E0
+D0
+C8
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER L
+ENCODING 108
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 1 0
+BITMAP
+E0
+60
+60
+60
+60
+60
+60
+30
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER M
+ENCODING 109
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 0
+BITMAP
+F8
+D4
+D4
+D4
+D4
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER N
+ENCODING 110
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F0
+C8
+C8
+C8
+C8
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER O
+ENCODING 111
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER P
+ENCODING 112
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+B0
+D8
+D8
+D8
+F0
+C0
+C0
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER Q
+ENCODING 113
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+78
+D8
+D8
+D8
+78
+18
+18
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER R
+ENCODING 114
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+B0
+D8
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER S
+ENCODING 115
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+C0
+70
+18
+F0
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER T
+ENCODING 116
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 1 0
+BITMAP
+60
+60
+60
+F0
+60
+60
+60
+30
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER U
+ENCODING 117
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+D8
+D8
+D8
+D8
+68
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER V
+ENCODING 118
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+D8
+D8
+70
+70
+20
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER W
+ENCODING 119
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 0
+BITMAP
+D4
+D4
+D4
+D4
+28
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER X
+ENCODING 120
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 0
+BITMAP
+CC
+78
+30
+78
+CC
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER Y
+ENCODING 121
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+D8
+D8
+D8
+D8
+78
+18
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER Z
+ENCODING 122
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F8
+18
+30
+60
+F8
+ENDCHAR
+STARTCHAR LEFT CURLY BRACKET
+ENCODING 123
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+18
+30
+30
+30
+30
+E0
+30
+30
+30
+30
+18
+ENDCHAR
+STARTCHAR VERTICAL LINE
+ENCODING 124
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 9 2 -1
+BITMAP
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR RIGHT CURLY BRACKET
+ENCODING 125
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+60
+30
+30
+30
+30
+1C
+30
+30
+30
+30
+60
+ENDCHAR
+STARTCHAR TILDE
+ENCODING 126
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 2 0 3
+BITMAP
+68
+B0
+ENDCHAR
+STARTCHAR NO-BREAK SPACE
+ENCODING 160
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR INVERTED EXCLAMATION MARK
+ENCODING 161
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 8 2 0
+BITMAP
+80
+00
+80
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR CENT SIGN
+ENCODING 162
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -1
+BITMAP
+20
+78
+A0
+A0
+A0
+78
+20
+ENDCHAR
+STARTCHAR POUND SIGN
+ENCODING 163
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+30
+48
+40
+40
+E0
+40
+48
+B0
+ENDCHAR
+STARTCHAR CURRENCY SIGN
+ENCODING 164
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+88
+70
+50
+70
+88
+ENDCHAR
+STARTCHAR YEN SIGN
+ENCODING 165
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+88
+88
+50
+20
+F8
+20
+F8
+20
+20
+ENDCHAR
+STARTCHAR BROKEN BAR
+ENCODING 166
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 9 2 -1
+BITMAP
+80
+80
+80
+80
+00
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR SECTION SIGN
+ENCODING 167
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 9 1 -1
+BITMAP
+70
+80
+80
+E0
+90
+70
+10
+10
+E0
+ENDCHAR
+STARTCHAR DIAERESIS
+ENCODING 168
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 1 1 7
+BITMAP
+A0
+ENDCHAR
+STARTCHAR COPYRIGHT SIGN
+ENCODING 169
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+A8
+C8
+A8
+88
+70
+ENDCHAR
+STARTCHAR FEMININE ORDINAL INDICATOR
+ENCODING 170
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 6 1 1
+BITMAP
+70
+90
+B0
+50
+00
+F0
+ENDCHAR
+STARTCHAR LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ENCODING 171
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 1
+BITMAP
+24
+48
+90
+48
+24
+ENDCHAR
+STARTCHAR NOT SIGN
+ENCODING 172
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 2 1 2
+BITMAP
+F0
+10
+ENDCHAR
+STARTCHAR SOFT HYPHEN
+ENCODING 173
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 1 1 3
+BITMAP
+F0
+ENDCHAR
+STARTCHAR REGISTERED SIGN
+ENCODING 174
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+E8
+C8
+C8
+88
+70
+ENDCHAR
+STARTCHAR MACRON
+ENCODING 175
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 1 0 7
+BITMAP
+F8
+ENDCHAR
+STARTCHAR DEGREE SIGN
+ENCODING 176
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 4
+BITMAP
+40
+A0
+40
+ENDCHAR
+STARTCHAR PLUS-MINUS SIGN
+ENCODING 177
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+20
+20
+F8
+20
+20
+F8
+ENDCHAR
+STARTCHAR SUPERSCRIPT TWO
+ENCODING 178
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 3
+BITMAP
+60
+90
+20
+40
+F0
+ENDCHAR
+STARTCHAR SUPERSCRIPT THREE
+ENCODING 179
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 3
+BITMAP
+E0
+10
+60
+10
+E0
+ENDCHAR
+STARTCHAR ACUTE ACCENT
+ENCODING 180
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 2 2 6
+BITMAP
+40
+80
+ENDCHAR
+STARTCHAR MICRO SIGN
+ENCODING 181
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 -1
+BITMAP
+88
+88
+88
+C8
+B0
+80
+ENDCHAR
+STARTCHAR PILCROW SIGN
+ENCODING 182
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+78
+E8
+E8
+68
+28
+28
+28
+ENDCHAR
+STARTCHAR MIDDLE DOT
+ENCODING 183
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 1 2 3
+BITMAP
+80
+ENDCHAR
+STARTCHAR CEDILLA
+ENCODING 184
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 2 2 -2
+BITMAP
+40
+80
+ENDCHAR
+STARTCHAR SUPERSCRIPT ONE
+ENCODING 185
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 3
+BITMAP
+40
+C0
+40
+40
+E0
+ENDCHAR
+STARTCHAR MASCULINE ORDINAL INDICATOR
+ENCODING 186
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 6 1 1
+BITMAP
+60
+90
+90
+60
+00
+F0
+ENDCHAR
+STARTCHAR RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ENCODING 187
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 1
+BITMAP
+90
+48
+24
+48
+90
+ENDCHAR
+STARTCHAR VULGAR FRACTION ONE QUARTER
+ENCODING 188
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -1
+BITMAP
+40
+C0
+40
+40
+E4
+0C
+14
+3C
+04
+ENDCHAR
+STARTCHAR VULGAR FRACTION ONE HALF
+ENCODING 189
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -1
+BITMAP
+40
+C0
+40
+40
+E8
+14
+04
+08
+1C
+ENDCHAR
+STARTCHAR VULGAR FRACTION THREE QUARTERS
+ENCODING 190
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+C0
+20
+40
+20
+C8
+18
+28
+78
+08
+ENDCHAR
+STARTCHAR INVERTED QUESTION MARK
+ENCODING 191
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+00
+20
+40
+80
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER A WITH GRAVE
+ENCODING 192
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+40
+20
+70
+D8
+D8
+F8
+D8
+D8
+D8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER A WITH ACUTE
+ENCODING 193
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+10
+20
+70
+D8
+D8
+F8
+D8
+D8
+D8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ENCODING 194
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+20
+50
+00
+70
+D8
+D8
+F8
+D8
+D8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER A WITH TILDE
+ENCODING 195
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+68
+B0
+00
+70
+D8
+D8
+F8
+D8
+D8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER A WITH DIAERESIS
+ENCODING 196
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+50
+00
+70
+D8
+D8
+F8
+D8
+D8
+D8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER A WITH RING ABOVE
+ENCODING 197
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+20
+50
+20
+70
+D8
+D8
+F8
+D8
+D8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER AE
+ENCODING 198
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+78
+A0
+A0
+F0
+A0
+A0
+B8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER C WITH CEDILLA
+ENCODING 199
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+70
+C8
+C0
+C0
+C0
+C8
+70
+20
+40
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER E WITH GRAVE
+ENCODING 200
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+40
+20
+F8
+C0
+C0
+F0
+C0
+C0
+F8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER E WITH ACUTE
+ENCODING 201
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+10
+20
+F8
+C0
+C0
+F0
+C0
+C0
+F8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ENCODING 202
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+20
+50
+F8
+C0
+C0
+F0
+C0
+C0
+F8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER E WITH DIAERESIS
+ENCODING 203
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+50
+00
+F8
+C0
+C0
+F0
+C0
+C0
+F8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER I WITH GRAVE
+ENCODING 204
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 9 1 0
+BITMAP
+40
+20
+00
+F0
+60
+60
+60
+60
+F0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER I WITH ACUTE
+ENCODING 205
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 9 1 0
+BITMAP
+40
+80
+00
+F0
+60
+60
+60
+60
+F0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ENCODING 206
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 9 1 0
+BITMAP
+40
+A0
+00
+F0
+60
+60
+60
+60
+F0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER I WITH DIAERESIS
+ENCODING 207
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 9 1 0
+BITMAP
+A0
+00
+F0
+60
+60
+60
+60
+60
+F0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER ETH
+ENCODING 208
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+48
+48
+E8
+48
+48
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER N WITH TILDE
+ENCODING 209
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+68
+B0
+88
+C8
+A8
+98
+88
+88
+88
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER O WITH GRAVE
+ENCODING 210
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+40
+20
+70
+D8
+D8
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER O WITH ACUTE
+ENCODING 211
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+10
+20
+70
+D8
+D8
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ENCODING 212
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+20
+50
+00
+70
+D8
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER O WITH TILDE
+ENCODING 213
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+68
+B0
+70
+D8
+D8
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER O WITH DIAERESIS
+ENCODING 214
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+50
+00
+70
+D8
+D8
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR MULTIPLICATION SIGN
+ENCODING 215
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 1
+BITMAP
+88
+50
+20
+50
+88
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER O WITH STROKE
+ENCODING 216
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+98
+A8
+C8
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER U WITH GRAVE
+ENCODING 217
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+40
+20
+D8
+D8
+D8
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER U WITH ACUTE
+ENCODING 218
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+10
+20
+D8
+D8
+D8
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ENCODING 219
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+10
+20
+D8
+D8
+D8
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER U WITH DIAERESIS
+ENCODING 220
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+50
+00
+D8
+D8
+D8
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER Y WITH ACUTE
+ENCODING 221
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+10
+20
+D8
+D8
+D8
+70
+30
+30
+30
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER THORN
+ENCODING 222
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+80
+F0
+88
+88
+F0
+80
+80
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER SHARP S
+ENCODING 223
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+30
+48
+88
+90
+90
+88
+88
+B0
+80
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER A WITH GRAVE
+ENCODING 224
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+10
+00
+70
+18
+78
+D8
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER A WITH ACUTE
+ENCODING 225
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+70
+18
+78
+D8
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER A WITH CIRCUMFLEX
+ENCODING 226
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+00
+70
+18
+78
+D8
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER A WITH TILDE
+ENCODING 227
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+68
+B0
+00
+70
+18
+78
+D8
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER A WITH DIAERESIS
+ENCODING 228
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+50
+00
+70
+18
+78
+D8
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER A WITH RING ABOVE
+ENCODING 229
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+20
+70
+18
+78
+D8
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER AE
+ENCODING 230
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+A8
+B8
+A0
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER C WITH CEDILLA
+ENCODING 231
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+78
+C0
+C0
+C0
+78
+20
+40
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER E WITH GRAVE
+ENCODING 232
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+40
+20
+00
+70
+D8
+F8
+C0
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER E WITH ACUTE
+ENCODING 233
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+70
+D8
+F8
+C0
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER E WITH CIRCUMFLEX
+ENCODING 234
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+00
+70
+D8
+F8
+C0
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER E WITH DIAERESIS
+ENCODING 235
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+50
+00
+70
+D8
+F8
+C0
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER I WITH GRAVE
+ENCODING 236
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 1 0
+BITMAP
+40
+20
+00
+E0
+60
+60
+60
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER I WITH ACUTE
+ENCODING 237
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 1 0
+BITMAP
+40
+80
+00
+E0
+60
+60
+60
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER I WITH CIRCUMFLEX
+ENCODING 238
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 1 0
+BITMAP
+40
+A0
+00
+E0
+60
+60
+60
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER I WITH DIAERESIS
+ENCODING 239
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 1 0
+BITMAP
+A0
+00
+E0
+60
+60
+60
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER ETH
+ENCODING 240
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+60
+60
+10
+78
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER N WITH TILDE
+ENCODING 241
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+A0
+00
+F0
+C8
+C8
+C8
+C8
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER O WITH GRAVE
+ENCODING 242
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+40
+20
+00
+70
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER O WITH ACUTE
+ENCODING 243
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+70
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER O WITH CIRCUMFLEX
+ENCODING 244
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+00
+70
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER O WITH TILDE
+ENCODING 245
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+A0
+00
+70
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER O WITH DIAERESIS
+ENCODING 246
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+50
+00
+70
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR DIVISION SIGN
+ENCODING 247
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 1
+BITMAP
+20
+00
+F8
+00
+20
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER O WITH STROKE
+ENCODING 248
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+98
+A8
+C8
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER U WITH GRAVE
+ENCODING 249
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+40
+20
+00
+D8
+D8
+D8
+D8
+68
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER U WITH ACUTE
+ENCODING 250
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+D8
+D8
+D8
+D8
+68
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER U WITH CIRCUMFLEX
+ENCODING 251
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+00
+D8
+D8
+D8
+D8
+68
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER U WITH DIAERESIS
+ENCODING 252
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+50
+00
+D8
+D8
+D8
+D8
+68
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER Y WITH ACUTE
+ENCODING 253
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 10 0 -2
+BITMAP
+10
+20
+00
+D8
+D8
+D8
+D8
+78
+18
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER THORN
+ENCODING 254
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+80
+80
+F0
+88
+88
+88
+F0
+80
+80
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER Y WITH DIAERESIS
+ENCODING 255
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+50
+00
+D8
+D8
+D8
+D8
+78
+18
+70
+ENDCHAR
+ENDFONT
diff --git a/configs/shared/.local/share/fonts/bitmap/gohufont-uni-11.bdf b/configs/shared/.local/share/fonts/bitmap/gohufont-uni-11.bdf
new file mode 100644
index 0000000000..6745beab03
--- /dev/null
+++ b/configs/shared/.local/share/fonts/bitmap/gohufont-uni-11.bdf
@@ -0,0 +1,21923 @@
+STARTFONT 2.1
+COMMENT "Copyright by Hugo Chargois"
+COMMENT "Licensed under the WTFPL"
+FONT -Gohu-GohuFont-Medium-R-Normal--11-80-100-100-C-60-ISO10646-1
+SIZE 11 100 100
+FONTBOUNDINGBOX 6 11 0 -2
+STARTPROPERTIES 30
+FOUNDRY "Gohu"
+FAMILY_NAME "GohuFont"
+WEIGHT_NAME "Medium"
+SLANT "R"
+SETWIDTH_NAME "Normal"
+ADD_STYLE_NAME ""
+PIXEL_SIZE 11
+POINT_SIZE 80
+RESOLUTION_X 100
+RESOLUTION_Y 100
+SPACING "C"
+AVERAGE_WIDTH 60
+CHARSET_REGISTRY "ISO10646"
+CHARSET_ENCODING "1"
+FONTNAME_REGISTRY ""
+FONT_NAME "GohuFont"
+FACE_NAME "GohuFont"
+FONT_VERSION "003.000"
+FONT_ASCENT 9
+FONT_DESCENT 2
+UNDERLINE_POSITION -1
+UNDERLINE_THICKNESS 1
+X_HEIGHT 4
+CAP_HEIGHT 7
+RAW_ASCENT 818
+RAW_DESCENT 182
+NORM_SPACE 6
+FIGURE_WIDTH 6
+AVG_LOWERCASE_WIDTH 60
+AVG_UPPERCASE_WIDTH "60"
+ENDPROPERTIES
+CHARS 1597
+STARTCHAR <control>
+ENCODING 0
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+A8
+00
+88
+00
+00
+88
+00
+A8
+ENDCHAR
+STARTCHAR SPACE
+ENCODING 32
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR EXCLAMATION MARK
+ENCODING 33
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 8 2 0
+BITMAP
+80
+80
+80
+80
+80
+80
+00
+80
+ENDCHAR
+STARTCHAR QUOTATION MARK
+ENCODING 34
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 5
+BITMAP
+A0
+A0
+A0
+ENDCHAR
+STARTCHAR NUMBER SIGN
+ENCODING 35
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 1
+BITMAP
+50
+50
+F8
+50
+F8
+50
+50
+ENDCHAR
+STARTCHAR DOLLAR SIGN
+ENCODING 36
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+20
+70
+A8
+A0
+70
+28
+A8
+70
+20
+ENDCHAR
+STARTCHAR PERCENT SIGN
+ENCODING 37
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+48
+A8
+50
+20
+50
+A8
+90
+ENDCHAR
+STARTCHAR AMPERSAND
+ENCODING 38
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+60
+90
+A0
+40
+A8
+90
+68
+ENDCHAR
+STARTCHAR APOSTROPHE
+ENCODING 39
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 3 2 5
+BITMAP
+80
+80
+80
+ENDCHAR
+STARTCHAR LEFT PARENTHESIS
+ENCODING 40
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 9 1 -1
+BITMAP
+20
+40
+40
+80
+80
+80
+40
+40
+20
+ENDCHAR
+STARTCHAR RIGHT PARENTHESIS
+ENCODING 41
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 9 1 -1
+BITMAP
+80
+40
+40
+20
+20
+20
+40
+40
+80
+ENDCHAR
+STARTCHAR ASTERISK
+ENCODING 42
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 1
+BITMAP
+20
+A8
+70
+A8
+20
+ENDCHAR
+STARTCHAR PLUS SIGN
+ENCODING 43
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 1
+BITMAP
+20
+20
+F8
+20
+20
+ENDCHAR
+STARTCHAR COMMA
+ENCODING 44
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 4 1 -2
+BITMAP
+C0
+C0
+40
+80
+ENDCHAR
+STARTCHAR HYPHEN-MINUS
+ENCODING 45
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 1 0 3
+BITMAP
+F8
+ENDCHAR
+STARTCHAR FULL STOP
+ENCODING 46
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 2 1 0
+BITMAP
+C0
+C0
+ENDCHAR
+STARTCHAR SOLIDUS
+ENCODING 47
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 10 0 -2
+BITMAP
+08
+08
+10
+10
+20
+20
+40
+40
+80
+80
+ENDCHAR
+STARTCHAR DIGIT ZERO
+ENCODING 48
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+98
+A8
+C8
+88
+70
+ENDCHAR
+STARTCHAR DIGIT ONE
+ENCODING 49
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 0 0
+BITMAP
+20
+60
+A0
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR DIGIT TWO
+ENCODING 50
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+08
+10
+20
+40
+F8
+ENDCHAR
+STARTCHAR DIGIT THREE
+ENCODING 51
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+08
+30
+08
+88
+70
+ENDCHAR
+STARTCHAR DIGIT FOUR
+ENCODING 52
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+10
+30
+50
+90
+F8
+10
+10
+ENDCHAR
+STARTCHAR DIGIT FIVE
+ENCODING 53
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+80
+F0
+08
+08
+88
+70
+ENDCHAR
+STARTCHAR DIGIT SIX
+ENCODING 54
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+80
+F0
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR DIGIT SEVEN
+ENCODING 55
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+08
+10
+10
+20
+20
+20
+ENDCHAR
+STARTCHAR DIGIT EIGHT
+ENCODING 56
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+88
+70
+88
+88
+70
+ENDCHAR
+STARTCHAR DIGIT NINE
+ENCODING 57
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+88
+78
+08
+08
+70
+ENDCHAR
+STARTCHAR COLON
+ENCODING 58
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 5 2 0
+BITMAP
+C0
+C0
+00
+C0
+C0
+ENDCHAR
+STARTCHAR SEMICOLON
+ENCODING 59
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 7 1 -2
+BITMAP
+C0
+C0
+00
+C0
+C0
+40
+80
+ENDCHAR
+STARTCHAR LESS-THAN SIGN
+ENCODING 60
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 1 0
+BITMAP
+10
+20
+40
+80
+40
+20
+10
+ENDCHAR
+STARTCHAR EQUALS SIGN
+ENCODING 61
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 3 0 2
+BITMAP
+F8
+00
+F8
+ENDCHAR
+STARTCHAR GREATER-THAN SIGN
+ENCODING 62
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 1 0
+BITMAP
+80
+40
+20
+10
+20
+40
+80
+ENDCHAR
+STARTCHAR QUESTION MARK
+ENCODING 63
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+08
+10
+20
+00
+20
+ENDCHAR
+STARTCHAR COMMERCIAL AT
+ENCODING 64
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+B8
+A8
+B8
+80
+78
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER A
+ENCODING 65
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+88
+88
+F8
+88
+88
+88
+88
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER B
+ENCODING 66
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+F0
+88
+88
+F0
+88
+88
+88
+F0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER C
+ENCODING 67
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+88
+80
+80
+80
+80
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER D
+ENCODING 68
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+F0
+88
+88
+88
+88
+88
+88
+F0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER E
+ENCODING 69
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+F8
+80
+80
+F0
+80
+80
+80
+F8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER F
+ENCODING 70
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+F8
+80
+80
+F0
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER G
+ENCODING 71
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+88
+80
+B8
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER H
+ENCODING 72
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+88
+88
+F8
+88
+88
+88
+88
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER I
+ENCODING 73
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 8 1 0
+BITMAP
+E0
+40
+40
+40
+40
+40
+40
+E0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER J
+ENCODING 74
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+08
+08
+08
+08
+08
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER K
+ENCODING 75
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+90
+A0
+C0
+A0
+90
+88
+88
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER L
+ENCODING 76
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+80
+80
+80
+80
+80
+80
+80
+F8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER M
+ENCODING 77
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+D8
+A8
+A8
+88
+88
+88
+88
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER N
+ENCODING 78
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+C8
+C8
+A8
+A8
+98
+98
+88
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER O
+ENCODING 79
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+88
+88
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER P
+ENCODING 80
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+F0
+88
+88
+F0
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER Q
+ENCODING 81
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+70
+88
+88
+88
+88
+A8
+90
+68
+08
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER R
+ENCODING 82
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+F0
+88
+88
+F0
+90
+88
+88
+88
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER S
+ENCODING 83
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+88
+80
+70
+08
+08
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER T
+ENCODING 84
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+F8
+20
+20
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER U
+ENCODING 85
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+88
+88
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER V
+ENCODING 86
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+88
+88
+88
+50
+50
+20
+20
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER W
+ENCODING 87
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+88
+88
+A8
+A8
+A8
+50
+50
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER X
+ENCODING 88
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+88
+50
+20
+50
+88
+88
+88
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER Y
+ENCODING 89
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+88
+50
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER Z
+ENCODING 90
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+F8
+08
+10
+20
+40
+80
+80
+F8
+ENDCHAR
+STARTCHAR LEFT SQUARE BRACKET
+ENCODING 91
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 9 2 -1
+BITMAP
+E0
+80
+80
+80
+80
+80
+80
+80
+E0
+ENDCHAR
+STARTCHAR REVERSE SOLIDUS
+ENCODING 92
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 10 1 -2
+BITMAP
+80
+80
+40
+40
+20
+20
+10
+10
+08
+08
+ENDCHAR
+STARTCHAR RIGHT SQUARE BRACKET
+ENCODING 93
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 9 0 -1
+BITMAP
+E0
+20
+20
+20
+20
+20
+20
+20
+E0
+ENDCHAR
+STARTCHAR CIRCUMFLEX ACCENT
+ENCODING 94
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 3 0 4
+BITMAP
+20
+50
+88
+ENDCHAR
+STARTCHAR LOW LINE
+ENCODING 95
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 1 0 -1
+BITMAP
+FC
+ENDCHAR
+STARTCHAR GRAVE ACCENT
+ENCODING 96
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 5
+BITMAP
+80
+40
+20
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER A
+ENCODING 97
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+08
+78
+88
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER B
+ENCODING 98
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+80
+80
+80
+B0
+C8
+88
+88
+F0
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER C
+ENCODING 99
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+78
+80
+80
+80
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER D
+ENCODING 100
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+08
+08
+08
+78
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER E
+ENCODING 101
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+88
+F8
+80
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER F
+ENCODING 102
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 8 1 0
+BITMAP
+60
+80
+80
+E0
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER G
+ENCODING 103
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+78
+88
+88
+98
+68
+08
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER H
+ENCODING 104
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+80
+80
+80
+B0
+C8
+88
+88
+88
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER I
+ENCODING 105
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+40
+00
+C0
+40
+40
+40
+60
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER J
+ENCODING 106
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 9 0 -2
+BITMAP
+20
+00
+60
+20
+20
+20
+20
+20
+C0
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER K
+ENCODING 107
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+80
+80
+80
+90
+A0
+E0
+90
+88
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER L
+ENCODING 108
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 1 0
+BITMAP
+C0
+40
+40
+40
+40
+40
+40
+30
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER M
+ENCODING 109
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F0
+A8
+A8
+A8
+A8
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER N
+ENCODING 110
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F0
+88
+88
+88
+88
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER O
+ENCODING 111
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER P
+ENCODING 112
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+B0
+C8
+88
+88
+F0
+80
+80
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER Q
+ENCODING 113
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+78
+88
+88
+98
+68
+08
+08
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER R
+ENCODING 114
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+B0
+C8
+80
+80
+80
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER S
+ENCODING 115
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+80
+70
+08
+F0
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER T
+ENCODING 116
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 0 0
+BITMAP
+40
+40
+40
+F0
+40
+40
+40
+30
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER U
+ENCODING 117
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+88
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER V
+ENCODING 118
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+88
+88
+50
+50
+20
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER W
+ENCODING 119
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+88
+A8
+A8
+A8
+50
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER X
+ENCODING 120
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+88
+50
+20
+50
+88
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER Y
+ENCODING 121
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+88
+88
+88
+98
+68
+08
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER Z
+ENCODING 122
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F8
+10
+20
+40
+F8
+ENDCHAR
+STARTCHAR LEFT CURLY BRACKET
+ENCODING 123
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+18
+20
+20
+20
+20
+C0
+20
+20
+20
+20
+18
+ENDCHAR
+STARTCHAR VERTICAL LINE
+ENCODING 124
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 9 2 -1
+BITMAP
+80
+80
+80
+80
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR RIGHT CURLY BRACKET
+ENCODING 125
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+C0
+20
+20
+20
+20
+18
+20
+20
+20
+20
+C0
+ENDCHAR
+STARTCHAR TILDE
+ENCODING 126
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 3 0 2
+BITMAP
+40
+A8
+10
+ENDCHAR
+STARTCHAR NO-BREAK SPACE
+ENCODING 160
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR INVERTED EXCLAMATION MARK
+ENCODING 161
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 8 2 0
+BITMAP
+80
+00
+80
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR CENT SIGN
+ENCODING 162
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -1
+BITMAP
+20
+78
+A0
+A0
+A0
+78
+20
+ENDCHAR
+STARTCHAR POUND SIGN
+ENCODING 163
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+30
+48
+40
+40
+E0
+40
+48
+B0
+ENDCHAR
+STARTCHAR CURRENCY SIGN
+ENCODING 164
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+88
+70
+50
+70
+88
+ENDCHAR
+STARTCHAR YEN SIGN
+ENCODING 165
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+88
+88
+50
+20
+F8
+20
+F8
+20
+20
+ENDCHAR
+STARTCHAR BROKEN BAR
+ENCODING 166
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 9 2 -1
+BITMAP
+80
+80
+80
+80
+00
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR SECTION SIGN
+ENCODING 167
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 9 1 -1
+BITMAP
+70
+80
+80
+E0
+90
+70
+10
+10
+E0
+ENDCHAR
+STARTCHAR DIAERESIS
+ENCODING 168
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 1 1 7
+BITMAP
+A0
+ENDCHAR
+STARTCHAR COPYRIGHT SIGN
+ENCODING 169
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+A8
+C8
+A8
+88
+70
+ENDCHAR
+STARTCHAR FEMININE ORDINAL INDICATOR
+ENCODING 170
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 6 1 1
+BITMAP
+70
+90
+B0
+50
+00
+F0
+ENDCHAR
+STARTCHAR LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ENCODING 171
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 1
+BITMAP
+24
+48
+90
+48
+24
+ENDCHAR
+STARTCHAR NOT SIGN
+ENCODING 172
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 2 1 2
+BITMAP
+F0
+10
+ENDCHAR
+STARTCHAR SOFT HYPHEN
+ENCODING 173
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 1 1 3
+BITMAP
+F0
+ENDCHAR
+STARTCHAR REGISTERED SIGN
+ENCODING 174
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+E8
+C8
+C8
+88
+70
+ENDCHAR
+STARTCHAR MACRON
+ENCODING 175
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 1 0 7
+BITMAP
+F8
+ENDCHAR
+STARTCHAR DEGREE SIGN
+ENCODING 176
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 4
+BITMAP
+40
+A0
+40
+ENDCHAR
+STARTCHAR PLUS-MINUS SIGN
+ENCODING 177
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+20
+20
+F8
+20
+20
+F8
+ENDCHAR
+STARTCHAR SUPERSCRIPT TWO
+ENCODING 178
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 3
+BITMAP
+60
+90
+20
+40
+F0
+ENDCHAR
+STARTCHAR SUPERSCRIPT THREE
+ENCODING 179
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 3
+BITMAP
+E0
+10
+60
+10
+E0
+ENDCHAR
+STARTCHAR ACUTE ACCENT
+ENCODING 180
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 2 2 6
+BITMAP
+40
+80
+ENDCHAR
+STARTCHAR MICRO SIGN
+ENCODING 181
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 -1
+BITMAP
+88
+88
+88
+C8
+B0
+80
+ENDCHAR
+STARTCHAR PILCROW SIGN
+ENCODING 182
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+78
+E8
+E8
+68
+28
+28
+28
+ENDCHAR
+STARTCHAR MIDDLE DOT
+ENCODING 183
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 1 2 3
+BITMAP
+80
+ENDCHAR
+STARTCHAR CEDILLA
+ENCODING 184
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 2 2 -2
+BITMAP
+40
+80
+ENDCHAR
+STARTCHAR SUPERSCRIPT ONE
+ENCODING 185
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 3
+BITMAP
+40
+C0
+40
+40
+E0
+ENDCHAR
+STARTCHAR MASCULINE ORDINAL INDICATOR
+ENCODING 186
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 6 1 1
+BITMAP
+60
+90
+90
+60
+00
+F0
+ENDCHAR
+STARTCHAR RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ENCODING 187
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 1
+BITMAP
+90
+48
+24
+48
+90
+ENDCHAR
+STARTCHAR VULGAR FRACTION ONE QUARTER
+ENCODING 188
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -1
+BITMAP
+40
+C0
+40
+40
+E4
+0C
+14
+3C
+04
+ENDCHAR
+STARTCHAR VULGAR FRACTION ONE HALF
+ENCODING 189
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -1
+BITMAP
+40
+C0
+40
+40
+E8
+14
+04
+08
+1C
+ENDCHAR
+STARTCHAR VULGAR FRACTION THREE QUARTERS
+ENCODING 190
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+C0
+20
+40
+20
+C8
+18
+28
+78
+08
+ENDCHAR
+STARTCHAR INVERTED QUESTION MARK
+ENCODING 191
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+00
+20
+40
+80
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER A WITH GRAVE
+ENCODING 192
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+40
+20
+70
+88
+88
+F8
+88
+88
+88
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER A WITH ACUTE
+ENCODING 193
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+10
+20
+70
+88
+88
+F8
+88
+88
+88
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ENCODING 194
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+20
+50
+00
+70
+88
+88
+F8
+88
+88
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER A WITH TILDE
+ENCODING 195
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+68
+B0
+00
+70
+88
+88
+F8
+88
+88
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER A WITH DIAERESIS
+ENCODING 196
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+50
+00
+70
+88
+88
+F8
+88
+88
+88
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER A WITH RING ABOVE
+ENCODING 197
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+20
+50
+20
+70
+88
+88
+F8
+88
+88
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER AE
+ENCODING 198
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+78
+A0
+A0
+F0
+A0
+A0
+B8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER C WITH CEDILLA
+ENCODING 199
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+70
+88
+80
+80
+80
+88
+70
+20
+40
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER E WITH GRAVE
+ENCODING 200
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+40
+20
+F8
+80
+80
+F0
+80
+80
+F8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER E WITH ACUTE
+ENCODING 201
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+10
+20
+F8
+80
+80
+F0
+80
+80
+F8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ENCODING 202
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+20
+50
+F8
+80
+80
+F0
+80
+80
+F8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER E WITH DIAERESIS
+ENCODING 203
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+50
+00
+F8
+80
+80
+F0
+80
+80
+F8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER I WITH GRAVE
+ENCODING 204
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 9 1 0
+BITMAP
+40
+20
+00
+E0
+40
+40
+40
+40
+E0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER I WITH ACUTE
+ENCODING 205
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 9 1 0
+BITMAP
+40
+80
+00
+E0
+40
+40
+40
+40
+E0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ENCODING 206
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 9 1 0
+BITMAP
+40
+A0
+00
+E0
+40
+40
+40
+40
+E0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER I WITH DIAERESIS
+ENCODING 207
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 9 1 0
+BITMAP
+A0
+00
+E0
+40
+40
+40
+40
+40
+E0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER ETH
+ENCODING 208
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+48
+48
+E8
+48
+48
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER N WITH TILDE
+ENCODING 209
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+68
+B0
+88
+C8
+A8
+98
+88
+88
+88
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER O WITH GRAVE
+ENCODING 210
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+40
+20
+70
+88
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER O WITH ACUTE
+ENCODING 211
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+10
+20
+70
+88
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ENCODING 212
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+20
+50
+00
+70
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER O WITH TILDE
+ENCODING 213
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+68
+B0
+70
+88
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER O WITH DIAERESIS
+ENCODING 214
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+50
+00
+70
+88
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR MULTIPLICATION SIGN
+ENCODING 215
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 1
+BITMAP
+88
+50
+20
+50
+88
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER O WITH STROKE
+ENCODING 216
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 6 0 1
+BITMAP
+74
+88
+98
+A8
+C8
+F0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER U WITH GRAVE
+ENCODING 217
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+40
+20
+88
+88
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER U WITH ACUTE
+ENCODING 218
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+10
+20
+88
+88
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ENCODING 219
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+10
+20
+88
+88
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER U WITH DIAERESIS
+ENCODING 220
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+50
+00
+88
+88
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER Y WITH ACUTE
+ENCODING 221
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+10
+20
+88
+88
+88
+50
+20
+20
+20
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER THORN
+ENCODING 222
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+80
+F0
+88
+88
+F0
+80
+80
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER SHARP S
+ENCODING 223
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+30
+48
+88
+90
+90
+88
+88
+B0
+80
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER A WITH GRAVE
+ENCODING 224
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+10
+00
+70
+08
+78
+88
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER A WITH ACUTE
+ENCODING 225
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+70
+08
+78
+88
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER A WITH CIRCUMFLEX
+ENCODING 226
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+00
+70
+08
+78
+88
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER A WITH TILDE
+ENCODING 227
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+68
+B0
+00
+70
+08
+78
+88
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER A WITH DIAERESIS
+ENCODING 228
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+50
+00
+70
+08
+78
+88
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER A WITH RING ABOVE
+ENCODING 229
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+20
+70
+08
+78
+88
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER AE
+ENCODING 230
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+A8
+B8
+A0
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER C WITH CEDILLA
+ENCODING 231
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+78
+80
+80
+80
+78
+20
+40
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER E WITH GRAVE
+ENCODING 232
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+40
+20
+00
+70
+88
+F8
+80
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER E WITH ACUTE
+ENCODING 233
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+70
+88
+F8
+80
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER E WITH CIRCUMFLEX
+ENCODING 234
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+00
+70
+88
+F8
+80
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER E WITH DIAERESIS
+ENCODING 235
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+50
+00
+70
+88
+F8
+80
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER I WITH GRAVE
+ENCODING 236
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 8 2 0
+BITMAP
+80
+40
+00
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER I WITH ACUTE
+ENCODING 237
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 8 1 0
+BITMAP
+40
+80
+00
+40
+40
+40
+40
+40
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER I WITH CIRCUMFLEX
+ENCODING 238
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 8 1 0
+BITMAP
+40
+A0
+00
+40
+40
+40
+40
+40
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER I WITH DIAERESIS
+ENCODING 239
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+40
+40
+40
+40
+40
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER ETH
+ENCODING 240
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+60
+60
+10
+78
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER N WITH TILDE
+ENCODING 241
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+A0
+00
+F0
+88
+88
+88
+88
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER O WITH GRAVE
+ENCODING 242
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+40
+20
+00
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER O WITH ACUTE
+ENCODING 243
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER O WITH CIRCUMFLEX
+ENCODING 244
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+00
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER O WITH TILDE
+ENCODING 245
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+A0
+00
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER O WITH DIAERESIS
+ENCODING 246
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+50
+00
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR DIVISION SIGN
+ENCODING 247
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 1
+BITMAP
+20
+00
+F8
+00
+20
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER O WITH STROKE
+ENCODING 248
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+98
+A8
+C8
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER U WITH GRAVE
+ENCODING 249
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+40
+20
+00
+88
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER U WITH ACUTE
+ENCODING 250
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+88
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER U WITH CIRCUMFLEX
+ENCODING 251
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+00
+88
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER U WITH DIAERESIS
+ENCODING 252
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+50
+00
+88
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER Y WITH ACUTE
+ENCODING 253
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 10 0 -2
+BITMAP
+10
+20
+00
+88
+88
+88
+98
+68
+08
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER THORN
+ENCODING 254
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+80
+80
+F0
+88
+88
+88
+F0
+80
+80
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER Y WITH DIAERESIS
+ENCODING 255
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+50
+00
+88
+88
+88
+98
+68
+08
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER A WITH MACRON
+ENCODING 256
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+00
+70
+88
+88
+F8
+88
+88
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER A WITH MACRON
+ENCODING 257
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+00
+70
+08
+78
+88
+78
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER A WITH BREVE
+ENCODING 258
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+70
+70
+88
+88
+F8
+88
+88
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER A WITH BREVE
+ENCODING 259
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+70
+00
+70
+08
+78
+88
+78
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER A WITH OGONEK
+ENCODING 260
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+20
+50
+88
+88
+F8
+88
+88
+10
+18
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER A WITH OGONEK
+ENCODING 261
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+70
+08
+78
+88
+78
+10
+18
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER C WITH ACUTE
+ENCODING 262
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+70
+88
+80
+80
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER C WITH ACUTE
+ENCODING 263
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+70
+88
+80
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+ENCODING 264
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+70
+88
+80
+80
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER C WITH CIRCUMFLEX
+ENCODING 265
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+00
+70
+88
+80
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER C WITH DOT ABOVE
+ENCODING 266
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+00
+70
+88
+80
+80
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER C WITH DOT ABOVE
+ENCODING 267
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+00
+70
+88
+80
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER C WITH CARON
+ENCODING 268
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+20
+70
+88
+80
+80
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER C WITH CARON
+ENCODING 269
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+20
+00
+70
+88
+80
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER D WITH CARON
+ENCODING 270
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+20
+F0
+88
+88
+88
+88
+F0
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER D WITH CARON
+ENCODING 271
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+20
+08
+68
+98
+88
+98
+68
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER D WITH STROKE
+ENCODING 272
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+78
+44
+44
+E4
+44
+44
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER D WITH STROKE
+ENCODING 273
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+10
+38
+10
+70
+90
+90
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER E WITH MACRON
+ENCODING 274
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+00
+F8
+80
+F0
+80
+80
+F8
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER E WITH MACRON
+ENCODING 275
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+00
+70
+88
+F8
+80
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER E WITH BREVE
+ENCODING 276
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+70
+F8
+80
+F0
+80
+80
+F8
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER E WITH BREVE
+ENCODING 277
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+70
+00
+70
+88
+F8
+80
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER E WITH DOT ABOVE
+ENCODING 278
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+00
+F8
+80
+F0
+80
+80
+F8
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER E WITH DOT ABOVE
+ENCODING 279
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+00
+70
+88
+F8
+80
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER E WITH OGONEK
+ENCODING 280
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+F8
+80
+80
+F0
+80
+80
+F8
+20
+30
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER E WITH OGONEK
+ENCODING 281
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+70
+88
+F8
+80
+70
+20
+30
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER E WITH CARON
+ENCODING 282
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+20
+F8
+80
+F0
+80
+80
+F8
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER E WITH CARON
+ENCODING 283
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+20
+00
+70
+88
+F8
+80
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+ENCODING 284
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+70
+88
+80
+98
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER G WITH CIRCUMFLEX
+ENCODING 285
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+20
+50
+00
+68
+90
+60
+80
+70
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER G WITH BREVE
+ENCODING 286
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+70
+70
+88
+80
+98
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER G WITH BREVE
+ENCODING 287
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+88
+70
+00
+68
+90
+60
+80
+70
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER G WITH DOT ABOVE
+ENCODING 288
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+00
+70
+88
+80
+98
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER G WITH DOT ABOVE
+ENCODING 289
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+20
+00
+68
+90
+60
+80
+70
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER G WITH CEDILLA
+ENCODING 290
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 -2
+BITMAP
+70
+88
+80
+98
+88
+70
+20
+40
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER G WITH CEDILLA
+ENCODING 291
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+40
+60
+00
+68
+90
+60
+80
+70
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+ENCODING 292
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+00
+88
+88
+F8
+88
+88
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER H WITH CIRCUMFLEX
+ENCODING 293
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+28
+80
+80
+F0
+88
+88
+88
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER H WITH STROKE
+ENCODING 294
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+48
+FC
+48
+78
+48
+48
+48
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER H WITH STROKE
+ENCODING 295
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+40
+E0
+58
+64
+44
+44
+44
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER I WITH TILDE
+ENCODING 296
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 1 0
+BITMAP
+50
+A0
+E0
+40
+40
+40
+40
+E0
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER I WITH TILDE
+ENCODING 297
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 1 0
+BITMAP
+50
+A0
+00
+60
+20
+20
+20
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER I WITH MACRON
+ENCODING 298
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 8 1 0
+BITMAP
+E0
+00
+E0
+40
+40
+40
+40
+E0
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER I WITH MACRON
+ENCODING 299
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+E0
+00
+C0
+40
+40
+40
+E0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER I WITH BREVE
+ENCODING 300
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+70
+70
+20
+20
+20
+20
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER I WITH BREVE
+ENCODING 301
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+70
+00
+60
+20
+20
+20
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER I WITH OGONEK
+ENCODING 302
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 9 1 -2
+BITMAP
+E0
+40
+40
+40
+40
+40
+E0
+40
+60
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER I WITH OGONEK
+ENCODING 303
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 9 1 -2
+BITMAP
+40
+00
+C0
+40
+40
+40
+E0
+40
+60
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER I WITH DOT ABOVE
+ENCODING 304
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 8 1 0
+BITMAP
+40
+00
+E0
+40
+40
+40
+40
+E0
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER DOTLESS I
+ENCODING 305
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+C0
+40
+40
+40
+E0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LIGATURE IJ
+ENCODING 306
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+B8
+88
+88
+88
+88
+A8
+90
+ENDCHAR
+STARTCHAR LATIN SMALL LIGATURE IJ
+ENCODING 307
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 9 1 -2
+BITMAP
+90
+00
+B0
+90
+90
+90
+90
+10
+60
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+ENCODING 308
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+28
+38
+10
+10
+10
+90
+60
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER J WITH CIRCUMFLEX
+ENCODING 309
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+10
+28
+00
+30
+10
+10
+10
+90
+90
+60
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER K WITH CEDILLA
+ENCODING 310
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+88
+90
+A0
+C0
+A0
+90
+88
+20
+60
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER K WITH CEDILLA
+ENCODING 311
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+80
+80
+88
+90
+E0
+90
+88
+20
+60
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER KRA
+ENCODING 312
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+88
+90
+E0
+90
+88
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER L WITH ACUTE
+ENCODING 313
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+A0
+80
+80
+80
+80
+80
+F8
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER L WITH ACUTE
+ENCODING 314
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 8 1 0
+BITMAP
+20
+40
+C0
+40
+40
+40
+40
+E0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER L WITH CEDILLA
+ENCODING 315
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+80
+80
+80
+80
+80
+80
+F8
+20
+60
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER L WITH CEDILLA
+ENCODING 316
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 9 1 -2
+BITMAP
+C0
+40
+40
+40
+40
+40
+E0
+40
+C0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER L WITH CARON
+ENCODING 317
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+28
+90
+80
+80
+80
+80
+80
+F8
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER L WITH CARON
+ENCODING 318
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 8 1 0
+BITMAP
+A0
+40
+C0
+40
+40
+40
+40
+E0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER L WITH MIDDLE DOT
+ENCODING 319
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+80
+80
+A0
+80
+80
+80
+F8
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER L WITH MIDDLE DOT
+ENCODING 320
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 1 0
+BITMAP
+C0
+40
+50
+40
+40
+40
+E0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER L WITH STROKE
+ENCODING 321
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+40
+40
+60
+C0
+40
+40
+7C
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER L WITH STROKE
+ENCODING 322
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+C0
+40
+60
+C0
+40
+40
+E0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER N WITH ACUTE
+ENCODING 323
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+88
+C8
+A8
+98
+88
+88
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER N WITH ACUTE
+ENCODING 324
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+B0
+C8
+88
+88
+88
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER N WITH CEDILLA
+ENCODING 325
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+88
+88
+C8
+A8
+98
+88
+88
+20
+40
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER N WITH CEDILLA
+ENCODING 326
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+B0
+C8
+88
+88
+88
+20
+40
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER N WITH CARON
+ENCODING 327
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+20
+88
+C8
+A8
+98
+88
+88
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER N WITH CARON
+ENCODING 328
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+20
+00
+B0
+C8
+88
+88
+88
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+ENCODING 329
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 8 0 0
+BITMAP
+C0
+40
+80
+28
+34
+24
+24
+24
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER ENG
+ENCODING 330
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+88
+88
+C8
+A8
+98
+88
+88
+08
+30
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER ENG
+ENCODING 331
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+B0
+C8
+88
+88
+88
+08
+30
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER O WITH MACRON
+ENCODING 332
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+00
+70
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER O WITH MACRON
+ENCODING 333
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+00
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER O WITH BREVE
+ENCODING 334
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+70
+70
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER O WITH BREVE
+ENCODING 335
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+70
+00
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+ENCODING 336
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+48
+90
+70
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER O WITH DOUBLE ACUTE
+ENCODING 337
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+48
+90
+00
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LIGATURE OE
+ENCODING 338
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+78
+A0
+A0
+B0
+A0
+A0
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LIGATURE OE
+ENCODING 339
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+A8
+B0
+A0
+78
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER R WITH ACUTE
+ENCODING 340
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+F0
+88
+F0
+A0
+90
+88
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER R WITH ACUTE
+ENCODING 341
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+B0
+C8
+80
+80
+80
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER R WITH CEDILLA
+ENCODING 342
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+78
+44
+44
+78
+50
+48
+44
+20
+C0
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER R WITH CEDILLA
+ENCODING 343
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 -2
+BITMAP
+58
+64
+40
+40
+40
+20
+C0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER R WITH CARON
+ENCODING 344
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+20
+F0
+88
+F0
+A0
+90
+88
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER R WITH CARON
+ENCODING 345
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+20
+00
+B0
+C8
+80
+80
+80
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER S WITH ACUTE
+ENCODING 346
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+78
+80
+70
+08
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER S WITH ACUTE
+ENCODING 347
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+70
+80
+70
+08
+F0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+ENCODING 348
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+78
+80
+70
+08
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER S WITH CIRCUMFLEX
+ENCODING 349
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+00
+70
+80
+70
+08
+F0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER S WITH CEDILLA
+ENCODING 350
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+70
+88
+80
+70
+08
+88
+70
+20
+40
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER S WITH CEDILLA
+ENCODING 351
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+70
+80
+70
+08
+F0
+20
+40
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER S WITH CARON
+ENCODING 352
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+20
+70
+80
+70
+08
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER S WITH CARON
+ENCODING 353
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+20
+00
+70
+80
+70
+08
+F0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER T WITH CEDILLA
+ENCODING 354
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+F8
+20
+20
+20
+20
+20
+20
+10
+60
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER T WITH CEDILLA
+ENCODING 355
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+40
+40
+F0
+40
+40
+48
+30
+10
+60
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER T WITH CARON
+ENCODING 356
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+20
+F8
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER T WITH CARON
+ENCODING 357
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+A0
+40
+40
+F0
+40
+40
+48
+30
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER T WITH STROKE
+ENCODING 358
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+20
+20
+70
+20
+20
+20
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER T WITH STROKE
+ENCODING 359
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+40
+F0
+40
+F0
+40
+48
+30
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER U WITH TILDE
+ENCODING 360
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+28
+50
+00
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER U WITH TILDE
+ENCODING 361
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+28
+50
+00
+88
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER U WITH MACRON
+ENCODING 362
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+00
+88
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER U WITH MACRON
+ENCODING 363
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+00
+88
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER U WITH BREVE
+ENCODING 364
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+70
+00
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER U WITH BREVE
+ENCODING 365
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+70
+00
+88
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER U WITH RING ABOVE
+ENCODING 366
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+A8
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER U WITH RING ABOVE
+ENCODING 367
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+20
+88
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+ENCODING 368
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+48
+90
+00
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER U WITH DOUBLE ACUTE
+ENCODING 369
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+48
+90
+00
+88
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER U WITH OGONEK
+ENCODING 370
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+88
+88
+88
+88
+88
+88
+70
+20
+30
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER U WITH OGONEK
+ENCODING 371
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+88
+88
+88
+88
+70
+10
+18
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+ENCODING 372
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+00
+88
+A8
+A8
+D8
+88
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER W WITH CIRCUMFLEX
+ENCODING 373
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+00
+88
+88
+A8
+A8
+50
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+ENCODING 374
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+00
+88
+50
+20
+20
+20
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER Y WITH CIRCUMFLEX
+ENCODING 375
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+20
+50
+00
+88
+88
+98
+68
+08
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER Y WITH DIAERESIS
+ENCODING 376
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+00
+88
+50
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER Z WITH ACUTE
+ENCODING 377
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+F8
+10
+20
+40
+80
+F8
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER Z WITH ACUTE
+ENCODING 378
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+F8
+10
+20
+40
+F8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER Z WITH DOT ABOVE
+ENCODING 379
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+00
+F8
+10
+20
+40
+80
+F8
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER Z WITH DOT ABOVE
+ENCODING 380
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+00
+F8
+10
+20
+40
+F8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER Z WITH CARON
+ENCODING 381
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+20
+F8
+10
+20
+40
+80
+F8
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER Z WITH CARON
+ENCODING 382
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+20
+00
+F8
+10
+20
+40
+F8
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER LONG S
+ENCODING 383
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+30
+48
+40
+C0
+40
+40
+40
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER SCHWA
+ENCODING 399
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+08
+F8
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER F WITH HOOK
+ENCODING 402
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 -1
+BITMAP
+10
+28
+20
+70
+20
+20
+A0
+40
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER O WITH HORN
+ENCODING 416
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+64
+94
+98
+90
+90
+90
+60
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER O WITH HORN
+ENCODING 417
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 0
+BITMAP
+64
+98
+90
+90
+60
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER U WITH HORN
+ENCODING 431
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+94
+94
+98
+90
+90
+90
+60
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER U WITH HORN
+ENCODING 432
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 0
+BITMAP
+94
+98
+90
+B0
+50
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER Z WITH STROKE
+ENCODING 437
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+08
+10
+F8
+40
+80
+F8
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER Z WITH STROKE
+ENCODING 438
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F8
+10
+F8
+40
+F8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER O WITH CARON
+ENCODING 465
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+20
+70
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER O WITH CARON
+ENCODING 466
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+20
+00
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER G WITH CARON
+ENCODING 486
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+20
+70
+88
+80
+98
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER G WITH CARON
+ENCODING 487
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+50
+20
+00
+68
+90
+60
+80
+70
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+ENCODING 506
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+20
+50
+70
+88
+F8
+88
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+ENCODING 507
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+20
+50
+20
+78
+88
+78
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER AE WITH ACUTE
+ENCODING 508
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 8 0 0
+BITMAP
+08
+10
+7C
+90
+9C
+F0
+90
+9C
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER AE WITH ACUTE
+ENCODING 509
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 8 0 0
+BITMAP
+08
+10
+00
+78
+14
+7C
+90
+7C
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+ENCODING 510
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+70
+98
+A8
+A8
+C8
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER O WITH STROKE AND ACUTE
+ENCODING 511
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+78
+98
+A8
+C8
+F0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER S WITH COMMA BELOW
+ENCODING 536
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+70
+88
+80
+70
+08
+88
+70
+20
+40
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER S WITH COMMA BELOW
+ENCODING 537
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+70
+80
+70
+08
+F0
+20
+40
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER T WITH COMMA BELOW
+ENCODING 538
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+F8
+20
+20
+20
+20
+20
+20
+10
+20
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER T WITH COMMA BELOW
+ENCODING 539
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+40
+40
+F0
+40
+40
+48
+30
+10
+20
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER SCHWA
+ENCODING 601
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+08
+F8
+88
+70
+ENDCHAR
+STARTCHAR MODIFIER LETTER APOSTROPHE
+ENCODING 700
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 3 2 4
+BITMAP
+C0
+40
+80
+ENDCHAR
+STARTCHAR MODIFIER LETTER REVERSED COMMA
+ENCODING 701
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 3 2 4
+BITMAP
+C0
+80
+40
+ENDCHAR
+STARTCHAR MODIFIER LETTER CIRCUMFLEX ACCENT
+ENCODING 710
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 2 1 6
+BITMAP
+40
+A0
+ENDCHAR
+STARTCHAR CARON
+ENCODING 711
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 2 1 6
+BITMAP
+A0
+40
+ENDCHAR
+STARTCHAR MODIFIER LETTER MACRON
+ENCODING 713
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 1 1 7
+BITMAP
+E0
+ENDCHAR
+STARTCHAR MODIFIER LETTER PLUS SIGN
+ENCODING 726
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 5
+BITMAP
+40
+E0
+40
+ENDCHAR
+STARTCHAR BREVE
+ENCODING 728
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 2 0 6
+BITMAP
+88
+70
+ENDCHAR
+STARTCHAR DOT ABOVE
+ENCODING 729
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 1 2 7
+BITMAP
+80
+ENDCHAR
+STARTCHAR RING ABOVE
+ENCODING 730
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 5
+BITMAP
+40
+A0
+40
+ENDCHAR
+STARTCHAR OGONEK
+ENCODING 731
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 2 2 -2
+BITMAP
+80
+C0
+ENDCHAR
+STARTCHAR SMALL TILDE
+ENCODING 732
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 2 1 6
+BITMAP
+50
+A0
+ENDCHAR
+STARTCHAR DOUBLE ACUTE ACCENT
+ENCODING 733
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 2 0 6
+BITMAP
+48
+90
+ENDCHAR
+STARTCHAR COMBINING GRAVE ACCENT
+ENCODING 768
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 2 2 6
+BITMAP
+80
+40
+ENDCHAR
+STARTCHAR COMBINING ACUTE ACCENT
+ENCODING 769
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 2 2 6
+BITMAP
+40
+80
+ENDCHAR
+STARTCHAR COMBINING CIRCUMFLEX ACCENT
+ENCODING 770
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 2 1 6
+BITMAP
+40
+A0
+ENDCHAR
+STARTCHAR COMBINING TILDE
+ENCODING 771
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 2 1 6
+BITMAP
+50
+A0
+ENDCHAR
+STARTCHAR COMBINING MACRON
+ENCODING 772
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 1 1 7
+BITMAP
+E0
+ENDCHAR
+STARTCHAR COMBINING OVERLINE
+ENCODING 773
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 1 0 7
+BITMAP
+F8
+ENDCHAR
+STARTCHAR COMBINING BREVE
+ENCODING 774
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 2 0 6
+BITMAP
+88
+70
+ENDCHAR
+STARTCHAR COMBINING DOT ABOVE
+ENCODING 775
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 1 2 7
+BITMAP
+80
+ENDCHAR
+STARTCHAR COMBINING DIAERESIS
+ENCODING 776
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 1 1 7
+BITMAP
+A0
+ENDCHAR
+STARTCHAR COMBINING HOOK ABOVE
+ENCODING 777
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 5
+BITMAP
+C0
+20
+40
+ENDCHAR
+STARTCHAR COMBINING RING ABOVE
+ENCODING 778
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 5
+BITMAP
+40
+A0
+40
+ENDCHAR
+STARTCHAR COMBINING DOUBLE ACUTE ACCENT
+ENCODING 779
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 2 0 6
+BITMAP
+48
+90
+ENDCHAR
+STARTCHAR COMBINING CARON
+ENCODING 780
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 2 1 6
+BITMAP
+A0
+40
+ENDCHAR
+STARTCHAR COMBINING VERTICAL LINE ABOVE
+ENCODING 781
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 2 2 6
+BITMAP
+80
+80
+ENDCHAR
+STARTCHAR COMBINING DOUBLE VERTICAL LINE ABOVE
+ENCODING 782
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 2 1 6
+BITMAP
+A0
+A0
+ENDCHAR
+STARTCHAR COMBINING DOUBLE GRAVE ACCENT
+ENCODING 783
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 2 0 6
+BITMAP
+90
+48
+ENDCHAR
+STARTCHAR COMBINING CANDRABINDU
+ENCODING 784
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 2 0 6
+BITMAP
+A8
+70
+ENDCHAR
+STARTCHAR COMBINING INVERTED BREVE
+ENCODING 785
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 2 0 6
+BITMAP
+70
+88
+ENDCHAR
+STARTCHAR COMBINING DOT BELOW
+ENCODING 803
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 1 2 -2
+BITMAP
+80
+ENDCHAR
+STARTCHAR COMBINING DIAERESIS BELOW
+ENCODING 804
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 1 1 -2
+BITMAP
+A0
+ENDCHAR
+STARTCHAR COMBINING LONG SOLIDUS OVERLAY
+ENCODING 824
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 6 1 0
+BITMAP
+20
+20
+40
+40
+80
+80
+ENDCHAR
+STARTCHAR COMBINING GRAVE TONE MARK
+ENCODING 832
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 2 2 6
+BITMAP
+80
+40
+ENDCHAR
+STARTCHAR COMBINING ACUTE TONE MARK
+ENCODING 833
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 2 2 6
+BITMAP
+40
+80
+ENDCHAR
+STARTCHAR GREEK NUMERAL SIGN
+ENCODING 884
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 2 2 5
+BITMAP
+40
+80
+ENDCHAR
+STARTCHAR GREEK LOWER NUMERAL SIGN
+ENCODING 885
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 2 2 -2
+BITMAP
+40
+80
+ENDCHAR
+STARTCHAR GREEK YPOGEGRAMMENI
+ENCODING 890
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 2 2 -2
+BITMAP
+80
+C0
+ENDCHAR
+STARTCHAR GREEK QUESTION MARK
+ENCODING 894
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 -1
+BITMAP
+40
+E0
+40
+00
+60
+40
+80
+ENDCHAR
+STARTCHAR GREEK TONOS
+ENCODING 900
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 2 2 5
+BITMAP
+40
+80
+ENDCHAR
+STARTCHAR GREEK DIALYTIKA TONOS
+ENCODING 901
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 2 0 5
+BITMAP
+10
+A8
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH TONOS
+ENCODING 902
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+58
+A4
+24
+24
+3C
+24
+24
+ENDCHAR
+STARTCHAR GREEK ANO TELEIA
+ENCODING 903
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 1 2 4
+BITMAP
+80
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER EPSILON WITH TONOS
+ENCODING 904
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+7C
+A0
+20
+38
+20
+20
+3C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ETA WITH TONOS
+ENCODING 905
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+64
+A4
+24
+3C
+24
+24
+24
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER IOTA WITH TONOS
+ENCODING 906
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+5C
+88
+08
+08
+08
+08
+1C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMICRON WITH TONOS
+ENCODING 908
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+58
+A4
+24
+24
+24
+24
+18
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER UPSILON WITH TONOS
+ENCODING 910
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+54
+94
+14
+08
+08
+08
+08
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMEGA WITH TONOS
+ENCODING 911
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+58
+A4
+24
+24
+24
+18
+3C
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+ENCODING 912
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+A8
+00
+20
+20
+20
+28
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA
+ENCODING 913
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+50
+88
+88
+F8
+88
+88
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER BETA
+ENCODING 914
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F0
+88
+88
+F0
+88
+88
+F0
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER GAMMA
+ENCODING 915
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+80
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER DELTA
+ENCODING 916
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+50
+50
+50
+88
+88
+F8
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER EPSILON
+ENCODING 917
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+80
+80
+F0
+80
+80
+F8
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ZETA
+ENCODING 918
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+08
+10
+20
+40
+80
+F8
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ETA
+ENCODING 919
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+88
+88
+F8
+88
+88
+88
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER THETA
+ENCODING 920
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+88
+F8
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER IOTA
+ENCODING 921
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+E0
+40
+40
+40
+40
+40
+E0
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER KAPPA
+ENCODING 922
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+90
+A0
+C0
+A0
+90
+88
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER LAMDA
+ENCODING 923
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+50
+50
+50
+88
+88
+88
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER MU
+ENCODING 924
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+88
+D8
+A8
+88
+88
+88
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER NU
+ENCODING 925
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+88
+C8
+A8
+98
+88
+88
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER XI
+ENCODING 926
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+00
+00
+70
+00
+00
+F8
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMICRON
+ENCODING 927
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER PI
+ENCODING 928
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+88
+88
+88
+88
+88
+88
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER RHO
+ENCODING 929
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F0
+88
+88
+F0
+80
+80
+80
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER SIGMA
+ENCODING 931
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+80
+40
+20
+40
+80
+F8
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER TAU
+ENCODING 932
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+20
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER UPSILON
+ENCODING 933
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+88
+50
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER PHI
+ENCODING 934
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+70
+A8
+A8
+A8
+70
+20
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER CHI
+ENCODING 935
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+88
+50
+20
+50
+88
+88
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER PSI
+ENCODING 936
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+A8
+A8
+A8
+A8
+70
+20
+20
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMEGA
+ENCODING 937
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+88
+88
+88
+50
+D8
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+ENCODING 938
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 8 1 0
+BITMAP
+A0
+00
+E0
+40
+40
+40
+40
+E0
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+ENCODING 939
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+00
+88
+88
+50
+20
+20
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH TONOS
+ENCODING 940
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+70
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER EPSILON WITH TONOS
+ENCODING 941
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+70
+88
+60
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH TONOS
+ENCODING 942
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+10
+20
+00
+B0
+C8
+88
+88
+88
+08
+08
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER IOTA WITH TONOS
+ENCODING 943
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 8 1 0
+BITMAP
+40
+80
+00
+80
+80
+80
+A0
+40
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+ENCODING 944
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+A8
+00
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA
+ENCODING 945
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER BETA
+ENCODING 946
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+60
+90
+90
+F0
+88
+88
+F0
+80
+80
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER GAMMA
+ENCODING 947
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+88
+88
+50
+50
+20
+20
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER DELTA
+ENCODING 948
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+60
+90
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER EPSILON
+ENCODING 949
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+88
+60
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ZETA
+ENCODING 950
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+F8
+20
+40
+40
+80
+80
+70
+08
+30
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA
+ENCODING 951
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+B0
+C8
+88
+88
+88
+08
+08
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER THETA
+ENCODING 952
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 1 0
+BITMAP
+60
+90
+90
+F0
+90
+90
+60
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER IOTA
+ENCODING 953
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+80
+80
+80
+A0
+40
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER KAPPA
+ENCODING 954
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+88
+90
+E0
+90
+88
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER LAMDA
+ENCODING 955
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+68
+98
+88
+88
+88
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER MU
+ENCODING 956
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+88
+88
+88
+D8
+A8
+80
+80
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER NU
+ENCODING 957
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+88
+88
+50
+50
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER XI
+ENCODING 958
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+F8
+20
+40
+30
+40
+80
+70
+08
+30
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMICRON
+ENCODING 959
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER PI
+ENCODING 960
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F8
+50
+50
+50
+50
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER RHO
+ENCODING 961
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+70
+88
+88
+88
+F0
+80
+80
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER FINAL SIGMA
+ENCODING 962
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+70
+88
+80
+80
+70
+08
+30
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER SIGMA
+ENCODING 963
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+78
+90
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER TAU
+ENCODING 964
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F8
+20
+20
+20
+10
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER UPSILON
+ENCODING 965
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER PHI
+ENCODING 966
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+50
+A8
+A8
+A8
+70
+20
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER CHI
+ENCODING 967
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+88
+50
+50
+20
+50
+50
+88
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER PSI
+ENCODING 968
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+A8
+A8
+A8
+A8
+70
+20
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA
+ENCODING 969
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+88
+A8
+A8
+A8
+50
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER IOTA WITH DIALYTIKA
+ENCODING 970
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+00
+20
+20
+20
+28
+10
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+ENCODING 971
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+00
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMICRON WITH TONOS
+ENCODING 972
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER UPSILON WITH TONOS
+ENCODING 973
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH TONOS
+ENCODING 974
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+88
+A8
+A8
+A8
+50
+ENDCHAR
+STARTCHAR GREEK BETA SYMBOL
+ENCODING 976
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+60
+90
+A0
+F0
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK THETA SYMBOL
+ENCODING 977
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+60
+90
+78
+10
+90
+90
+60
+ENDCHAR
+STARTCHAR GREEK UPSILON WITH HOOK SYMBOL
+ENCODING 978
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+50
+A8
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR GREEK UPSILON WITH ACUTE AND HOOK SYMBOL
+ENCODING 979
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+50
+A8
+20
+A0
+A0
+20
+20
+ENDCHAR
+STARTCHAR GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
+ENCODING 980
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+00
+50
+A8
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR GREEK PHI SYMBOL
+ENCODING 981
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+20
+20
+70
+A8
+A8
+A8
+70
+20
+20
+ENDCHAR
+STARTCHAR GREEK PI SYMBOL
+ENCODING 982
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F8
+88
+A8
+A8
+50
+ENDCHAR
+STARTCHAR GREEK KAI SYMBOL
+ENCODING 983
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+10
+20
+88
+50
+60
+60
+98
+08
+70
+ENDCHAR
+STARTCHAR GREEK LETTER STIGMA
+ENCODING 986
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 -1
+BITMAP
+30
+48
+80
+80
+80
+70
+08
+10
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER STIGMA
+ENCODING 987
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 -2
+BITMAP
+08
+70
+80
+80
+80
+70
+08
+30
+ENDCHAR
+STARTCHAR GREEK LETTER DIGAMMA
+ENCODING 988
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+80
+80
+F0
+80
+80
+80
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER DIGAMMA
+ENCODING 989
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 1 -2
+BITMAP
+F0
+80
+80
+E0
+80
+80
+80
+ENDCHAR
+STARTCHAR GREEK LETTER KOPPA
+ENCODING 990
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+80
+88
+98
+A8
+C8
+88
+08
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER KOPPA
+ENCODING 991
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+20
+40
+40
+80
+F8
+08
+10
+10
+20
+ENDCHAR
+STARTCHAR GREEK LETTER SAMPI
+ENCODING 992
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+50
+50
+50
+98
+A8
+A8
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER SAMPI
+ENCODING 993
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+C0
+20
+10
+30
+58
+28
+08
+08
+08
+ENDCHAR
+STARTCHAR GREEK KAPPA SYMBOL
+ENCODING 1008
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+88
+50
+60
+60
+98
+ENDCHAR
+STARTCHAR GREEK RHO SYMBOL
+ENCODING 1009
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+70
+88
+88
+88
+F0
+80
+70
+ENDCHAR
+STARTCHAR GREEK LUNATE SIGMA SYMBOL
+ENCODING 1010
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+88
+80
+88
+70
+ENDCHAR
+STARTCHAR GREEK LETTER YOT
+ENCODING 1011
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 9 1 -2
+BITMAP
+10
+00
+30
+10
+10
+10
+90
+90
+60
+ENDCHAR
+STARTCHAR GREEK CAPITAL THETA SYMBOL
+ENCODING 1012
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+88
+F8
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK LUNATE EPSILON SYMBOL
+ENCODING 1013
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 0
+BITMAP
+70
+80
+E0
+80
+70
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER IO
+ENCODING 1025
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+00
+F8
+80
+F0
+80
+80
+F8
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER DJE
+ENCODING 1026
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+E0
+40
+40
+70
+48
+48
+48
+08
+30
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER GJE
+ENCODING 1027
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+F8
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER UKRAINIAN IE
+ENCODING 1028
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+80
+E0
+80
+88
+70
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER DZE
+ENCODING 1029
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+80
+70
+08
+88
+70
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+ENCODING 1030
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+E0
+40
+40
+40
+40
+40
+E0
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER YI
+ENCODING 1031
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 8 1 0
+BITMAP
+A0
+00
+E0
+40
+40
+40
+40
+E0
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER JE
+ENCODING 1032
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+38
+08
+08
+08
+08
+88
+70
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER LJE
+ENCODING 1033
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+30
+50
+50
+98
+94
+94
+98
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER NJE
+ENCODING 1034
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+A0
+A0
+A0
+F0
+A8
+A8
+B0
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER TSHE
+ENCODING 1035
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+E0
+40
+40
+70
+48
+48
+48
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER KJE
+ENCODING 1036
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+88
+90
+E0
+90
+88
+88
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER SHORT U
+ENCODING 1038
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+20
+88
+88
+50
+20
+40
+80
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER DZHE
+ENCODING 1039
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 -1
+BITMAP
+88
+88
+88
+88
+88
+88
+F8
+20
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER A
+ENCODING 1040
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+50
+88
+88
+F8
+88
+88
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER BE
+ENCODING 1041
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F0
+80
+80
+F0
+88
+88
+F0
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER VE
+ENCODING 1042
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F0
+88
+88
+F0
+88
+88
+F0
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER GHE
+ENCODING 1043
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+80
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER DE
+ENCODING 1044
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 -1
+BITMAP
+18
+28
+28
+48
+48
+48
+F8
+88
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER IE
+ENCODING 1045
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+80
+80
+F0
+80
+80
+F8
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER ZHE
+ENCODING 1046
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+A8
+A8
+A8
+70
+A8
+A8
+A8
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER ZE
+ENCODING 1047
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+08
+30
+08
+88
+70
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER I
+ENCODING 1048
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+88
+98
+A8
+C8
+88
+88
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER SHORT I
+ENCODING 1049
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+20
+88
+98
+A8
+C8
+88
+88
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER KA
+ENCODING 1050
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+90
+A0
+C0
+A0
+90
+88
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER EL
+ENCODING 1051
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+38
+48
+48
+48
+48
+48
+88
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER EM
+ENCODING 1052
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+88
+D8
+A8
+88
+88
+88
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER EN
+ENCODING 1053
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+88
+88
+F8
+88
+88
+88
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER O
+ENCODING 1054
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER PE
+ENCODING 1055
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+88
+88
+88
+88
+88
+88
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER ER
+ENCODING 1056
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F0
+88
+88
+F0
+80
+80
+80
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER ES
+ENCODING 1057
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+80
+80
+80
+88
+70
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER TE
+ENCODING 1058
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+20
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER U
+ENCODING 1059
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+88
+88
+50
+20
+40
+80
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER EF
+ENCODING 1060
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+70
+A8
+A8
+A8
+70
+20
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER HA
+ENCODING 1061
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+88
+50
+20
+50
+88
+88
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER TSE
+ENCODING 1062
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+90
+90
+90
+90
+90
+90
+F8
+08
+08
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER CHE
+ENCODING 1063
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+88
+88
+78
+08
+08
+08
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER SHA
+ENCODING 1064
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+A8
+A8
+A8
+A8
+A8
+A8
+F8
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER SHCHA
+ENCODING 1065
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+A8
+A8
+A8
+A8
+A8
+A8
+F8
+08
+08
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER HARD SIGN
+ENCODING 1066
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+C0
+40
+40
+70
+48
+48
+70
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER YERU
+ENCODING 1067
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+88
+88
+E8
+98
+98
+E8
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER SOFT SIGN
+ENCODING 1068
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 1 0
+BITMAP
+80
+80
+80
+E0
+90
+90
+E0
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER E
+ENCODING 1069
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+08
+38
+08
+88
+70
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER YU
+ENCODING 1070
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+90
+A8
+A8
+E8
+A8
+A8
+90
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER YA
+ENCODING 1071
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+78
+88
+88
+78
+28
+48
+88
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER A
+ENCODING 1072
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+08
+78
+88
+78
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER BE
+ENCODING 1073
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+78
+80
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER VE
+ENCODING 1074
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F0
+88
+F0
+88
+F0
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER GHE
+ENCODING 1075
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 0
+BITMAP
+F0
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER DE
+ENCODING 1076
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 -1
+BITMAP
+30
+50
+50
+50
+F8
+88
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER IE
+ENCODING 1077
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+88
+F8
+80
+70
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER ZHE
+ENCODING 1078
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+A8
+A8
+70
+A8
+A8
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER ZE
+ENCODING 1079
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+88
+30
+88
+70
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER I
+ENCODING 1080
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+88
+98
+A8
+C8
+88
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER SHORT I
+ENCODING 1081
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+50
+20
+88
+98
+A8
+C8
+88
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER KA
+ENCODING 1082
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+88
+90
+E0
+90
+88
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER EL
+ENCODING 1083
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+38
+48
+48
+48
+88
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER EM
+ENCODING 1084
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+88
+D8
+A8
+88
+88
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER EN
+ENCODING 1085
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+88
+88
+F8
+88
+88
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER O
+ENCODING 1086
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER PE
+ENCODING 1087
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F8
+88
+88
+88
+88
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER ER
+ENCODING 1088
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+B0
+C8
+88
+C8
+B0
+80
+80
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER ES
+ENCODING 1089
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+88
+80
+88
+70
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER TE
+ENCODING 1090
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F8
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER U
+ENCODING 1091
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+88
+88
+88
+78
+08
+88
+70
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER EF
+ENCODING 1092
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+20
+20
+70
+A8
+A8
+A8
+70
+20
+20
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER HA
+ENCODING 1093
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+88
+50
+20
+50
+88
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER TSE
+ENCODING 1094
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+90
+90
+90
+90
+F8
+08
+08
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER CHE
+ENCODING 1095
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+88
+88
+78
+08
+08
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER SHA
+ENCODING 1096
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+A8
+A8
+A8
+A8
+F8
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER SHCHA
+ENCODING 1097
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+A8
+A8
+A8
+A8
+F8
+08
+08
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER HARD SIGN
+ENCODING 1098
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+C0
+40
+70
+48
+70
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER YERU
+ENCODING 1099
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+88
+88
+E8
+98
+E8
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER SOFT SIGN
+ENCODING 1100
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 0
+BITMAP
+80
+80
+E0
+90
+E0
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER E
+ENCODING 1101
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+88
+38
+88
+70
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER YU
+ENCODING 1102
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+90
+A8
+E8
+A8
+90
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER YA
+ENCODING 1103
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+78
+88
+78
+88
+88
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER IO
+ENCODING 1105
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+50
+00
+70
+88
+F8
+80
+70
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER DJE
+ENCODING 1106
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+40
+F0
+40
+70
+48
+48
+48
+08
+30
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER GJE
+ENCODING 1107
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 1 0
+BITMAP
+20
+40
+00
+F0
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER UKRAINIAN IE
+ENCODING 1108
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 0
+BITMAP
+60
+90
+C0
+90
+60
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER DZE
+ENCODING 1109
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+80
+70
+08
+F0
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+ENCODING 1110
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+40
+00
+C0
+40
+40
+40
+E0
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER YI
+ENCODING 1111
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+C0
+40
+40
+40
+E0
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER JE
+ENCODING 1112
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 9 1 -2
+BITMAP
+10
+00
+30
+10
+10
+10
+90
+90
+60
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER LJE
+ENCODING 1113
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 0
+BITMAP
+30
+50
+98
+94
+98
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER NJE
+ENCODING 1114
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+A0
+A0
+F0
+A8
+B0
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER TSHE
+ENCODING 1115
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+40
+F0
+40
+70
+48
+48
+48
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER KJE
+ENCODING 1116
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+10
+20
+88
+90
+E0
+90
+88
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER SHORT U
+ENCODING 1118
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+50
+20
+88
+88
+98
+68
+08
+88
+70
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER DZHE
+ENCODING 1119
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 -1
+BITMAP
+88
+88
+88
+88
+F8
+20
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER YAT
+ENCODING 1122
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+40
+F0
+40
+70
+48
+48
+70
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER YAT
+ENCODING 1123
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+40
+40
+F0
+40
+70
+48
+70
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER PSI
+ENCODING 1136
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+A8
+A8
+A8
+70
+20
+20
+20
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER PSI
+ENCODING 1137
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+A8
+A8
+70
+20
+20
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER FITA
+ENCODING 1138
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+88
+F8
+88
+88
+70
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER FITA
+ENCODING 1139
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+88
+F8
+88
+70
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER IZHITSA
+ENCODING 1140
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+90
+90
+50
+50
+50
+20
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER IZHITSA
+ENCODING 1141
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+88
+90
+50
+50
+20
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+ENCODING 1142
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+28
+80
+88
+50
+50
+50
+20
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+ENCODING 1143
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+50
+28
+80
+88
+50
+50
+20
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+ENCODING 1168
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+08
+F8
+80
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER GHE WITH UPTURN
+ENCODING 1169
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 6 1 0
+BITMAP
+10
+F0
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER GHE WITH STROKE
+ENCODING 1170
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+78
+40
+40
+F0
+40
+40
+40
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER GHE WITH STROKE
+ENCODING 1171
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+78
+40
+F0
+40
+40
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
+ENCODING 1174
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+A8
+A8
+A8
+70
+A8
+A8
+A8
+04
+04
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER ZHE WITH DESCENDER
+ENCODING 1175
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 -2
+BITMAP
+A8
+A8
+70
+A8
+A8
+04
+04
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER KA WITH DESCENDER
+ENCODING 1178
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+88
+90
+A0
+C0
+A0
+90
+88
+04
+04
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER KA WITH DESCENDER
+ENCODING 1179
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 -2
+BITMAP
+88
+90
+E0
+90
+88
+04
+04
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER STRAIGHT U
+ENCODING 1198
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+88
+50
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER STRAIGHT U
+ENCODING 1199
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+88
+88
+50
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
+ENCODING 1200
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+88
+50
+F8
+20
+20
+20
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
+ENCODING 1201
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+88
+88
+50
+F8
+20
+20
+20
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER HA WITH DESCENDER
+ENCODING 1202
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+88
+88
+50
+20
+50
+88
+88
+04
+04
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER HA WITH DESCENDER
+ENCODING 1203
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 -2
+BITMAP
+88
+50
+20
+50
+88
+04
+04
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER SHHA
+ENCODING 1210
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+80
+80
+F0
+88
+88
+88
+88
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER SHHA
+ENCODING 1211
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 1 0
+BITMAP
+80
+80
+A0
+D0
+90
+90
+90
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER SCHWA
+ENCODING 1240
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+08
+F8
+88
+88
+70
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER SCHWA
+ENCODING 1241
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+08
+F8
+88
+70
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER I WITH MACRON
+ENCODING 1250
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 8 1 0
+BITMAP
+E0
+00
+E0
+40
+40
+40
+40
+E0
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER I WITH MACRON
+ENCODING 1251
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+E0
+00
+C0
+40
+40
+40
+E0
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER BARRED O
+ENCODING 1256
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+88
+F8
+88
+88
+70
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER BARRED O
+ENCODING 1257
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+88
+F8
+88
+70
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER U WITH MACRON
+ENCODING 1262
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+00
+88
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER U WITH MACRON
+ENCODING 1263
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+00
+88
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR HEBREW LETTER ALEF
+ENCODING 1488
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+90
+48
+B0
+90
+C8
+ENDCHAR
+STARTCHAR HEBREW LETTER BET
+ENCODING 1489
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F0
+08
+08
+08
+F8
+ENDCHAR
+STARTCHAR HEBREW LETTER GIMEL
+ENCODING 1490
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 0
+BITMAP
+60
+20
+20
+20
+D0
+ENDCHAR
+STARTCHAR HEBREW LETTER DALET
+ENCODING 1491
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F8
+10
+10
+10
+10
+ENDCHAR
+STARTCHAR HEBREW LETTER HE
+ENCODING 1492
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F8
+10
+90
+90
+90
+ENDCHAR
+STARTCHAR HEBREW LETTER VAV
+ENCODING 1493
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 5 2 0
+BITMAP
+C0
+40
+40
+40
+40
+ENDCHAR
+STARTCHAR HEBREW LETTER ZAYIN
+ENCODING 1494
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 6 1 0
+BITMAP
+80
+60
+40
+40
+40
+40
+ENDCHAR
+STARTCHAR HEBREW LETTER HET
+ENCODING 1495
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F8
+88
+88
+88
+88
+ENDCHAR
+STARTCHAR HEBREW LETTER TET
+ENCODING 1496
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+B8
+A8
+88
+88
+F8
+ENDCHAR
+STARTCHAR HEBREW LETTER YOD
+ENCODING 1497
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 2 2 3
+BITMAP
+C0
+40
+ENDCHAR
+STARTCHAR HEBREW LETTER FINAL KAF
+ENCODING 1498
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 -2
+BITMAP
+E0
+20
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR HEBREW LETTER KAF
+ENCODING 1499
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F0
+08
+08
+08
+F0
+ENDCHAR
+STARTCHAR HEBREW LETTER LAMED
+ENCODING 1500
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+80
+80
+F0
+08
+08
+10
+20
+ENDCHAR
+STARTCHAR HEBREW LETTER FINAL MEM
+ENCODING 1501
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F0
+88
+88
+88
+F8
+ENDCHAR
+STARTCHAR HEBREW LETTER MEM
+ENCODING 1502
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+B0
+48
+88
+88
+B8
+ENDCHAR
+STARTCHAR HEBREW LETTER FINAL NUN
+ENCODING 1503
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 7 2 -2
+BITMAP
+C0
+40
+40
+40
+40
+40
+40
+ENDCHAR
+STARTCHAR HEBREW LETTER NUN
+ENCODING 1504
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 5 2 0
+BITMAP
+C0
+40
+40
+40
+C0
+ENDCHAR
+STARTCHAR HEBREW LETTER SAMEKH
+ENCODING 1505
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F8
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR HEBREW LETTER AYIN
+ENCODING 1506
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+48
+48
+48
+48
+F0
+ENDCHAR
+STARTCHAR HEBREW LETTER FINAL PE
+ENCODING 1507
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 1 -2
+BITMAP
+F0
+90
+D0
+10
+10
+10
+10
+ENDCHAR
+STARTCHAR HEBREW LETTER PE
+ENCODING 1508
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+E0
+90
+C8
+08
+F8
+ENDCHAR
+STARTCHAR HEBREW LETTER FINAL TSADI
+ENCODING 1509
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 -2
+BITMAP
+A0
+A0
+A0
+C0
+80
+80
+80
+ENDCHAR
+STARTCHAR HEBREW LETTER TSADI
+ENCODING 1510
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+88
+50
+20
+10
+F8
+ENDCHAR
+STARTCHAR HEBREW LETTER QOF
+ENCODING 1511
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+F8
+08
+88
+88
+F0
+80
+80
+ENDCHAR
+STARTCHAR HEBREW LETTER RESH
+ENCODING 1512
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F0
+08
+08
+08
+08
+ENDCHAR
+STARTCHAR HEBREW LETTER SHIN
+ENCODING 1513
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+A8
+A8
+C8
+88
+F0
+ENDCHAR
+STARTCHAR HEBREW LETTER TAV
+ENCODING 1514
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F8
+88
+88
+48
+88
+ENDCHAR
+STARTCHAR RUNIC LETTER FEHU FEOH FE F
+ENCODING 5792
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 2 0
+BITMAP
+A0
+C0
+A0
+C0
+80
+80
+80
+ENDCHAR
+STARTCHAR RUNIC LETTER URUZ UR U
+ENCODING 5794
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 1 0
+BITMAP
+C0
+A0
+A0
+90
+90
+90
+90
+ENDCHAR
+STARTCHAR RUNIC LETTER YR
+ENCODING 5795
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+50
+88
+88
+A8
+A8
+A8
+ENDCHAR
+STARTCHAR RUNIC LETTER THURISAZ THURS THORN
+ENCODING 5798
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 2 0
+BITMAP
+80
+80
+C0
+A0
+C0
+80
+80
+ENDCHAR
+STARTCHAR RUNIC LETTER OS O
+ENCODING 5801
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+D0
+A8
+D0
+A0
+80
+80
+ENDCHAR
+STARTCHAR RUNIC LETTER AC A
+ENCODING 5802
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+D0
+A0
+C0
+A0
+80
+80
+ENDCHAR
+STARTCHAR RUNIC LETTER AESC
+ENCODING 5803
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 2 0
+BITMAP
+80
+C0
+A0
+C0
+A0
+80
+80
+ENDCHAR
+STARTCHAR RUNIC LETTER LONG-BRANCH-OSS O
+ENCODING 5804
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR RUNIC LETTER RAIDO RAD REID R
+ENCODING 5809
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 1 0
+BITMAP
+C0
+A0
+90
+A0
+C0
+A0
+80
+ENDCHAR
+STARTCHAR RUNIC LETTER CEN
+ENCODING 5811
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 1 0
+BITMAP
+80
+80
+C0
+A0
+A0
+90
+90
+ENDCHAR
+STARTCHAR RUNIC LETTER GEBO GYFU G
+ENCODING 5815
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+50
+50
+20
+50
+50
+88
+ENDCHAR
+STARTCHAR RUNIC LETTER GAR
+ENCODING 5816
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+70
+50
+A8
+50
+70
+88
+ENDCHAR
+STARTCHAR RUNIC LETTER WUNJO WYNN W
+ENCODING 5817
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 1 0
+BITMAP
+C0
+A0
+90
+A0
+C0
+80
+80
+ENDCHAR
+STARTCHAR RUNIC LETTER HAEGL H
+ENCODING 5819
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+88
+C8
+A8
+D8
+A8
+98
+ENDCHAR
+STARTCHAR RUNIC LETTER NAUDIZ NYD NAUD N
+ENCODING 5822
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+A0
+60
+30
+28
+20
+20
+ENDCHAR
+STARTCHAR RUNIC LETTER ISAZ IS ISS I
+ENCODING 5825
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 7 2 0
+BITMAP
+80
+80
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR RUNIC LETTER GER
+ENCODING 5828
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+20
+70
+A8
+70
+20
+20
+ENDCHAR
+STARTCHAR RUNIC LETTER IWAZ EOH
+ENCODING 5831
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+30
+28
+20
+A0
+60
+20
+ENDCHAR
+STARTCHAR RUNIC LETTER PERTHO PEORTH P
+ENCODING 5832
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+D0
+A0
+80
+A0
+D0
+88
+ENDCHAR
+STARTCHAR RUNIC LETTER ALGIZ EOLHX
+ENCODING 5833
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+A8
+A8
+A8
+70
+20
+20
+20
+ENDCHAR
+STARTCHAR RUNIC LETTER SIGEL LONG-BRANCH-SOL S
+ENCODING 5835
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+80
+88
+98
+A8
+C8
+88
+08
+ENDCHAR
+STARTCHAR RUNIC LETTER TIWAZ TIR TYR T
+ENCODING 5839
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+70
+A8
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR RUNIC LETTER BERKANAN BEORC BJARKAN B
+ENCODING 5842
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 1 0
+BITMAP
+C0
+A0
+90
+E0
+90
+A0
+C0
+ENDCHAR
+STARTCHAR RUNIC LETTER EHWAZ EH E
+ENCODING 5846
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+D8
+A8
+88
+88
+88
+88
+ENDCHAR
+STARTCHAR RUNIC LETTER MANNAZ MAN M
+ENCODING 5847
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+D8
+A8
+D8
+88
+88
+88
+ENDCHAR
+STARTCHAR RUNIC LETTER LAUKAZ LAGU LOGR L
+ENCODING 5850
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 2 0
+BITMAP
+80
+C0
+A0
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR RUNIC LETTER ING
+ENCODING 5853
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+50
+20
+50
+20
+50
+88
+ENDCHAR
+STARTCHAR RUNIC LETTER DAGAZ DAEG D
+ENCODING 5854
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+88
+D8
+A8
+D8
+88
+88
+ENDCHAR
+STARTCHAR RUNIC LETTER OTHALAN ETHEL O
+ENCODING 5855
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+50
+88
+50
+20
+50
+88
+ENDCHAR
+STARTCHAR RUNIC LETTER EAR
+ENCODING 5856
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+A8
+70
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR RUNIC LETTER IOR
+ENCODING 5857
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+A8
+70
+20
+70
+A8
+20
+20
+ENDCHAR
+STARTCHAR RUNIC LETTER CWEORTH
+ENCODING 5858
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+28
+30
+20
+20
+20
+60
+A0
+ENDCHAR
+STARTCHAR RUNIC LETTER CALC
+ENCODING 5859
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+20
+20
+70
+A8
+A8
+A8
+ENDCHAR
+STARTCHAR RUNIC LETTER STAN
+ENCODING 5861
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+D8
+A8
+88
+A8
+D8
+88
+ENDCHAR
+STARTCHAR RUNIC SINGLE PUNCTUATION
+ENCODING 5867
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 1 2 3
+BITMAP
+80
+ENDCHAR
+STARTCHAR RUNIC MULTIPLE PUNCTUATION
+ENCODING 5868
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 3 2 2
+BITMAP
+80
+00
+80
+ENDCHAR
+STARTCHAR RUNIC CROSS PUNCTUATION
+ENCODING 5869
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 2
+BITMAP
+A0
+40
+A0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER B WITH DOT ABOVE
+ENCODING 7682
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+00
+F0
+88
+F0
+88
+88
+F0
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER B WITH DOT ABOVE
+ENCODING 7683
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+90
+80
+B0
+C8
+88
+C8
+B0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER B WITH DOT BELOW
+ENCODING 7684
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER D WITH DOT ABOVE
+ENCODING 7690
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+00
+F0
+88
+88
+88
+88
+F0
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER D WITH DOT ABOVE
+ENCODING 7691
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+08
+08
+68
+98
+88
+98
+68
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER F WITH DOT ABOVE
+ENCODING 7710
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+00
+F8
+80
+F0
+80
+80
+80
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER F WITH DOT ABOVE
+ENCODING 7711
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+00
+30
+48
+40
+F0
+40
+40
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER M WITH DOT ABOVE
+ENCODING 7744
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+88
+88
+D8
+A8
+88
+88
+88
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER M WITH DOT ABOVE
+ENCODING 7745
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+00
+D0
+A8
+A8
+A8
+88
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER P WITH DOT ABOVE
+ENCODING 7766
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+00
+F0
+88
+88
+F0
+80
+80
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER P WITH DOT ABOVE
+ENCODING 7767
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+20
+00
+B0
+C8
+88
+C8
+B0
+80
+80
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER S WITH DOT ABOVE
+ENCODING 7776
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+00
+70
+80
+70
+08
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER S WITH DOT ABOVE
+ENCODING 7777
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+00
+70
+80
+70
+08
+F0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER T WITH DOT ABOVE
+ENCODING 7786
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+00
+F8
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER T WITH DOT ABOVE
+ENCODING 7787
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+40
+00
+40
+F0
+40
+40
+48
+30
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER W WITH GRAVE
+ENCODING 7808
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+40
+20
+88
+88
+A8
+A8
+D8
+88
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER W WITH GRAVE
+ENCODING 7809
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+40
+20
+88
+88
+A8
+A8
+50
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER W WITH ACUTE
+ENCODING 7810
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+88
+88
+A8
+A8
+D8
+88
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER W WITH ACUTE
+ENCODING 7811
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+10
+20
+88
+88
+A8
+A8
+50
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER W WITH DIAERESIS
+ENCODING 7812
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+00
+88
+88
+A8
+A8
+D8
+88
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER W WITH DIAERESIS
+ENCODING 7813
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+50
+00
+88
+88
+A8
+A8
+50
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER Y WITH GRAVE
+ENCODING 7922
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+40
+20
+88
+50
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER Y WITH GRAVE
+ENCODING 7923
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+40
+20
+00
+88
+88
+98
+68
+08
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH PSILI
+ENCODING 7936
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+30
+10
+20
+70
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH DASIA
+ENCODING 7937
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+30
+20
+10
+70
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA
+ENCODING 7938
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+28
+40
+70
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA
+ENCODING 7939
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+48
+20
+70
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
+ENCODING 7940
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+68
+30
+40
+70
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
+ENCODING 7941
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+68
+50
+20
+70
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI
+ENCODING 7942
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+78
+10
+20
+70
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
+ENCODING 7943
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+78
+20
+10
+70
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH PSILI
+ENCODING 7944
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+64
+A4
+24
+3C
+24
+24
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH DASIA
+ENCODING 7945
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+A4
+64
+24
+3C
+24
+24
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
+ENCODING 7946
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+64
+A4
+A4
+7C
+24
+24
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
+ENCODING 7947
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+A4
+64
+A4
+7C
+24
+24
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+ENCODING 7948
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+64
+A4
+64
+BC
+24
+24
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+ENCODING 7949
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+A4
+64
+64
+BC
+24
+24
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
+ENCODING 7950
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+24
+E4
+64
+BC
+24
+24
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+ENCODING 7951
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+24
+E4
+A4
+7C
+24
+24
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER EPSILON WITH PSILI
+ENCODING 7952
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+30
+10
+20
+70
+88
+60
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER EPSILON WITH DASIA
+ENCODING 7953
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+30
+20
+10
+70
+88
+60
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA
+ENCODING 7954
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+28
+40
+70
+88
+60
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA
+ENCODING 7955
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+48
+20
+70
+88
+60
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
+ENCODING 7956
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+68
+30
+40
+70
+88
+60
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+ENCODING 7957
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+68
+50
+20
+70
+88
+60
+88
+70
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER EPSILON WITH PSILI
+ENCODING 7960
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+FC
+60
+A0
+38
+20
+20
+3C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER EPSILON WITH DASIA
+ENCODING 7961
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+FC
+A0
+60
+38
+20
+20
+3C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
+ENCODING 7962
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+FC
+60
+A0
+B8
+60
+20
+3C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
+ENCODING 7963
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+FC
+A0
+60
+B8
+60
+20
+3C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+ENCODING 7964
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+FC
+60
+A0
+78
+A0
+20
+3C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+ENCODING 7965
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+FC
+A0
+60
+78
+A0
+20
+3C
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH PSILI
+ENCODING 7968
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+30
+10
+20
+B0
+C8
+88
+88
+88
+08
+08
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH DASIA
+ENCODING 7969
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+30
+20
+10
+B0
+C8
+88
+88
+88
+08
+08
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH PSILI AND VARIA
+ENCODING 7970
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+70
+28
+40
+B0
+C8
+88
+88
+88
+08
+08
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH DASIA AND VARIA
+ENCODING 7971
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+70
+48
+20
+B0
+C8
+88
+88
+88
+08
+08
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH PSILI AND OXIA
+ENCODING 7972
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+68
+30
+40
+B0
+C8
+88
+88
+88
+08
+08
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH DASIA AND OXIA
+ENCODING 7973
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+68
+50
+20
+B0
+C8
+88
+88
+88
+08
+08
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI
+ENCODING 7974
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+78
+10
+20
+B0
+C8
+88
+88
+88
+08
+08
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
+ENCODING 7975
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+78
+20
+10
+B0
+C8
+88
+88
+88
+08
+08
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ETA WITH PSILI
+ENCODING 7976
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+E4
+64
+A4
+3C
+24
+24
+24
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ETA WITH DASIA
+ENCODING 7977
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+E4
+A4
+64
+3C
+24
+24
+24
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
+ENCODING 7978
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+E4
+64
+A4
+BC
+64
+24
+24
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
+ENCODING 7979
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+E4
+A4
+64
+BC
+64
+24
+24
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+ENCODING 7980
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+E4
+64
+A4
+7C
+A4
+24
+24
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+ENCODING 7981
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+E4
+A4
+64
+7C
+A4
+24
+24
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
+ENCODING 7982
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+E4
+24
+E4
+7C
+A4
+24
+24
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+ENCODING 7983
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+E4
+24
+E4
+BC
+64
+24
+24
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER IOTA WITH PSILI
+ENCODING 7984
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 8 1 0
+BITMAP
+C0
+40
+80
+80
+80
+80
+A0
+40
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER IOTA WITH DASIA
+ENCODING 7985
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 8 1 0
+BITMAP
+C0
+80
+40
+80
+80
+80
+A0
+40
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER IOTA WITH PSILI AND VARIA
+ENCODING 7986
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 1 0
+BITMAP
+E0
+50
+80
+40
+40
+40
+50
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER IOTA WITH DASIA AND VARIA
+ENCODING 7987
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 1 0
+BITMAP
+E0
+90
+40
+40
+40
+40
+50
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
+ENCODING 7988
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 1 0
+BITMAP
+D0
+60
+80
+40
+40
+40
+50
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
+ENCODING 7989
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 1 0
+BITMAP
+D0
+A0
+40
+40
+40
+40
+50
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI
+ENCODING 7990
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 1 0
+BITMAP
+F0
+20
+40
+40
+40
+40
+50
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
+ENCODING 7991
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 1 0
+BITMAP
+F0
+40
+20
+40
+40
+40
+50
+20
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER IOTA WITH PSILI
+ENCODING 7992
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+DC
+48
+88
+08
+08
+08
+1C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER IOTA WITH DASIA
+ENCODING 7993
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+DC
+88
+48
+08
+08
+08
+1C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
+ENCODING 7994
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+DC
+48
+88
+88
+48
+08
+1C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
+ENCODING 7995
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+DC
+88
+48
+88
+48
+08
+1C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+ENCODING 7996
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+DC
+48
+88
+48
+88
+08
+1C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+ENCODING 7997
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+DC
+88
+48
+48
+88
+08
+1C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
+ENCODING 7998
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+DC
+08
+C8
+48
+88
+08
+1C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+ENCODING 7999
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+DC
+08
+C8
+88
+48
+08
+1C
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMICRON WITH PSILI
+ENCODING 8000
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+30
+10
+20
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMICRON WITH DASIA
+ENCODING 8001
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+30
+20
+10
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA
+ENCODING 8002
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+28
+40
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA
+ENCODING 8003
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+48
+20
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
+ENCODING 8004
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+68
+30
+40
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+ENCODING 8005
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+68
+50
+20
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMICRON WITH PSILI
+ENCODING 8008
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+64
+A4
+24
+24
+24
+18
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMICRON WITH DASIA
+ENCODING 8009
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+A4
+64
+24
+24
+24
+18
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
+ENCODING 8010
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+64
+A4
+A4
+64
+24
+18
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
+ENCODING 8011
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+A4
+64
+A4
+64
+24
+18
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+ENCODING 8012
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+64
+A4
+64
+A4
+24
+18
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+ENCODING 8013
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+A4
+64
+64
+A4
+24
+18
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER UPSILON WITH PSILI
+ENCODING 8016
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+30
+10
+20
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER UPSILON WITH DASIA
+ENCODING 8017
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+30
+20
+10
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+ENCODING 8018
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+28
+40
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA
+ENCODING 8019
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+48
+20
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+ENCODING 8020
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+68
+30
+40
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
+ENCODING 8021
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+68
+50
+20
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+ENCODING 8022
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+78
+10
+20
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+ENCODING 8023
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+78
+20
+10
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER UPSILON WITH DASIA
+ENCODING 8025
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D4
+94
+54
+08
+08
+08
+08
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+ENCODING 8027
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D4
+94
+54
+88
+48
+08
+08
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+ENCODING 8029
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D4
+94
+54
+48
+88
+08
+08
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+ENCODING 8031
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D4
+14
+D4
+88
+48
+08
+08
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH PSILI
+ENCODING 8032
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+30
+10
+20
+88
+A8
+A8
+A8
+50
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH DASIA
+ENCODING 8033
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+30
+20
+10
+88
+A8
+A8
+A8
+50
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA
+ENCODING 8034
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+28
+40
+88
+A8
+A8
+A8
+50
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA
+ENCODING 8035
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+48
+20
+88
+A8
+A8
+A8
+50
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
+ENCODING 8036
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+68
+30
+40
+88
+A8
+A8
+A8
+50
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
+ENCODING 8037
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+68
+50
+20
+88
+A8
+A8
+A8
+50
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI
+ENCODING 8038
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+78
+10
+20
+88
+A8
+A8
+A8
+50
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
+ENCODING 8039
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+78
+20
+10
+88
+A8
+A8
+A8
+50
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMEGA WITH PSILI
+ENCODING 8040
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+64
+A4
+24
+24
+18
+3C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMEGA WITH DASIA
+ENCODING 8041
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+A4
+64
+24
+24
+18
+3C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
+ENCODING 8042
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+64
+A4
+A4
+64
+18
+3C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
+ENCODING 8043
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+A4
+64
+A4
+64
+18
+3C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+ENCODING 8044
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+64
+A4
+64
+A4
+18
+3C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+ENCODING 8045
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+A4
+64
+64
+A4
+18
+3C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
+ENCODING 8046
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+24
+E4
+64
+A4
+18
+3C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+ENCODING 8047
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+24
+E4
+A4
+64
+18
+3C
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH VARIA
+ENCODING 8048
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+40
+20
+00
+70
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH OXIA
+ENCODING 8049
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+70
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER EPSILON WITH VARIA
+ENCODING 8050
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+40
+20
+00
+70
+88
+60
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER EPSILON WITH OXIA
+ENCODING 8051
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+70
+88
+60
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH VARIA
+ENCODING 8052
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+40
+20
+00
+B0
+C8
+88
+88
+88
+08
+08
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH OXIA
+ENCODING 8053
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+10
+20
+00
+B0
+C8
+88
+88
+88
+08
+08
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER IOTA WITH VARIA
+ENCODING 8054
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 1 0
+BITMAP
+80
+40
+00
+40
+40
+40
+50
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER IOTA WITH OXIA
+ENCODING 8055
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 8 1 0
+BITMAP
+40
+80
+00
+80
+80
+80
+A0
+40
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMICRON WITH VARIA
+ENCODING 8056
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+40
+20
+00
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMICRON WITH OXIA
+ENCODING 8057
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER UPSILON WITH VARIA
+ENCODING 8058
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+40
+20
+00
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER UPSILON WITH OXIA
+ENCODING 8059
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH VARIA
+ENCODING 8060
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+40
+20
+00
+88
+A8
+A8
+A8
+50
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH OXIA
+ENCODING 8061
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+88
+A8
+A8
+A8
+50
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+ENCODING 8064
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+30
+10
+20
+70
+88
+88
+98
+68
+00
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+ENCODING 8065
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+30
+20
+10
+70
+88
+88
+98
+68
+00
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+ENCODING 8066
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+70
+28
+40
+70
+88
+88
+98
+68
+00
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+ENCODING 8067
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+70
+48
+20
+70
+88
+88
+98
+68
+00
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+ENCODING 8068
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+68
+30
+40
+70
+88
+88
+98
+68
+00
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+ENCODING 8069
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+68
+50
+20
+70
+88
+88
+98
+68
+00
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+ENCODING 8070
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+78
+10
+20
+70
+88
+88
+98
+68
+00
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+ENCODING 8071
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+78
+20
+10
+70
+88
+88
+98
+68
+00
+20
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+ENCODING 8072
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+D8
+64
+A4
+24
+3C
+24
+24
+00
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+ENCODING 8073
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+D8
+A4
+64
+24
+3C
+24
+24
+00
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+ENCODING 8074
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+D8
+64
+A4
+A4
+7C
+24
+24
+00
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+ENCODING 8075
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+D8
+A4
+64
+A4
+7C
+24
+24
+00
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+ENCODING 8076
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+D8
+64
+A4
+64
+BC
+24
+24
+00
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+ENCODING 8077
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+D8
+A4
+64
+64
+BC
+24
+24
+00
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+ENCODING 8078
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+D8
+24
+E4
+64
+BC
+24
+24
+00
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+ENCODING 8079
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+D8
+24
+E4
+A4
+7C
+24
+24
+00
+10
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+ENCODING 8080
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+30
+10
+20
+B0
+C8
+88
+88
+88
+08
+88
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+ENCODING 8081
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+30
+20
+10
+B0
+C8
+88
+88
+88
+08
+88
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+ENCODING 8082
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+70
+28
+40
+B0
+C8
+88
+88
+88
+08
+88
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+ENCODING 8083
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+70
+48
+20
+B0
+C8
+88
+88
+88
+08
+88
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+ENCODING 8084
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+68
+30
+40
+B0
+C8
+88
+88
+88
+08
+88
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+ENCODING 8085
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+68
+50
+20
+B0
+C8
+88
+88
+88
+08
+88
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+ENCODING 8086
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+78
+10
+20
+B0
+C8
+88
+88
+88
+08
+88
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+ENCODING 8087
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+78
+20
+10
+B0
+C8
+88
+88
+88
+08
+88
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+ENCODING 8088
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+E4
+64
+A4
+3C
+24
+24
+24
+00
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+ENCODING 8089
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+E4
+A4
+64
+3C
+24
+24
+24
+00
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+ENCODING 8090
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+E4
+64
+A4
+BC
+64
+24
+24
+00
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+ENCODING 8091
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+E4
+A4
+64
+BC
+64
+24
+24
+00
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+ENCODING 8092
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+E4
+64
+A4
+7C
+A4
+24
+24
+00
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+ENCODING 8093
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+E4
+A4
+64
+7C
+A4
+24
+24
+00
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+ENCODING 8094
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+E4
+24
+E4
+7C
+A4
+24
+24
+00
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+ENCODING 8095
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+E4
+24
+E4
+BC
+64
+24
+24
+00
+10
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+ENCODING 8096
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+30
+10
+20
+88
+A8
+A8
+A8
+50
+00
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+ENCODING 8097
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+30
+20
+10
+88
+A8
+A8
+A8
+50
+00
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+ENCODING 8098
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+70
+28
+40
+88
+A8
+A8
+A8
+50
+00
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+ENCODING 8099
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+70
+48
+20
+88
+A8
+A8
+A8
+50
+00
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+ENCODING 8100
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+68
+30
+40
+88
+A8
+A8
+A8
+50
+00
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+ENCODING 8101
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+68
+50
+20
+88
+A8
+A8
+A8
+50
+00
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+ENCODING 8102
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+78
+10
+20
+88
+A8
+A8
+A8
+50
+00
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+ENCODING 8103
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+78
+20
+10
+88
+A8
+A8
+A8
+50
+00
+20
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+ENCODING 8104
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+D8
+64
+A4
+24
+24
+18
+3C
+00
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+ENCODING 8105
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+D8
+A4
+64
+24
+24
+18
+3C
+00
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+ENCODING 8106
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+D8
+64
+A4
+A4
+64
+18
+3C
+00
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+ENCODING 8107
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+D8
+A4
+64
+A4
+64
+18
+3C
+00
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+ENCODING 8108
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+D8
+64
+A4
+64
+A4
+18
+3C
+00
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+ENCODING 8109
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+D8
+A4
+64
+64
+A4
+18
+3C
+00
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+ENCODING 8110
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+D8
+24
+E4
+64
+A4
+18
+3C
+00
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+ENCODING 8111
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+D8
+24
+E4
+A4
+64
+18
+3C
+00
+10
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH VRACHY
+ENCODING 8112
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+70
+00
+70
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH MACRON
+ENCODING 8113
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+00
+70
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+ENCODING 8114
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+40
+20
+00
+70
+88
+88
+98
+68
+00
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
+ENCODING 8115
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+70
+88
+88
+98
+68
+00
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+ENCODING 8116
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+10
+20
+00
+70
+88
+88
+98
+68
+00
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH PERISPOMENI
+ENCODING 8118
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+78
+00
+70
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+ENCODING 8119
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+78
+00
+70
+88
+88
+98
+68
+00
+20
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH VRACHY
+ENCODING 8120
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+70
+70
+88
+88
+F8
+88
+88
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH MACRON
+ENCODING 8121
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+F8
+00
+70
+88
+88
+F8
+88
+88
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH VARIA
+ENCODING 8122
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+98
+64
+24
+24
+3C
+24
+24
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH OXIA
+ENCODING 8123
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+58
+A4
+24
+24
+3C
+24
+24
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+ENCODING 8124
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+20
+50
+88
+88
+F8
+88
+88
+20
+30
+ENDCHAR
+STARTCHAR GREEK KORONIS
+ENCODING 8125
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 3 2 4
+BITMAP
+C0
+40
+80
+ENDCHAR
+STARTCHAR GREEK PROSGEGRAMMENI
+ENCODING 8126
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 3 2 0
+BITMAP
+80
+80
+40
+ENDCHAR
+STARTCHAR GREEK PSILI
+ENCODING 8127
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 3 2 4
+BITMAP
+C0
+40
+80
+ENDCHAR
+STARTCHAR GREEK PERISPOMENI
+ENCODING 8128
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 1 1 6
+BITMAP
+F0
+ENDCHAR
+STARTCHAR GREEK DIALYTIKA AND PERISPOMENI
+ENCODING 8129
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 3 0 4
+BITMAP
+F8
+00
+88
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+ENCODING 8130
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+40
+20
+00
+B0
+C8
+88
+88
+88
+08
+88
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
+ENCODING 8131
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+B0
+C8
+88
+88
+88
+08
+88
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+ENCODING 8132
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+10
+20
+00
+B0
+C8
+88
+88
+88
+08
+88
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH PERISPOMENI
+ENCODING 8134
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+78
+00
+B0
+C8
+88
+88
+88
+08
+08
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+ENCODING 8135
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+78
+00
+B0
+C8
+88
+88
+88
+08
+88
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER EPSILON WITH VARIA
+ENCODING 8136
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+BC
+60
+20
+38
+20
+20
+3C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER EPSILON WITH OXIA
+ENCODING 8137
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+7C
+A0
+20
+38
+20
+20
+3C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ETA WITH VARIA
+ENCODING 8138
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+A4
+64
+24
+3C
+24
+24
+24
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ETA WITH OXIA
+ENCODING 8139
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+64
+A4
+24
+3C
+24
+24
+24
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+ENCODING 8140
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+88
+88
+88
+F8
+88
+88
+88
+20
+30
+ENDCHAR
+STARTCHAR GREEK PSILI AND VARIA
+ENCODING 8141
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 3 1 4
+BITMAP
+E0
+50
+80
+ENDCHAR
+STARTCHAR GREEK PSILI AND OXIA
+ENCODING 8142
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 3 1 4
+BITMAP
+D0
+60
+80
+ENDCHAR
+STARTCHAR GREEK PSILI AND PERISPOMENI
+ENCODING 8143
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 3 1 4
+BITMAP
+F0
+20
+40
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER IOTA WITH VRACHY
+ENCODING 8144
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+70
+00
+20
+20
+20
+28
+10
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER IOTA WITH MACRON
+ENCODING 8145
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+00
+20
+20
+20
+28
+10
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+ENCODING 8146
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+40
+A8
+00
+20
+20
+20
+28
+10
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+ENCODING 8147
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+A8
+00
+20
+20
+20
+28
+10
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER IOTA WITH PERISPOMENI
+ENCODING 8150
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 1 0
+BITMAP
+F0
+00
+40
+40
+40
+50
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+ENCODING 8151
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+F8
+00
+88
+20
+20
+20
+28
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER IOTA WITH VRACHY
+ENCODING 8152
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+70
+70
+20
+20
+20
+20
+70
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER IOTA WITH MACRON
+ENCODING 8153
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+F8
+00
+70
+20
+20
+20
+20
+70
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER IOTA WITH VARIA
+ENCODING 8154
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+9C
+48
+08
+08
+08
+08
+1C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER IOTA WITH OXIA
+ENCODING 8155
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+5C
+88
+08
+08
+08
+08
+1C
+ENDCHAR
+STARTCHAR GREEK DASIA AND VARIA
+ENCODING 8157
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 3 1 4
+BITMAP
+D0
+60
+80
+ENDCHAR
+STARTCHAR GREEK DASIA AND OXIA
+ENCODING 8158
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 3 1 4
+BITMAP
+D0
+A0
+40
+ENDCHAR
+STARTCHAR GREEK DASIA AND PERISPOMENI
+ENCODING 8159
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 3 1 4
+BITMAP
+F0
+40
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER UPSILON WITH VRACHY
+ENCODING 8160
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+70
+00
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER UPSILON WITH MACRON
+ENCODING 8161
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+00
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+ENCODING 8162
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+40
+A8
+00
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+ENCODING 8163
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+A8
+00
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER RHO WITH PSILI
+ENCODING 8164
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+30
+10
+20
+70
+88
+88
+88
+F0
+80
+80
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER RHO WITH DASIA
+ENCODING 8165
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+30
+20
+10
+70
+88
+88
+88
+F0
+80
+80
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER UPSILON WITH PERISPOMENI
+ENCODING 8166
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+78
+00
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+ENCODING 8167
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+F8
+00
+88
+00
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER UPSILON WITH VRACHY
+ENCODING 8168
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+70
+88
+88
+50
+20
+20
+20
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER UPSILON WITH MACRON
+ENCODING 8169
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+F8
+00
+88
+88
+50
+20
+20
+20
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER UPSILON WITH VARIA
+ENCODING 8170
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+94
+54
+14
+08
+08
+08
+08
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER UPSILON WITH OXIA
+ENCODING 8171
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+54
+94
+14
+08
+08
+08
+08
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER RHO WITH DASIA
+ENCODING 8172
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+F8
+A4
+64
+38
+20
+20
+20
+ENDCHAR
+STARTCHAR GREEK DIALYTIKA AND VARIA
+ENCODING 8173
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 2 0 5
+BITMAP
+40
+A8
+ENDCHAR
+STARTCHAR GREEK DIALYTIKA AND OXIA
+ENCODING 8174
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 2 0 5
+BITMAP
+10
+A8
+ENDCHAR
+STARTCHAR GREEK VARIA
+ENCODING 8175
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 2 2 5
+BITMAP
+80
+40
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+ENCODING 8178
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+40
+20
+00
+88
+A8
+A8
+A8
+50
+00
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
+ENCODING 8179
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+88
+A8
+A8
+A8
+50
+00
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+ENCODING 8180
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+10
+20
+00
+88
+A8
+A8
+A8
+50
+00
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH PERISPOMENI
+ENCODING 8182
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+78
+00
+88
+A8
+A8
+A8
+50
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+ENCODING 8183
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+78
+00
+88
+A8
+A8
+A8
+50
+00
+20
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMICRON WITH VARIA
+ENCODING 8184
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+98
+64
+24
+24
+24
+24
+18
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMICRON WITH OXIA
+ENCODING 8185
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+58
+A4
+24
+24
+24
+24
+18
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMEGA WITH VARIA
+ENCODING 8186
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+98
+64
+24
+24
+24
+18
+3C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMEGA WITH OXIA
+ENCODING 8187
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+58
+A4
+24
+24
+24
+18
+3C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+ENCODING 8188
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+70
+88
+88
+88
+88
+50
+D8
+20
+30
+ENDCHAR
+STARTCHAR GREEK OXIA
+ENCODING 8189
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 2 2 5
+BITMAP
+40
+80
+ENDCHAR
+STARTCHAR GREEK DASIA
+ENCODING 8190
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 3 2 4
+BITMAP
+C0
+80
+40
+ENDCHAR
+STARTCHAR HYPHEN
+ENCODING 8208
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 1 1 3
+BITMAP
+F0
+ENDCHAR
+STARTCHAR NON-BREAKING HYPHEN
+ENCODING 8209
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 1 1 3
+BITMAP
+F0
+ENDCHAR
+STARTCHAR FIGURE DASH
+ENCODING 8210
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 1 0 3
+BITMAP
+F8
+ENDCHAR
+STARTCHAR EN DASH
+ENCODING 8211
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 1 0 3
+BITMAP
+F8
+ENDCHAR
+STARTCHAR EM DASH
+ENCODING 8212
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 1 0 3
+BITMAP
+FC
+ENDCHAR
+STARTCHAR HORIZONTAL BAR
+ENCODING 8213
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 1 0 3
+BITMAP
+FC
+ENDCHAR
+STARTCHAR DOUBLE VERTICAL LINE
+ENCODING 8214
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 8 1 0
+BITMAP
+A0
+A0
+A0
+A0
+A0
+A0
+A0
+A0
+ENDCHAR
+STARTCHAR DOUBLE LOW LINE
+ENCODING 8215
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 3 0 -2
+BITMAP
+FC
+00
+FC
+ENDCHAR
+STARTCHAR LEFT SINGLE QUOTATION MARK
+ENCODING 8216
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 3 2 4
+BITMAP
+40
+80
+C0
+ENDCHAR
+STARTCHAR RIGHT SINGLE QUOTATION MARK
+ENCODING 8217
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 3 2 4
+BITMAP
+C0
+40
+80
+ENDCHAR
+STARTCHAR SINGLE LOW-9 QUOTATION MARK
+ENCODING 8218
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 3 2 -1
+BITMAP
+C0
+40
+80
+ENDCHAR
+STARTCHAR SINGLE HIGH-REVERSED-9 QUOTATION MARK
+ENCODING 8219
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 3 2 4
+BITMAP
+C0
+80
+40
+ENDCHAR
+STARTCHAR LEFT DOUBLE QUOTATION MARK
+ENCODING 8220
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 3 0 4
+BITMAP
+48
+90
+D8
+ENDCHAR
+STARTCHAR RIGHT DOUBLE QUOTATION MARK
+ENCODING 8221
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 3 0 4
+BITMAP
+D8
+48
+90
+ENDCHAR
+STARTCHAR DOUBLE LOW-9 QUOTATION MARK
+ENCODING 8222
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 3 0 -1
+BITMAP
+D8
+48
+90
+ENDCHAR
+STARTCHAR DOUBLE HIGH-REVERSED-9 QUOTATION MARK
+ENCODING 8223
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 3 0 4
+BITMAP
+D8
+90
+48
+ENDCHAR
+STARTCHAR DAGGER
+ENCODING 8224
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+20
+F8
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR DOUBLE DAGGER
+ENCODING 8225
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+20
+F8
+20
+F8
+20
+20
+ENDCHAR
+STARTCHAR BULLET
+ENCODING 8226
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 4 1 1
+BITMAP
+60
+F0
+F0
+60
+ENDCHAR
+STARTCHAR TRIANGULAR BULLET
+ENCODING 8227
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 3 0 2
+BITMAP
+20
+70
+F8
+ENDCHAR
+STARTCHAR ONE DOT LEADER
+ENCODING 8228
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 1 2 0
+BITMAP
+80
+ENDCHAR
+STARTCHAR TWO DOT LEADER
+ENCODING 8229
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 1 0 0
+BITMAP
+88
+ENDCHAR
+STARTCHAR HORIZONTAL ELLIPSIS
+ENCODING 8230
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 1 0 0
+BITMAP
+A8
+ENDCHAR
+STARTCHAR HYPHENATION POINT
+ENCODING 8231
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 1 2 3
+BITMAP
+C0
+ENDCHAR
+STARTCHAR PER MILLE SIGN
+ENCODING 8240
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+48
+A8
+50
+20
+68
+D4
+A8
+ENDCHAR
+STARTCHAR PRIME
+ENCODING 8242
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 3 2 5
+BITMAP
+40
+40
+80
+ENDCHAR
+STARTCHAR DOUBLE PRIME
+ENCODING 8243
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 3 1 5
+BITMAP
+50
+50
+A0
+ENDCHAR
+STARTCHAR TRIPLE PRIME
+ENCODING 8244
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 3 0 5
+BITMAP
+54
+54
+A8
+ENDCHAR
+STARTCHAR REVERSED PRIME
+ENCODING 8245
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 3 2 5
+BITMAP
+80
+80
+40
+ENDCHAR
+STARTCHAR REVERSED DOUBLE PRIME
+ENCODING 8246
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 3 1 5
+BITMAP
+A0
+A0
+50
+ENDCHAR
+STARTCHAR REVERSED TRIPLE PRIME
+ENCODING 8247
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 3 0 5
+BITMAP
+A8
+A8
+54
+ENDCHAR
+STARTCHAR SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+ENCODING 8249
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+20
+40
+80
+40
+20
+ENDCHAR
+STARTCHAR SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+ENCODING 8250
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+80
+40
+20
+40
+80
+ENDCHAR
+STARTCHAR DOUBLE EXCLAMATION MARK
+ENCODING 8252
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+A0
+A0
+A0
+A0
+00
+A0
+ENDCHAR
+STARTCHAR OVERLINE
+ENCODING 8254
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 1 0 7
+BITMAP
+FC
+ENDCHAR
+STARTCHAR FRACTION SLASH
+ENCODING 8260
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+08
+08
+10
+20
+40
+80
+80
+ENDCHAR
+STARTCHAR SUPERSCRIPT ZERO
+ENCODING 8304
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 3
+BITMAP
+60
+90
+90
+90
+60
+ENDCHAR
+STARTCHAR SUPERSCRIPT LATIN SMALL LETTER I
+ENCODING 8305
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 3
+BITMAP
+40
+00
+C0
+40
+E0
+ENDCHAR
+STARTCHAR SUPERSCRIPT FOUR
+ENCODING 8308
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 3
+BITMAP
+20
+60
+A0
+F0
+20
+ENDCHAR
+STARTCHAR SUPERSCRIPT FIVE
+ENCODING 8309
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 3
+BITMAP
+F0
+80
+E0
+10
+E0
+ENDCHAR
+STARTCHAR SUPERSCRIPT SIX
+ENCODING 8310
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 3
+BITMAP
+70
+80
+E0
+90
+60
+ENDCHAR
+STARTCHAR SUPERSCRIPT SEVEN
+ENCODING 8311
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 3
+BITMAP
+F0
+10
+20
+40
+40
+ENDCHAR
+STARTCHAR SUPERSCRIPT EIGHT
+ENCODING 8312
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 3
+BITMAP
+60
+90
+60
+90
+60
+ENDCHAR
+STARTCHAR SUPERSCRIPT NINE
+ENCODING 8313
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 3
+BITMAP
+60
+90
+70
+10
+60
+ENDCHAR
+STARTCHAR SUPERSCRIPT PLUS SIGN
+ENCODING 8314
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 4
+BITMAP
+40
+E0
+40
+ENDCHAR
+STARTCHAR SUPERSCRIPT MINUS
+ENCODING 8315
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 1 1 5
+BITMAP
+E0
+ENDCHAR
+STARTCHAR SUPERSCRIPT EQUALS SIGN
+ENCODING 8316
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 3 1 4
+BITMAP
+F0
+00
+F0
+ENDCHAR
+STARTCHAR SUPERSCRIPT LEFT PARENTHESIS
+ENCODING 8317
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 5 2 3
+BITMAP
+40
+80
+80
+80
+40
+ENDCHAR
+STARTCHAR SUPERSCRIPT RIGHT PARENTHESIS
+ENCODING 8318
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 5 2 3
+BITMAP
+80
+40
+40
+40
+80
+ENDCHAR
+STARTCHAR SUPERSCRIPT LATIN SMALL LETTER N
+ENCODING 8319
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 4 1 3
+BITMAP
+A0
+D0
+90
+90
+ENDCHAR
+STARTCHAR SUBSCRIPT ZERO
+ENCODING 8320
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 -2
+BITMAP
+60
+90
+90
+90
+60
+ENDCHAR
+STARTCHAR SUBSCRIPT ONE
+ENCODING 8321
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 -2
+BITMAP
+40
+C0
+40
+40
+E0
+ENDCHAR
+STARTCHAR SUBSCRIPT TWO
+ENCODING 8322
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 -2
+BITMAP
+60
+90
+20
+40
+F0
+ENDCHAR
+STARTCHAR SUBSCRIPT THREE
+ENCODING 8323
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 -2
+BITMAP
+E0
+10
+60
+10
+E0
+ENDCHAR
+STARTCHAR SUBSCRIPT FOUR
+ENCODING 8324
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 -2
+BITMAP
+20
+60
+A0
+F0
+20
+ENDCHAR
+STARTCHAR SUBSCRIPT FIVE
+ENCODING 8325
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 -2
+BITMAP
+F0
+80
+E0
+10
+E0
+ENDCHAR
+STARTCHAR SUBSCRIPT SIX
+ENCODING 8326
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 -2
+BITMAP
+70
+80
+E0
+90
+60
+ENDCHAR
+STARTCHAR SUBSCRIPT SEVEN
+ENCODING 8327
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 -2
+BITMAP
+F0
+10
+20
+40
+40
+ENDCHAR
+STARTCHAR SUBSCRIPT EIGHT
+ENCODING 8328
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 -2
+BITMAP
+60
+90
+60
+90
+60
+ENDCHAR
+STARTCHAR SUBSCRIPT NINE
+ENCODING 8329
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 -2
+BITMAP
+60
+90
+70
+10
+60
+ENDCHAR
+STARTCHAR SUBSCRIPT PLUS SIGN
+ENCODING 8330
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 -1
+BITMAP
+40
+E0
+40
+ENDCHAR
+STARTCHAR SUBSCRIPT MINUS
+ENCODING 8331
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 1 1 0
+BITMAP
+E0
+ENDCHAR
+STARTCHAR SUBSCRIPT EQUALS SIGN
+ENCODING 8332
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 3 1 -1
+BITMAP
+F0
+00
+F0
+ENDCHAR
+STARTCHAR SUBSCRIPT LEFT PARENTHESIS
+ENCODING 8333
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 5 2 -2
+BITMAP
+40
+80
+80
+80
+40
+ENDCHAR
+STARTCHAR SUBSCRIPT RIGHT PARENTHESIS
+ENCODING 8334
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 5 2 -2
+BITMAP
+80
+40
+40
+40
+80
+ENDCHAR
+STARTCHAR FRENCH FRANC SIGN
+ENCODING 8355
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+80
+80
+E8
+B0
+A0
+A0
+ENDCHAR
+STARTCHAR LIRA SIGN
+ENCODING 8356
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+30
+48
+E0
+40
+E0
+48
+B0
+ENDCHAR
+STARTCHAR PESETA SIGN
+ENCODING 8359
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+70
+48
+FC
+48
+70
+40
+40
+ENDCHAR
+STARTCHAR DONG SIGN
+ENCODING 8363
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+08
+3C
+68
+98
+88
+98
+68
+00
+F8
+ENDCHAR
+STARTCHAR EURO SIGN
+ENCODING 8364
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+30
+48
+E0
+40
+E0
+48
+30
+ENDCHAR
+STARTCHAR DRACHMA SIGN
+ENCODING 8367
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+40
+70
+C8
+48
+48
+E8
+D0
+ENDCHAR
+STARTCHAR COMBINING LEFT HARPOON ABOVE
+ENCODING 8400
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 2 0 6
+BITMAP
+40
+F8
+ENDCHAR
+STARTCHAR COMBINING RIGHT HARPOON ABOVE
+ENCODING 8401
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 2 0 6
+BITMAP
+10
+F8
+ENDCHAR
+STARTCHAR COMBINING LONG VERTICAL LINE OVERLAY
+ENCODING 8402
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 11 2 -2
+BITMAP
+80
+80
+80
+80
+80
+80
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR COMBINING SHORT VERTICAL LINE OVERLAY
+ENCODING 8403
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 6 2 0
+BITMAP
+80
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR COMBINING ANTICLOCKWISE ARROW ABOVE
+ENCODING 8404
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 3 0 5
+BITMAP
+B0
+C8
+E0
+ENDCHAR
+STARTCHAR COMBINING CLOCKWISE ARROW ABOVE
+ENCODING 8405
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 3 0 5
+BITMAP
+68
+98
+38
+ENDCHAR
+STARTCHAR COMBINING LEFT ARROW ABOVE
+ENCODING 8406
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 3 0 5
+BITMAP
+40
+F8
+40
+ENDCHAR
+STARTCHAR COMBINING RIGHT ARROW ABOVE
+ENCODING 8407
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 3 0 5
+BITMAP
+10
+F8
+10
+ENDCHAR
+STARTCHAR DOUBLE-STRUCK CAPITAL C
+ENCODING 8450
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+A8
+A0
+A0
+A0
+A8
+70
+ENDCHAR
+STARTCHAR CARE OF
+ENCODING 8453
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+60
+80
+80
+60
+00
+30
+48
+48
+30
+ENDCHAR
+STARTCHAR SCRIPT SMALL L
+ENCODING 8467
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 1 0
+BITMAP
+20
+50
+50
+50
+60
+40
+B0
+ENDCHAR
+STARTCHAR DOUBLE-STRUCK CAPITAL N
+ENCODING 8469
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+C8
+C8
+E8
+D8
+D8
+C8
+ENDCHAR
+STARTCHAR NUMERO SIGN
+ENCODING 8470
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+90
+90
+D8
+B4
+94
+98
+9C
+ENDCHAR
+STARTCHAR DOUBLE-STRUCK CAPITAL Q
+ENCODING 8474
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 -1
+BITMAP
+70
+A8
+A8
+A8
+A8
+A8
+70
+18
+ENDCHAR
+STARTCHAR DOUBLE-STRUCK CAPITAL R
+ENCODING 8477
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F0
+A8
+A8
+B0
+A8
+A8
+A8
+ENDCHAR
+STARTCHAR TRADE MARK SIGN
+ENCODING 8482
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 4 0 4
+BITMAP
+FC
+5C
+54
+54
+ENDCHAR
+STARTCHAR DOUBLE-STRUCK CAPITAL Z
+ENCODING 8484
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+28
+28
+50
+A0
+A0
+F8
+ENDCHAR
+STARTCHAR OHM SIGN
+ENCODING 8486
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+88
+88
+88
+50
+D8
+ENDCHAR
+STARTCHAR INVERTED OHM SIGN
+ENCODING 8487
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+D8
+50
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR ESTIMATED SYMBOL
+ENCODING 8494
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+D8
+F8
+C0
+70
+ENDCHAR
+STARTCHAR VULGAR FRACTION ONE EIGHTH
+ENCODING 8539
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+40
+C0
+40
+40
+E0
+08
+14
+08
+14
+08
+ENDCHAR
+STARTCHAR VULGAR FRACTION THREE EIGHTHS
+ENCODING 8540
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+C0
+20
+40
+20
+C0
+10
+28
+10
+28
+10
+ENDCHAR
+STARTCHAR VULGAR FRACTION FIVE EIGHTHS
+ENCODING 8541
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+E0
+80
+C0
+20
+C0
+10
+28
+10
+28
+10
+ENDCHAR
+STARTCHAR VULGAR FRACTION SEVEN EIGHTHS
+ENCODING 8542
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+E0
+20
+20
+40
+40
+10
+28
+10
+28
+10
+ENDCHAR
+STARTCHAR LEFTWARDS ARROW
+ENCODING 8592
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 0
+BITMAP
+20
+40
+FC
+40
+20
+ENDCHAR
+STARTCHAR UPWARDS ARROW
+ENCODING 8593
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+70
+A8
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR RIGHTWARDS ARROW
+ENCODING 8594
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 0
+BITMAP
+10
+08
+FC
+08
+10
+ENDCHAR
+STARTCHAR DOWNWARDS ARROW
+ENCODING 8595
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+20
+20
+20
+A8
+70
+20
+ENDCHAR
+STARTCHAR LEFT RIGHT ARROW
+ENCODING 8596
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 3 0 1
+BITMAP
+48
+FC
+48
+ENDCHAR
+STARTCHAR UP DOWN ARROW
+ENCODING 8597
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 -1
+BITMAP
+20
+70
+A8
+20
+20
+A8
+70
+20
+ENDCHAR
+STARTCHAR NORTH WEST ARROW
+ENCODING 8598
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 1
+BITMAP
+F0
+C0
+A0
+90
+08
+ENDCHAR
+STARTCHAR NORTH EAST ARROW
+ENCODING 8599
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 1
+BITMAP
+78
+18
+28
+48
+80
+ENDCHAR
+STARTCHAR SOUTH EAST ARROW
+ENCODING 8600
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 1
+BITMAP
+80
+48
+28
+18
+78
+ENDCHAR
+STARTCHAR SOUTH WEST ARROW
+ENCODING 8601
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 1
+BITMAP
+08
+90
+A0
+C0
+F0
+ENDCHAR
+STARTCHAR LEFTWARDS ARROW FROM BAR
+ENCODING 8612
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 0
+BITMAP
+24
+44
+FC
+44
+24
+ENDCHAR
+STARTCHAR UPWARDS ARROW FROM BAR
+ENCODING 8613
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+70
+A8
+20
+20
+20
+70
+ENDCHAR
+STARTCHAR RIGHTWARDS ARROW FROM BAR
+ENCODING 8614
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 0
+BITMAP
+10
+88
+FC
+88
+10
+ENDCHAR
+STARTCHAR DOWNWARDS ARROW FROM BAR
+ENCODING 8615
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+20
+20
+20
+A8
+70
+20
+ENDCHAR
+STARTCHAR UP DOWN ARROW WITH BASE
+ENCODING 8616
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+20
+70
+A8
+20
+20
+A8
+70
+20
+F8
+ENDCHAR
+STARTCHAR RIGHTWARDS ARROW OVER LEFTWARDS ARROW
+ENCODING 8644
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+10
+08
+FC
+08
+30
+40
+FC
+40
+20
+ENDCHAR
+STARTCHAR LEFTWARDS ARROW OVER RIGHTWARDS ARROW
+ENCODING 8646
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+20
+40
+FC
+40
+30
+08
+FC
+08
+10
+ENDCHAR
+STARTCHAR LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON
+ENCODING 8651
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 -1
+BITMAP
+20
+40
+FC
+00
+FC
+08
+10
+ENDCHAR
+STARTCHAR RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON
+ENCODING 8652
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 -1
+BITMAP
+10
+08
+FC
+00
+FC
+40
+20
+ENDCHAR
+STARTCHAR LEFTWARDS DOUBLE ARROW
+ENCODING 8656
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+10
+20
+7C
+80
+7C
+20
+10
+ENDCHAR
+STARTCHAR UPWARDS DOUBLE ARROW
+ENCODING 8657
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+70
+D8
+50
+50
+50
+50
+ENDCHAR
+STARTCHAR RIGHTWARDS DOUBLE ARROW
+ENCODING 8658
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+20
+10
+F8
+04
+F8
+10
+20
+ENDCHAR
+STARTCHAR DOWNWARDS DOUBLE ARROW
+ENCODING 8659
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+50
+50
+50
+50
+D8
+70
+20
+ENDCHAR
+STARTCHAR LEFT RIGHT DOUBLE ARROW
+ENCODING 8660
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 3 0 2
+BITMAP
+78
+84
+78
+ENDCHAR
+STARTCHAR UP DOWN DOUBLE ARROW
+ENCODING 8661
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 -1
+BITMAP
+20
+50
+D8
+50
+50
+D8
+50
+20
+ENDCHAR
+STARTCHAR FOR ALL
+ENCODING 8704
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+88
+70
+50
+50
+20
+20
+ENDCHAR
+STARTCHAR COMPLEMENT
+ENCODING 8705
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+40
+A0
+80
+80
+80
+A0
+40
+ENDCHAR
+STARTCHAR PARTIAL DIFFERENTIAL
+ENCODING 8706
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+30
+08
+68
+98
+88
+88
+70
+ENDCHAR
+STARTCHAR THERE EXISTS
+ENCODING 8707
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+08
+08
+78
+08
+08
+F8
+ENDCHAR
+STARTCHAR THERE DOES NOT EXIST
+ENCODING 8708
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+20
+F8
+28
+28
+78
+28
+28
+F8
+20
+ENDCHAR
+STARTCHAR EMPTY SET
+ENCODING 8709
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 6 0 0
+BITMAP
+34
+48
+94
+A4
+48
+B0
+ENDCHAR
+STARTCHAR INCREMENT
+ENCODING 8710
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+20
+20
+50
+50
+88
+F8
+ENDCHAR
+STARTCHAR NABLA
+ENCODING 8711
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+F8
+88
+50
+50
+20
+20
+ENDCHAR
+STARTCHAR ELEMENT OF
+ENCODING 8712
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+78
+80
+80
+F0
+80
+80
+78
+ENDCHAR
+STARTCHAR NOT AN ELEMENT OF
+ENCODING 8713
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+20
+78
+A0
+A0
+F0
+A0
+A0
+78
+20
+ENDCHAR
+STARTCHAR CONTAINS AS MEMBER
+ENCODING 8715
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F0
+08
+08
+78
+08
+08
+F0
+ENDCHAR
+STARTCHAR DOES NOT CONTAIN AS MEMBER
+ENCODING 8716
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+20
+F0
+28
+28
+78
+28
+28
+F0
+20
+ENDCHAR
+STARTCHAR N-ARY PRODUCT
+ENCODING 8719
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+F8
+50
+50
+50
+50
+50
+50
+50
+50
+ENDCHAR
+STARTCHAR N-ARY SUMMATION
+ENCODING 8721
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+F8
+80
+40
+20
+10
+20
+40
+80
+F8
+ENDCHAR
+STARTCHAR MINUS SIGN
+ENCODING 8722
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 1 0 3
+BITMAP
+F8
+ENDCHAR
+STARTCHAR MINUS-OR-PLUS SIGN
+ENCODING 8723
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+F8
+20
+20
+F8
+20
+20
+ENDCHAR
+STARTCHAR DIVISION SLASH
+ENCODING 8725
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+08
+08
+10
+20
+40
+80
+80
+ENDCHAR
+STARTCHAR RING OPERATOR
+ENCODING 8728
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 4 1 1
+BITMAP
+60
+90
+90
+60
+ENDCHAR
+STARTCHAR BULLET OPERATOR
+ENCODING 8729
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 4 1 1
+BITMAP
+60
+F0
+F0
+60
+ENDCHAR
+STARTCHAR SQUARE ROOT
+ENCODING 8730
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 6 0 0
+BITMAP
+0C
+10
+10
+20
+A0
+40
+ENDCHAR
+STARTCHAR PROPORTIONAL TO
+ENCODING 8733
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 4 1 1
+BITMAP
+50
+A0
+A0
+50
+ENDCHAR
+STARTCHAR INFINITY
+ENCODING 8734
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 4 0 1
+BITMAP
+50
+A8
+A8
+50
+ENDCHAR
+STARTCHAR RIGHT ANGLE
+ENCODING 8735
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 1
+BITMAP
+80
+80
+80
+80
+F8
+ENDCHAR
+STARTCHAR MEASURED ANGLE
+ENCODING 8737
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 -1
+BITMAP
+50
+20
+50
+90
+F8
+10
+ENDCHAR
+STARTCHAR DOES NOT DIVIDE
+ENCODING 8740
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+40
+40
+60
+40
+C0
+40
+40
+ENDCHAR
+STARTCHAR PARALLEL TO
+ENCODING 8741
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+A0
+A0
+A0
+A0
+A0
+A0
+ENDCHAR
+STARTCHAR NOT PARALLEL TO
+ENCODING 8742
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+50
+50
+58
+70
+D0
+50
+50
+ENDCHAR
+STARTCHAR LOGICAL AND
+ENCODING 8743
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+20
+20
+50
+50
+88
+88
+ENDCHAR
+STARTCHAR LOGICAL OR
+ENCODING 8744
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+88
+88
+50
+50
+20
+20
+ENDCHAR
+STARTCHAR INTERSECTION
+ENCODING 8745
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+70
+88
+88
+88
+88
+88
+ENDCHAR
+STARTCHAR UNION
+ENCODING 8746
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+88
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR INTEGRAL
+ENCODING 8747
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+10
+28
+20
+20
+20
+20
+20
+20
+A0
+40
+ENDCHAR
+STARTCHAR CONTOUR INTEGRAL
+ENCODING 8750
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+10
+28
+20
+70
+A8
+A8
+70
+20
+A0
+40
+ENDCHAR
+STARTCHAR TILDE OPERATOR
+ENCODING 8764
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 3 0 2
+BITMAP
+48
+A8
+90
+ENDCHAR
+STARTCHAR ASYMPTOTICALLY EQUAL TO
+ENCODING 8771
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+40
+A8
+10
+00
+F8
+ENDCHAR
+STARTCHAR APPROXIMATELY EQUAL TO
+ENCODING 8773
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+40
+A8
+10
+00
+F8
+00
+F8
+ENDCHAR
+STARTCHAR ALMOST EQUAL TO
+ENCODING 8776
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+40
+A8
+50
+A8
+10
+ENDCHAR
+STARTCHAR NOT ALMOST EQUAL TO
+ENCODING 8777
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -1
+BITMAP
+20
+60
+A8
+70
+A8
+30
+20
+ENDCHAR
+STARTCHAR ESTIMATES
+ENCODING 8793
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+20
+50
+00
+F8
+00
+F8
+ENDCHAR
+STARTCHAR QUESTIONED EQUAL TO
+ENCODING 8799
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+60
+10
+20
+00
+20
+00
+F8
+00
+F8
+ENDCHAR
+STARTCHAR NOT EQUAL TO
+ENCODING 8800
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+08
+10
+F8
+20
+F8
+40
+80
+ENDCHAR
+STARTCHAR IDENTICAL TO
+ENCODING 8801
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F8
+00
+F8
+00
+F8
+ENDCHAR
+STARTCHAR NOT IDENTICAL TO
+ENCODING 8802
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -1
+BITMAP
+08
+F8
+10
+F8
+20
+F8
+40
+ENDCHAR
+STARTCHAR LESS-THAN OR EQUAL TO
+ENCODING 8804
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+18
+60
+80
+60
+18
+00
+F8
+ENDCHAR
+STARTCHAR GREATER-THAN OR EQUAL TO
+ENCODING 8805
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+C0
+30
+08
+30
+C0
+00
+F8
+ENDCHAR
+STARTCHAR MUCH LESS-THAN
+ENCODING 8810
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 0
+BITMAP
+24
+48
+90
+48
+24
+ENDCHAR
+STARTCHAR MUCH GREATER-THAN
+ENCODING 8811
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 0
+BITMAP
+90
+48
+24
+48
+90
+ENDCHAR
+STARTCHAR SUBSET OF
+ENCODING 8834
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+78
+80
+80
+80
+78
+ENDCHAR
+STARTCHAR SUPERSET OF
+ENCODING 8835
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F0
+08
+08
+08
+F0
+ENDCHAR
+STARTCHAR NOT A SUBSET OF
+ENCODING 8836
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -1
+BITMAP
+20
+78
+A0
+A0
+A0
+78
+20
+ENDCHAR
+STARTCHAR NOT A SUPERSET OF
+ENCODING 8837
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -1
+BITMAP
+20
+F0
+28
+28
+28
+F0
+20
+ENDCHAR
+STARTCHAR SUBSET OF OR EQUAL TO
+ENCODING 8838
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+78
+80
+80
+80
+78
+00
+F8
+ENDCHAR
+STARTCHAR SUPERSET OF OR EQUAL TO
+ENCODING 8839
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F0
+08
+08
+08
+F0
+00
+F8
+ENDCHAR
+STARTCHAR NEITHER A SUBSET OF NOR EQUAL TO
+ENCODING 8840
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+20
+78
+A0
+A0
+A0
+78
+20
+F8
+20
+ENDCHAR
+STARTCHAR NEITHER A SUPERSET OF NOR EQUAL TO
+ENCODING 8841
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+20
+F0
+28
+28
+28
+F0
+20
+F8
+20
+ENDCHAR
+STARTCHAR SUBSET OF WITH NOT EQUAL TO
+ENCODING 8842
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 -1
+BITMAP
+78
+80
+80
+80
+78
+20
+F8
+20
+ENDCHAR
+STARTCHAR SUPERSET OF WITH NOT EQUAL TO
+ENCODING 8843
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 -1
+BITMAP
+F0
+08
+08
+08
+F0
+20
+F8
+20
+ENDCHAR
+STARTCHAR CIRCLED PLUS
+ENCODING 8853
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 1
+BITMAP
+70
+A8
+F8
+A8
+70
+ENDCHAR
+STARTCHAR CIRCLED TIMES
+ENCODING 8855
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 1
+BITMAP
+70
+D8
+A8
+D8
+70
+ENDCHAR
+STARTCHAR DOWN TACK
+ENCODING 8868
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+20
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR UP TACK
+ENCODING 8869
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+20
+20
+20
+20
+20
+F8
+ENDCHAR
+STARTCHAR ASSERTION
+ENCODING 8870
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+80
+80
+E0
+80
+80
+80
+ENDCHAR
+STARTCHAR MODELS
+ENCODING 8871
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+80
+E0
+80
+E0
+80
+80
+ENDCHAR
+STARTCHAR N-ARY LOGICAL AND
+ENCODING 8896
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+20
+20
+20
+50
+50
+50
+88
+88
+88
+ENDCHAR
+STARTCHAR N-ARY LOGICAL OR
+ENCODING 8897
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+88
+88
+88
+50
+50
+50
+20
+20
+20
+ENDCHAR
+STARTCHAR N-ARY INTERSECTION
+ENCODING 8898
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+70
+88
+88
+88
+88
+88
+88
+88
+88
+ENDCHAR
+STARTCHAR N-ARY UNION
+ENCODING 8899
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+88
+88
+88
+88
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR DOT OPERATOR
+ENCODING 8901
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 1 2 3
+BITMAP
+80
+ENDCHAR
+STARTCHAR VERTICAL ELLIPSIS
+ENCODING 8942
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 7 2 0
+BITMAP
+80
+00
+00
+80
+00
+00
+80
+ENDCHAR
+STARTCHAR MIDLINE HORIZONTAL ELLIPSIS
+ENCODING 8943
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 1 0 3
+BITMAP
+A8
+ENDCHAR
+STARTCHAR UP RIGHT DIAGONAL ELLIPSIS
+ENCODING 8944
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+08
+00
+00
+20
+00
+00
+80
+ENDCHAR
+STARTCHAR DOWN RIGHT DIAGONAL ELLIPSIS
+ENCODING 8945
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+80
+00
+00
+20
+00
+00
+08
+ENDCHAR
+STARTCHAR DIAMETER SIGN
+ENCODING 8960
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+78
+98
+A8
+C8
+F0
+ENDCHAR
+STARTCHAR HOUSE
+ENCODING 8962
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+20
+50
+88
+88
+88
+F8
+ENDCHAR
+STARTCHAR LEFT CEILING
+ENCODING 8968
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+E0
+80
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR RIGHT CEILING
+ENCODING 8969
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+E0
+20
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR LEFT FLOOR
+ENCODING 8970
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+80
+80
+80
+80
+80
+E0
+ENDCHAR
+STARTCHAR RIGHT FLOOR
+ENCODING 8971
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+20
+20
+20
+20
+20
+E0
+ENDCHAR
+STARTCHAR REVERSED NOT SIGN
+ENCODING 8976
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 2 1 2
+BITMAP
+F0
+80
+ENDCHAR
+STARTCHAR TOP HALF INTEGRAL
+ENCODING 8992
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 8 2 -2
+BITMAP
+40
+A0
+80
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR BOTTOM HALF INTEGRAL
+ENCODING 8993
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 9 0 0
+BITMAP
+20
+20
+20
+20
+20
+20
+20
+A0
+40
+ENDCHAR
+STARTCHAR HORIZONTAL SCAN LINE-1
+ENCODING 9146
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 1 0 7
+BITMAP
+FC
+ENDCHAR
+STARTCHAR HORIZONTAL SCAN LINE-3
+ENCODING 9147
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 1 0 5
+BITMAP
+FC
+ENDCHAR
+STARTCHAR HORIZONTAL SCAN LINE-7
+ENCODING 9148
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 1 0 0
+BITMAP
+FC
+ENDCHAR
+STARTCHAR HORIZONTAL SCAN LINE-9
+ENCODING 9149
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 1 0 -2
+BITMAP
+FC
+ENDCHAR
+STARTCHAR SYMBOL FOR HORIZONTAL TABULATION
+ENCODING 9225
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+90
+90
+F0
+90
+90
+78
+10
+10
+10
+ENDCHAR
+STARTCHAR SYMBOL FOR LINE FEED
+ENCODING 9226
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+80
+80
+80
+F0
+78
+40
+70
+40
+40
+ENDCHAR
+STARTCHAR SYMBOL FOR VERTICAL TABULATION
+ENCODING 9227
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+90
+90
+60
+40
+78
+10
+10
+10
+10
+ENDCHAR
+STARTCHAR SYMBOL FOR FORM FEED
+ENCODING 9228
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+E0
+80
+C0
+80
+B8
+20
+30
+20
+20
+ENDCHAR
+STARTCHAR SYMBOL FOR CARRIAGE RETURN
+ENCODING 9229
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+70
+80
+80
+70
+70
+48
+70
+48
+48
+ENDCHAR
+STARTCHAR SYMBOL FOR NEWLINE
+ENCODING 9252
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+90
+D0
+D0
+B0
+90
+40
+40
+40
+78
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT HORIZONTAL
+ENCODING 9472
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 1 0 2
+BITMAP
+FC
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY HORIZONTAL
+ENCODING 9473
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 2 0 2
+BITMAP
+FC
+FC
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT VERTICAL
+ENCODING 9474
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 11 2 -2
+BITMAP
+80
+80
+80
+80
+80
+80
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY VERTICAL
+ENCODING 9475
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 11 2 -2
+BITMAP
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL
+ENCODING 9476
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 1 0 2
+BITMAP
+A8
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL
+ENCODING 9477
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 2 0 2
+BITMAP
+A8
+A8
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL
+ENCODING 9478
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 10 2 -1
+BITMAP
+80
+80
+80
+00
+80
+80
+80
+00
+80
+80
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL
+ENCODING 9479
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 10 2 -1
+BITMAP
+C0
+C0
+C0
+00
+C0
+C0
+C0
+00
+C0
+C0
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL
+ENCODING 9480
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 1 0 2
+BITMAP
+A8
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL
+ENCODING 9481
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 2 0 2
+BITMAP
+A8
+A8
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL
+ENCODING 9482
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 9 2 -1
+BITMAP
+80
+80
+00
+80
+00
+80
+80
+00
+80
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL
+ENCODING 9483
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 9 2 -1
+BITMAP
+C0
+C0
+00
+C0
+00
+C0
+C0
+00
+C0
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT DOWN AND RIGHT
+ENCODING 9484
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 2 -2
+BITMAP
+F0
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY
+ENCODING 9485
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 6 2 -2
+BITMAP
+F0
+F0
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT
+ENCODING 9486
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 2 -2
+BITMAP
+F0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY DOWN AND RIGHT
+ENCODING 9487
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 6 2 -2
+BITMAP
+F0
+F0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT DOWN AND LEFT
+ENCODING 9488
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 0 -2
+BITMAP
+E0
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY
+ENCODING 9489
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 6 0 -2
+BITMAP
+E0
+E0
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT
+ENCODING 9490
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 0 -2
+BITMAP
+F0
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY DOWN AND LEFT
+ENCODING 9491
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 6 0 -2
+BITMAP
+F0
+F0
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT UP AND RIGHT
+ENCODING 9492
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 2 2
+BITMAP
+80
+80
+80
+80
+80
+80
+F0
+ENDCHAR
+STARTCHAR BOX DRAWINGS UP LIGHT AND RIGHT HEAVY
+ENCODING 9493
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 2 2
+BITMAP
+80
+80
+80
+80
+80
+F0
+F0
+ENDCHAR
+STARTCHAR BOX DRAWINGS UP HEAVY AND RIGHT LIGHT
+ENCODING 9494
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 2 2
+BITMAP
+C0
+C0
+C0
+C0
+C0
+C0
+F0
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY UP AND RIGHT
+ENCODING 9495
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 2 2
+BITMAP
+C0
+C0
+C0
+C0
+C0
+F0
+F0
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT UP AND LEFT
+ENCODING 9496
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 0 2
+BITMAP
+20
+20
+20
+20
+20
+20
+E0
+ENDCHAR
+STARTCHAR BOX DRAWINGS UP LIGHT AND LEFT HEAVY
+ENCODING 9497
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 0 2
+BITMAP
+20
+20
+20
+20
+20
+E0
+E0
+ENDCHAR
+STARTCHAR BOX DRAWINGS UP HEAVY AND LEFT LIGHT
+ENCODING 9498
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 0 2
+BITMAP
+30
+30
+30
+30
+30
+30
+F0
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY UP AND LEFT
+ENCODING 9499
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 0 2
+BITMAP
+30
+30
+30
+30
+30
+F0
+F0
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+ENCODING 9500
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 11 2 -2
+BITMAP
+80
+80
+80
+80
+80
+80
+F0
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY
+ENCODING 9501
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 11 2 -2
+BITMAP
+80
+80
+80
+80
+80
+F0
+F0
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT
+ENCODING 9502
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 11 2 -2
+BITMAP
+C0
+C0
+C0
+C0
+C0
+C0
+F0
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT
+ENCODING 9503
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 11 2 -2
+BITMAP
+80
+80
+80
+80
+80
+80
+F0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT
+ENCODING 9504
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 11 2 -2
+BITMAP
+C0
+C0
+C0
+C0
+C0
+C0
+F0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY
+ENCODING 9505
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 11 2 -2
+BITMAP
+C0
+C0
+C0
+C0
+C0
+F0
+F0
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY
+ENCODING 9506
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 11 2 -2
+BITMAP
+80
+80
+80
+80
+80
+F0
+F0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY VERTICAL AND RIGHT
+ENCODING 9507
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 11 2 -2
+BITMAP
+C0
+C0
+C0
+C0
+C0
+F0
+F0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT VERTICAL AND LEFT
+ENCODING 9508
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 11 0 -2
+BITMAP
+20
+20
+20
+20
+20
+20
+E0
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY
+ENCODING 9509
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 11 0 -2
+BITMAP
+20
+20
+20
+20
+20
+E0
+E0
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT
+ENCODING 9510
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 11 0 -2
+BITMAP
+30
+30
+30
+30
+30
+30
+E0
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT
+ENCODING 9511
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 11 0 -2
+BITMAP
+20
+20
+20
+20
+20
+20
+F0
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT
+ENCODING 9512
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 11 0 -2
+BITMAP
+30
+30
+30
+30
+30
+30
+F0
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY
+ENCODING 9513
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 11 0 -2
+BITMAP
+30
+30
+30
+30
+30
+F0
+E0
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY
+ENCODING 9514
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 11 0 -2
+BITMAP
+20
+20
+20
+20
+20
+E0
+F0
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY VERTICAL AND LEFT
+ENCODING 9515
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 11 0 -2
+BITMAP
+30
+30
+30
+30
+30
+F0
+F0
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+ENCODING 9516
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 -2
+BITMAP
+FC
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT
+ENCODING 9517
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 6 0 -2
+BITMAP
+E0
+FC
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT
+ENCODING 9518
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 6 0 -2
+BITMAP
+1C
+FC
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY
+ENCODING 9519
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 6 0 -2
+BITMAP
+FC
+FC
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT
+ENCODING 9520
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 -2
+BITMAP
+FC
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY
+ENCODING 9521
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 6 0 -2
+BITMAP
+E0
+FC
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY
+ENCODING 9522
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 6 0 -2
+BITMAP
+1C
+FC
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY DOWN AND HORIZONTAL
+ENCODING 9523
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 6 0 -2
+BITMAP
+FC
+FC
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT UP AND HORIZONTAL
+ENCODING 9524
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 2
+BITMAP
+20
+20
+20
+20
+20
+20
+FC
+ENDCHAR
+STARTCHAR BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT
+ENCODING 9525
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 2
+BITMAP
+20
+20
+20
+20
+20
+E0
+FC
+ENDCHAR
+STARTCHAR BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT
+ENCODING 9526
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 2
+BITMAP
+20
+20
+20
+20
+20
+3C
+FC
+ENDCHAR
+STARTCHAR BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY
+ENCODING 9527
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 2
+BITMAP
+20
+20
+20
+20
+20
+FC
+FC
+ENDCHAR
+STARTCHAR BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT
+ENCODING 9528
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 2
+BITMAP
+30
+30
+30
+30
+30
+30
+FC
+ENDCHAR
+STARTCHAR BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY
+ENCODING 9529
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 2
+BITMAP
+30
+30
+30
+30
+30
+F0
+FC
+ENDCHAR
+STARTCHAR BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY
+ENCODING 9530
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 2
+BITMAP
+30
+30
+30
+30
+30
+3C
+FC
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY UP AND HORIZONTAL
+ENCODING 9531
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 2
+BITMAP
+30
+30
+30
+30
+30
+FC
+FC
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+ENCODING 9532
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+20
+20
+20
+20
+20
+20
+FC
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT
+ENCODING 9533
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+20
+20
+20
+20
+20
+E0
+FC
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT
+ENCODING 9534
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+20
+20
+20
+20
+20
+3C
+FC
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY
+ENCODING 9535
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+20
+20
+20
+20
+20
+FC
+FC
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT
+ENCODING 9536
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+30
+30
+30
+30
+30
+30
+FC
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT
+ENCODING 9537
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+20
+20
+20
+20
+20
+20
+FC
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT
+ENCODING 9538
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+30
+30
+30
+30
+30
+30
+FC
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT
+ENCODING 9539
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+30
+30
+30
+30
+30
+F0
+FC
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT
+ENCODING 9540
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+30
+30
+30
+30
+30
+3C
+FC
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT
+ENCODING 9541
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+20
+20
+20
+20
+20
+E0
+FC
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT
+ENCODING 9542
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+20
+20
+20
+20
+20
+3C
+FC
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY
+ENCODING 9543
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+30
+30
+30
+30
+30
+FC
+FC
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY
+ENCODING 9544
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+20
+20
+20
+20
+20
+FC
+FC
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY
+ENCODING 9545
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+30
+30
+30
+30
+30
+F0
+FC
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY
+ENCODING 9546
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+30
+30
+30
+30
+30
+3C
+FC
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL
+ENCODING 9547
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+30
+30
+30
+30
+30
+FC
+FC
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL
+ENCODING 9548
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 1 0 2
+BITMAP
+D8
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL
+ENCODING 9549
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 2 0 2
+BITMAP
+D8
+D8
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL
+ENCODING 9550
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 9 2 -1
+BITMAP
+80
+80
+80
+80
+00
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL
+ENCODING 9551
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 9 2 -1
+BITMAP
+C0
+C0
+C0
+C0
+00
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOUBLE HORIZONTAL
+ENCODING 9552
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 3 0 1
+BITMAP
+FC
+00
+FC
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOUBLE VERTICAL
+ENCODING 9553
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 11 1 -2
+BITMAP
+A0
+A0
+A0
+A0
+A0
+A0
+A0
+A0
+A0
+A0
+A0
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+ENCODING 9554
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 6 2 -2
+BITMAP
+F0
+80
+F0
+80
+80
+80
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+ENCODING 9555
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 1 -2
+BITMAP
+F8
+A0
+A0
+A0
+A0
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOUBLE DOWN AND RIGHT
+ENCODING 9556
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 1 -2
+BITMAP
+F8
+80
+B8
+A0
+A0
+A0
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+ENCODING 9557
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 6 0 -2
+BITMAP
+E0
+20
+E0
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+ENCODING 9558
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 0 -2
+BITMAP
+F0
+50
+50
+50
+50
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOUBLE DOWN AND LEFT
+ENCODING 9559
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 6 0 -2
+BITMAP
+F0
+10
+D0
+50
+50
+50
+ENDCHAR
+STARTCHAR BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+ENCODING 9560
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 2 1
+BITMAP
+80
+80
+80
+80
+80
+F0
+80
+F0
+ENDCHAR
+STARTCHAR BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+ENCODING 9561
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 1 2
+BITMAP
+A0
+A0
+A0
+A0
+A0
+A0
+F8
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOUBLE UP AND RIGHT
+ENCODING 9562
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 1 1
+BITMAP
+A0
+A0
+A0
+A0
+A0
+B8
+80
+F8
+ENDCHAR
+STARTCHAR BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+ENCODING 9563
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 8 0 1
+BITMAP
+20
+20
+20
+20
+20
+E0
+20
+E0
+ENDCHAR
+STARTCHAR BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+ENCODING 9564
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 0 2
+BITMAP
+50
+50
+50
+50
+50
+50
+F0
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOUBLE UP AND LEFT
+ENCODING 9565
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 0 1
+BITMAP
+50
+50
+50
+50
+50
+D0
+10
+F0
+ENDCHAR
+STARTCHAR BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+ENCODING 9566
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 11 2 -2
+BITMAP
+80
+80
+80
+80
+80
+F0
+80
+F0
+80
+80
+80
+ENDCHAR
+STARTCHAR BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+ENCODING 9567
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 11 1 -2
+BITMAP
+A0
+A0
+A0
+A0
+A0
+A0
+B8
+A0
+A0
+A0
+A0
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+ENCODING 9568
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 11 1 -2
+BITMAP
+A0
+A0
+A0
+A0
+A0
+B8
+80
+B8
+A0
+A0
+A0
+ENDCHAR
+STARTCHAR BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+ENCODING 9569
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 11 0 -2
+BITMAP
+20
+20
+20
+20
+20
+E0
+20
+E0
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+ENCODING 9570
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 11 0 -2
+BITMAP
+50
+50
+50
+50
+50
+50
+D0
+50
+50
+50
+50
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+ENCODING 9571
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 11 0 -2
+BITMAP
+50
+50
+50
+50
+50
+D0
+10
+D0
+50
+50
+50
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+ENCODING 9572
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 6 0 -2
+BITMAP
+FC
+00
+FC
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+ENCODING 9573
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 -2
+BITMAP
+FC
+50
+50
+50
+50
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+ENCODING 9574
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 6 0 -2
+BITMAP
+FC
+00
+DC
+50
+50
+50
+ENDCHAR
+STARTCHAR BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+ENCODING 9575
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 8 0 1
+BITMAP
+20
+20
+20
+20
+20
+FC
+00
+FC
+ENDCHAR
+STARTCHAR BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+ENCODING 9576
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 2
+BITMAP
+50
+50
+50
+50
+50
+50
+FC
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+ENCODING 9577
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 8 0 1
+BITMAP
+50
+50
+50
+50
+50
+DC
+00
+FC
+ENDCHAR
+STARTCHAR BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+ENCODING 9578
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+20
+20
+20
+20
+20
+FC
+20
+FC
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+ENCODING 9579
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+50
+50
+50
+50
+50
+50
+FC
+50
+50
+50
+50
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+ENCODING 9580
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+50
+50
+50
+50
+50
+DC
+00
+DC
+50
+50
+50
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT ARC DOWN AND RIGHT
+ENCODING 9581
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 2 -2
+BITMAP
+30
+40
+80
+80
+80
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT ARC DOWN AND LEFT
+ENCODING 9582
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 0 -2
+BITMAP
+80
+40
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT ARC UP AND LEFT
+ENCODING 9583
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 0 2
+BITMAP
+20
+20
+20
+20
+20
+40
+80
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT ARC UP AND RIGHT
+ENCODING 9584
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 2 2
+BITMAP
+80
+80
+80
+80
+80
+40
+30
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT
+ENCODING 9585
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+04
+04
+08
+08
+10
+30
+20
+40
+40
+80
+80
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT
+ENCODING 9586
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+80
+80
+40
+40
+20
+30
+10
+08
+08
+04
+04
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT DIAGONAL CROSS
+ENCODING 9587
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+84
+84
+48
+48
+30
+30
+30
+48
+48
+84
+84
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT LEFT
+ENCODING 9588
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 1 0 2
+BITMAP
+E0
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT UP
+ENCODING 9589
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 6 2 3
+BITMAP
+80
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT RIGHT
+ENCODING 9590
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 1 3 2
+BITMAP
+E0
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT DOWN
+ENCODING 9591
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 5 2 -2
+BITMAP
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY LEFT
+ENCODING 9592
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 2 0 2
+BITMAP
+E0
+E0
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY UP
+ENCODING 9593
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 6 2 3
+BITMAP
+C0
+C0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY RIGHT
+ENCODING 9594
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 2 3 2
+BITMAP
+E0
+E0
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY DOWN
+ENCODING 9595
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 5 2 -2
+BITMAP
+C0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT
+ENCODING 9596
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 2 0 2
+BITMAP
+1C
+FC
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT UP AND HEAVY DOWN
+ENCODING 9597
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 11 2 -2
+BITMAP
+80
+80
+80
+80
+80
+80
+C0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT
+ENCODING 9598
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 2 0 2
+BITMAP
+E0
+FC
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY UP AND LIGHT DOWN
+ENCODING 9599
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 11 2 -2
+BITMAP
+C0
+C0
+C0
+C0
+C0
+C0
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR UPPER HALF BLOCK
+ENCODING 9600
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 6 0 3
+BITMAP
+FC
+FC
+FC
+FC
+FC
+FC
+ENDCHAR
+STARTCHAR LOWER ONE EIGHTH BLOCK
+ENCODING 9601
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 1 0 -2
+BITMAP
+FC
+ENDCHAR
+STARTCHAR LOWER ONE QUARTER BLOCK
+ENCODING 9602
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 2 0 -2
+BITMAP
+FC
+FC
+ENDCHAR
+STARTCHAR LOWER THREE EIGHTHS BLOCK
+ENCODING 9603
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 4 0 -2
+BITMAP
+FC
+FC
+FC
+FC
+ENDCHAR
+STARTCHAR LOWER HALF BLOCK
+ENCODING 9604
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 -2
+BITMAP
+FC
+FC
+FC
+FC
+FC
+ENDCHAR
+STARTCHAR LOWER FIVE EIGHTHS BLOCK
+ENCODING 9605
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 6 0 -2
+BITMAP
+FC
+FC
+FC
+FC
+FC
+FC
+ENDCHAR
+STARTCHAR LOWER THREE QUARTERS BLOCK
+ENCODING 9606
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 8 0 -2
+BITMAP
+FC
+FC
+FC
+FC
+FC
+FC
+FC
+FC
+ENDCHAR
+STARTCHAR LOWER SEVEN EIGHTHS BLOCK
+ENCODING 9607
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+FC
+FC
+FC
+FC
+FC
+FC
+FC
+FC
+FC
+ENDCHAR
+STARTCHAR FULL BLOCK
+ENCODING 9608
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+FC
+FC
+FC
+FC
+FC
+FC
+FC
+FC
+FC
+FC
+FC
+ENDCHAR
+STARTCHAR LEFT SEVEN EIGHTHS BLOCK
+ENCODING 9609
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 11 0 -2
+BITMAP
+F8
+F8
+F8
+F8
+F8
+F8
+F8
+F8
+F8
+F8
+F8
+ENDCHAR
+STARTCHAR LEFT THREE QUARTERS BLOCK
+ENCODING 9610
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 11 0 -2
+BITMAP
+F0
+F0
+F0
+F0
+F0
+F0
+F0
+F0
+F0
+F0
+F0
+ENDCHAR
+STARTCHAR LEFT FIVE EIGHTHS BLOCK
+ENCODING 9611
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 11 0 -2
+BITMAP
+F0
+F0
+F0
+F0
+F0
+F0
+F0
+F0
+F0
+F0
+F0
+ENDCHAR
+STARTCHAR LEFT HALF BLOCK
+ENCODING 9612
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 11 0 -2
+BITMAP
+E0
+E0
+E0
+E0
+E0
+E0
+E0
+E0
+E0
+E0
+E0
+ENDCHAR
+STARTCHAR LEFT THREE EIGHTHS BLOCK
+ENCODING 9613
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 11 0 -2
+BITMAP
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR LEFT ONE QUARTER BLOCK
+ENCODING 9614
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 11 0 -2
+BITMAP
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR LEFT ONE EIGHTH BLOCK
+ENCODING 9615
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 11 0 -2
+BITMAP
+80
+80
+80
+80
+80
+80
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR RIGHT HALF BLOCK
+ENCODING 9616
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 11 3 -2
+BITMAP
+E0
+E0
+E0
+E0
+E0
+E0
+E0
+E0
+E0
+E0
+E0
+ENDCHAR
+STARTCHAR LIGHT SHADE
+ENCODING 9617
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -1
+BITMAP
+A8
+00
+54
+00
+A8
+00
+54
+00
+A8
+ENDCHAR
+STARTCHAR MEDIUM SHADE
+ENCODING 9618
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+54
+A8
+54
+A8
+54
+A8
+54
+A8
+54
+A8
+54
+ENDCHAR
+STARTCHAR DARK SHADE
+ENCODING 9619
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+FC
+A8
+FC
+54
+FC
+A8
+FC
+54
+FC
+A8
+FC
+ENDCHAR
+STARTCHAR UPPER ONE EIGHTH BLOCK
+ENCODING 9620
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 1 0 8
+BITMAP
+FC
+ENDCHAR
+STARTCHAR RIGHT ONE EIGHTH BLOCK
+ENCODING 9621
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 11 5 -2
+BITMAP
+80
+80
+80
+80
+80
+80
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR QUADRANT LOWER LEFT
+ENCODING 9622
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 0 -2
+BITMAP
+E0
+E0
+E0
+E0
+E0
+ENDCHAR
+STARTCHAR QUADRANT LOWER RIGHT
+ENCODING 9623
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 3 -2
+BITMAP
+E0
+E0
+E0
+E0
+E0
+ENDCHAR
+STARTCHAR QUADRANT UPPER LEFT
+ENCODING 9624
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 6 0 3
+BITMAP
+E0
+E0
+E0
+E0
+E0
+E0
+ENDCHAR
+STARTCHAR QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT
+ENCODING 9625
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+E0
+E0
+E0
+E0
+E0
+E0
+FC
+FC
+FC
+FC
+FC
+ENDCHAR
+STARTCHAR QUADRANT UPPER LEFT AND LOWER RIGHT
+ENCODING 9626
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+E0
+E0
+E0
+E0
+E0
+E0
+1C
+1C
+1C
+1C
+1C
+ENDCHAR
+STARTCHAR QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT
+ENCODING 9627
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+FC
+FC
+FC
+FC
+FC
+FC
+E0
+E0
+E0
+E0
+E0
+ENDCHAR
+STARTCHAR QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT
+ENCODING 9628
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+FC
+FC
+FC
+FC
+FC
+FC
+1C
+1C
+1C
+1C
+1C
+ENDCHAR
+STARTCHAR QUADRANT UPPER RIGHT
+ENCODING 9629
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 6 3 3
+BITMAP
+E0
+E0
+E0
+E0
+E0
+E0
+ENDCHAR
+STARTCHAR QUADRANT UPPER RIGHT AND LOWER LEFT
+ENCODING 9630
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+1C
+1C
+1C
+1C
+1C
+1C
+E0
+E0
+E0
+E0
+E0
+ENDCHAR
+STARTCHAR QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT
+ENCODING 9631
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+1C
+1C
+1C
+1C
+1C
+1C
+FC
+FC
+FC
+FC
+FC
+ENDCHAR
+STARTCHAR BLACK SQUARE
+ENCODING 9632
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F8
+F8
+F8
+F8
+F8
+ENDCHAR
+STARTCHAR WHITE SQUARE
+ENCODING 9633
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F8
+88
+88
+88
+F8
+ENDCHAR
+STARTCHAR BLACK SMALL SQUARE
+ENCODING 9642
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 4 1 0
+BITMAP
+F0
+F0
+F0
+F0
+ENDCHAR
+STARTCHAR WHITE SMALL SQUARE
+ENCODING 9643
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 4 1 0
+BITMAP
+F0
+90
+90
+F0
+ENDCHAR
+STARTCHAR BLACK RECTANGLE
+ENCODING 9644
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 4 0 0
+BITMAP
+FC
+FC
+FC
+FC
+ENDCHAR
+STARTCHAR BLACK VERTICAL RECTANGLE
+ENCODING 9646
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 6 1 -1
+BITMAP
+F0
+F0
+F0
+F0
+F0
+F0
+ENDCHAR
+STARTCHAR BLACK UP-POINTING TRIANGLE
+ENCODING 9650
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+20
+20
+70
+70
+F8
+F8
+ENDCHAR
+STARTCHAR WHITE UP-POINTING TRIANGLE
+ENCODING 9651
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+20
+20
+50
+50
+88
+F8
+ENDCHAR
+STARTCHAR BLACK RIGHT-POINTING POINTER
+ENCODING 9658
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 0
+BITMAP
+C0
+F0
+FC
+F0
+C0
+ENDCHAR
+STARTCHAR WHITE RIGHT-POINTING POINTER
+ENCODING 9659
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 0
+BITMAP
+C0
+B0
+8C
+B0
+C0
+ENDCHAR
+STARTCHAR BLACK DOWN-POINTING TRIANGLE
+ENCODING 9660
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+F8
+F8
+70
+70
+20
+20
+ENDCHAR
+STARTCHAR WHITE DOWN-POINTING TRIANGLE
+ENCODING 9661
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+F8
+88
+50
+50
+20
+20
+ENDCHAR
+STARTCHAR BLACK LEFT-POINTING POINTER
+ENCODING 9668
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 0
+BITMAP
+0C
+3C
+FC
+3C
+0C
+ENDCHAR
+STARTCHAR WHITE LEFT-POINTING POINTER
+ENCODING 9669
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 0
+BITMAP
+0C
+34
+C4
+34
+0C
+ENDCHAR
+STARTCHAR BLACK DIAMOND
+ENCODING 9670
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 1
+BITMAP
+20
+70
+F8
+70
+20
+ENDCHAR
+STARTCHAR LOZENGE
+ENCODING 9674
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+50
+50
+88
+50
+50
+20
+ENDCHAR
+STARTCHAR WHITE CIRCLE
+ENCODING 9675
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR DOTTED CIRCLE
+ENCODING 9676
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+F8
+F8
+F8
+70
+ENDCHAR
+STARTCHAR BLACK CIRCLE
+ENCODING 9679
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+F8
+F8
+F8
+70
+ENDCHAR
+STARTCHAR INVERSE BULLET
+ENCODING 9688
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+FC
+FC
+FC
+FC
+CC
+84
+84
+CC
+FC
+FC
+FC
+ENDCHAR
+STARTCHAR INVERSE WHITE CIRCLE
+ENCODING 9689
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+FC
+FC
+FC
+FC
+CC
+B4
+B4
+CC
+FC
+FC
+FC
+ENDCHAR
+STARTCHAR WHITE BULLET
+ENCODING 9702
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 4 1 1
+BITMAP
+60
+90
+90
+60
+ENDCHAR
+STARTCHAR BLACK SUN WITH RAYS
+ENCODING 9728
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 8 0 -1
+BITMAP
+10
+54
+00
+B0
+34
+00
+A8
+20
+ENDCHAR
+STARTCHAR WHITE SMILING FACE
+ENCODING 9786
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 -1
+BITMAP
+78
+84
+CC
+84
+B4
+84
+78
+ENDCHAR
+STARTCHAR BLACK SMILING FACE
+ENCODING 9787
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+F8
+A8
+F8
+A8
+D8
+70
+ENDCHAR
+STARTCHAR WHITE SUN WITH RAYS
+ENCODING 9788
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 8 0 -1
+BITMAP
+10
+54
+00
+B0
+34
+00
+A8
+20
+ENDCHAR
+STARTCHAR MERCURY
+ENCODING 9791
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+88
+70
+88
+88
+88
+70
+20
+70
+20
+ENDCHAR
+STARTCHAR FEMALE SIGN
+ENCODING 9792
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 -2
+BITMAP
+70
+88
+88
+88
+70
+20
+70
+20
+ENDCHAR
+STARTCHAR EARTH
+ENCODING 9793
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+70
+20
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR MALE SIGN
+ENCODING 9794
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+1C
+0C
+74
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR BLACK SPADE SUIT
+ENCODING 9824
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+20
+70
+F8
+F8
+20
+70
+ENDCHAR
+STARTCHAR WHITE HEART SUIT
+ENCODING 9825
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+50
+A8
+A8
+88
+50
+20
+ENDCHAR
+STARTCHAR WHITE DIAMOND SUIT
+ENCODING 9826
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+50
+88
+88
+50
+50
+20
+ENDCHAR
+STARTCHAR BLACK CLUB SUIT
+ENCODING 9827
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+20
+A8
+F8
+A8
+20
+70
+ENDCHAR
+STARTCHAR WHITE SPADE SUIT
+ENCODING 9828
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+20
+50
+88
+D8
+20
+70
+ENDCHAR
+STARTCHAR BLACK HEART SUIT
+ENCODING 9829
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+50
+F8
+F8
+F8
+70
+20
+ENDCHAR
+STARTCHAR BLACK DIAMOND SUIT
+ENCODING 9830
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+70
+70
+F8
+F8
+70
+70
+20
+ENDCHAR
+STARTCHAR EIGHTH NOTE
+ENCODING 9834
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+30
+28
+20
+60
+E0
+60
+ENDCHAR
+STARTCHAR BEAMED EIGHTH NOTES
+ENCODING 9835
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+60
+50
+48
+48
+C8
+D8
+18
+ENDCHAR
+STARTCHAR BEAMED SIXTEENTH NOTES
+ENCODING 9836
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+60
+50
+68
+58
+C8
+D8
+18
+ENDCHAR
+STARTCHAR MUSIC FLAT SIGN
+ENCODING 9837
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 1 0
+BITMAP
+80
+80
+A0
+D0
+90
+A0
+C0
+ENDCHAR
+STARTCHAR MUSIC NATURAL SIGN
+ENCODING 9838
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 1 -1
+BITMAP
+80
+90
+B0
+D0
+B0
+D0
+90
+10
+ENDCHAR
+STARTCHAR MUSIC SHARP SIGN
+ENCODING 9839
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 -1
+BITMAP
+10
+58
+70
+D0
+58
+70
+D0
+40
+ENDCHAR
+STARTCHAR MATHEMATICAL LEFT ANGLE BRACKET
+ENCODING 10216
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+40
+40
+80
+40
+40
+20
+ENDCHAR
+STARTCHAR MATHEMATICAL RIGHT ANGLE BRACKET
+ENCODING 10217
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+40
+40
+20
+40
+40
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN BLANK
+ENCODING 10240
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1
+ENCODING 10241
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 1 1 6
+BITMAP
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2
+ENCODING 10242
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 1 1 4
+BITMAP
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12
+ENCODING 10243
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 3 1 4
+BITMAP
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-3
+ENCODING 10244
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 1 1 2
+BITMAP
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-13
+ENCODING 10245
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 5 1 2
+BITMAP
+80
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-23
+ENCODING 10246
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 3 1 2
+BITMAP
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-123
+ENCODING 10247
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 5 1 2
+BITMAP
+80
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-4
+ENCODING 10248
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 1 3 6
+BITMAP
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-14
+ENCODING 10249
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 1 1 6
+BITMAP
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-24
+ENCODING 10250
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 4
+BITMAP
+20
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-124
+ENCODING 10251
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 4
+BITMAP
+A0
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-34
+ENCODING 10252
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+20
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-134
+ENCODING 10253
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+A0
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-234
+ENCODING 10254
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+20
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1234
+ENCODING 10255
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+A0
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-5
+ENCODING 10256
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 1 3 4
+BITMAP
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-15
+ENCODING 10257
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 4
+BITMAP
+80
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-25
+ENCODING 10258
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 1 1 4
+BITMAP
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-125
+ENCODING 10259
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 4
+BITMAP
+80
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-35
+ENCODING 10260
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 2
+BITMAP
+20
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-135
+ENCODING 10261
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+80
+00
+20
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-235
+ENCODING 10262
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 2
+BITMAP
+A0
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1235
+ENCODING 10263
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+80
+00
+A0
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-45
+ENCODING 10264
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 3 3 4
+BITMAP
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-145
+ENCODING 10265
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 4
+BITMAP
+A0
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-245
+ENCODING 10266
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 4
+BITMAP
+20
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1245
+ENCODING 10267
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 4
+BITMAP
+A0
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-345
+ENCODING 10268
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+20
+00
+20
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1345
+ENCODING 10269
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+A0
+00
+20
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2345
+ENCODING 10270
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+20
+00
+A0
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12345
+ENCODING 10271
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+A0
+00
+A0
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-6
+ENCODING 10272
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 1 3 2
+BITMAP
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-16
+ENCODING 10273
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+80
+00
+00
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-26
+ENCODING 10274
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 2
+BITMAP
+80
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-126
+ENCODING 10275
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+80
+00
+80
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-36
+ENCODING 10276
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 1 1 2
+BITMAP
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-136
+ENCODING 10277
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+80
+00
+00
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-236
+ENCODING 10278
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 2
+BITMAP
+80
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1236
+ENCODING 10279
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+80
+00
+80
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-46
+ENCODING 10280
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 5 3 2
+BITMAP
+80
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-146
+ENCODING 10281
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+A0
+00
+00
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-246
+ENCODING 10282
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+20
+00
+80
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1246
+ENCODING 10283
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+A0
+00
+80
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-346
+ENCODING 10284
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+20
+00
+00
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1346
+ENCODING 10285
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+A0
+00
+00
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2346
+ENCODING 10286
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+20
+00
+80
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12346
+ENCODING 10287
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+A0
+00
+80
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-56
+ENCODING 10288
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 3 3 2
+BITMAP
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-156
+ENCODING 10289
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+80
+00
+20
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-256
+ENCODING 10290
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 2
+BITMAP
+A0
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1256
+ENCODING 10291
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+80
+00
+A0
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-356
+ENCODING 10292
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 2
+BITMAP
+20
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1356
+ENCODING 10293
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+80
+00
+20
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2356
+ENCODING 10294
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 2
+BITMAP
+A0
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12356
+ENCODING 10295
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+80
+00
+A0
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-456
+ENCODING 10296
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 5 3 2
+BITMAP
+80
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1456
+ENCODING 10297
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+A0
+00
+20
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2456
+ENCODING 10298
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+20
+00
+A0
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12456
+ENCODING 10299
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+A0
+00
+A0
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-3456
+ENCODING 10300
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+20
+00
+20
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-13456
+ENCODING 10301
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+A0
+00
+20
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-23456
+ENCODING 10302
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+20
+00
+A0
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-123456
+ENCODING 10303
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+A0
+00
+A0
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-7
+ENCODING 10304
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 1 1 0
+BITMAP
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-17
+ENCODING 10305
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 7 1 0
+BITMAP
+80
+00
+00
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-27
+ENCODING 10306
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 5 1 0
+BITMAP
+80
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-127
+ENCODING 10307
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 7 1 0
+BITMAP
+80
+00
+80
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-37
+ENCODING 10308
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 3 1 0
+BITMAP
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-137
+ENCODING 10309
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 7 1 0
+BITMAP
+80
+00
+00
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-237
+ENCODING 10310
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 5 1 0
+BITMAP
+80
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1237
+ENCODING 10311
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 7 1 0
+BITMAP
+80
+00
+80
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-47
+ENCODING 10312
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+00
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-147
+ENCODING 10313
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+00
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-247
+ENCODING 10314
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+80
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1247
+ENCODING 10315
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+80
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-347
+ENCODING 10316
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+00
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1347
+ENCODING 10317
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+00
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2347
+ENCODING 10318
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+80
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12347
+ENCODING 10319
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+80
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-57
+ENCODING 10320
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+20
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-157
+ENCODING 10321
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+20
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-257
+ENCODING 10322
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+A0
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1257
+ENCODING 10323
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+A0
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-357
+ENCODING 10324
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+20
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1357
+ENCODING 10325
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+20
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2357
+ENCODING 10326
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+A0
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12357
+ENCODING 10327
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+A0
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-457
+ENCODING 10328
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+20
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1457
+ENCODING 10329
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+20
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2457
+ENCODING 10330
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+A0
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12457
+ENCODING 10331
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+A0
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-3457
+ENCODING 10332
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+20
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-13457
+ENCODING 10333
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+20
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-23457
+ENCODING 10334
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+A0
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-123457
+ENCODING 10335
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+A0
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-67
+ENCODING 10336
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 0
+BITMAP
+20
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-167
+ENCODING 10337
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+00
+00
+20
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-267
+ENCODING 10338
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+80
+00
+20
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1267
+ENCODING 10339
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+80
+00
+20
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-367
+ENCODING 10340
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 0
+BITMAP
+A0
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1367
+ENCODING 10341
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+00
+00
+A0
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2367
+ENCODING 10342
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+80
+00
+A0
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12367
+ENCODING 10343
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+80
+00
+A0
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-467
+ENCODING 10344
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+00
+00
+20
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1467
+ENCODING 10345
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+00
+00
+20
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2467
+ENCODING 10346
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+80
+00
+20
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12467
+ENCODING 10347
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+80
+00
+20
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-3467
+ENCODING 10348
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+00
+00
+A0
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-13467
+ENCODING 10349
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+00
+00
+A0
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-23467
+ENCODING 10350
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+80
+00
+A0
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-123467
+ENCODING 10351
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+80
+00
+A0
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-567
+ENCODING 10352
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+20
+00
+20
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1567
+ENCODING 10353
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+20
+00
+20
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2567
+ENCODING 10354
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+A0
+00
+20
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12567
+ENCODING 10355
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+A0
+00
+20
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-3567
+ENCODING 10356
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+20
+00
+A0
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-13567
+ENCODING 10357
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+20
+00
+A0
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-23567
+ENCODING 10358
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+A0
+00
+A0
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-123567
+ENCODING 10359
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+A0
+00
+A0
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-4567
+ENCODING 10360
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+20
+00
+20
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-14567
+ENCODING 10361
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+20
+00
+20
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-24567
+ENCODING 10362
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+A0
+00
+20
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-124567
+ENCODING 10363
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+A0
+00
+20
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-34567
+ENCODING 10364
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+20
+00
+A0
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-134567
+ENCODING 10365
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+20
+00
+A0
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-234567
+ENCODING 10366
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+A0
+00
+A0
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1234567
+ENCODING 10367
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+A0
+00
+A0
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-8
+ENCODING 10368
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 1 3 0
+BITMAP
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-18
+ENCODING 10369
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+00
+00
+00
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-28
+ENCODING 10370
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+80
+00
+00
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-128
+ENCODING 10371
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+80
+00
+00
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-38
+ENCODING 10372
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 0
+BITMAP
+80
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-138
+ENCODING 10373
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+00
+00
+80
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-238
+ENCODING 10374
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+80
+00
+80
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1238
+ENCODING 10375
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+80
+00
+80
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-48
+ENCODING 10376
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 7 3 0
+BITMAP
+80
+00
+00
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-148
+ENCODING 10377
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+00
+00
+00
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-248
+ENCODING 10378
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+80
+00
+00
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1248
+ENCODING 10379
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+80
+00
+00
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-348
+ENCODING 10380
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+00
+00
+80
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1348
+ENCODING 10381
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+00
+00
+80
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2348
+ENCODING 10382
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+80
+00
+80
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12348
+ENCODING 10383
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+80
+00
+80
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-58
+ENCODING 10384
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 5 3 0
+BITMAP
+80
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-158
+ENCODING 10385
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+20
+00
+00
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-258
+ENCODING 10386
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+A0
+00
+00
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1258
+ENCODING 10387
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+A0
+00
+00
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-358
+ENCODING 10388
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+20
+00
+80
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1358
+ENCODING 10389
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+20
+00
+80
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2358
+ENCODING 10390
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+A0
+00
+80
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12358
+ENCODING 10391
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+A0
+00
+80
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-458
+ENCODING 10392
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 7 3 0
+BITMAP
+80
+00
+80
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1458
+ENCODING 10393
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+20
+00
+00
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2458
+ENCODING 10394
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+A0
+00
+00
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12458
+ENCODING 10395
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+A0
+00
+00
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-3458
+ENCODING 10396
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+20
+00
+80
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-13458
+ENCODING 10397
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+20
+00
+80
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-23458
+ENCODING 10398
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+A0
+00
+80
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-123458
+ENCODING 10399
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+A0
+00
+80
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-68
+ENCODING 10400
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 3 3 0
+BITMAP
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-168
+ENCODING 10401
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+00
+00
+20
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-268
+ENCODING 10402
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+80
+00
+20
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1268
+ENCODING 10403
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+80
+00
+20
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-368
+ENCODING 10404
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 0
+BITMAP
+A0
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1368
+ENCODING 10405
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+00
+00
+A0
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2368
+ENCODING 10406
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+80
+00
+A0
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12368
+ENCODING 10407
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+80
+00
+A0
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-468
+ENCODING 10408
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 7 3 0
+BITMAP
+80
+00
+00
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1468
+ENCODING 10409
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+00
+00
+20
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2468
+ENCODING 10410
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+80
+00
+20
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12468
+ENCODING 10411
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+80
+00
+20
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-3468
+ENCODING 10412
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+00
+00
+A0
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-13468
+ENCODING 10413
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+00
+00
+A0
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-23468
+ENCODING 10414
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+80
+00
+A0
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-123468
+ENCODING 10415
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+80
+00
+A0
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-568
+ENCODING 10416
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 5 3 0
+BITMAP
+80
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1568
+ENCODING 10417
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+20
+00
+20
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2568
+ENCODING 10418
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+A0
+00
+20
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12568
+ENCODING 10419
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+A0
+00
+20
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-3568
+ENCODING 10420
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+20
+00
+A0
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-13568
+ENCODING 10421
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+20
+00
+A0
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-23568
+ENCODING 10422
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+A0
+00
+A0
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-123568
+ENCODING 10423
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+A0
+00
+A0
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-4568
+ENCODING 10424
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 7 3 0
+BITMAP
+80
+00
+80
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-14568
+ENCODING 10425
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+20
+00
+20
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-24568
+ENCODING 10426
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+A0
+00
+20
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-124568
+ENCODING 10427
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+A0
+00
+20
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-34568
+ENCODING 10428
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+20
+00
+A0
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-134568
+ENCODING 10429
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+20
+00
+A0
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-234568
+ENCODING 10430
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+A0
+00
+A0
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1234568
+ENCODING 10431
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+A0
+00
+A0
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-78
+ENCODING 10432
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 1 1 0
+BITMAP
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-178
+ENCODING 10433
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+00
+00
+00
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-278
+ENCODING 10434
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+80
+00
+00
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1278
+ENCODING 10435
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+80
+00
+00
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-378
+ENCODING 10436
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 0
+BITMAP
+80
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1378
+ENCODING 10437
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+00
+00
+80
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2378
+ENCODING 10438
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+80
+00
+80
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12378
+ENCODING 10439
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+80
+00
+80
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-478
+ENCODING 10440
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+00
+00
+00
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1478
+ENCODING 10441
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+00
+00
+00
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2478
+ENCODING 10442
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+80
+00
+00
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12478
+ENCODING 10443
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+80
+00
+00
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-3478
+ENCODING 10444
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+00
+00
+80
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-13478
+ENCODING 10445
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+00
+00
+80
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-23478
+ENCODING 10446
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+80
+00
+80
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-123478
+ENCODING 10447
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+80
+00
+80
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-578
+ENCODING 10448
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+20
+00
+00
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1578
+ENCODING 10449
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+20
+00
+00
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2578
+ENCODING 10450
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+A0
+00
+00
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12578
+ENCODING 10451
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+A0
+00
+00
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-3578
+ENCODING 10452
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+20
+00
+80
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-13578
+ENCODING 10453
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+20
+00
+80
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-23578
+ENCODING 10454
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+A0
+00
+80
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-123578
+ENCODING 10455
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+A0
+00
+80
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-4578
+ENCODING 10456
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+20
+00
+00
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-14578
+ENCODING 10457
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+20
+00
+00
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-24578
+ENCODING 10458
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+A0
+00
+00
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-124578
+ENCODING 10459
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+A0
+00
+00
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-34578
+ENCODING 10460
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+20
+00
+80
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-134578
+ENCODING 10461
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+20
+00
+80
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-234578
+ENCODING 10462
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+A0
+00
+80
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1234578
+ENCODING 10463
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+A0
+00
+80
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-678
+ENCODING 10464
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 0
+BITMAP
+20
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1678
+ENCODING 10465
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+00
+00
+20
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2678
+ENCODING 10466
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+80
+00
+20
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12678
+ENCODING 10467
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+80
+00
+20
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-3678
+ENCODING 10468
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 0
+BITMAP
+A0
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-13678
+ENCODING 10469
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+00
+00
+A0
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-23678
+ENCODING 10470
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+80
+00
+A0
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-123678
+ENCODING 10471
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+80
+00
+A0
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-4678
+ENCODING 10472
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+00
+00
+20
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-14678
+ENCODING 10473
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+00
+00
+20
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-24678
+ENCODING 10474
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+80
+00
+20
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-124678
+ENCODING 10475
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+80
+00
+20
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-34678
+ENCODING 10476
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+00
+00
+A0
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-134678
+ENCODING 10477
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+00
+00
+A0
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-234678
+ENCODING 10478
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+80
+00
+A0
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1234678
+ENCODING 10479
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+80
+00
+A0
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-5678
+ENCODING 10480
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+20
+00
+20
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-15678
+ENCODING 10481
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+20
+00
+20
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-25678
+ENCODING 10482
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+A0
+00
+20
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-125678
+ENCODING 10483
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+A0
+00
+20
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-35678
+ENCODING 10484
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+20
+00
+A0
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-135678
+ENCODING 10485
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+20
+00
+A0
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-235678
+ENCODING 10486
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+A0
+00
+A0
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1235678
+ENCODING 10487
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+A0
+00
+A0
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-45678
+ENCODING 10488
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+20
+00
+20
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-145678
+ENCODING 10489
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+20
+00
+20
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-245678
+ENCODING 10490
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+A0
+00
+20
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1245678
+ENCODING 10491
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+A0
+00
+20
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-345678
+ENCODING 10492
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+20
+00
+A0
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1345678
+ENCODING 10493
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+20
+00
+A0
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2345678
+ENCODING 10494
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+A0
+00
+A0
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12345678
+ENCODING 10495
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+A0
+00
+A0
+00
+A0
+ENDCHAR
+STARTCHAR LATIN SMALL LIGATURE FI
+ENCODING 64257
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+30
+48
+40
+E8
+48
+48
+48
+ENDCHAR
+STARTCHAR LATIN SMALL LIGATURE FL
+ENCODING 64258
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+38
+48
+48
+F8
+48
+48
+44
+ENDCHAR
+STARTCHAR REPLACEMENT CHARACTER
+ENCODING 65533
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 -1
+BITMAP
+70
+D8
+A8
+E8
+D8
+F8
+D8
+70
+ENDCHAR
+ENDFONT
diff --git a/configs/shared/.local/share/fonts/bitmap/gohufont-uni-11b.bdf b/configs/shared/.local/share/fonts/bitmap/gohufont-uni-11b.bdf
new file mode 100644
index 0000000000..2967ca95ae
--- /dev/null
+++ b/configs/shared/.local/share/fonts/bitmap/gohufont-uni-11b.bdf
@@ -0,0 +1,21920 @@
+STARTFONT 2.1
+COMMENT "Copyright by Hugo Chargois"
+COMMENT "Licensed under the WTFPL"
+FONT -Gohu-GohuFont-Bold-R-Normal--11-80-100-100-C-60-ISO10646-1
+SIZE 11 100 100
+FONTBOUNDINGBOX 6 11 0 -2
+STARTPROPERTIES 30
+FOUNDRY "Gohu"
+FAMILY_NAME "GohuFont"
+WEIGHT_NAME "Bold"
+SLANT "R"
+SETWIDTH_NAME "Normal"
+ADD_STYLE_NAME ""
+PIXEL_SIZE 11
+POINT_SIZE 80
+RESOLUTION_X 100
+RESOLUTION_Y 100
+SPACING "C"
+AVERAGE_WIDTH 60
+CHARSET_REGISTRY "ISO10646"
+CHARSET_ENCODING "1"
+FONTNAME_REGISTRY ""
+FONT_NAME "GohuFont"
+FACE_NAME "GohuFont"
+FONT_VERSION "003.000"
+FONT_ASCENT 9
+FONT_DESCENT 2
+UNDERLINE_POSITION -1
+UNDERLINE_THICKNESS 1
+X_HEIGHT 4
+CAP_HEIGHT 7
+RAW_ASCENT 818
+RAW_DESCENT 182
+NORM_SPACE 6
+FIGURE_WIDTH 6
+AVG_LOWERCASE_WIDTH 60
+AVG_UPPERCASE_WIDTH "60"
+ENDPROPERTIES
+CHARS 1597
+STARTCHAR <control>
+ENCODING 0
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+A8
+00
+88
+00
+00
+88
+00
+A8
+ENDCHAR
+STARTCHAR SPACE
+ENCODING 32
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR EXCLAMATION MARK
+ENCODING 33
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 7 2 0
+BITMAP
+C0
+C0
+C0
+C0
+C0
+00
+C0
+ENDCHAR
+STARTCHAR QUOTATION MARK
+ENCODING 34
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 3 1 5
+BITMAP
+D8
+D8
+D8
+ENDCHAR
+STARTCHAR NUMBER SIGN
+ENCODING 35
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 2
+BITMAP
+68
+FC
+68
+FC
+68
+ENDCHAR
+STARTCHAR DOLLAR SIGN
+ENCODING 36
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -1
+BITMAP
+30
+78
+B4
+B0
+78
+34
+B4
+78
+30
+ENDCHAR
+STARTCHAR PERCENT SIGN
+ENCODING 37
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+48
+A8
+50
+20
+50
+A8
+90
+ENDCHAR
+STARTCHAR AMPERSAND
+ENCODING 38
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+70
+C8
+D0
+60
+D4
+C8
+74
+ENDCHAR
+STARTCHAR APOSTROPHE
+ENCODING 39
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 3 2 5
+BITMAP
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR LEFT PARENTHESIS
+ENCODING 40
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 9 1 -1
+BITMAP
+30
+60
+60
+C0
+C0
+C0
+60
+60
+30
+ENDCHAR
+STARTCHAR RIGHT PARENTHESIS
+ENCODING 41
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 9 1 -1
+BITMAP
+C0
+60
+60
+30
+30
+30
+60
+60
+C0
+ENDCHAR
+STARTCHAR ASTERISK
+ENCODING 42
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 1
+BITMAP
+30
+B4
+78
+B4
+30
+ENDCHAR
+STARTCHAR PLUS SIGN
+ENCODING 43
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 1
+BITMAP
+30
+30
+FC
+30
+30
+ENDCHAR
+STARTCHAR COMMA
+ENCODING 44
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 4 1 -2
+BITMAP
+E0
+E0
+60
+C0
+ENDCHAR
+STARTCHAR HYPHEN-MINUS
+ENCODING 45
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 1 0 3
+BITMAP
+F8
+ENDCHAR
+STARTCHAR FULL STOP
+ENCODING 46
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 2 2 0
+BITMAP
+E0
+E0
+ENDCHAR
+STARTCHAR SOLIDUS
+ENCODING 47
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+0C
+0C
+18
+18
+30
+30
+60
+60
+C0
+C0
+ENDCHAR
+STARTCHAR DIGIT ZERO
+ENCODING 48
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+D8
+D8
+F8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR DIGIT ONE
+ENCODING 49
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 0 0
+BITMAP
+30
+70
+B0
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR DIGIT TWO
+ENCODING 50
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+D8
+18
+30
+60
+C0
+F8
+ENDCHAR
+STARTCHAR DIGIT THREE
+ENCODING 51
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+D8
+18
+30
+18
+D8
+70
+ENDCHAR
+STARTCHAR DIGIT FOUR
+ENCODING 52
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+10
+30
+70
+B0
+F8
+30
+30
+ENDCHAR
+STARTCHAR DIGIT FIVE
+ENCODING 53
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+C0
+F0
+18
+18
+D8
+70
+ENDCHAR
+STARTCHAR DIGIT SIX
+ENCODING 54
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+C0
+F0
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR DIGIT SEVEN
+ENCODING 55
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+18
+30
+30
+60
+60
+60
+ENDCHAR
+STARTCHAR DIGIT EIGHT
+ENCODING 56
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+D8
+D8
+70
+D8
+D8
+70
+ENDCHAR
+STARTCHAR DIGIT NINE
+ENCODING 57
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+D8
+D8
+78
+18
+18
+70
+ENDCHAR
+STARTCHAR COLON
+ENCODING 58
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 2 0
+BITMAP
+E0
+E0
+00
+E0
+E0
+ENDCHAR
+STARTCHAR SEMICOLON
+ENCODING 59
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 -2
+BITMAP
+E0
+E0
+00
+E0
+E0
+60
+C0
+ENDCHAR
+STARTCHAR LESS-THAN SIGN
+ENCODING 60
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+18
+30
+60
+C0
+60
+30
+18
+ENDCHAR
+STARTCHAR EQUALS SIGN
+ENCODING 61
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 3 0 2
+BITMAP
+F8
+00
+F8
+ENDCHAR
+STARTCHAR GREATER-THAN SIGN
+ENCODING 62
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 1 0
+BITMAP
+C0
+60
+30
+18
+30
+60
+C0
+ENDCHAR
+STARTCHAR QUESTION MARK
+ENCODING 63
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+98
+18
+10
+20
+00
+20
+ENDCHAR
+STARTCHAR COMMERCIAL AT
+ENCODING 64
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+C8
+D8
+D8
+D8
+C0
+78
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER A
+ENCODING 65
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+D8
+D8
+F8
+D8
+D8
+D8
+D8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER B
+ENCODING 66
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+F0
+D8
+D8
+F0
+D8
+D8
+D8
+F0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER C
+ENCODING 67
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+C8
+C0
+C0
+C0
+C0
+C8
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER D
+ENCODING 68
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+F0
+D0
+D8
+D8
+D8
+D8
+D0
+F0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER E
+ENCODING 69
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+F8
+C0
+C0
+F0
+C0
+C0
+C0
+F8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER F
+ENCODING 70
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+F8
+C0
+C0
+F0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER G
+ENCODING 71
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+C8
+C0
+D8
+C8
+C8
+C8
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER H
+ENCODING 72
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+D8
+D8
+D8
+F8
+D8
+D8
+D8
+D8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER I
+ENCODING 73
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 1 0
+BITMAP
+F0
+60
+60
+60
+60
+60
+60
+F0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER J
+ENCODING 74
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+18
+18
+18
+18
+18
+D8
+D8
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER K
+ENCODING 75
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+C8
+D0
+E0
+C0
+E0
+D0
+C8
+C8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER L
+ENCODING 76
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+F8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER M
+ENCODING 77
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+D8
+F8
+F8
+D8
+D8
+D8
+D8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER N
+ENCODING 78
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+C8
+C8
+E8
+E8
+F8
+D8
+C8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER O
+ENCODING 79
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+D8
+D8
+D8
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER P
+ENCODING 80
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+F0
+D8
+D8
+F0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER Q
+ENCODING 81
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+70
+D8
+D8
+D8
+D8
+F8
+D8
+78
+08
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER R
+ENCODING 82
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+F0
+D8
+D8
+F0
+F0
+D8
+D8
+D8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER S
+ENCODING 83
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+C8
+C0
+70
+18
+18
+98
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER T
+ENCODING 84
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 8 0 0
+BITMAP
+FC
+30
+30
+30
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER U
+ENCODING 85
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+D8
+D8
+D8
+D8
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER V
+ENCODING 86
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+D8
+D8
+D8
+F8
+70
+70
+70
+20
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER W
+ENCODING 87
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+D8
+D8
+D8
+D8
+F8
+F8
+D8
+50
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER X
+ENCODING 88
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+D8
+D8
+50
+20
+50
+D8
+D8
+D8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER Y
+ENCODING 89
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+D8
+D8
+D8
+78
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER Z
+ENCODING 90
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+F8
+18
+38
+70
+E0
+C0
+C0
+F8
+ENDCHAR
+STARTCHAR LEFT SQUARE BRACKET
+ENCODING 91
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 9 1 -1
+BITMAP
+F0
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+F0
+ENDCHAR
+STARTCHAR REVERSE SOLIDUS
+ENCODING 92
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+C0
+C0
+60
+60
+30
+30
+18
+18
+0C
+0C
+ENDCHAR
+STARTCHAR RIGHT SQUARE BRACKET
+ENCODING 93
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 9 0 -1
+BITMAP
+F0
+30
+30
+30
+30
+30
+30
+30
+F0
+ENDCHAR
+STARTCHAR CIRCUMFLEX ACCENT
+ENCODING 94
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 3 0 4
+BITMAP
+30
+78
+CC
+ENDCHAR
+STARTCHAR LOW LINE
+ENCODING 95
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 1 0 -1
+BITMAP
+FC
+ENDCHAR
+STARTCHAR GRAVE ACCENT
+ENCODING 96
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 5
+BITMAP
+80
+C0
+60
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER A
+ENCODING 97
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+18
+78
+D8
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER B
+ENCODING 98
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+C0
+C0
+C0
+F0
+D8
+D8
+D8
+F0
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER C
+ENCODING 99
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+78
+C0
+C0
+C0
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER D
+ENCODING 100
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+18
+18
+18
+78
+D8
+D8
+D8
+68
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER E
+ENCODING 101
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+D8
+F8
+C0
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER F
+ENCODING 102
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 1 0
+BITMAP
+70
+C0
+C0
+F0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER G
+ENCODING 103
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+78
+D8
+D8
+D8
+78
+18
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER H
+ENCODING 104
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+C0
+C0
+C0
+F0
+D8
+D8
+D8
+D8
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER I
+ENCODING 105
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 1 0
+BITMAP
+60
+00
+E0
+60
+60
+60
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER J
+ENCODING 106
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 9 0 -2
+BITMAP
+30
+00
+70
+30
+30
+30
+30
+30
+E0
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER K
+ENCODING 107
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+C0
+C0
+C0
+D0
+E0
+E0
+D0
+C8
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER L
+ENCODING 108
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 1 0
+BITMAP
+E0
+60
+60
+60
+60
+60
+60
+30
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER M
+ENCODING 109
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 0
+BITMAP
+F8
+D4
+D4
+D4
+D4
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER N
+ENCODING 110
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F0
+C8
+C8
+C8
+C8
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER O
+ENCODING 111
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER P
+ENCODING 112
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+B0
+D8
+D8
+D8
+F0
+C0
+C0
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER Q
+ENCODING 113
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+78
+D8
+D8
+D8
+78
+18
+18
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER R
+ENCODING 114
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+B0
+D8
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER S
+ENCODING 115
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+C0
+70
+18
+F0
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER T
+ENCODING 116
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 1 0
+BITMAP
+60
+60
+60
+F0
+60
+60
+60
+30
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER U
+ENCODING 117
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+D8
+D8
+D8
+D8
+68
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER V
+ENCODING 118
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+D8
+D8
+70
+70
+20
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER W
+ENCODING 119
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 0
+BITMAP
+D4
+D4
+D4
+D4
+28
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER X
+ENCODING 120
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 0
+BITMAP
+CC
+78
+30
+78
+CC
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER Y
+ENCODING 121
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+D8
+D8
+D8
+D8
+78
+18
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER Z
+ENCODING 122
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F8
+18
+30
+60
+F8
+ENDCHAR
+STARTCHAR LEFT CURLY BRACKET
+ENCODING 123
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+18
+30
+30
+30
+30
+E0
+30
+30
+30
+30
+18
+ENDCHAR
+STARTCHAR VERTICAL LINE
+ENCODING 124
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 9 2 -1
+BITMAP
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR RIGHT CURLY BRACKET
+ENCODING 125
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+60
+30
+30
+30
+30
+1C
+30
+30
+30
+30
+60
+ENDCHAR
+STARTCHAR TILDE
+ENCODING 126
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 2 0 3
+BITMAP
+68
+B0
+ENDCHAR
+STARTCHAR NO-BREAK SPACE
+ENCODING 160
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR INVERTED EXCLAMATION MARK
+ENCODING 161
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 8 2 0
+BITMAP
+80
+00
+80
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR CENT SIGN
+ENCODING 162
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -1
+BITMAP
+20
+78
+A0
+A0
+A0
+78
+20
+ENDCHAR
+STARTCHAR POUND SIGN
+ENCODING 163
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+30
+48
+40
+40
+E0
+40
+48
+B0
+ENDCHAR
+STARTCHAR CURRENCY SIGN
+ENCODING 164
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+88
+70
+50
+70
+88
+ENDCHAR
+STARTCHAR YEN SIGN
+ENCODING 165
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+88
+88
+50
+20
+F8
+20
+F8
+20
+20
+ENDCHAR
+STARTCHAR BROKEN BAR
+ENCODING 166
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 9 2 -1
+BITMAP
+80
+80
+80
+80
+00
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR SECTION SIGN
+ENCODING 167
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 9 1 -1
+BITMAP
+70
+80
+80
+E0
+90
+70
+10
+10
+E0
+ENDCHAR
+STARTCHAR DIAERESIS
+ENCODING 168
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 1 1 7
+BITMAP
+A0
+ENDCHAR
+STARTCHAR COPYRIGHT SIGN
+ENCODING 169
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+A8
+C8
+A8
+88
+70
+ENDCHAR
+STARTCHAR FEMININE ORDINAL INDICATOR
+ENCODING 170
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 6 1 1
+BITMAP
+70
+90
+B0
+50
+00
+F0
+ENDCHAR
+STARTCHAR LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ENCODING 171
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 1
+BITMAP
+24
+48
+90
+48
+24
+ENDCHAR
+STARTCHAR NOT SIGN
+ENCODING 172
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 2 1 2
+BITMAP
+F0
+10
+ENDCHAR
+STARTCHAR SOFT HYPHEN
+ENCODING 173
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 1 1 3
+BITMAP
+F0
+ENDCHAR
+STARTCHAR REGISTERED SIGN
+ENCODING 174
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+E8
+C8
+C8
+88
+70
+ENDCHAR
+STARTCHAR MACRON
+ENCODING 175
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 1 0 7
+BITMAP
+F8
+ENDCHAR
+STARTCHAR DEGREE SIGN
+ENCODING 176
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 4
+BITMAP
+40
+A0
+40
+ENDCHAR
+STARTCHAR PLUS-MINUS SIGN
+ENCODING 177
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+20
+20
+F8
+20
+20
+F8
+ENDCHAR
+STARTCHAR SUPERSCRIPT TWO
+ENCODING 178
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 3
+BITMAP
+60
+90
+20
+40
+F0
+ENDCHAR
+STARTCHAR SUPERSCRIPT THREE
+ENCODING 179
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 3
+BITMAP
+E0
+10
+60
+10
+E0
+ENDCHAR
+STARTCHAR ACUTE ACCENT
+ENCODING 180
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 2 2 6
+BITMAP
+40
+80
+ENDCHAR
+STARTCHAR MICRO SIGN
+ENCODING 181
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 -1
+BITMAP
+88
+88
+88
+C8
+B0
+80
+ENDCHAR
+STARTCHAR PILCROW SIGN
+ENCODING 182
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+78
+E8
+E8
+68
+28
+28
+28
+ENDCHAR
+STARTCHAR MIDDLE DOT
+ENCODING 183
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 1 2 3
+BITMAP
+80
+ENDCHAR
+STARTCHAR CEDILLA
+ENCODING 184
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 2 2 -2
+BITMAP
+40
+80
+ENDCHAR
+STARTCHAR SUPERSCRIPT ONE
+ENCODING 185
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 3
+BITMAP
+40
+C0
+40
+40
+E0
+ENDCHAR
+STARTCHAR MASCULINE ORDINAL INDICATOR
+ENCODING 186
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 6 1 1
+BITMAP
+60
+90
+90
+60
+00
+F0
+ENDCHAR
+STARTCHAR RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ENCODING 187
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 1
+BITMAP
+90
+48
+24
+48
+90
+ENDCHAR
+STARTCHAR VULGAR FRACTION ONE QUARTER
+ENCODING 188
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -1
+BITMAP
+40
+C0
+40
+40
+E4
+0C
+14
+3C
+04
+ENDCHAR
+STARTCHAR VULGAR FRACTION ONE HALF
+ENCODING 189
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -1
+BITMAP
+40
+C0
+40
+40
+E8
+14
+04
+08
+1C
+ENDCHAR
+STARTCHAR VULGAR FRACTION THREE QUARTERS
+ENCODING 190
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+C0
+20
+40
+20
+C8
+18
+28
+78
+08
+ENDCHAR
+STARTCHAR INVERTED QUESTION MARK
+ENCODING 191
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+00
+20
+40
+80
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER A WITH GRAVE
+ENCODING 192
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+40
+20
+70
+D8
+D8
+F8
+D8
+D8
+D8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER A WITH ACUTE
+ENCODING 193
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+10
+20
+70
+D8
+D8
+F8
+D8
+D8
+D8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ENCODING 194
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+20
+50
+00
+70
+D8
+D8
+F8
+D8
+D8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER A WITH TILDE
+ENCODING 195
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+68
+B0
+00
+70
+D8
+D8
+F8
+D8
+D8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER A WITH DIAERESIS
+ENCODING 196
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+50
+00
+70
+D8
+D8
+F8
+D8
+D8
+D8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER A WITH RING ABOVE
+ENCODING 197
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+20
+50
+20
+70
+D8
+D8
+F8
+D8
+D8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER AE
+ENCODING 198
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+78
+A0
+A0
+F0
+A0
+A0
+B8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER C WITH CEDILLA
+ENCODING 199
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+70
+C8
+C0
+C0
+C0
+C8
+70
+20
+40
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER E WITH GRAVE
+ENCODING 200
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+40
+20
+F8
+C0
+C0
+F0
+C0
+C0
+F8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER E WITH ACUTE
+ENCODING 201
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+10
+20
+F8
+C0
+C0
+F0
+C0
+C0
+F8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ENCODING 202
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+20
+50
+F8
+C0
+C0
+F0
+C0
+C0
+F8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER E WITH DIAERESIS
+ENCODING 203
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+50
+00
+F8
+C0
+C0
+F0
+C0
+C0
+F8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER I WITH GRAVE
+ENCODING 204
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 9 1 0
+BITMAP
+40
+20
+00
+F0
+60
+60
+60
+60
+F0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER I WITH ACUTE
+ENCODING 205
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 9 1 0
+BITMAP
+40
+80
+00
+F0
+60
+60
+60
+60
+F0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ENCODING 206
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 9 1 0
+BITMAP
+40
+A0
+00
+F0
+60
+60
+60
+60
+F0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER I WITH DIAERESIS
+ENCODING 207
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 9 1 0
+BITMAP
+A0
+00
+F0
+60
+60
+60
+60
+60
+F0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER ETH
+ENCODING 208
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+48
+48
+E8
+48
+48
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER N WITH TILDE
+ENCODING 209
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+68
+B0
+88
+C8
+A8
+98
+88
+88
+88
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER O WITH GRAVE
+ENCODING 210
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+40
+20
+70
+D8
+D8
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER O WITH ACUTE
+ENCODING 211
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+10
+20
+70
+D8
+D8
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ENCODING 212
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+20
+50
+00
+70
+D8
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER O WITH TILDE
+ENCODING 213
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+68
+B0
+70
+D8
+D8
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER O WITH DIAERESIS
+ENCODING 214
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+50
+00
+70
+D8
+D8
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR MULTIPLICATION SIGN
+ENCODING 215
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 1
+BITMAP
+88
+50
+20
+50
+88
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER O WITH STROKE
+ENCODING 216
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+98
+A8
+C8
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER U WITH GRAVE
+ENCODING 217
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+40
+20
+D8
+D8
+D8
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER U WITH ACUTE
+ENCODING 218
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+10
+20
+D8
+D8
+D8
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ENCODING 219
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+10
+20
+D8
+D8
+D8
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER U WITH DIAERESIS
+ENCODING 220
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+50
+00
+D8
+D8
+D8
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER Y WITH ACUTE
+ENCODING 221
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 0
+BITMAP
+10
+20
+D8
+D8
+D8
+70
+30
+30
+30
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER THORN
+ENCODING 222
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+80
+F0
+88
+88
+F0
+80
+80
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER SHARP S
+ENCODING 223
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+30
+48
+88
+90
+90
+88
+88
+B0
+80
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER A WITH GRAVE
+ENCODING 224
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+10
+00
+70
+18
+78
+D8
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER A WITH ACUTE
+ENCODING 225
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+70
+18
+78
+D8
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER A WITH CIRCUMFLEX
+ENCODING 226
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+00
+70
+18
+78
+D8
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER A WITH TILDE
+ENCODING 227
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+68
+B0
+00
+70
+18
+78
+D8
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER A WITH DIAERESIS
+ENCODING 228
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+50
+00
+70
+18
+78
+D8
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER A WITH RING ABOVE
+ENCODING 229
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+20
+70
+18
+78
+D8
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER AE
+ENCODING 230
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+A8
+B8
+A0
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER C WITH CEDILLA
+ENCODING 231
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+78
+C0
+C0
+C0
+78
+20
+40
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER E WITH GRAVE
+ENCODING 232
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+40
+20
+00
+70
+D8
+F8
+C0
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER E WITH ACUTE
+ENCODING 233
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+70
+D8
+F8
+C0
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER E WITH CIRCUMFLEX
+ENCODING 234
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+00
+70
+D8
+F8
+C0
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER E WITH DIAERESIS
+ENCODING 235
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+50
+00
+70
+D8
+F8
+C0
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER I WITH GRAVE
+ENCODING 236
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 1 0
+BITMAP
+40
+20
+00
+E0
+60
+60
+60
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER I WITH ACUTE
+ENCODING 237
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 1 0
+BITMAP
+40
+80
+00
+E0
+60
+60
+60
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER I WITH CIRCUMFLEX
+ENCODING 238
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 1 0
+BITMAP
+40
+A0
+00
+E0
+60
+60
+60
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER I WITH DIAERESIS
+ENCODING 239
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 1 0
+BITMAP
+A0
+00
+E0
+60
+60
+60
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER ETH
+ENCODING 240
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+60
+60
+10
+78
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER N WITH TILDE
+ENCODING 241
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+A0
+00
+F0
+C8
+C8
+C8
+C8
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER O WITH GRAVE
+ENCODING 242
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+40
+20
+00
+70
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER O WITH ACUTE
+ENCODING 243
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+70
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER O WITH CIRCUMFLEX
+ENCODING 244
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+00
+70
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER O WITH TILDE
+ENCODING 245
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+A0
+00
+70
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER O WITH DIAERESIS
+ENCODING 246
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+50
+00
+70
+D8
+D8
+D8
+70
+ENDCHAR
+STARTCHAR DIVISION SIGN
+ENCODING 247
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 1
+BITMAP
+20
+00
+F8
+00
+20
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER O WITH STROKE
+ENCODING 248
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+98
+A8
+C8
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER U WITH GRAVE
+ENCODING 249
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+40
+20
+00
+D8
+D8
+D8
+D8
+68
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER U WITH ACUTE
+ENCODING 250
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+D8
+D8
+D8
+D8
+68
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER U WITH CIRCUMFLEX
+ENCODING 251
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+00
+D8
+D8
+D8
+D8
+68
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER U WITH DIAERESIS
+ENCODING 252
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+50
+00
+D8
+D8
+D8
+D8
+68
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER Y WITH ACUTE
+ENCODING 253
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 10 0 -2
+BITMAP
+10
+20
+00
+D8
+D8
+D8
+D8
+78
+18
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER THORN
+ENCODING 254
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+80
+80
+F0
+88
+88
+88
+F0
+80
+80
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER Y WITH DIAERESIS
+ENCODING 255
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+50
+00
+D8
+D8
+D8
+D8
+78
+18
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER A WITH MACRON
+ENCODING 256
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+00
+70
+88
+88
+F8
+88
+88
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER A WITH MACRON
+ENCODING 257
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+00
+70
+08
+78
+88
+78
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER A WITH BREVE
+ENCODING 258
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+70
+70
+88
+88
+F8
+88
+88
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER A WITH BREVE
+ENCODING 259
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+70
+00
+70
+08
+78
+88
+78
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER A WITH OGONEK
+ENCODING 260
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+20
+50
+88
+88
+F8
+88
+88
+10
+18
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER A WITH OGONEK
+ENCODING 261
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+70
+08
+78
+88
+78
+10
+18
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER C WITH ACUTE
+ENCODING 262
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+70
+88
+80
+80
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER C WITH ACUTE
+ENCODING 263
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+70
+88
+80
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+ENCODING 264
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+70
+88
+80
+80
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER C WITH CIRCUMFLEX
+ENCODING 265
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+00
+70
+88
+80
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER C WITH DOT ABOVE
+ENCODING 266
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+00
+70
+88
+80
+80
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER C WITH DOT ABOVE
+ENCODING 267
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+00
+70
+88
+80
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER C WITH CARON
+ENCODING 268
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+20
+70
+88
+80
+80
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER C WITH CARON
+ENCODING 269
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+20
+00
+70
+88
+80
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER D WITH CARON
+ENCODING 270
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+20
+F0
+88
+88
+88
+88
+F0
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER D WITH CARON
+ENCODING 271
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+20
+08
+68
+98
+88
+98
+68
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER D WITH STROKE
+ENCODING 272
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+78
+44
+44
+E4
+44
+44
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER D WITH STROKE
+ENCODING 273
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+10
+38
+10
+70
+90
+90
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER E WITH MACRON
+ENCODING 274
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+00
+F8
+80
+F0
+80
+80
+F8
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER E WITH MACRON
+ENCODING 275
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+00
+70
+88
+F8
+80
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER E WITH BREVE
+ENCODING 276
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+70
+F8
+80
+F0
+80
+80
+F8
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER E WITH BREVE
+ENCODING 277
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+70
+00
+70
+88
+F8
+80
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER E WITH DOT ABOVE
+ENCODING 278
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+00
+F8
+80
+F0
+80
+80
+F8
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER E WITH DOT ABOVE
+ENCODING 279
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+00
+70
+88
+F8
+80
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER E WITH OGONEK
+ENCODING 280
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+F8
+80
+80
+F0
+80
+80
+F8
+20
+30
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER E WITH OGONEK
+ENCODING 281
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+70
+88
+F8
+80
+70
+20
+30
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER E WITH CARON
+ENCODING 282
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+20
+F8
+80
+F0
+80
+80
+F8
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER E WITH CARON
+ENCODING 283
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+20
+00
+70
+88
+F8
+80
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+ENCODING 284
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+70
+88
+80
+98
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER G WITH CIRCUMFLEX
+ENCODING 285
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+20
+50
+00
+68
+90
+60
+80
+70
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER G WITH BREVE
+ENCODING 286
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+70
+70
+88
+80
+98
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER G WITH BREVE
+ENCODING 287
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+88
+70
+00
+68
+90
+60
+80
+70
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER G WITH DOT ABOVE
+ENCODING 288
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+00
+70
+88
+80
+98
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER G WITH DOT ABOVE
+ENCODING 289
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+20
+00
+68
+90
+60
+80
+70
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER G WITH CEDILLA
+ENCODING 290
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 -2
+BITMAP
+70
+88
+80
+98
+88
+70
+20
+40
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER G WITH CEDILLA
+ENCODING 291
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+40
+60
+00
+68
+90
+60
+80
+70
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+ENCODING 292
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+00
+88
+88
+F8
+88
+88
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER H WITH CIRCUMFLEX
+ENCODING 293
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+28
+80
+80
+F0
+88
+88
+88
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER H WITH STROKE
+ENCODING 294
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+48
+FC
+48
+78
+48
+48
+48
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER H WITH STROKE
+ENCODING 295
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+40
+E0
+58
+64
+44
+44
+44
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER I WITH TILDE
+ENCODING 296
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 1 0
+BITMAP
+50
+A0
+E0
+40
+40
+40
+40
+E0
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER I WITH TILDE
+ENCODING 297
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 1 0
+BITMAP
+50
+A0
+00
+60
+20
+20
+20
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER I WITH MACRON
+ENCODING 298
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 8 1 0
+BITMAP
+E0
+00
+E0
+40
+40
+40
+40
+E0
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER I WITH MACRON
+ENCODING 299
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+E0
+00
+C0
+40
+40
+40
+E0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER I WITH BREVE
+ENCODING 300
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+70
+70
+20
+20
+20
+20
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER I WITH BREVE
+ENCODING 301
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+70
+00
+60
+20
+20
+20
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER I WITH OGONEK
+ENCODING 302
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 9 1 -2
+BITMAP
+E0
+40
+40
+40
+40
+40
+E0
+40
+60
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER I WITH OGONEK
+ENCODING 303
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 9 1 -2
+BITMAP
+40
+00
+C0
+40
+40
+40
+E0
+40
+60
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER I WITH DOT ABOVE
+ENCODING 304
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 8 1 0
+BITMAP
+40
+00
+E0
+40
+40
+40
+40
+E0
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER DOTLESS I
+ENCODING 305
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+C0
+40
+40
+40
+E0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LIGATURE IJ
+ENCODING 306
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+B8
+88
+88
+88
+88
+A8
+90
+ENDCHAR
+STARTCHAR LATIN SMALL LIGATURE IJ
+ENCODING 307
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 9 1 -2
+BITMAP
+90
+00
+B0
+90
+90
+90
+90
+10
+60
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+ENCODING 308
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+28
+38
+10
+10
+10
+90
+60
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER J WITH CIRCUMFLEX
+ENCODING 309
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+10
+28
+00
+30
+10
+10
+10
+90
+90
+60
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER K WITH CEDILLA
+ENCODING 310
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+88
+90
+A0
+C0
+A0
+90
+88
+20
+60
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER K WITH CEDILLA
+ENCODING 311
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+80
+80
+88
+90
+E0
+90
+88
+20
+60
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER KRA
+ENCODING 312
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+88
+90
+E0
+90
+88
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER L WITH ACUTE
+ENCODING 313
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+A0
+80
+80
+80
+80
+80
+F8
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER L WITH ACUTE
+ENCODING 314
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 8 1 0
+BITMAP
+20
+40
+C0
+40
+40
+40
+40
+E0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER L WITH CEDILLA
+ENCODING 315
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+80
+80
+80
+80
+80
+80
+F8
+20
+60
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER L WITH CEDILLA
+ENCODING 316
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 9 1 -2
+BITMAP
+C0
+40
+40
+40
+40
+40
+E0
+40
+C0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER L WITH CARON
+ENCODING 317
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+28
+90
+80
+80
+80
+80
+80
+F8
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER L WITH CARON
+ENCODING 318
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 8 1 0
+BITMAP
+A0
+40
+C0
+40
+40
+40
+40
+E0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER L WITH MIDDLE DOT
+ENCODING 319
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+80
+80
+A0
+80
+80
+80
+F8
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER L WITH MIDDLE DOT
+ENCODING 320
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 1 0
+BITMAP
+C0
+40
+50
+40
+40
+40
+E0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER L WITH STROKE
+ENCODING 321
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+40
+40
+60
+C0
+40
+40
+7C
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER L WITH STROKE
+ENCODING 322
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+C0
+40
+60
+C0
+40
+40
+E0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER N WITH ACUTE
+ENCODING 323
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+88
+C8
+A8
+98
+88
+88
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER N WITH ACUTE
+ENCODING 324
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+B0
+C8
+88
+88
+88
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER N WITH CEDILLA
+ENCODING 325
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+88
+88
+C8
+A8
+98
+88
+88
+20
+40
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER N WITH CEDILLA
+ENCODING 326
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+B0
+C8
+88
+88
+88
+20
+40
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER N WITH CARON
+ENCODING 327
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+20
+88
+C8
+A8
+98
+88
+88
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER N WITH CARON
+ENCODING 328
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+20
+00
+B0
+C8
+88
+88
+88
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+ENCODING 329
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 8 0 0
+BITMAP
+C0
+40
+80
+28
+34
+24
+24
+24
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER ENG
+ENCODING 330
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+88
+88
+C8
+A8
+98
+88
+88
+08
+30
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER ENG
+ENCODING 331
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+B0
+C8
+88
+88
+88
+08
+30
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER O WITH MACRON
+ENCODING 332
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+00
+70
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER O WITH MACRON
+ENCODING 333
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+00
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER O WITH BREVE
+ENCODING 334
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+70
+70
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER O WITH BREVE
+ENCODING 335
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+70
+00
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+ENCODING 336
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+48
+90
+70
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER O WITH DOUBLE ACUTE
+ENCODING 337
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+48
+90
+00
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LIGATURE OE
+ENCODING 338
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+78
+A0
+A0
+B0
+A0
+A0
+78
+ENDCHAR
+STARTCHAR LATIN SMALL LIGATURE OE
+ENCODING 339
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+A8
+B0
+A0
+78
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER R WITH ACUTE
+ENCODING 340
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+F0
+88
+F0
+A0
+90
+88
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER R WITH ACUTE
+ENCODING 341
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+B0
+C8
+80
+80
+80
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER R WITH CEDILLA
+ENCODING 342
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+78
+44
+44
+78
+50
+48
+44
+20
+C0
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER R WITH CEDILLA
+ENCODING 343
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 -2
+BITMAP
+58
+64
+40
+40
+40
+20
+C0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER R WITH CARON
+ENCODING 344
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+20
+F0
+88
+F0
+A0
+90
+88
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER R WITH CARON
+ENCODING 345
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+20
+00
+B0
+C8
+80
+80
+80
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER S WITH ACUTE
+ENCODING 346
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+78
+80
+70
+08
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER S WITH ACUTE
+ENCODING 347
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+70
+80
+70
+08
+F0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+ENCODING 348
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+78
+80
+70
+08
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER S WITH CIRCUMFLEX
+ENCODING 349
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+00
+70
+80
+70
+08
+F0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER S WITH CEDILLA
+ENCODING 350
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+70
+88
+80
+70
+08
+88
+70
+20
+40
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER S WITH CEDILLA
+ENCODING 351
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+70
+80
+70
+08
+F0
+20
+40
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER S WITH CARON
+ENCODING 352
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+20
+70
+80
+70
+08
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER S WITH CARON
+ENCODING 353
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+20
+00
+70
+80
+70
+08
+F0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER T WITH CEDILLA
+ENCODING 354
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+F8
+20
+20
+20
+20
+20
+20
+10
+60
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER T WITH CEDILLA
+ENCODING 355
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+40
+40
+F0
+40
+40
+48
+30
+10
+60
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER T WITH CARON
+ENCODING 356
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+20
+F8
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER T WITH CARON
+ENCODING 357
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+A0
+40
+40
+F0
+40
+40
+48
+30
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER T WITH STROKE
+ENCODING 358
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+20
+20
+70
+20
+20
+20
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER T WITH STROKE
+ENCODING 359
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+40
+F0
+40
+F0
+40
+48
+30
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER U WITH TILDE
+ENCODING 360
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+28
+50
+00
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER U WITH TILDE
+ENCODING 361
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+28
+50
+00
+88
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER U WITH MACRON
+ENCODING 362
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+00
+88
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER U WITH MACRON
+ENCODING 363
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+00
+88
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER U WITH BREVE
+ENCODING 364
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+70
+00
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER U WITH BREVE
+ENCODING 365
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+70
+00
+88
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER U WITH RING ABOVE
+ENCODING 366
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+A8
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER U WITH RING ABOVE
+ENCODING 367
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+20
+88
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+ENCODING 368
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+48
+90
+00
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER U WITH DOUBLE ACUTE
+ENCODING 369
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+48
+90
+00
+88
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER U WITH OGONEK
+ENCODING 370
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+88
+88
+88
+88
+88
+88
+70
+20
+30
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER U WITH OGONEK
+ENCODING 371
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+88
+88
+88
+88
+70
+10
+18
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+ENCODING 372
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+00
+88
+A8
+A8
+D8
+88
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER W WITH CIRCUMFLEX
+ENCODING 373
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+00
+88
+88
+A8
+A8
+50
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+ENCODING 374
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+00
+88
+50
+20
+20
+20
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER Y WITH CIRCUMFLEX
+ENCODING 375
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+20
+50
+00
+88
+88
+98
+68
+08
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER Y WITH DIAERESIS
+ENCODING 376
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+00
+88
+50
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER Z WITH ACUTE
+ENCODING 377
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+F8
+10
+20
+40
+80
+F8
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER Z WITH ACUTE
+ENCODING 378
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+F8
+10
+20
+40
+F8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER Z WITH DOT ABOVE
+ENCODING 379
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+00
+F8
+10
+20
+40
+80
+F8
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER Z WITH DOT ABOVE
+ENCODING 380
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+00
+F8
+10
+20
+40
+F8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER Z WITH CARON
+ENCODING 381
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+20
+F8
+10
+20
+40
+80
+F8
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER Z WITH CARON
+ENCODING 382
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+20
+00
+F8
+10
+20
+40
+F8
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER LONG S
+ENCODING 383
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+30
+48
+40
+C0
+40
+40
+40
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER SCHWA
+ENCODING 399
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+08
+F8
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER F WITH HOOK
+ENCODING 402
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 -1
+BITMAP
+10
+28
+20
+70
+20
+20
+A0
+40
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER O WITH HORN
+ENCODING 416
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+64
+94
+98
+90
+90
+90
+60
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER O WITH HORN
+ENCODING 417
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 0
+BITMAP
+64
+98
+90
+90
+60
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER U WITH HORN
+ENCODING 431
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+94
+94
+98
+90
+90
+90
+60
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER U WITH HORN
+ENCODING 432
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 0
+BITMAP
+94
+98
+90
+B0
+50
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER Z WITH STROKE
+ENCODING 437
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+08
+10
+F8
+40
+80
+F8
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER Z WITH STROKE
+ENCODING 438
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F8
+10
+F8
+40
+F8
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER O WITH CARON
+ENCODING 465
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+20
+70
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER O WITH CARON
+ENCODING 466
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+20
+00
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER G WITH CARON
+ENCODING 486
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+20
+70
+88
+80
+98
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER G WITH CARON
+ENCODING 487
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+50
+20
+00
+68
+90
+60
+80
+70
+88
+70
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+ENCODING 506
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+20
+50
+70
+88
+F8
+88
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+ENCODING 507
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+20
+50
+20
+78
+88
+78
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER AE WITH ACUTE
+ENCODING 508
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 8 0 0
+BITMAP
+08
+10
+7C
+90
+9C
+F0
+90
+9C
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER AE WITH ACUTE
+ENCODING 509
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 8 0 0
+BITMAP
+08
+10
+00
+78
+14
+7C
+90
+7C
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+ENCODING 510
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+70
+98
+A8
+A8
+C8
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER O WITH STROKE AND ACUTE
+ENCODING 511
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+78
+98
+A8
+C8
+F0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER S WITH COMMA BELOW
+ENCODING 536
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+70
+88
+80
+70
+08
+88
+70
+20
+40
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER S WITH COMMA BELOW
+ENCODING 537
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+70
+80
+70
+08
+F0
+20
+40
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER T WITH COMMA BELOW
+ENCODING 538
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+F8
+20
+20
+20
+20
+20
+20
+10
+20
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER T WITH COMMA BELOW
+ENCODING 539
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+40
+40
+F0
+40
+40
+48
+30
+10
+20
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER SCHWA
+ENCODING 601
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+08
+F8
+88
+70
+ENDCHAR
+STARTCHAR MODIFIER LETTER APOSTROPHE
+ENCODING 700
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 3 2 4
+BITMAP
+C0
+40
+80
+ENDCHAR
+STARTCHAR MODIFIER LETTER REVERSED COMMA
+ENCODING 701
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 3 2 4
+BITMAP
+C0
+80
+40
+ENDCHAR
+STARTCHAR MODIFIER LETTER CIRCUMFLEX ACCENT
+ENCODING 710
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 2 1 6
+BITMAP
+40
+A0
+ENDCHAR
+STARTCHAR CARON
+ENCODING 711
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 2 1 6
+BITMAP
+A0
+40
+ENDCHAR
+STARTCHAR MODIFIER LETTER MACRON
+ENCODING 713
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 1 1 7
+BITMAP
+E0
+ENDCHAR
+STARTCHAR MODIFIER LETTER PLUS SIGN
+ENCODING 726
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 5
+BITMAP
+40
+E0
+40
+ENDCHAR
+STARTCHAR BREVE
+ENCODING 728
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 2 0 6
+BITMAP
+88
+70
+ENDCHAR
+STARTCHAR DOT ABOVE
+ENCODING 729
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 1 2 7
+BITMAP
+80
+ENDCHAR
+STARTCHAR RING ABOVE
+ENCODING 730
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 5
+BITMAP
+40
+A0
+40
+ENDCHAR
+STARTCHAR OGONEK
+ENCODING 731
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 2 2 -2
+BITMAP
+80
+C0
+ENDCHAR
+STARTCHAR SMALL TILDE
+ENCODING 732
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 2 1 6
+BITMAP
+50
+A0
+ENDCHAR
+STARTCHAR DOUBLE ACUTE ACCENT
+ENCODING 733
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 2 0 6
+BITMAP
+48
+90
+ENDCHAR
+STARTCHAR COMBINING GRAVE ACCENT
+ENCODING 768
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 2 2 6
+BITMAP
+80
+40
+ENDCHAR
+STARTCHAR COMBINING ACUTE ACCENT
+ENCODING 769
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 2 2 6
+BITMAP
+40
+80
+ENDCHAR
+STARTCHAR COMBINING CIRCUMFLEX ACCENT
+ENCODING 770
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 2 1 6
+BITMAP
+40
+A0
+ENDCHAR
+STARTCHAR COMBINING TILDE
+ENCODING 771
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 2 1 6
+BITMAP
+50
+A0
+ENDCHAR
+STARTCHAR COMBINING MACRON
+ENCODING 772
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 1 1 7
+BITMAP
+E0
+ENDCHAR
+STARTCHAR COMBINING OVERLINE
+ENCODING 773
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 1 0 7
+BITMAP
+F8
+ENDCHAR
+STARTCHAR COMBINING BREVE
+ENCODING 774
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 2 0 6
+BITMAP
+88
+70
+ENDCHAR
+STARTCHAR COMBINING DOT ABOVE
+ENCODING 775
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 1 2 7
+BITMAP
+80
+ENDCHAR
+STARTCHAR COMBINING DIAERESIS
+ENCODING 776
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 1 1 7
+BITMAP
+A0
+ENDCHAR
+STARTCHAR COMBINING HOOK ABOVE
+ENCODING 777
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 5
+BITMAP
+C0
+20
+40
+ENDCHAR
+STARTCHAR COMBINING RING ABOVE
+ENCODING 778
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 5
+BITMAP
+40
+A0
+40
+ENDCHAR
+STARTCHAR COMBINING DOUBLE ACUTE ACCENT
+ENCODING 779
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 2 0 6
+BITMAP
+48
+90
+ENDCHAR
+STARTCHAR COMBINING CARON
+ENCODING 780
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 2 1 6
+BITMAP
+A0
+40
+ENDCHAR
+STARTCHAR COMBINING VERTICAL LINE ABOVE
+ENCODING 781
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 2 2 6
+BITMAP
+80
+80
+ENDCHAR
+STARTCHAR COMBINING DOUBLE VERTICAL LINE ABOVE
+ENCODING 782
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 2 1 6
+BITMAP
+A0
+A0
+ENDCHAR
+STARTCHAR COMBINING DOUBLE GRAVE ACCENT
+ENCODING 783
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 2 0 6
+BITMAP
+90
+48
+ENDCHAR
+STARTCHAR COMBINING CANDRABINDU
+ENCODING 784
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 2 0 6
+BITMAP
+A8
+70
+ENDCHAR
+STARTCHAR COMBINING INVERTED BREVE
+ENCODING 785
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 2 0 6
+BITMAP
+70
+88
+ENDCHAR
+STARTCHAR COMBINING DOT BELOW
+ENCODING 803
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 1 2 -2
+BITMAP
+80
+ENDCHAR
+STARTCHAR COMBINING DIAERESIS BELOW
+ENCODING 804
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 1 1 -2
+BITMAP
+A0
+ENDCHAR
+STARTCHAR COMBINING LONG SOLIDUS OVERLAY
+ENCODING 824
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 6 1 0
+BITMAP
+20
+20
+40
+40
+80
+80
+ENDCHAR
+STARTCHAR COMBINING GRAVE TONE MARK
+ENCODING 832
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 2 2 6
+BITMAP
+80
+40
+ENDCHAR
+STARTCHAR COMBINING ACUTE TONE MARK
+ENCODING 833
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 2 2 6
+BITMAP
+40
+80
+ENDCHAR
+STARTCHAR GREEK NUMERAL SIGN
+ENCODING 884
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 2 2 5
+BITMAP
+40
+80
+ENDCHAR
+STARTCHAR GREEK LOWER NUMERAL SIGN
+ENCODING 885
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 2 2 -2
+BITMAP
+40
+80
+ENDCHAR
+STARTCHAR GREEK YPOGEGRAMMENI
+ENCODING 890
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 2 2 -2
+BITMAP
+80
+C0
+ENDCHAR
+STARTCHAR GREEK QUESTION MARK
+ENCODING 894
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 -1
+BITMAP
+40
+E0
+40
+00
+60
+40
+80
+ENDCHAR
+STARTCHAR GREEK TONOS
+ENCODING 900
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 2 2 5
+BITMAP
+40
+80
+ENDCHAR
+STARTCHAR GREEK DIALYTIKA TONOS
+ENCODING 901
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 2 0 5
+BITMAP
+10
+A8
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH TONOS
+ENCODING 902
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+58
+A4
+24
+24
+3C
+24
+24
+ENDCHAR
+STARTCHAR GREEK ANO TELEIA
+ENCODING 903
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 1 2 4
+BITMAP
+80
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER EPSILON WITH TONOS
+ENCODING 904
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+7C
+A0
+20
+38
+20
+20
+3C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ETA WITH TONOS
+ENCODING 905
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+64
+A4
+24
+3C
+24
+24
+24
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER IOTA WITH TONOS
+ENCODING 906
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+5C
+88
+08
+08
+08
+08
+1C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMICRON WITH TONOS
+ENCODING 908
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+58
+A4
+24
+24
+24
+24
+18
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER UPSILON WITH TONOS
+ENCODING 910
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+54
+94
+14
+08
+08
+08
+08
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMEGA WITH TONOS
+ENCODING 911
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+58
+A4
+24
+24
+24
+18
+3C
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+ENCODING 912
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+A8
+00
+20
+20
+20
+28
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA
+ENCODING 913
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+50
+88
+88
+F8
+88
+88
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER BETA
+ENCODING 914
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F0
+88
+88
+F0
+88
+88
+F0
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER GAMMA
+ENCODING 915
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+80
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER DELTA
+ENCODING 916
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+50
+50
+50
+88
+88
+F8
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER EPSILON
+ENCODING 917
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+80
+80
+F0
+80
+80
+F8
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ZETA
+ENCODING 918
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+08
+10
+20
+40
+80
+F8
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ETA
+ENCODING 919
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+88
+88
+F8
+88
+88
+88
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER THETA
+ENCODING 920
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+88
+F8
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER IOTA
+ENCODING 921
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+E0
+40
+40
+40
+40
+40
+E0
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER KAPPA
+ENCODING 922
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+90
+A0
+C0
+A0
+90
+88
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER LAMDA
+ENCODING 923
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+50
+50
+50
+88
+88
+88
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER MU
+ENCODING 924
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+88
+D8
+A8
+88
+88
+88
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER NU
+ENCODING 925
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+88
+C8
+A8
+98
+88
+88
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER XI
+ENCODING 926
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+00
+00
+70
+00
+00
+F8
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMICRON
+ENCODING 927
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER PI
+ENCODING 928
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+88
+88
+88
+88
+88
+88
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER RHO
+ENCODING 929
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F0
+88
+88
+F0
+80
+80
+80
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER SIGMA
+ENCODING 931
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+80
+40
+20
+40
+80
+F8
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER TAU
+ENCODING 932
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+20
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER UPSILON
+ENCODING 933
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+88
+50
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER PHI
+ENCODING 934
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+70
+A8
+A8
+A8
+70
+20
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER CHI
+ENCODING 935
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+88
+50
+20
+50
+88
+88
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER PSI
+ENCODING 936
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+A8
+A8
+A8
+A8
+70
+20
+20
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMEGA
+ENCODING 937
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+88
+88
+88
+50
+D8
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+ENCODING 938
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 8 1 0
+BITMAP
+A0
+00
+E0
+40
+40
+40
+40
+E0
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+ENCODING 939
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+00
+88
+88
+50
+20
+20
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH TONOS
+ENCODING 940
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+70
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER EPSILON WITH TONOS
+ENCODING 941
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+70
+88
+60
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH TONOS
+ENCODING 942
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+10
+20
+00
+B0
+C8
+88
+88
+88
+08
+08
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER IOTA WITH TONOS
+ENCODING 943
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 8 1 0
+BITMAP
+40
+80
+00
+80
+80
+80
+A0
+40
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+ENCODING 944
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+A8
+00
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA
+ENCODING 945
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER BETA
+ENCODING 946
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+60
+90
+90
+F0
+88
+88
+F0
+80
+80
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER GAMMA
+ENCODING 947
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+88
+88
+50
+50
+20
+20
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER DELTA
+ENCODING 948
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+60
+90
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER EPSILON
+ENCODING 949
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+88
+60
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ZETA
+ENCODING 950
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+F8
+20
+40
+40
+80
+80
+70
+08
+30
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA
+ENCODING 951
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+B0
+C8
+88
+88
+88
+08
+08
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER THETA
+ENCODING 952
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 1 0
+BITMAP
+60
+90
+90
+F0
+90
+90
+60
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER IOTA
+ENCODING 953
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+80
+80
+80
+A0
+40
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER KAPPA
+ENCODING 954
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+88
+90
+E0
+90
+88
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER LAMDA
+ENCODING 955
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+68
+98
+88
+88
+88
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER MU
+ENCODING 956
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+88
+88
+88
+D8
+A8
+80
+80
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER NU
+ENCODING 957
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+88
+88
+50
+50
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER XI
+ENCODING 958
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+F8
+20
+40
+30
+40
+80
+70
+08
+30
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMICRON
+ENCODING 959
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER PI
+ENCODING 960
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F8
+50
+50
+50
+50
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER RHO
+ENCODING 961
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+70
+88
+88
+88
+F0
+80
+80
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER FINAL SIGMA
+ENCODING 962
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+70
+88
+80
+80
+70
+08
+30
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER SIGMA
+ENCODING 963
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+78
+90
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER TAU
+ENCODING 964
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F8
+20
+20
+20
+10
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER UPSILON
+ENCODING 965
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER PHI
+ENCODING 966
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+50
+A8
+A8
+A8
+70
+20
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER CHI
+ENCODING 967
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+88
+50
+50
+20
+50
+50
+88
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER PSI
+ENCODING 968
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+A8
+A8
+A8
+A8
+70
+20
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA
+ENCODING 969
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+88
+A8
+A8
+A8
+50
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER IOTA WITH DIALYTIKA
+ENCODING 970
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+00
+20
+20
+20
+28
+10
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+ENCODING 971
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+00
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMICRON WITH TONOS
+ENCODING 972
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER UPSILON WITH TONOS
+ENCODING 973
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH TONOS
+ENCODING 974
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+88
+A8
+A8
+A8
+50
+ENDCHAR
+STARTCHAR GREEK BETA SYMBOL
+ENCODING 976
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+60
+90
+A0
+F0
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK THETA SYMBOL
+ENCODING 977
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+60
+90
+78
+10
+90
+90
+60
+ENDCHAR
+STARTCHAR GREEK UPSILON WITH HOOK SYMBOL
+ENCODING 978
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+50
+A8
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR GREEK UPSILON WITH ACUTE AND HOOK SYMBOL
+ENCODING 979
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+50
+A8
+20
+A0
+A0
+20
+20
+ENDCHAR
+STARTCHAR GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
+ENCODING 980
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+00
+50
+A8
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR GREEK PHI SYMBOL
+ENCODING 981
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+20
+20
+70
+A8
+A8
+A8
+70
+20
+20
+ENDCHAR
+STARTCHAR GREEK PI SYMBOL
+ENCODING 982
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F8
+88
+A8
+A8
+50
+ENDCHAR
+STARTCHAR GREEK KAI SYMBOL
+ENCODING 983
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+10
+20
+88
+50
+60
+60
+98
+08
+70
+ENDCHAR
+STARTCHAR GREEK LETTER STIGMA
+ENCODING 986
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 -1
+BITMAP
+30
+48
+80
+80
+80
+70
+08
+10
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER STIGMA
+ENCODING 987
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 -2
+BITMAP
+08
+70
+80
+80
+80
+70
+08
+30
+ENDCHAR
+STARTCHAR GREEK LETTER DIGAMMA
+ENCODING 988
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+80
+80
+F0
+80
+80
+80
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER DIGAMMA
+ENCODING 989
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 1 -2
+BITMAP
+F0
+80
+80
+E0
+80
+80
+80
+ENDCHAR
+STARTCHAR GREEK LETTER KOPPA
+ENCODING 990
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+80
+88
+98
+A8
+C8
+88
+08
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER KOPPA
+ENCODING 991
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+20
+40
+40
+80
+F8
+08
+10
+10
+20
+ENDCHAR
+STARTCHAR GREEK LETTER SAMPI
+ENCODING 992
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+50
+50
+50
+98
+A8
+A8
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER SAMPI
+ENCODING 993
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+C0
+20
+10
+30
+58
+28
+08
+08
+08
+ENDCHAR
+STARTCHAR GREEK KAPPA SYMBOL
+ENCODING 1008
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+88
+50
+60
+60
+98
+ENDCHAR
+STARTCHAR GREEK RHO SYMBOL
+ENCODING 1009
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+70
+88
+88
+88
+F0
+80
+70
+ENDCHAR
+STARTCHAR GREEK LUNATE SIGMA SYMBOL
+ENCODING 1010
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+88
+80
+88
+70
+ENDCHAR
+STARTCHAR GREEK LETTER YOT
+ENCODING 1011
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 9 1 -2
+BITMAP
+10
+00
+30
+10
+10
+10
+90
+90
+60
+ENDCHAR
+STARTCHAR GREEK CAPITAL THETA SYMBOL
+ENCODING 1012
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+88
+F8
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK LUNATE EPSILON SYMBOL
+ENCODING 1013
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 0
+BITMAP
+70
+80
+E0
+80
+70
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER IO
+ENCODING 1025
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+00
+F8
+80
+F0
+80
+80
+F8
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER DJE
+ENCODING 1026
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+E0
+40
+40
+70
+48
+48
+48
+08
+30
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER GJE
+ENCODING 1027
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+F8
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER UKRAINIAN IE
+ENCODING 1028
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+80
+E0
+80
+88
+70
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER DZE
+ENCODING 1029
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+80
+70
+08
+88
+70
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+ENCODING 1030
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+E0
+40
+40
+40
+40
+40
+E0
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER YI
+ENCODING 1031
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 8 1 0
+BITMAP
+A0
+00
+E0
+40
+40
+40
+40
+E0
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER JE
+ENCODING 1032
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+38
+08
+08
+08
+08
+88
+70
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER LJE
+ENCODING 1033
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+30
+50
+50
+98
+94
+94
+98
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER NJE
+ENCODING 1034
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+A0
+A0
+A0
+F0
+A8
+A8
+B0
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER TSHE
+ENCODING 1035
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+E0
+40
+40
+70
+48
+48
+48
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER KJE
+ENCODING 1036
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+88
+90
+E0
+90
+88
+88
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER SHORT U
+ENCODING 1038
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+20
+88
+88
+50
+20
+40
+80
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER DZHE
+ENCODING 1039
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 -1
+BITMAP
+88
+88
+88
+88
+88
+88
+F8
+20
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER A
+ENCODING 1040
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+50
+88
+88
+F8
+88
+88
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER BE
+ENCODING 1041
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F0
+80
+80
+F0
+88
+88
+F0
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER VE
+ENCODING 1042
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F0
+88
+88
+F0
+88
+88
+F0
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER GHE
+ENCODING 1043
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+80
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER DE
+ENCODING 1044
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 -1
+BITMAP
+18
+28
+28
+48
+48
+48
+F8
+88
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER IE
+ENCODING 1045
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+80
+80
+F0
+80
+80
+F8
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER ZHE
+ENCODING 1046
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+A8
+A8
+A8
+70
+A8
+A8
+A8
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER ZE
+ENCODING 1047
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+08
+30
+08
+88
+70
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER I
+ENCODING 1048
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+88
+98
+A8
+C8
+88
+88
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER SHORT I
+ENCODING 1049
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+20
+88
+98
+A8
+C8
+88
+88
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER KA
+ENCODING 1050
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+90
+A0
+C0
+A0
+90
+88
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER EL
+ENCODING 1051
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+38
+48
+48
+48
+48
+48
+88
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER EM
+ENCODING 1052
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+88
+D8
+A8
+88
+88
+88
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER EN
+ENCODING 1053
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+88
+88
+F8
+88
+88
+88
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER O
+ENCODING 1054
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER PE
+ENCODING 1055
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+88
+88
+88
+88
+88
+88
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER ER
+ENCODING 1056
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F0
+88
+88
+F0
+80
+80
+80
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER ES
+ENCODING 1057
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+80
+80
+80
+88
+70
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER TE
+ENCODING 1058
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+20
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER U
+ENCODING 1059
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+88
+88
+50
+20
+40
+80
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER EF
+ENCODING 1060
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+70
+A8
+A8
+A8
+70
+20
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER HA
+ENCODING 1061
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+88
+50
+20
+50
+88
+88
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER TSE
+ENCODING 1062
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+90
+90
+90
+90
+90
+90
+F8
+08
+08
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER CHE
+ENCODING 1063
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+88
+88
+78
+08
+08
+08
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER SHA
+ENCODING 1064
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+A8
+A8
+A8
+A8
+A8
+A8
+F8
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER SHCHA
+ENCODING 1065
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+A8
+A8
+A8
+A8
+A8
+A8
+F8
+08
+08
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER HARD SIGN
+ENCODING 1066
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+C0
+40
+40
+70
+48
+48
+70
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER YERU
+ENCODING 1067
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+88
+88
+E8
+98
+98
+E8
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER SOFT SIGN
+ENCODING 1068
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 1 0
+BITMAP
+80
+80
+80
+E0
+90
+90
+E0
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER E
+ENCODING 1069
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+08
+38
+08
+88
+70
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER YU
+ENCODING 1070
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+90
+A8
+A8
+E8
+A8
+A8
+90
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER YA
+ENCODING 1071
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+78
+88
+88
+78
+28
+48
+88
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER A
+ENCODING 1072
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+08
+78
+88
+78
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER BE
+ENCODING 1073
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+78
+80
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER VE
+ENCODING 1074
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F0
+88
+F0
+88
+F0
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER GHE
+ENCODING 1075
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 0
+BITMAP
+F0
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER DE
+ENCODING 1076
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 -1
+BITMAP
+30
+50
+50
+50
+F8
+88
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER IE
+ENCODING 1077
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+88
+F8
+80
+70
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER ZHE
+ENCODING 1078
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+A8
+A8
+70
+A8
+A8
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER ZE
+ENCODING 1079
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+88
+30
+88
+70
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER I
+ENCODING 1080
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+88
+98
+A8
+C8
+88
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER SHORT I
+ENCODING 1081
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+50
+20
+88
+98
+A8
+C8
+88
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER KA
+ENCODING 1082
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+88
+90
+E0
+90
+88
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER EL
+ENCODING 1083
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+38
+48
+48
+48
+88
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER EM
+ENCODING 1084
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+88
+D8
+A8
+88
+88
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER EN
+ENCODING 1085
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+88
+88
+F8
+88
+88
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER O
+ENCODING 1086
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER PE
+ENCODING 1087
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F8
+88
+88
+88
+88
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER ER
+ENCODING 1088
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+B0
+C8
+88
+C8
+B0
+80
+80
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER ES
+ENCODING 1089
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+88
+80
+88
+70
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER TE
+ENCODING 1090
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F8
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER U
+ENCODING 1091
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+88
+88
+88
+78
+08
+88
+70
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER EF
+ENCODING 1092
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+20
+20
+70
+A8
+A8
+A8
+70
+20
+20
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER HA
+ENCODING 1093
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+88
+50
+20
+50
+88
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER TSE
+ENCODING 1094
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+90
+90
+90
+90
+F8
+08
+08
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER CHE
+ENCODING 1095
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+88
+88
+78
+08
+08
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER SHA
+ENCODING 1096
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+A8
+A8
+A8
+A8
+F8
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER SHCHA
+ENCODING 1097
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+A8
+A8
+A8
+A8
+F8
+08
+08
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER HARD SIGN
+ENCODING 1098
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+C0
+40
+70
+48
+70
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER YERU
+ENCODING 1099
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+88
+88
+E8
+98
+E8
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER SOFT SIGN
+ENCODING 1100
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 0
+BITMAP
+80
+80
+E0
+90
+E0
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER E
+ENCODING 1101
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+88
+38
+88
+70
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER YU
+ENCODING 1102
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+90
+A8
+E8
+A8
+90
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER YA
+ENCODING 1103
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+78
+88
+78
+88
+88
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER IO
+ENCODING 1105
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+50
+00
+70
+88
+F8
+80
+70
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER DJE
+ENCODING 1106
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+40
+F0
+40
+70
+48
+48
+48
+08
+30
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER GJE
+ENCODING 1107
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 1 0
+BITMAP
+20
+40
+00
+F0
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER UKRAINIAN IE
+ENCODING 1108
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 0
+BITMAP
+60
+90
+C0
+90
+60
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER DZE
+ENCODING 1109
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+80
+70
+08
+F0
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+ENCODING 1110
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+40
+00
+C0
+40
+40
+40
+E0
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER YI
+ENCODING 1111
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+C0
+40
+40
+40
+E0
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER JE
+ENCODING 1112
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 9 1 -2
+BITMAP
+10
+00
+30
+10
+10
+10
+90
+90
+60
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER LJE
+ENCODING 1113
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 0
+BITMAP
+30
+50
+98
+94
+98
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER NJE
+ENCODING 1114
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+A0
+A0
+F0
+A8
+B0
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER TSHE
+ENCODING 1115
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+40
+F0
+40
+70
+48
+48
+48
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER KJE
+ENCODING 1116
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+10
+20
+88
+90
+E0
+90
+88
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER SHORT U
+ENCODING 1118
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+50
+20
+88
+88
+98
+68
+08
+88
+70
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER DZHE
+ENCODING 1119
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 -1
+BITMAP
+88
+88
+88
+88
+F8
+20
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER YAT
+ENCODING 1122
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+40
+F0
+40
+70
+48
+48
+70
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER YAT
+ENCODING 1123
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+40
+40
+F0
+40
+70
+48
+70
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER PSI
+ENCODING 1136
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+A8
+A8
+A8
+70
+20
+20
+20
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER PSI
+ENCODING 1137
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+A8
+A8
+70
+20
+20
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER FITA
+ENCODING 1138
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+88
+F8
+88
+88
+70
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER FITA
+ENCODING 1139
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+88
+F8
+88
+70
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER IZHITSA
+ENCODING 1140
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+90
+90
+50
+50
+50
+20
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER IZHITSA
+ENCODING 1141
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+88
+90
+50
+50
+20
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+ENCODING 1142
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+28
+80
+88
+50
+50
+50
+20
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+ENCODING 1143
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+50
+28
+80
+88
+50
+50
+20
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+ENCODING 1168
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+08
+F8
+80
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER GHE WITH UPTURN
+ENCODING 1169
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 6 1 0
+BITMAP
+10
+F0
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER GHE WITH STROKE
+ENCODING 1170
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+78
+40
+40
+F0
+40
+40
+40
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER GHE WITH STROKE
+ENCODING 1171
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+78
+40
+F0
+40
+40
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
+ENCODING 1174
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+A8
+A8
+A8
+70
+A8
+A8
+A8
+04
+04
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER ZHE WITH DESCENDER
+ENCODING 1175
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 -2
+BITMAP
+A8
+A8
+70
+A8
+A8
+04
+04
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER KA WITH DESCENDER
+ENCODING 1178
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+88
+90
+A0
+C0
+A0
+90
+88
+04
+04
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER KA WITH DESCENDER
+ENCODING 1179
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 -2
+BITMAP
+88
+90
+E0
+90
+88
+04
+04
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER STRAIGHT U
+ENCODING 1198
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+88
+50
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER STRAIGHT U
+ENCODING 1199
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+88
+88
+50
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
+ENCODING 1200
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+88
+50
+F8
+20
+20
+20
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
+ENCODING 1201
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+88
+88
+50
+F8
+20
+20
+20
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER HA WITH DESCENDER
+ENCODING 1202
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+88
+88
+50
+20
+50
+88
+88
+04
+04
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER HA WITH DESCENDER
+ENCODING 1203
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 -2
+BITMAP
+88
+50
+20
+50
+88
+04
+04
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER SHHA
+ENCODING 1210
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+80
+80
+F0
+88
+88
+88
+88
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER SHHA
+ENCODING 1211
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 1 0
+BITMAP
+80
+80
+A0
+D0
+90
+90
+90
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER SCHWA
+ENCODING 1240
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+08
+F8
+88
+88
+70
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER SCHWA
+ENCODING 1241
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+08
+F8
+88
+70
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER I WITH MACRON
+ENCODING 1250
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 8 1 0
+BITMAP
+E0
+00
+E0
+40
+40
+40
+40
+E0
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER I WITH MACRON
+ENCODING 1251
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+E0
+00
+C0
+40
+40
+40
+E0
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER BARRED O
+ENCODING 1256
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+88
+F8
+88
+88
+70
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER BARRED O
+ENCODING 1257
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+88
+F8
+88
+70
+ENDCHAR
+STARTCHAR CYRILLIC CAPITAL LETTER U WITH MACRON
+ENCODING 1262
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+00
+88
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR CYRILLIC SMALL LETTER U WITH MACRON
+ENCODING 1263
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+00
+88
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR HEBREW LETTER ALEF
+ENCODING 1488
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+90
+48
+B0
+90
+C8
+ENDCHAR
+STARTCHAR HEBREW LETTER BET
+ENCODING 1489
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F0
+08
+08
+08
+F8
+ENDCHAR
+STARTCHAR HEBREW LETTER GIMEL
+ENCODING 1490
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 0
+BITMAP
+60
+20
+20
+20
+D0
+ENDCHAR
+STARTCHAR HEBREW LETTER DALET
+ENCODING 1491
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F8
+10
+10
+10
+10
+ENDCHAR
+STARTCHAR HEBREW LETTER HE
+ENCODING 1492
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F8
+10
+90
+90
+90
+ENDCHAR
+STARTCHAR HEBREW LETTER VAV
+ENCODING 1493
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 5 2 0
+BITMAP
+C0
+40
+40
+40
+40
+ENDCHAR
+STARTCHAR HEBREW LETTER ZAYIN
+ENCODING 1494
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 6 1 0
+BITMAP
+80
+60
+40
+40
+40
+40
+ENDCHAR
+STARTCHAR HEBREW LETTER HET
+ENCODING 1495
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F8
+88
+88
+88
+88
+ENDCHAR
+STARTCHAR HEBREW LETTER TET
+ENCODING 1496
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+B8
+A8
+88
+88
+F8
+ENDCHAR
+STARTCHAR HEBREW LETTER YOD
+ENCODING 1497
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 2 2 3
+BITMAP
+C0
+40
+ENDCHAR
+STARTCHAR HEBREW LETTER FINAL KAF
+ENCODING 1498
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 -2
+BITMAP
+E0
+20
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR HEBREW LETTER KAF
+ENCODING 1499
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F0
+08
+08
+08
+F0
+ENDCHAR
+STARTCHAR HEBREW LETTER LAMED
+ENCODING 1500
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+80
+80
+F0
+08
+08
+10
+20
+ENDCHAR
+STARTCHAR HEBREW LETTER FINAL MEM
+ENCODING 1501
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F0
+88
+88
+88
+F8
+ENDCHAR
+STARTCHAR HEBREW LETTER MEM
+ENCODING 1502
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+B0
+48
+88
+88
+B8
+ENDCHAR
+STARTCHAR HEBREW LETTER FINAL NUN
+ENCODING 1503
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 7 2 -2
+BITMAP
+C0
+40
+40
+40
+40
+40
+40
+ENDCHAR
+STARTCHAR HEBREW LETTER NUN
+ENCODING 1504
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 5 2 0
+BITMAP
+C0
+40
+40
+40
+C0
+ENDCHAR
+STARTCHAR HEBREW LETTER SAMEKH
+ENCODING 1505
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F8
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR HEBREW LETTER AYIN
+ENCODING 1506
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+48
+48
+48
+48
+F0
+ENDCHAR
+STARTCHAR HEBREW LETTER FINAL PE
+ENCODING 1507
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 1 -2
+BITMAP
+F0
+90
+D0
+10
+10
+10
+10
+ENDCHAR
+STARTCHAR HEBREW LETTER PE
+ENCODING 1508
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+E0
+90
+C8
+08
+F8
+ENDCHAR
+STARTCHAR HEBREW LETTER FINAL TSADI
+ENCODING 1509
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 -2
+BITMAP
+A0
+A0
+A0
+C0
+80
+80
+80
+ENDCHAR
+STARTCHAR HEBREW LETTER TSADI
+ENCODING 1510
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+88
+50
+20
+10
+F8
+ENDCHAR
+STARTCHAR HEBREW LETTER QOF
+ENCODING 1511
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+F8
+08
+88
+88
+F0
+80
+80
+ENDCHAR
+STARTCHAR HEBREW LETTER RESH
+ENCODING 1512
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F0
+08
+08
+08
+08
+ENDCHAR
+STARTCHAR HEBREW LETTER SHIN
+ENCODING 1513
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+A8
+A8
+C8
+88
+F0
+ENDCHAR
+STARTCHAR HEBREW LETTER TAV
+ENCODING 1514
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F8
+88
+88
+48
+88
+ENDCHAR
+STARTCHAR RUNIC LETTER FEHU FEOH FE F
+ENCODING 5792
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 2 0
+BITMAP
+A0
+C0
+A0
+C0
+80
+80
+80
+ENDCHAR
+STARTCHAR RUNIC LETTER URUZ UR U
+ENCODING 5794
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 1 0
+BITMAP
+C0
+A0
+A0
+90
+90
+90
+90
+ENDCHAR
+STARTCHAR RUNIC LETTER YR
+ENCODING 5795
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+50
+88
+88
+A8
+A8
+A8
+ENDCHAR
+STARTCHAR RUNIC LETTER THURISAZ THURS THORN
+ENCODING 5798
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 2 0
+BITMAP
+80
+80
+C0
+A0
+C0
+80
+80
+ENDCHAR
+STARTCHAR RUNIC LETTER OS O
+ENCODING 5801
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+D0
+A8
+D0
+A0
+80
+80
+ENDCHAR
+STARTCHAR RUNIC LETTER AC A
+ENCODING 5802
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+D0
+A0
+C0
+A0
+80
+80
+ENDCHAR
+STARTCHAR RUNIC LETTER AESC
+ENCODING 5803
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 2 0
+BITMAP
+80
+C0
+A0
+C0
+A0
+80
+80
+ENDCHAR
+STARTCHAR RUNIC LETTER LONG-BRANCH-OSS O
+ENCODING 5804
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR RUNIC LETTER RAIDO RAD REID R
+ENCODING 5809
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 1 0
+BITMAP
+C0
+A0
+90
+A0
+C0
+A0
+80
+ENDCHAR
+STARTCHAR RUNIC LETTER CEN
+ENCODING 5811
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 1 0
+BITMAP
+80
+80
+C0
+A0
+A0
+90
+90
+ENDCHAR
+STARTCHAR RUNIC LETTER GEBO GYFU G
+ENCODING 5815
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+50
+50
+20
+50
+50
+88
+ENDCHAR
+STARTCHAR RUNIC LETTER GAR
+ENCODING 5816
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+70
+50
+A8
+50
+70
+88
+ENDCHAR
+STARTCHAR RUNIC LETTER WUNJO WYNN W
+ENCODING 5817
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 1 0
+BITMAP
+C0
+A0
+90
+A0
+C0
+80
+80
+ENDCHAR
+STARTCHAR RUNIC LETTER HAEGL H
+ENCODING 5819
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+88
+C8
+A8
+D8
+A8
+98
+ENDCHAR
+STARTCHAR RUNIC LETTER NAUDIZ NYD NAUD N
+ENCODING 5822
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+A0
+60
+30
+28
+20
+20
+ENDCHAR
+STARTCHAR RUNIC LETTER ISAZ IS ISS I
+ENCODING 5825
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 7 2 0
+BITMAP
+80
+80
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR RUNIC LETTER GER
+ENCODING 5828
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+20
+70
+A8
+70
+20
+20
+ENDCHAR
+STARTCHAR RUNIC LETTER IWAZ EOH
+ENCODING 5831
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+30
+28
+20
+A0
+60
+20
+ENDCHAR
+STARTCHAR RUNIC LETTER PERTHO PEORTH P
+ENCODING 5832
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+D0
+A0
+80
+A0
+D0
+88
+ENDCHAR
+STARTCHAR RUNIC LETTER ALGIZ EOLHX
+ENCODING 5833
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+A8
+A8
+A8
+70
+20
+20
+20
+ENDCHAR
+STARTCHAR RUNIC LETTER SIGEL LONG-BRANCH-SOL S
+ENCODING 5835
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+80
+88
+98
+A8
+C8
+88
+08
+ENDCHAR
+STARTCHAR RUNIC LETTER TIWAZ TIR TYR T
+ENCODING 5839
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+70
+A8
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR RUNIC LETTER BERKANAN BEORC BJARKAN B
+ENCODING 5842
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 1 0
+BITMAP
+C0
+A0
+90
+E0
+90
+A0
+C0
+ENDCHAR
+STARTCHAR RUNIC LETTER EHWAZ EH E
+ENCODING 5846
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+D8
+A8
+88
+88
+88
+88
+ENDCHAR
+STARTCHAR RUNIC LETTER MANNAZ MAN M
+ENCODING 5847
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+D8
+A8
+D8
+88
+88
+88
+ENDCHAR
+STARTCHAR RUNIC LETTER LAUKAZ LAGU LOGR L
+ENCODING 5850
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 2 0
+BITMAP
+80
+C0
+A0
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR RUNIC LETTER ING
+ENCODING 5853
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+50
+20
+50
+20
+50
+88
+ENDCHAR
+STARTCHAR RUNIC LETTER DAGAZ DAEG D
+ENCODING 5854
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+88
+D8
+A8
+D8
+88
+88
+ENDCHAR
+STARTCHAR RUNIC LETTER OTHALAN ETHEL O
+ENCODING 5855
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+50
+88
+50
+20
+50
+88
+ENDCHAR
+STARTCHAR RUNIC LETTER EAR
+ENCODING 5856
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+A8
+70
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR RUNIC LETTER IOR
+ENCODING 5857
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+A8
+70
+20
+70
+A8
+20
+20
+ENDCHAR
+STARTCHAR RUNIC LETTER CWEORTH
+ENCODING 5858
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+28
+30
+20
+20
+20
+60
+A0
+ENDCHAR
+STARTCHAR RUNIC LETTER CALC
+ENCODING 5859
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+20
+20
+70
+A8
+A8
+A8
+ENDCHAR
+STARTCHAR RUNIC LETTER STAN
+ENCODING 5861
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+D8
+A8
+88
+A8
+D8
+88
+ENDCHAR
+STARTCHAR RUNIC SINGLE PUNCTUATION
+ENCODING 5867
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 1 2 3
+BITMAP
+80
+ENDCHAR
+STARTCHAR RUNIC MULTIPLE PUNCTUATION
+ENCODING 5868
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 3 2 2
+BITMAP
+80
+00
+80
+ENDCHAR
+STARTCHAR RUNIC CROSS PUNCTUATION
+ENCODING 5869
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 2
+BITMAP
+A0
+40
+A0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER B WITH DOT ABOVE
+ENCODING 7682
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+00
+F0
+88
+F0
+88
+88
+F0
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER B WITH DOT ABOVE
+ENCODING 7683
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+90
+80
+B0
+C8
+88
+C8
+B0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER B WITH DOT BELOW
+ENCODING 7684
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER D WITH DOT ABOVE
+ENCODING 7690
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+00
+F0
+88
+88
+88
+88
+F0
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER D WITH DOT ABOVE
+ENCODING 7691
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+08
+08
+68
+98
+88
+98
+68
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER F WITH DOT ABOVE
+ENCODING 7710
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+00
+F8
+80
+F0
+80
+80
+80
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER F WITH DOT ABOVE
+ENCODING 7711
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+00
+30
+48
+40
+F0
+40
+40
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER M WITH DOT ABOVE
+ENCODING 7744
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+88
+88
+D8
+A8
+88
+88
+88
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER M WITH DOT ABOVE
+ENCODING 7745
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+00
+D0
+A8
+A8
+A8
+88
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER P WITH DOT ABOVE
+ENCODING 7766
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+00
+F0
+88
+88
+F0
+80
+80
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER P WITH DOT ABOVE
+ENCODING 7767
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+20
+00
+B0
+C8
+88
+C8
+B0
+80
+80
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER S WITH DOT ABOVE
+ENCODING 7776
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+00
+70
+80
+70
+08
+88
+70
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER S WITH DOT ABOVE
+ENCODING 7777
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+00
+70
+80
+70
+08
+F0
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER T WITH DOT ABOVE
+ENCODING 7786
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+00
+F8
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER T WITH DOT ABOVE
+ENCODING 7787
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+40
+00
+40
+F0
+40
+40
+48
+30
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER W WITH GRAVE
+ENCODING 7808
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+40
+20
+88
+88
+A8
+A8
+D8
+88
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER W WITH GRAVE
+ENCODING 7809
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+40
+20
+88
+88
+A8
+A8
+50
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER W WITH ACUTE
+ENCODING 7810
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+88
+88
+A8
+A8
+D8
+88
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER W WITH ACUTE
+ENCODING 7811
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+10
+20
+88
+88
+A8
+A8
+50
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER W WITH DIAERESIS
+ENCODING 7812
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+50
+00
+88
+88
+A8
+A8
+D8
+88
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER W WITH DIAERESIS
+ENCODING 7813
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+50
+00
+88
+88
+A8
+A8
+50
+ENDCHAR
+STARTCHAR LATIN CAPITAL LETTER Y WITH GRAVE
+ENCODING 7922
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+40
+20
+88
+50
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR LATIN SMALL LETTER Y WITH GRAVE
+ENCODING 7923
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+40
+20
+00
+88
+88
+98
+68
+08
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH PSILI
+ENCODING 7936
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+30
+10
+20
+70
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH DASIA
+ENCODING 7937
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+30
+20
+10
+70
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA
+ENCODING 7938
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+28
+40
+70
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA
+ENCODING 7939
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+48
+20
+70
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
+ENCODING 7940
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+68
+30
+40
+70
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
+ENCODING 7941
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+68
+50
+20
+70
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI
+ENCODING 7942
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+78
+10
+20
+70
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
+ENCODING 7943
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+78
+20
+10
+70
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH PSILI
+ENCODING 7944
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+64
+A4
+24
+3C
+24
+24
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH DASIA
+ENCODING 7945
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+A4
+64
+24
+3C
+24
+24
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
+ENCODING 7946
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+64
+A4
+A4
+7C
+24
+24
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
+ENCODING 7947
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+A4
+64
+A4
+7C
+24
+24
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+ENCODING 7948
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+64
+A4
+64
+BC
+24
+24
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+ENCODING 7949
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+A4
+64
+64
+BC
+24
+24
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
+ENCODING 7950
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+24
+E4
+64
+BC
+24
+24
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+ENCODING 7951
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+24
+E4
+A4
+7C
+24
+24
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER EPSILON WITH PSILI
+ENCODING 7952
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+30
+10
+20
+70
+88
+60
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER EPSILON WITH DASIA
+ENCODING 7953
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+30
+20
+10
+70
+88
+60
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA
+ENCODING 7954
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+28
+40
+70
+88
+60
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA
+ENCODING 7955
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+48
+20
+70
+88
+60
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
+ENCODING 7956
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+68
+30
+40
+70
+88
+60
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+ENCODING 7957
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+68
+50
+20
+70
+88
+60
+88
+70
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER EPSILON WITH PSILI
+ENCODING 7960
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+FC
+60
+A0
+38
+20
+20
+3C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER EPSILON WITH DASIA
+ENCODING 7961
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+FC
+A0
+60
+38
+20
+20
+3C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
+ENCODING 7962
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+FC
+60
+A0
+B8
+60
+20
+3C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
+ENCODING 7963
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+FC
+A0
+60
+B8
+60
+20
+3C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+ENCODING 7964
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+FC
+60
+A0
+78
+A0
+20
+3C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+ENCODING 7965
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+FC
+A0
+60
+78
+A0
+20
+3C
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH PSILI
+ENCODING 7968
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+30
+10
+20
+B0
+C8
+88
+88
+88
+08
+08
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH DASIA
+ENCODING 7969
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+30
+20
+10
+B0
+C8
+88
+88
+88
+08
+08
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH PSILI AND VARIA
+ENCODING 7970
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+70
+28
+40
+B0
+C8
+88
+88
+88
+08
+08
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH DASIA AND VARIA
+ENCODING 7971
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+70
+48
+20
+B0
+C8
+88
+88
+88
+08
+08
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH PSILI AND OXIA
+ENCODING 7972
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+68
+30
+40
+B0
+C8
+88
+88
+88
+08
+08
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH DASIA AND OXIA
+ENCODING 7973
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+68
+50
+20
+B0
+C8
+88
+88
+88
+08
+08
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI
+ENCODING 7974
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+78
+10
+20
+B0
+C8
+88
+88
+88
+08
+08
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
+ENCODING 7975
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+78
+20
+10
+B0
+C8
+88
+88
+88
+08
+08
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ETA WITH PSILI
+ENCODING 7976
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+E4
+64
+A4
+3C
+24
+24
+24
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ETA WITH DASIA
+ENCODING 7977
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+E4
+A4
+64
+3C
+24
+24
+24
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
+ENCODING 7978
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+E4
+64
+A4
+BC
+64
+24
+24
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
+ENCODING 7979
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+E4
+A4
+64
+BC
+64
+24
+24
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+ENCODING 7980
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+E4
+64
+A4
+7C
+A4
+24
+24
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+ENCODING 7981
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+E4
+A4
+64
+7C
+A4
+24
+24
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
+ENCODING 7982
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+E4
+24
+E4
+7C
+A4
+24
+24
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+ENCODING 7983
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+E4
+24
+E4
+BC
+64
+24
+24
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER IOTA WITH PSILI
+ENCODING 7984
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 8 1 0
+BITMAP
+C0
+40
+80
+80
+80
+80
+A0
+40
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER IOTA WITH DASIA
+ENCODING 7985
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 8 1 0
+BITMAP
+C0
+80
+40
+80
+80
+80
+A0
+40
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER IOTA WITH PSILI AND VARIA
+ENCODING 7986
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 1 0
+BITMAP
+E0
+50
+80
+40
+40
+40
+50
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER IOTA WITH DASIA AND VARIA
+ENCODING 7987
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 1 0
+BITMAP
+E0
+90
+40
+40
+40
+40
+50
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
+ENCODING 7988
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 1 0
+BITMAP
+D0
+60
+80
+40
+40
+40
+50
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
+ENCODING 7989
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 1 0
+BITMAP
+D0
+A0
+40
+40
+40
+40
+50
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI
+ENCODING 7990
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 1 0
+BITMAP
+F0
+20
+40
+40
+40
+40
+50
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
+ENCODING 7991
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 1 0
+BITMAP
+F0
+40
+20
+40
+40
+40
+50
+20
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER IOTA WITH PSILI
+ENCODING 7992
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+DC
+48
+88
+08
+08
+08
+1C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER IOTA WITH DASIA
+ENCODING 7993
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+DC
+88
+48
+08
+08
+08
+1C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
+ENCODING 7994
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+DC
+48
+88
+88
+48
+08
+1C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
+ENCODING 7995
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+DC
+88
+48
+88
+48
+08
+1C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+ENCODING 7996
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+DC
+48
+88
+48
+88
+08
+1C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+ENCODING 7997
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+DC
+88
+48
+48
+88
+08
+1C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
+ENCODING 7998
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+DC
+08
+C8
+48
+88
+08
+1C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+ENCODING 7999
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+DC
+08
+C8
+88
+48
+08
+1C
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMICRON WITH PSILI
+ENCODING 8000
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+30
+10
+20
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMICRON WITH DASIA
+ENCODING 8001
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+30
+20
+10
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA
+ENCODING 8002
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+28
+40
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA
+ENCODING 8003
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+48
+20
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
+ENCODING 8004
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+68
+30
+40
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+ENCODING 8005
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+68
+50
+20
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMICRON WITH PSILI
+ENCODING 8008
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+64
+A4
+24
+24
+24
+18
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMICRON WITH DASIA
+ENCODING 8009
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+A4
+64
+24
+24
+24
+18
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
+ENCODING 8010
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+64
+A4
+A4
+64
+24
+18
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
+ENCODING 8011
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+A4
+64
+A4
+64
+24
+18
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+ENCODING 8012
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+64
+A4
+64
+A4
+24
+18
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+ENCODING 8013
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+A4
+64
+64
+A4
+24
+18
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER UPSILON WITH PSILI
+ENCODING 8016
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+30
+10
+20
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER UPSILON WITH DASIA
+ENCODING 8017
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+30
+20
+10
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+ENCODING 8018
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+28
+40
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA
+ENCODING 8019
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+48
+20
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+ENCODING 8020
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+68
+30
+40
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
+ENCODING 8021
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+68
+50
+20
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+ENCODING 8022
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+78
+10
+20
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+ENCODING 8023
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+78
+20
+10
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER UPSILON WITH DASIA
+ENCODING 8025
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D4
+94
+54
+08
+08
+08
+08
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+ENCODING 8027
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D4
+94
+54
+88
+48
+08
+08
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+ENCODING 8029
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D4
+94
+54
+48
+88
+08
+08
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+ENCODING 8031
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D4
+14
+D4
+88
+48
+08
+08
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH PSILI
+ENCODING 8032
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+30
+10
+20
+88
+A8
+A8
+A8
+50
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH DASIA
+ENCODING 8033
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+30
+20
+10
+88
+A8
+A8
+A8
+50
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA
+ENCODING 8034
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+28
+40
+88
+A8
+A8
+A8
+50
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA
+ENCODING 8035
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+70
+48
+20
+88
+A8
+A8
+A8
+50
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
+ENCODING 8036
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+68
+30
+40
+88
+A8
+A8
+A8
+50
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
+ENCODING 8037
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+68
+50
+20
+88
+A8
+A8
+A8
+50
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI
+ENCODING 8038
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+78
+10
+20
+88
+A8
+A8
+A8
+50
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
+ENCODING 8039
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+78
+20
+10
+88
+A8
+A8
+A8
+50
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMEGA WITH PSILI
+ENCODING 8040
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+64
+A4
+24
+24
+18
+3C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMEGA WITH DASIA
+ENCODING 8041
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+A4
+64
+24
+24
+18
+3C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
+ENCODING 8042
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+64
+A4
+A4
+64
+18
+3C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
+ENCODING 8043
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+A4
+64
+A4
+64
+18
+3C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+ENCODING 8044
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+64
+A4
+64
+A4
+18
+3C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+ENCODING 8045
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+A4
+64
+64
+A4
+18
+3C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
+ENCODING 8046
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+24
+E4
+64
+A4
+18
+3C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+ENCODING 8047
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+D8
+24
+E4
+A4
+64
+18
+3C
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH VARIA
+ENCODING 8048
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+40
+20
+00
+70
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH OXIA
+ENCODING 8049
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+70
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER EPSILON WITH VARIA
+ENCODING 8050
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+40
+20
+00
+70
+88
+60
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER EPSILON WITH OXIA
+ENCODING 8051
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+70
+88
+60
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH VARIA
+ENCODING 8052
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+40
+20
+00
+B0
+C8
+88
+88
+88
+08
+08
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH OXIA
+ENCODING 8053
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+10
+20
+00
+B0
+C8
+88
+88
+88
+08
+08
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER IOTA WITH VARIA
+ENCODING 8054
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 1 0
+BITMAP
+80
+40
+00
+40
+40
+40
+50
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER IOTA WITH OXIA
+ENCODING 8055
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 8 1 0
+BITMAP
+40
+80
+00
+80
+80
+80
+A0
+40
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMICRON WITH VARIA
+ENCODING 8056
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+40
+20
+00
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMICRON WITH OXIA
+ENCODING 8057
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER UPSILON WITH VARIA
+ENCODING 8058
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+40
+20
+00
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER UPSILON WITH OXIA
+ENCODING 8059
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH VARIA
+ENCODING 8060
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+40
+20
+00
+88
+A8
+A8
+A8
+50
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH OXIA
+ENCODING 8061
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+20
+00
+88
+A8
+A8
+A8
+50
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+ENCODING 8064
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+30
+10
+20
+70
+88
+88
+98
+68
+00
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+ENCODING 8065
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+30
+20
+10
+70
+88
+88
+98
+68
+00
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+ENCODING 8066
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+70
+28
+40
+70
+88
+88
+98
+68
+00
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+ENCODING 8067
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+70
+48
+20
+70
+88
+88
+98
+68
+00
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+ENCODING 8068
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+68
+30
+40
+70
+88
+88
+98
+68
+00
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+ENCODING 8069
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+68
+50
+20
+70
+88
+88
+98
+68
+00
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+ENCODING 8070
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+78
+10
+20
+70
+88
+88
+98
+68
+00
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+ENCODING 8071
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+78
+20
+10
+70
+88
+88
+98
+68
+00
+20
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+ENCODING 8072
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+D8
+64
+A4
+24
+3C
+24
+24
+00
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+ENCODING 8073
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+D8
+A4
+64
+24
+3C
+24
+24
+00
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+ENCODING 8074
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+D8
+64
+A4
+A4
+7C
+24
+24
+00
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+ENCODING 8075
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+D8
+A4
+64
+A4
+7C
+24
+24
+00
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+ENCODING 8076
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+D8
+64
+A4
+64
+BC
+24
+24
+00
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+ENCODING 8077
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+D8
+A4
+64
+64
+BC
+24
+24
+00
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+ENCODING 8078
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+D8
+24
+E4
+64
+BC
+24
+24
+00
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+ENCODING 8079
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+D8
+24
+E4
+A4
+7C
+24
+24
+00
+10
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+ENCODING 8080
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+30
+10
+20
+B0
+C8
+88
+88
+88
+08
+88
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+ENCODING 8081
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+30
+20
+10
+B0
+C8
+88
+88
+88
+08
+88
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+ENCODING 8082
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+70
+28
+40
+B0
+C8
+88
+88
+88
+08
+88
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+ENCODING 8083
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+70
+48
+20
+B0
+C8
+88
+88
+88
+08
+88
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+ENCODING 8084
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+68
+30
+40
+B0
+C8
+88
+88
+88
+08
+88
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+ENCODING 8085
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+68
+50
+20
+B0
+C8
+88
+88
+88
+08
+88
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+ENCODING 8086
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+78
+10
+20
+B0
+C8
+88
+88
+88
+08
+88
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+ENCODING 8087
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+78
+20
+10
+B0
+C8
+88
+88
+88
+08
+88
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+ENCODING 8088
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+E4
+64
+A4
+3C
+24
+24
+24
+00
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+ENCODING 8089
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+E4
+A4
+64
+3C
+24
+24
+24
+00
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+ENCODING 8090
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+E4
+64
+A4
+BC
+64
+24
+24
+00
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+ENCODING 8091
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+E4
+A4
+64
+BC
+64
+24
+24
+00
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+ENCODING 8092
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+E4
+64
+A4
+7C
+A4
+24
+24
+00
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+ENCODING 8093
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+E4
+A4
+64
+7C
+A4
+24
+24
+00
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+ENCODING 8094
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+E4
+24
+E4
+7C
+A4
+24
+24
+00
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+ENCODING 8095
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+E4
+24
+E4
+BC
+64
+24
+24
+00
+10
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+ENCODING 8096
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+30
+10
+20
+88
+A8
+A8
+A8
+50
+00
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+ENCODING 8097
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+30
+20
+10
+88
+A8
+A8
+A8
+50
+00
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+ENCODING 8098
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+70
+28
+40
+88
+A8
+A8
+A8
+50
+00
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+ENCODING 8099
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+70
+48
+20
+88
+A8
+A8
+A8
+50
+00
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+ENCODING 8100
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+68
+30
+40
+88
+A8
+A8
+A8
+50
+00
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+ENCODING 8101
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+68
+50
+20
+88
+A8
+A8
+A8
+50
+00
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+ENCODING 8102
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+78
+10
+20
+88
+A8
+A8
+A8
+50
+00
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+ENCODING 8103
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+78
+20
+10
+88
+A8
+A8
+A8
+50
+00
+20
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+ENCODING 8104
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+D8
+64
+A4
+24
+24
+18
+3C
+00
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+ENCODING 8105
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+D8
+A4
+64
+24
+24
+18
+3C
+00
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+ENCODING 8106
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+D8
+64
+A4
+A4
+64
+18
+3C
+00
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+ENCODING 8107
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+D8
+A4
+64
+A4
+64
+18
+3C
+00
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+ENCODING 8108
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+D8
+64
+A4
+64
+A4
+18
+3C
+00
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+ENCODING 8109
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+D8
+A4
+64
+64
+A4
+18
+3C
+00
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+ENCODING 8110
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+D8
+24
+E4
+64
+A4
+18
+3C
+00
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+ENCODING 8111
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+D8
+24
+E4
+A4
+64
+18
+3C
+00
+10
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH VRACHY
+ENCODING 8112
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+70
+00
+70
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH MACRON
+ENCODING 8113
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+00
+70
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+ENCODING 8114
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+40
+20
+00
+70
+88
+88
+98
+68
+00
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
+ENCODING 8115
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+70
+88
+88
+98
+68
+00
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+ENCODING 8116
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+10
+20
+00
+70
+88
+88
+98
+68
+00
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH PERISPOMENI
+ENCODING 8118
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+78
+00
+70
+88
+88
+98
+68
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+ENCODING 8119
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+78
+00
+70
+88
+88
+98
+68
+00
+20
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH VRACHY
+ENCODING 8120
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+70
+70
+88
+88
+F8
+88
+88
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH MACRON
+ENCODING 8121
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+F8
+00
+70
+88
+88
+F8
+88
+88
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH VARIA
+ENCODING 8122
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+98
+64
+24
+24
+3C
+24
+24
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH OXIA
+ENCODING 8123
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+58
+A4
+24
+24
+3C
+24
+24
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+ENCODING 8124
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+20
+50
+88
+88
+F8
+88
+88
+20
+30
+ENDCHAR
+STARTCHAR GREEK KORONIS
+ENCODING 8125
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 3 2 4
+BITMAP
+C0
+40
+80
+ENDCHAR
+STARTCHAR GREEK PROSGEGRAMMENI
+ENCODING 8126
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 3 2 0
+BITMAP
+80
+80
+40
+ENDCHAR
+STARTCHAR GREEK PSILI
+ENCODING 8127
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 3 2 4
+BITMAP
+C0
+40
+80
+ENDCHAR
+STARTCHAR GREEK PERISPOMENI
+ENCODING 8128
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 1 1 6
+BITMAP
+F0
+ENDCHAR
+STARTCHAR GREEK DIALYTIKA AND PERISPOMENI
+ENCODING 8129
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 3 0 4
+BITMAP
+F8
+00
+88
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+ENCODING 8130
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+40
+20
+00
+B0
+C8
+88
+88
+88
+08
+88
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
+ENCODING 8131
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+B0
+C8
+88
+88
+88
+08
+88
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+ENCODING 8132
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+10
+20
+00
+B0
+C8
+88
+88
+88
+08
+88
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH PERISPOMENI
+ENCODING 8134
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+78
+00
+B0
+C8
+88
+88
+88
+08
+08
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+ENCODING 8135
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+78
+00
+B0
+C8
+88
+88
+88
+08
+88
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER EPSILON WITH VARIA
+ENCODING 8136
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+BC
+60
+20
+38
+20
+20
+3C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER EPSILON WITH OXIA
+ENCODING 8137
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+7C
+A0
+20
+38
+20
+20
+3C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ETA WITH VARIA
+ENCODING 8138
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+A4
+64
+24
+3C
+24
+24
+24
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ETA WITH OXIA
+ENCODING 8139
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+64
+A4
+24
+3C
+24
+24
+24
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+ENCODING 8140
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+88
+88
+88
+F8
+88
+88
+88
+20
+30
+ENDCHAR
+STARTCHAR GREEK PSILI AND VARIA
+ENCODING 8141
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 3 1 4
+BITMAP
+E0
+50
+80
+ENDCHAR
+STARTCHAR GREEK PSILI AND OXIA
+ENCODING 8142
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 3 1 4
+BITMAP
+D0
+60
+80
+ENDCHAR
+STARTCHAR GREEK PSILI AND PERISPOMENI
+ENCODING 8143
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 3 1 4
+BITMAP
+F0
+20
+40
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER IOTA WITH VRACHY
+ENCODING 8144
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+70
+00
+20
+20
+20
+28
+10
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER IOTA WITH MACRON
+ENCODING 8145
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+00
+20
+20
+20
+28
+10
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+ENCODING 8146
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+40
+A8
+00
+20
+20
+20
+28
+10
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+ENCODING 8147
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+A8
+00
+20
+20
+20
+28
+10
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER IOTA WITH PERISPOMENI
+ENCODING 8150
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 1 0
+BITMAP
+F0
+00
+40
+40
+40
+50
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+ENCODING 8151
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+F8
+00
+88
+20
+20
+20
+28
+10
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER IOTA WITH VRACHY
+ENCODING 8152
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+70
+70
+20
+20
+20
+20
+70
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER IOTA WITH MACRON
+ENCODING 8153
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+F8
+00
+70
+20
+20
+20
+20
+70
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER IOTA WITH VARIA
+ENCODING 8154
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+9C
+48
+08
+08
+08
+08
+1C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER IOTA WITH OXIA
+ENCODING 8155
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+5C
+88
+08
+08
+08
+08
+1C
+ENDCHAR
+STARTCHAR GREEK DASIA AND VARIA
+ENCODING 8157
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 3 1 4
+BITMAP
+D0
+60
+80
+ENDCHAR
+STARTCHAR GREEK DASIA AND OXIA
+ENCODING 8158
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 3 1 4
+BITMAP
+D0
+A0
+40
+ENDCHAR
+STARTCHAR GREEK DASIA AND PERISPOMENI
+ENCODING 8159
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 3 1 4
+BITMAP
+F0
+40
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER UPSILON WITH VRACHY
+ENCODING 8160
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+70
+00
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER UPSILON WITH MACRON
+ENCODING 8161
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+00
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+ENCODING 8162
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+40
+A8
+00
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+ENCODING 8163
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+10
+A8
+00
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER RHO WITH PSILI
+ENCODING 8164
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+30
+10
+20
+70
+88
+88
+88
+F0
+80
+80
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER RHO WITH DASIA
+ENCODING 8165
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+30
+20
+10
+70
+88
+88
+88
+F0
+80
+80
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER UPSILON WITH PERISPOMENI
+ENCODING 8166
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+78
+00
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+ENCODING 8167
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+F8
+00
+88
+00
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER UPSILON WITH VRACHY
+ENCODING 8168
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+88
+70
+88
+88
+50
+20
+20
+20
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER UPSILON WITH MACRON
+ENCODING 8169
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+F8
+00
+88
+88
+50
+20
+20
+20
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER UPSILON WITH VARIA
+ENCODING 8170
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+94
+54
+14
+08
+08
+08
+08
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER UPSILON WITH OXIA
+ENCODING 8171
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+54
+94
+14
+08
+08
+08
+08
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER RHO WITH DASIA
+ENCODING 8172
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+F8
+A4
+64
+38
+20
+20
+20
+ENDCHAR
+STARTCHAR GREEK DIALYTIKA AND VARIA
+ENCODING 8173
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 2 0 5
+BITMAP
+40
+A8
+ENDCHAR
+STARTCHAR GREEK DIALYTIKA AND OXIA
+ENCODING 8174
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 2 0 5
+BITMAP
+10
+A8
+ENDCHAR
+STARTCHAR GREEK VARIA
+ENCODING 8175
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 2 2 5
+BITMAP
+80
+40
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+ENCODING 8178
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+40
+20
+00
+88
+A8
+A8
+A8
+50
+00
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
+ENCODING 8179
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -2
+BITMAP
+88
+A8
+A8
+A8
+50
+00
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+ENCODING 8180
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+10
+20
+00
+88
+A8
+A8
+A8
+50
+00
+20
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH PERISPOMENI
+ENCODING 8182
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+78
+00
+88
+A8
+A8
+A8
+50
+ENDCHAR
+STARTCHAR GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+ENCODING 8183
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+78
+00
+88
+A8
+A8
+A8
+50
+00
+20
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMICRON WITH VARIA
+ENCODING 8184
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+98
+64
+24
+24
+24
+24
+18
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMICRON WITH OXIA
+ENCODING 8185
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+58
+A4
+24
+24
+24
+24
+18
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMEGA WITH VARIA
+ENCODING 8186
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+98
+64
+24
+24
+24
+18
+3C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMEGA WITH OXIA
+ENCODING 8187
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+58
+A4
+24
+24
+24
+18
+3C
+ENDCHAR
+STARTCHAR GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+ENCODING 8188
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+70
+88
+88
+88
+88
+50
+D8
+20
+30
+ENDCHAR
+STARTCHAR GREEK OXIA
+ENCODING 8189
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 2 2 5
+BITMAP
+40
+80
+ENDCHAR
+STARTCHAR GREEK DASIA
+ENCODING 8190
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 3 2 4
+BITMAP
+C0
+80
+40
+ENDCHAR
+STARTCHAR HYPHEN
+ENCODING 8208
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 1 1 3
+BITMAP
+F0
+ENDCHAR
+STARTCHAR NON-BREAKING HYPHEN
+ENCODING 8209
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 1 1 3
+BITMAP
+F0
+ENDCHAR
+STARTCHAR FIGURE DASH
+ENCODING 8210
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 1 0 3
+BITMAP
+F8
+ENDCHAR
+STARTCHAR EN DASH
+ENCODING 8211
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 1 0 3
+BITMAP
+F8
+ENDCHAR
+STARTCHAR EM DASH
+ENCODING 8212
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 1 0 3
+BITMAP
+FC
+ENDCHAR
+STARTCHAR HORIZONTAL BAR
+ENCODING 8213
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 1 0 3
+BITMAP
+FC
+ENDCHAR
+STARTCHAR DOUBLE VERTICAL LINE
+ENCODING 8214
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 8 1 0
+BITMAP
+A0
+A0
+A0
+A0
+A0
+A0
+A0
+A0
+ENDCHAR
+STARTCHAR DOUBLE LOW LINE
+ENCODING 8215
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 3 0 -2
+BITMAP
+FC
+00
+FC
+ENDCHAR
+STARTCHAR LEFT SINGLE QUOTATION MARK
+ENCODING 8216
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 3 2 4
+BITMAP
+40
+80
+C0
+ENDCHAR
+STARTCHAR RIGHT SINGLE QUOTATION MARK
+ENCODING 8217
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 3 2 4
+BITMAP
+C0
+40
+80
+ENDCHAR
+STARTCHAR SINGLE LOW-9 QUOTATION MARK
+ENCODING 8218
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 3 2 -1
+BITMAP
+C0
+40
+80
+ENDCHAR
+STARTCHAR SINGLE HIGH-REVERSED-9 QUOTATION MARK
+ENCODING 8219
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 3 2 4
+BITMAP
+C0
+80
+40
+ENDCHAR
+STARTCHAR LEFT DOUBLE QUOTATION MARK
+ENCODING 8220
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 3 0 4
+BITMAP
+48
+90
+D8
+ENDCHAR
+STARTCHAR RIGHT DOUBLE QUOTATION MARK
+ENCODING 8221
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 3 0 4
+BITMAP
+D8
+48
+90
+ENDCHAR
+STARTCHAR DOUBLE LOW-9 QUOTATION MARK
+ENCODING 8222
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 3 0 -1
+BITMAP
+D8
+48
+90
+ENDCHAR
+STARTCHAR DOUBLE HIGH-REVERSED-9 QUOTATION MARK
+ENCODING 8223
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 3 0 4
+BITMAP
+D8
+90
+48
+ENDCHAR
+STARTCHAR DAGGER
+ENCODING 8224
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+20
+F8
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR DOUBLE DAGGER
+ENCODING 8225
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+20
+F8
+20
+F8
+20
+20
+ENDCHAR
+STARTCHAR BULLET
+ENCODING 8226
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 4 1 1
+BITMAP
+60
+F0
+F0
+60
+ENDCHAR
+STARTCHAR TRIANGULAR BULLET
+ENCODING 8227
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 3 0 2
+BITMAP
+20
+70
+F8
+ENDCHAR
+STARTCHAR ONE DOT LEADER
+ENCODING 8228
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 1 2 0
+BITMAP
+80
+ENDCHAR
+STARTCHAR TWO DOT LEADER
+ENCODING 8229
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 1 0 0
+BITMAP
+88
+ENDCHAR
+STARTCHAR HORIZONTAL ELLIPSIS
+ENCODING 8230
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 1 0 0
+BITMAP
+A8
+ENDCHAR
+STARTCHAR HYPHENATION POINT
+ENCODING 8231
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 1 2 3
+BITMAP
+C0
+ENDCHAR
+STARTCHAR PER MILLE SIGN
+ENCODING 8240
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+48
+A8
+50
+20
+68
+D4
+A8
+ENDCHAR
+STARTCHAR PRIME
+ENCODING 8242
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 3 2 5
+BITMAP
+40
+40
+80
+ENDCHAR
+STARTCHAR DOUBLE PRIME
+ENCODING 8243
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 3 1 5
+BITMAP
+50
+50
+A0
+ENDCHAR
+STARTCHAR TRIPLE PRIME
+ENCODING 8244
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 3 0 5
+BITMAP
+54
+54
+A8
+ENDCHAR
+STARTCHAR REVERSED PRIME
+ENCODING 8245
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 3 2 5
+BITMAP
+80
+80
+40
+ENDCHAR
+STARTCHAR REVERSED DOUBLE PRIME
+ENCODING 8246
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 3 1 5
+BITMAP
+A0
+A0
+50
+ENDCHAR
+STARTCHAR REVERSED TRIPLE PRIME
+ENCODING 8247
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 3 0 5
+BITMAP
+A8
+A8
+54
+ENDCHAR
+STARTCHAR SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+ENCODING 8249
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+20
+40
+80
+40
+20
+ENDCHAR
+STARTCHAR SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+ENCODING 8250
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+80
+40
+20
+40
+80
+ENDCHAR
+STARTCHAR DOUBLE EXCLAMATION MARK
+ENCODING 8252
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+A0
+A0
+A0
+A0
+00
+A0
+ENDCHAR
+STARTCHAR OVERLINE
+ENCODING 8254
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 1 0 7
+BITMAP
+FC
+ENDCHAR
+STARTCHAR FRACTION SLASH
+ENCODING 8260
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+08
+08
+10
+20
+40
+80
+80
+ENDCHAR
+STARTCHAR SUPERSCRIPT ZERO
+ENCODING 8304
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 3
+BITMAP
+60
+90
+90
+90
+60
+ENDCHAR
+STARTCHAR SUPERSCRIPT LATIN SMALL LETTER I
+ENCODING 8305
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 3
+BITMAP
+40
+00
+C0
+40
+E0
+ENDCHAR
+STARTCHAR SUPERSCRIPT FOUR
+ENCODING 8308
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 3
+BITMAP
+20
+60
+A0
+F0
+20
+ENDCHAR
+STARTCHAR SUPERSCRIPT FIVE
+ENCODING 8309
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 3
+BITMAP
+F0
+80
+E0
+10
+E0
+ENDCHAR
+STARTCHAR SUPERSCRIPT SIX
+ENCODING 8310
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 3
+BITMAP
+70
+80
+E0
+90
+60
+ENDCHAR
+STARTCHAR SUPERSCRIPT SEVEN
+ENCODING 8311
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 3
+BITMAP
+F0
+10
+20
+40
+40
+ENDCHAR
+STARTCHAR SUPERSCRIPT EIGHT
+ENCODING 8312
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 3
+BITMAP
+60
+90
+60
+90
+60
+ENDCHAR
+STARTCHAR SUPERSCRIPT NINE
+ENCODING 8313
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 3
+BITMAP
+60
+90
+70
+10
+60
+ENDCHAR
+STARTCHAR SUPERSCRIPT PLUS SIGN
+ENCODING 8314
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 4
+BITMAP
+40
+E0
+40
+ENDCHAR
+STARTCHAR SUPERSCRIPT MINUS
+ENCODING 8315
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 1 1 5
+BITMAP
+E0
+ENDCHAR
+STARTCHAR SUPERSCRIPT EQUALS SIGN
+ENCODING 8316
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 3 1 4
+BITMAP
+F0
+00
+F0
+ENDCHAR
+STARTCHAR SUPERSCRIPT LEFT PARENTHESIS
+ENCODING 8317
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 5 2 3
+BITMAP
+40
+80
+80
+80
+40
+ENDCHAR
+STARTCHAR SUPERSCRIPT RIGHT PARENTHESIS
+ENCODING 8318
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 5 2 3
+BITMAP
+80
+40
+40
+40
+80
+ENDCHAR
+STARTCHAR SUPERSCRIPT LATIN SMALL LETTER N
+ENCODING 8319
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 4 1 3
+BITMAP
+A0
+D0
+90
+90
+ENDCHAR
+STARTCHAR SUBSCRIPT ZERO
+ENCODING 8320
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 -2
+BITMAP
+60
+90
+90
+90
+60
+ENDCHAR
+STARTCHAR SUBSCRIPT ONE
+ENCODING 8321
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 -2
+BITMAP
+40
+C0
+40
+40
+E0
+ENDCHAR
+STARTCHAR SUBSCRIPT TWO
+ENCODING 8322
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 -2
+BITMAP
+60
+90
+20
+40
+F0
+ENDCHAR
+STARTCHAR SUBSCRIPT THREE
+ENCODING 8323
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 -2
+BITMAP
+E0
+10
+60
+10
+E0
+ENDCHAR
+STARTCHAR SUBSCRIPT FOUR
+ENCODING 8324
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 -2
+BITMAP
+20
+60
+A0
+F0
+20
+ENDCHAR
+STARTCHAR SUBSCRIPT FIVE
+ENCODING 8325
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 -2
+BITMAP
+F0
+80
+E0
+10
+E0
+ENDCHAR
+STARTCHAR SUBSCRIPT SIX
+ENCODING 8326
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 -2
+BITMAP
+70
+80
+E0
+90
+60
+ENDCHAR
+STARTCHAR SUBSCRIPT SEVEN
+ENCODING 8327
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 -2
+BITMAP
+F0
+10
+20
+40
+40
+ENDCHAR
+STARTCHAR SUBSCRIPT EIGHT
+ENCODING 8328
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 -2
+BITMAP
+60
+90
+60
+90
+60
+ENDCHAR
+STARTCHAR SUBSCRIPT NINE
+ENCODING 8329
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 1 -2
+BITMAP
+60
+90
+70
+10
+60
+ENDCHAR
+STARTCHAR SUBSCRIPT PLUS SIGN
+ENCODING 8330
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 -1
+BITMAP
+40
+E0
+40
+ENDCHAR
+STARTCHAR SUBSCRIPT MINUS
+ENCODING 8331
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 1 1 0
+BITMAP
+E0
+ENDCHAR
+STARTCHAR SUBSCRIPT EQUALS SIGN
+ENCODING 8332
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 3 1 -1
+BITMAP
+F0
+00
+F0
+ENDCHAR
+STARTCHAR SUBSCRIPT LEFT PARENTHESIS
+ENCODING 8333
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 5 2 -2
+BITMAP
+40
+80
+80
+80
+40
+ENDCHAR
+STARTCHAR SUBSCRIPT RIGHT PARENTHESIS
+ENCODING 8334
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 5 2 -2
+BITMAP
+80
+40
+40
+40
+80
+ENDCHAR
+STARTCHAR FRENCH FRANC SIGN
+ENCODING 8355
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+80
+80
+E8
+B0
+A0
+A0
+ENDCHAR
+STARTCHAR LIRA SIGN
+ENCODING 8356
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+30
+48
+E0
+40
+E0
+48
+B0
+ENDCHAR
+STARTCHAR PESETA SIGN
+ENCODING 8359
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+70
+48
+FC
+48
+70
+40
+40
+ENDCHAR
+STARTCHAR DONG SIGN
+ENCODING 8363
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+08
+3C
+68
+98
+88
+98
+68
+00
+F8
+ENDCHAR
+STARTCHAR EURO SIGN
+ENCODING 8364
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+30
+48
+E0
+40
+E0
+48
+30
+ENDCHAR
+STARTCHAR DRACHMA SIGN
+ENCODING 8367
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+40
+70
+C8
+48
+48
+E8
+D0
+ENDCHAR
+STARTCHAR COMBINING LEFT HARPOON ABOVE
+ENCODING 8400
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 2 0 6
+BITMAP
+40
+F8
+ENDCHAR
+STARTCHAR COMBINING RIGHT HARPOON ABOVE
+ENCODING 8401
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 2 0 6
+BITMAP
+10
+F8
+ENDCHAR
+STARTCHAR COMBINING LONG VERTICAL LINE OVERLAY
+ENCODING 8402
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 11 2 -2
+BITMAP
+80
+80
+80
+80
+80
+80
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR COMBINING SHORT VERTICAL LINE OVERLAY
+ENCODING 8403
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 6 2 0
+BITMAP
+80
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR COMBINING ANTICLOCKWISE ARROW ABOVE
+ENCODING 8404
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 3 0 5
+BITMAP
+B0
+C8
+E0
+ENDCHAR
+STARTCHAR COMBINING CLOCKWISE ARROW ABOVE
+ENCODING 8405
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 3 0 5
+BITMAP
+68
+98
+38
+ENDCHAR
+STARTCHAR COMBINING LEFT ARROW ABOVE
+ENCODING 8406
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 3 0 5
+BITMAP
+40
+F8
+40
+ENDCHAR
+STARTCHAR COMBINING RIGHT ARROW ABOVE
+ENCODING 8407
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 3 0 5
+BITMAP
+10
+F8
+10
+ENDCHAR
+STARTCHAR DOUBLE-STRUCK CAPITAL C
+ENCODING 8450
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+A8
+A0
+A0
+A0
+A8
+70
+ENDCHAR
+STARTCHAR CARE OF
+ENCODING 8453
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+60
+80
+80
+60
+00
+30
+48
+48
+30
+ENDCHAR
+STARTCHAR SCRIPT SMALL L
+ENCODING 8467
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 1 0
+BITMAP
+20
+50
+50
+50
+60
+40
+B0
+ENDCHAR
+STARTCHAR DOUBLE-STRUCK CAPITAL N
+ENCODING 8469
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+C8
+C8
+E8
+D8
+D8
+C8
+ENDCHAR
+STARTCHAR NUMERO SIGN
+ENCODING 8470
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+90
+90
+D8
+B4
+94
+98
+9C
+ENDCHAR
+STARTCHAR DOUBLE-STRUCK CAPITAL Q
+ENCODING 8474
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 -1
+BITMAP
+70
+A8
+A8
+A8
+A8
+A8
+70
+18
+ENDCHAR
+STARTCHAR DOUBLE-STRUCK CAPITAL R
+ENCODING 8477
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F0
+A8
+A8
+B0
+A8
+A8
+A8
+ENDCHAR
+STARTCHAR TRADE MARK SIGN
+ENCODING 8482
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 4 0 4
+BITMAP
+FC
+5C
+54
+54
+ENDCHAR
+STARTCHAR DOUBLE-STRUCK CAPITAL Z
+ENCODING 8484
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+28
+28
+50
+A0
+A0
+F8
+ENDCHAR
+STARTCHAR OHM SIGN
+ENCODING 8486
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+88
+88
+88
+88
+50
+D8
+ENDCHAR
+STARTCHAR INVERTED OHM SIGN
+ENCODING 8487
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+D8
+50
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR ESTIMATED SYMBOL
+ENCODING 8494
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+D8
+F8
+C0
+70
+ENDCHAR
+STARTCHAR VULGAR FRACTION ONE EIGHTH
+ENCODING 8539
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+40
+C0
+40
+40
+E0
+08
+14
+08
+14
+08
+ENDCHAR
+STARTCHAR VULGAR FRACTION THREE EIGHTHS
+ENCODING 8540
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+C0
+20
+40
+20
+C0
+10
+28
+10
+28
+10
+ENDCHAR
+STARTCHAR VULGAR FRACTION FIVE EIGHTHS
+ENCODING 8541
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+E0
+80
+C0
+20
+C0
+10
+28
+10
+28
+10
+ENDCHAR
+STARTCHAR VULGAR FRACTION SEVEN EIGHTHS
+ENCODING 8542
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+E0
+20
+20
+40
+40
+10
+28
+10
+28
+10
+ENDCHAR
+STARTCHAR LEFTWARDS ARROW
+ENCODING 8592
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 0
+BITMAP
+20
+40
+FC
+40
+20
+ENDCHAR
+STARTCHAR UPWARDS ARROW
+ENCODING 8593
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+70
+A8
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR RIGHTWARDS ARROW
+ENCODING 8594
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 0
+BITMAP
+10
+08
+FC
+08
+10
+ENDCHAR
+STARTCHAR DOWNWARDS ARROW
+ENCODING 8595
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+20
+20
+20
+A8
+70
+20
+ENDCHAR
+STARTCHAR LEFT RIGHT ARROW
+ENCODING 8596
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 3 0 1
+BITMAP
+48
+FC
+48
+ENDCHAR
+STARTCHAR UP DOWN ARROW
+ENCODING 8597
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 -1
+BITMAP
+20
+70
+A8
+20
+20
+A8
+70
+20
+ENDCHAR
+STARTCHAR NORTH WEST ARROW
+ENCODING 8598
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 1
+BITMAP
+F0
+C0
+A0
+90
+08
+ENDCHAR
+STARTCHAR NORTH EAST ARROW
+ENCODING 8599
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 1
+BITMAP
+78
+18
+28
+48
+80
+ENDCHAR
+STARTCHAR SOUTH EAST ARROW
+ENCODING 8600
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 1
+BITMAP
+80
+48
+28
+18
+78
+ENDCHAR
+STARTCHAR SOUTH WEST ARROW
+ENCODING 8601
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 1
+BITMAP
+08
+90
+A0
+C0
+F0
+ENDCHAR
+STARTCHAR LEFTWARDS ARROW FROM BAR
+ENCODING 8612
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 0
+BITMAP
+24
+44
+FC
+44
+24
+ENDCHAR
+STARTCHAR UPWARDS ARROW FROM BAR
+ENCODING 8613
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+70
+A8
+20
+20
+20
+70
+ENDCHAR
+STARTCHAR RIGHTWARDS ARROW FROM BAR
+ENCODING 8614
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 0
+BITMAP
+10
+88
+FC
+88
+10
+ENDCHAR
+STARTCHAR DOWNWARDS ARROW FROM BAR
+ENCODING 8615
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+20
+20
+20
+A8
+70
+20
+ENDCHAR
+STARTCHAR UP DOWN ARROW WITH BASE
+ENCODING 8616
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+20
+70
+A8
+20
+20
+A8
+70
+20
+F8
+ENDCHAR
+STARTCHAR RIGHTWARDS ARROW OVER LEFTWARDS ARROW
+ENCODING 8644
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+10
+08
+FC
+08
+30
+40
+FC
+40
+20
+ENDCHAR
+STARTCHAR LEFTWARDS ARROW OVER RIGHTWARDS ARROW
+ENCODING 8646
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+20
+40
+FC
+40
+30
+08
+FC
+08
+10
+ENDCHAR
+STARTCHAR LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON
+ENCODING 8651
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 -1
+BITMAP
+20
+40
+FC
+00
+FC
+08
+10
+ENDCHAR
+STARTCHAR RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON
+ENCODING 8652
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 -1
+BITMAP
+10
+08
+FC
+00
+FC
+40
+20
+ENDCHAR
+STARTCHAR LEFTWARDS DOUBLE ARROW
+ENCODING 8656
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+10
+20
+7C
+80
+7C
+20
+10
+ENDCHAR
+STARTCHAR UPWARDS DOUBLE ARROW
+ENCODING 8657
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+70
+D8
+50
+50
+50
+50
+ENDCHAR
+STARTCHAR RIGHTWARDS DOUBLE ARROW
+ENCODING 8658
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+20
+10
+F8
+04
+F8
+10
+20
+ENDCHAR
+STARTCHAR DOWNWARDS DOUBLE ARROW
+ENCODING 8659
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+50
+50
+50
+50
+D8
+70
+20
+ENDCHAR
+STARTCHAR LEFT RIGHT DOUBLE ARROW
+ENCODING 8660
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 3 0 2
+BITMAP
+78
+84
+78
+ENDCHAR
+STARTCHAR UP DOWN DOUBLE ARROW
+ENCODING 8661
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 -1
+BITMAP
+20
+50
+D8
+50
+50
+D8
+50
+20
+ENDCHAR
+STARTCHAR FOR ALL
+ENCODING 8704
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+88
+88
+70
+50
+50
+20
+20
+ENDCHAR
+STARTCHAR COMPLEMENT
+ENCODING 8705
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+40
+A0
+80
+80
+80
+A0
+40
+ENDCHAR
+STARTCHAR PARTIAL DIFFERENTIAL
+ENCODING 8706
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+30
+08
+68
+98
+88
+88
+70
+ENDCHAR
+STARTCHAR THERE EXISTS
+ENCODING 8707
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+08
+08
+78
+08
+08
+F8
+ENDCHAR
+STARTCHAR THERE DOES NOT EXIST
+ENCODING 8708
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+20
+F8
+28
+28
+78
+28
+28
+F8
+20
+ENDCHAR
+STARTCHAR EMPTY SET
+ENCODING 8709
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 6 0 0
+BITMAP
+34
+48
+94
+A4
+48
+B0
+ENDCHAR
+STARTCHAR INCREMENT
+ENCODING 8710
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+20
+20
+50
+50
+88
+F8
+ENDCHAR
+STARTCHAR NABLA
+ENCODING 8711
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+F8
+88
+50
+50
+20
+20
+ENDCHAR
+STARTCHAR ELEMENT OF
+ENCODING 8712
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+78
+80
+80
+F0
+80
+80
+78
+ENDCHAR
+STARTCHAR NOT AN ELEMENT OF
+ENCODING 8713
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+20
+78
+A0
+A0
+F0
+A0
+A0
+78
+20
+ENDCHAR
+STARTCHAR CONTAINS AS MEMBER
+ENCODING 8715
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F0
+08
+08
+78
+08
+08
+F0
+ENDCHAR
+STARTCHAR DOES NOT CONTAIN AS MEMBER
+ENCODING 8716
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+20
+F0
+28
+28
+78
+28
+28
+F0
+20
+ENDCHAR
+STARTCHAR N-ARY PRODUCT
+ENCODING 8719
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+F8
+50
+50
+50
+50
+50
+50
+50
+50
+ENDCHAR
+STARTCHAR N-ARY SUMMATION
+ENCODING 8721
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+F8
+80
+40
+20
+10
+20
+40
+80
+F8
+ENDCHAR
+STARTCHAR MINUS SIGN
+ENCODING 8722
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 1 0 3
+BITMAP
+F8
+ENDCHAR
+STARTCHAR MINUS-OR-PLUS SIGN
+ENCODING 8723
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+F8
+20
+20
+F8
+20
+20
+ENDCHAR
+STARTCHAR DIVISION SLASH
+ENCODING 8725
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+08
+08
+10
+20
+40
+80
+80
+ENDCHAR
+STARTCHAR RING OPERATOR
+ENCODING 8728
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 4 1 1
+BITMAP
+60
+90
+90
+60
+ENDCHAR
+STARTCHAR BULLET OPERATOR
+ENCODING 8729
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 4 1 1
+BITMAP
+60
+F0
+F0
+60
+ENDCHAR
+STARTCHAR SQUARE ROOT
+ENCODING 8730
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 6 0 0
+BITMAP
+0C
+10
+10
+20
+A0
+40
+ENDCHAR
+STARTCHAR PROPORTIONAL TO
+ENCODING 8733
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 4 1 1
+BITMAP
+50
+A0
+A0
+50
+ENDCHAR
+STARTCHAR INFINITY
+ENCODING 8734
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 4 0 1
+BITMAP
+50
+A8
+A8
+50
+ENDCHAR
+STARTCHAR RIGHT ANGLE
+ENCODING 8735
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 1
+BITMAP
+80
+80
+80
+80
+F8
+ENDCHAR
+STARTCHAR MEASURED ANGLE
+ENCODING 8737
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 -1
+BITMAP
+50
+20
+50
+90
+F8
+10
+ENDCHAR
+STARTCHAR DOES NOT DIVIDE
+ENCODING 8740
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+40
+40
+60
+40
+C0
+40
+40
+ENDCHAR
+STARTCHAR PARALLEL TO
+ENCODING 8741
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+A0
+A0
+A0
+A0
+A0
+A0
+ENDCHAR
+STARTCHAR NOT PARALLEL TO
+ENCODING 8742
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+50
+50
+58
+70
+D0
+50
+50
+ENDCHAR
+STARTCHAR LOGICAL AND
+ENCODING 8743
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+20
+20
+50
+50
+88
+88
+ENDCHAR
+STARTCHAR LOGICAL OR
+ENCODING 8744
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+88
+88
+50
+50
+20
+20
+ENDCHAR
+STARTCHAR INTERSECTION
+ENCODING 8745
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+70
+88
+88
+88
+88
+88
+ENDCHAR
+STARTCHAR UNION
+ENCODING 8746
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+88
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR INTEGRAL
+ENCODING 8747
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+10
+28
+20
+20
+20
+20
+20
+20
+A0
+40
+ENDCHAR
+STARTCHAR CONTOUR INTEGRAL
+ENCODING 8750
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 10 0 -2
+BITMAP
+10
+28
+20
+70
+A8
+A8
+70
+20
+A0
+40
+ENDCHAR
+STARTCHAR TILDE OPERATOR
+ENCODING 8764
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 3 0 2
+BITMAP
+48
+A8
+90
+ENDCHAR
+STARTCHAR ASYMPTOTICALLY EQUAL TO
+ENCODING 8771
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+40
+A8
+10
+00
+F8
+ENDCHAR
+STARTCHAR APPROXIMATELY EQUAL TO
+ENCODING 8773
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+40
+A8
+10
+00
+F8
+00
+F8
+ENDCHAR
+STARTCHAR ALMOST EQUAL TO
+ENCODING 8776
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+40
+A8
+50
+A8
+10
+ENDCHAR
+STARTCHAR NOT ALMOST EQUAL TO
+ENCODING 8777
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -1
+BITMAP
+20
+60
+A8
+70
+A8
+30
+20
+ENDCHAR
+STARTCHAR ESTIMATES
+ENCODING 8793
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+20
+50
+00
+F8
+00
+F8
+ENDCHAR
+STARTCHAR QUESTIONED EQUAL TO
+ENCODING 8799
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+60
+10
+20
+00
+20
+00
+F8
+00
+F8
+ENDCHAR
+STARTCHAR NOT EQUAL TO
+ENCODING 8800
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+08
+10
+F8
+20
+F8
+40
+80
+ENDCHAR
+STARTCHAR IDENTICAL TO
+ENCODING 8801
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F8
+00
+F8
+00
+F8
+ENDCHAR
+STARTCHAR NOT IDENTICAL TO
+ENCODING 8802
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -1
+BITMAP
+08
+F8
+10
+F8
+20
+F8
+40
+ENDCHAR
+STARTCHAR LESS-THAN OR EQUAL TO
+ENCODING 8804
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+18
+60
+80
+60
+18
+00
+F8
+ENDCHAR
+STARTCHAR GREATER-THAN OR EQUAL TO
+ENCODING 8805
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+C0
+30
+08
+30
+C0
+00
+F8
+ENDCHAR
+STARTCHAR MUCH LESS-THAN
+ENCODING 8810
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 0
+BITMAP
+24
+48
+90
+48
+24
+ENDCHAR
+STARTCHAR MUCH GREATER-THAN
+ENCODING 8811
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 0
+BITMAP
+90
+48
+24
+48
+90
+ENDCHAR
+STARTCHAR SUBSET OF
+ENCODING 8834
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+78
+80
+80
+80
+78
+ENDCHAR
+STARTCHAR SUPERSET OF
+ENCODING 8835
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F0
+08
+08
+08
+F0
+ENDCHAR
+STARTCHAR NOT A SUBSET OF
+ENCODING 8836
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -1
+BITMAP
+20
+78
+A0
+A0
+A0
+78
+20
+ENDCHAR
+STARTCHAR NOT A SUPERSET OF
+ENCODING 8837
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 -1
+BITMAP
+20
+F0
+28
+28
+28
+F0
+20
+ENDCHAR
+STARTCHAR SUBSET OF OR EQUAL TO
+ENCODING 8838
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+78
+80
+80
+80
+78
+00
+F8
+ENDCHAR
+STARTCHAR SUPERSET OF OR EQUAL TO
+ENCODING 8839
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F0
+08
+08
+08
+F0
+00
+F8
+ENDCHAR
+STARTCHAR NEITHER A SUBSET OF NOR EQUAL TO
+ENCODING 8840
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+20
+78
+A0
+A0
+A0
+78
+20
+F8
+20
+ENDCHAR
+STARTCHAR NEITHER A SUPERSET OF NOR EQUAL TO
+ENCODING 8841
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+20
+F0
+28
+28
+28
+F0
+20
+F8
+20
+ENDCHAR
+STARTCHAR SUBSET OF WITH NOT EQUAL TO
+ENCODING 8842
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 -1
+BITMAP
+78
+80
+80
+80
+78
+20
+F8
+20
+ENDCHAR
+STARTCHAR SUPERSET OF WITH NOT EQUAL TO
+ENCODING 8843
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 -1
+BITMAP
+F0
+08
+08
+08
+F0
+20
+F8
+20
+ENDCHAR
+STARTCHAR CIRCLED PLUS
+ENCODING 8853
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 1
+BITMAP
+70
+A8
+F8
+A8
+70
+ENDCHAR
+STARTCHAR CIRCLED TIMES
+ENCODING 8855
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 1
+BITMAP
+70
+D8
+A8
+D8
+70
+ENDCHAR
+STARTCHAR DOWN TACK
+ENCODING 8868
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+F8
+20
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR UP TACK
+ENCODING 8869
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+20
+20
+20
+20
+20
+F8
+ENDCHAR
+STARTCHAR ASSERTION
+ENCODING 8870
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+80
+80
+E0
+80
+80
+80
+ENDCHAR
+STARTCHAR MODELS
+ENCODING 8871
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+80
+E0
+80
+E0
+80
+80
+ENDCHAR
+STARTCHAR N-ARY LOGICAL AND
+ENCODING 8896
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+20
+20
+20
+50
+50
+50
+88
+88
+88
+ENDCHAR
+STARTCHAR N-ARY LOGICAL OR
+ENCODING 8897
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+88
+88
+88
+50
+50
+50
+20
+20
+20
+ENDCHAR
+STARTCHAR N-ARY INTERSECTION
+ENCODING 8898
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+70
+88
+88
+88
+88
+88
+88
+88
+88
+ENDCHAR
+STARTCHAR N-ARY UNION
+ENCODING 8899
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -1
+BITMAP
+88
+88
+88
+88
+88
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR DOT OPERATOR
+ENCODING 8901
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 1 2 3
+BITMAP
+80
+ENDCHAR
+STARTCHAR VERTICAL ELLIPSIS
+ENCODING 8942
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 7 2 0
+BITMAP
+80
+00
+00
+80
+00
+00
+80
+ENDCHAR
+STARTCHAR MIDLINE HORIZONTAL ELLIPSIS
+ENCODING 8943
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 1 0 3
+BITMAP
+A8
+ENDCHAR
+STARTCHAR UP RIGHT DIAGONAL ELLIPSIS
+ENCODING 8944
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+08
+00
+00
+20
+00
+00
+80
+ENDCHAR
+STARTCHAR DOWN RIGHT DIAGONAL ELLIPSIS
+ENCODING 8945
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+80
+00
+00
+20
+00
+00
+08
+ENDCHAR
+STARTCHAR DIAMETER SIGN
+ENCODING 8960
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+78
+98
+A8
+C8
+F0
+ENDCHAR
+STARTCHAR HOUSE
+ENCODING 8962
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+20
+50
+88
+88
+88
+F8
+ENDCHAR
+STARTCHAR LEFT CEILING
+ENCODING 8968
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+E0
+80
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR RIGHT CEILING
+ENCODING 8969
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+E0
+20
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR LEFT FLOOR
+ENCODING 8970
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+80
+80
+80
+80
+80
+E0
+ENDCHAR
+STARTCHAR RIGHT FLOOR
+ENCODING 8971
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+20
+20
+20
+20
+20
+E0
+ENDCHAR
+STARTCHAR REVERSED NOT SIGN
+ENCODING 8976
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 2 1 2
+BITMAP
+F0
+80
+ENDCHAR
+STARTCHAR TOP HALF INTEGRAL
+ENCODING 8992
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 8 2 -2
+BITMAP
+40
+A0
+80
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR BOTTOM HALF INTEGRAL
+ENCODING 8993
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 9 0 0
+BITMAP
+20
+20
+20
+20
+20
+20
+20
+A0
+40
+ENDCHAR
+STARTCHAR HORIZONTAL SCAN LINE-1
+ENCODING 9146
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 1 0 7
+BITMAP
+FC
+ENDCHAR
+STARTCHAR HORIZONTAL SCAN LINE-3
+ENCODING 9147
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 1 0 5
+BITMAP
+FC
+ENDCHAR
+STARTCHAR HORIZONTAL SCAN LINE-7
+ENCODING 9148
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 1 0 0
+BITMAP
+FC
+ENDCHAR
+STARTCHAR HORIZONTAL SCAN LINE-9
+ENCODING 9149
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 1 0 -2
+BITMAP
+FC
+ENDCHAR
+STARTCHAR SYMBOL FOR HORIZONTAL TABULATION
+ENCODING 9225
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+90
+90
+F0
+90
+90
+78
+10
+10
+10
+ENDCHAR
+STARTCHAR SYMBOL FOR LINE FEED
+ENCODING 9226
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+80
+80
+80
+F0
+78
+40
+70
+40
+40
+ENDCHAR
+STARTCHAR SYMBOL FOR VERTICAL TABULATION
+ENCODING 9227
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+90
+90
+60
+40
+78
+10
+10
+10
+10
+ENDCHAR
+STARTCHAR SYMBOL FOR FORM FEED
+ENCODING 9228
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+E0
+80
+C0
+80
+B8
+20
+30
+20
+20
+ENDCHAR
+STARTCHAR SYMBOL FOR CARRIAGE RETURN
+ENCODING 9229
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+70
+80
+80
+70
+70
+48
+70
+48
+48
+ENDCHAR
+STARTCHAR SYMBOL FOR NEWLINE
+ENCODING 9252
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+90
+D0
+D0
+B0
+90
+40
+40
+40
+78
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT HORIZONTAL
+ENCODING 9472
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 1 0 2
+BITMAP
+FC
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY HORIZONTAL
+ENCODING 9473
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 2 0 2
+BITMAP
+FC
+FC
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT VERTICAL
+ENCODING 9474
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 11 2 -2
+BITMAP
+80
+80
+80
+80
+80
+80
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY VERTICAL
+ENCODING 9475
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 11 2 -2
+BITMAP
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL
+ENCODING 9476
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 1 0 2
+BITMAP
+A8
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL
+ENCODING 9477
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 2 0 2
+BITMAP
+A8
+A8
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL
+ENCODING 9478
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 10 2 -1
+BITMAP
+80
+80
+80
+00
+80
+80
+80
+00
+80
+80
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL
+ENCODING 9479
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 10 2 -1
+BITMAP
+C0
+C0
+C0
+00
+C0
+C0
+C0
+00
+C0
+C0
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL
+ENCODING 9480
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 1 0 2
+BITMAP
+A8
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL
+ENCODING 9481
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 2 0 2
+BITMAP
+A8
+A8
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL
+ENCODING 9482
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 9 2 -1
+BITMAP
+80
+80
+00
+80
+00
+80
+80
+00
+80
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL
+ENCODING 9483
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 9 2 -1
+BITMAP
+C0
+C0
+00
+C0
+00
+C0
+C0
+00
+C0
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT DOWN AND RIGHT
+ENCODING 9484
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 2 -2
+BITMAP
+F0
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY
+ENCODING 9485
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 6 2 -2
+BITMAP
+F0
+F0
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT
+ENCODING 9486
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 2 -2
+BITMAP
+F0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY DOWN AND RIGHT
+ENCODING 9487
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 6 2 -2
+BITMAP
+F0
+F0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT DOWN AND LEFT
+ENCODING 9488
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 0 -2
+BITMAP
+E0
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY
+ENCODING 9489
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 6 0 -2
+BITMAP
+E0
+E0
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT
+ENCODING 9490
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 0 -2
+BITMAP
+F0
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY DOWN AND LEFT
+ENCODING 9491
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 6 0 -2
+BITMAP
+F0
+F0
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT UP AND RIGHT
+ENCODING 9492
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 2 2
+BITMAP
+80
+80
+80
+80
+80
+80
+F0
+ENDCHAR
+STARTCHAR BOX DRAWINGS UP LIGHT AND RIGHT HEAVY
+ENCODING 9493
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 2 2
+BITMAP
+80
+80
+80
+80
+80
+F0
+F0
+ENDCHAR
+STARTCHAR BOX DRAWINGS UP HEAVY AND RIGHT LIGHT
+ENCODING 9494
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 2 2
+BITMAP
+C0
+C0
+C0
+C0
+C0
+C0
+F0
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY UP AND RIGHT
+ENCODING 9495
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 2 2
+BITMAP
+C0
+C0
+C0
+C0
+C0
+F0
+F0
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT UP AND LEFT
+ENCODING 9496
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 0 2
+BITMAP
+20
+20
+20
+20
+20
+20
+E0
+ENDCHAR
+STARTCHAR BOX DRAWINGS UP LIGHT AND LEFT HEAVY
+ENCODING 9497
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 0 2
+BITMAP
+20
+20
+20
+20
+20
+E0
+E0
+ENDCHAR
+STARTCHAR BOX DRAWINGS UP HEAVY AND LEFT LIGHT
+ENCODING 9498
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 0 2
+BITMAP
+30
+30
+30
+30
+30
+30
+F0
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY UP AND LEFT
+ENCODING 9499
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 0 2
+BITMAP
+30
+30
+30
+30
+30
+F0
+F0
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+ENCODING 9500
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 11 2 -2
+BITMAP
+80
+80
+80
+80
+80
+80
+F0
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY
+ENCODING 9501
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 11 2 -2
+BITMAP
+80
+80
+80
+80
+80
+F0
+F0
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT
+ENCODING 9502
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 11 2 -2
+BITMAP
+C0
+C0
+C0
+C0
+C0
+C0
+F0
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT
+ENCODING 9503
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 11 2 -2
+BITMAP
+80
+80
+80
+80
+80
+80
+F0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT
+ENCODING 9504
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 11 2 -2
+BITMAP
+C0
+C0
+C0
+C0
+C0
+C0
+F0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY
+ENCODING 9505
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 11 2 -2
+BITMAP
+C0
+C0
+C0
+C0
+C0
+F0
+F0
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY
+ENCODING 9506
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 11 2 -2
+BITMAP
+80
+80
+80
+80
+80
+F0
+F0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY VERTICAL AND RIGHT
+ENCODING 9507
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 11 2 -2
+BITMAP
+C0
+C0
+C0
+C0
+C0
+F0
+F0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT VERTICAL AND LEFT
+ENCODING 9508
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 11 0 -2
+BITMAP
+20
+20
+20
+20
+20
+20
+E0
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY
+ENCODING 9509
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 11 0 -2
+BITMAP
+20
+20
+20
+20
+20
+E0
+E0
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT
+ENCODING 9510
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 11 0 -2
+BITMAP
+30
+30
+30
+30
+30
+30
+E0
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT
+ENCODING 9511
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 11 0 -2
+BITMAP
+20
+20
+20
+20
+20
+20
+F0
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT
+ENCODING 9512
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 11 0 -2
+BITMAP
+30
+30
+30
+30
+30
+30
+F0
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY
+ENCODING 9513
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 11 0 -2
+BITMAP
+30
+30
+30
+30
+30
+F0
+E0
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY
+ENCODING 9514
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 11 0 -2
+BITMAP
+20
+20
+20
+20
+20
+E0
+F0
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY VERTICAL AND LEFT
+ENCODING 9515
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 11 0 -2
+BITMAP
+30
+30
+30
+30
+30
+F0
+F0
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+ENCODING 9516
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 -2
+BITMAP
+FC
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT
+ENCODING 9517
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 6 0 -2
+BITMAP
+E0
+FC
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT
+ENCODING 9518
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 6 0 -2
+BITMAP
+1C
+FC
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY
+ENCODING 9519
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 6 0 -2
+BITMAP
+FC
+FC
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT
+ENCODING 9520
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 -2
+BITMAP
+FC
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY
+ENCODING 9521
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 6 0 -2
+BITMAP
+E0
+FC
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY
+ENCODING 9522
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 6 0 -2
+BITMAP
+1C
+FC
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY DOWN AND HORIZONTAL
+ENCODING 9523
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 6 0 -2
+BITMAP
+FC
+FC
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT UP AND HORIZONTAL
+ENCODING 9524
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 2
+BITMAP
+20
+20
+20
+20
+20
+20
+FC
+ENDCHAR
+STARTCHAR BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT
+ENCODING 9525
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 2
+BITMAP
+20
+20
+20
+20
+20
+E0
+FC
+ENDCHAR
+STARTCHAR BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT
+ENCODING 9526
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 2
+BITMAP
+20
+20
+20
+20
+20
+3C
+FC
+ENDCHAR
+STARTCHAR BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY
+ENCODING 9527
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 2
+BITMAP
+20
+20
+20
+20
+20
+FC
+FC
+ENDCHAR
+STARTCHAR BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT
+ENCODING 9528
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 2
+BITMAP
+30
+30
+30
+30
+30
+30
+FC
+ENDCHAR
+STARTCHAR BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY
+ENCODING 9529
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 2
+BITMAP
+30
+30
+30
+30
+30
+F0
+FC
+ENDCHAR
+STARTCHAR BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY
+ENCODING 9530
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 2
+BITMAP
+30
+30
+30
+30
+30
+3C
+FC
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY UP AND HORIZONTAL
+ENCODING 9531
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 2
+BITMAP
+30
+30
+30
+30
+30
+FC
+FC
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+ENCODING 9532
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+20
+20
+20
+20
+20
+20
+FC
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT
+ENCODING 9533
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+20
+20
+20
+20
+20
+E0
+FC
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT
+ENCODING 9534
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+20
+20
+20
+20
+20
+3C
+FC
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY
+ENCODING 9535
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+20
+20
+20
+20
+20
+FC
+FC
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT
+ENCODING 9536
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+30
+30
+30
+30
+30
+30
+FC
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT
+ENCODING 9537
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+20
+20
+20
+20
+20
+20
+FC
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT
+ENCODING 9538
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+30
+30
+30
+30
+30
+30
+FC
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT
+ENCODING 9539
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+30
+30
+30
+30
+30
+F0
+FC
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT
+ENCODING 9540
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+30
+30
+30
+30
+30
+3C
+FC
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT
+ENCODING 9541
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+20
+20
+20
+20
+20
+E0
+FC
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT
+ENCODING 9542
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+20
+20
+20
+20
+20
+3C
+FC
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY
+ENCODING 9543
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+30
+30
+30
+30
+30
+FC
+FC
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY
+ENCODING 9544
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+20
+20
+20
+20
+20
+FC
+FC
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY
+ENCODING 9545
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+30
+30
+30
+30
+30
+F0
+FC
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY
+ENCODING 9546
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+30
+30
+30
+30
+30
+3C
+FC
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL
+ENCODING 9547
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+30
+30
+30
+30
+30
+FC
+FC
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL
+ENCODING 9548
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 1 0 2
+BITMAP
+D8
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL
+ENCODING 9549
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 2 0 2
+BITMAP
+D8
+D8
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL
+ENCODING 9550
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 9 2 -1
+BITMAP
+80
+80
+80
+80
+00
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL
+ENCODING 9551
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 9 2 -1
+BITMAP
+C0
+C0
+C0
+C0
+00
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOUBLE HORIZONTAL
+ENCODING 9552
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 3 0 1
+BITMAP
+FC
+00
+FC
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOUBLE VERTICAL
+ENCODING 9553
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 11 1 -2
+BITMAP
+A0
+A0
+A0
+A0
+A0
+A0
+A0
+A0
+A0
+A0
+A0
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+ENCODING 9554
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 6 2 -2
+BITMAP
+F0
+80
+F0
+80
+80
+80
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+ENCODING 9555
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 1 -2
+BITMAP
+F8
+A0
+A0
+A0
+A0
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOUBLE DOWN AND RIGHT
+ENCODING 9556
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 1 -2
+BITMAP
+F8
+80
+B8
+A0
+A0
+A0
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+ENCODING 9557
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 6 0 -2
+BITMAP
+E0
+20
+E0
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+ENCODING 9558
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 0 -2
+BITMAP
+F0
+50
+50
+50
+50
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOUBLE DOWN AND LEFT
+ENCODING 9559
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 6 0 -2
+BITMAP
+F0
+10
+D0
+50
+50
+50
+ENDCHAR
+STARTCHAR BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+ENCODING 9560
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 2 1
+BITMAP
+80
+80
+80
+80
+80
+F0
+80
+F0
+ENDCHAR
+STARTCHAR BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+ENCODING 9561
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 1 2
+BITMAP
+A0
+A0
+A0
+A0
+A0
+A0
+F8
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOUBLE UP AND RIGHT
+ENCODING 9562
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 1 1
+BITMAP
+A0
+A0
+A0
+A0
+A0
+B8
+80
+F8
+ENDCHAR
+STARTCHAR BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+ENCODING 9563
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 8 0 1
+BITMAP
+20
+20
+20
+20
+20
+E0
+20
+E0
+ENDCHAR
+STARTCHAR BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+ENCODING 9564
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 0 2
+BITMAP
+50
+50
+50
+50
+50
+50
+F0
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOUBLE UP AND LEFT
+ENCODING 9565
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 0 1
+BITMAP
+50
+50
+50
+50
+50
+D0
+10
+F0
+ENDCHAR
+STARTCHAR BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+ENCODING 9566
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 11 2 -2
+BITMAP
+80
+80
+80
+80
+80
+F0
+80
+F0
+80
+80
+80
+ENDCHAR
+STARTCHAR BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+ENCODING 9567
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 11 1 -2
+BITMAP
+A0
+A0
+A0
+A0
+A0
+A0
+B8
+A0
+A0
+A0
+A0
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+ENCODING 9568
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 11 1 -2
+BITMAP
+A0
+A0
+A0
+A0
+A0
+B8
+80
+B8
+A0
+A0
+A0
+ENDCHAR
+STARTCHAR BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+ENCODING 9569
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 11 0 -2
+BITMAP
+20
+20
+20
+20
+20
+E0
+20
+E0
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+ENCODING 9570
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 11 0 -2
+BITMAP
+50
+50
+50
+50
+50
+50
+D0
+50
+50
+50
+50
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+ENCODING 9571
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 11 0 -2
+BITMAP
+50
+50
+50
+50
+50
+D0
+10
+D0
+50
+50
+50
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+ENCODING 9572
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 6 0 -2
+BITMAP
+FC
+00
+FC
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+ENCODING 9573
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 -2
+BITMAP
+FC
+50
+50
+50
+50
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+ENCODING 9574
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 6 0 -2
+BITMAP
+FC
+00
+DC
+50
+50
+50
+ENDCHAR
+STARTCHAR BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+ENCODING 9575
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 8 0 1
+BITMAP
+20
+20
+20
+20
+20
+FC
+00
+FC
+ENDCHAR
+STARTCHAR BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+ENCODING 9576
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 2
+BITMAP
+50
+50
+50
+50
+50
+50
+FC
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+ENCODING 9577
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 8 0 1
+BITMAP
+50
+50
+50
+50
+50
+DC
+00
+FC
+ENDCHAR
+STARTCHAR BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+ENCODING 9578
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+20
+20
+20
+20
+20
+FC
+20
+FC
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+ENCODING 9579
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+50
+50
+50
+50
+50
+50
+FC
+50
+50
+50
+50
+ENDCHAR
+STARTCHAR BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+ENCODING 9580
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+50
+50
+50
+50
+50
+DC
+00
+DC
+50
+50
+50
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT ARC DOWN AND RIGHT
+ENCODING 9581
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 5 2 -2
+BITMAP
+30
+40
+80
+80
+80
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT ARC DOWN AND LEFT
+ENCODING 9582
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 0 -2
+BITMAP
+80
+40
+20
+20
+20
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT ARC UP AND LEFT
+ENCODING 9583
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 0 2
+BITMAP
+20
+20
+20
+20
+20
+40
+80
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT ARC UP AND RIGHT
+ENCODING 9584
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 2 2
+BITMAP
+80
+80
+80
+80
+80
+40
+30
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT
+ENCODING 9585
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+04
+04
+08
+08
+10
+30
+20
+40
+40
+80
+80
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT
+ENCODING 9586
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+80
+80
+40
+40
+20
+30
+10
+08
+08
+04
+04
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT DIAGONAL CROSS
+ENCODING 9587
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+84
+84
+48
+48
+30
+30
+30
+48
+48
+84
+84
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT LEFT
+ENCODING 9588
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 1 0 2
+BITMAP
+E0
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT UP
+ENCODING 9589
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 6 2 3
+BITMAP
+80
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT RIGHT
+ENCODING 9590
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 1 3 2
+BITMAP
+E0
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT DOWN
+ENCODING 9591
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 5 2 -2
+BITMAP
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY LEFT
+ENCODING 9592
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 2 0 2
+BITMAP
+E0
+E0
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY UP
+ENCODING 9593
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 6 2 3
+BITMAP
+C0
+C0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY RIGHT
+ENCODING 9594
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 2 3 2
+BITMAP
+E0
+E0
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY DOWN
+ENCODING 9595
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 5 2 -2
+BITMAP
+C0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT
+ENCODING 9596
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 2 0 2
+BITMAP
+1C
+FC
+ENDCHAR
+STARTCHAR BOX DRAWINGS LIGHT UP AND HEAVY DOWN
+ENCODING 9597
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 11 2 -2
+BITMAP
+80
+80
+80
+80
+80
+80
+C0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT
+ENCODING 9598
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 2 0 2
+BITMAP
+E0
+FC
+ENDCHAR
+STARTCHAR BOX DRAWINGS HEAVY UP AND LIGHT DOWN
+ENCODING 9599
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 11 2 -2
+BITMAP
+C0
+C0
+C0
+C0
+C0
+C0
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR UPPER HALF BLOCK
+ENCODING 9600
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 6 0 3
+BITMAP
+FC
+FC
+FC
+FC
+FC
+FC
+ENDCHAR
+STARTCHAR LOWER ONE EIGHTH BLOCK
+ENCODING 9601
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 1 0 -2
+BITMAP
+FC
+ENDCHAR
+STARTCHAR LOWER ONE QUARTER BLOCK
+ENCODING 9602
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 2 0 -2
+BITMAP
+FC
+FC
+ENDCHAR
+STARTCHAR LOWER THREE EIGHTHS BLOCK
+ENCODING 9603
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 4 0 -2
+BITMAP
+FC
+FC
+FC
+FC
+ENDCHAR
+STARTCHAR LOWER HALF BLOCK
+ENCODING 9604
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 -2
+BITMAP
+FC
+FC
+FC
+FC
+FC
+ENDCHAR
+STARTCHAR LOWER FIVE EIGHTHS BLOCK
+ENCODING 9605
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 6 0 -2
+BITMAP
+FC
+FC
+FC
+FC
+FC
+FC
+ENDCHAR
+STARTCHAR LOWER THREE QUARTERS BLOCK
+ENCODING 9606
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 8 0 -2
+BITMAP
+FC
+FC
+FC
+FC
+FC
+FC
+FC
+FC
+ENDCHAR
+STARTCHAR LOWER SEVEN EIGHTHS BLOCK
+ENCODING 9607
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -2
+BITMAP
+FC
+FC
+FC
+FC
+FC
+FC
+FC
+FC
+FC
+ENDCHAR
+STARTCHAR FULL BLOCK
+ENCODING 9608
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+FC
+FC
+FC
+FC
+FC
+FC
+FC
+FC
+FC
+FC
+FC
+ENDCHAR
+STARTCHAR LEFT SEVEN EIGHTHS BLOCK
+ENCODING 9609
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 11 0 -2
+BITMAP
+F8
+F8
+F8
+F8
+F8
+F8
+F8
+F8
+F8
+F8
+F8
+ENDCHAR
+STARTCHAR LEFT THREE QUARTERS BLOCK
+ENCODING 9610
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 11 0 -2
+BITMAP
+F0
+F0
+F0
+F0
+F0
+F0
+F0
+F0
+F0
+F0
+F0
+ENDCHAR
+STARTCHAR LEFT FIVE EIGHTHS BLOCK
+ENCODING 9611
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 11 0 -2
+BITMAP
+F0
+F0
+F0
+F0
+F0
+F0
+F0
+F0
+F0
+F0
+F0
+ENDCHAR
+STARTCHAR LEFT HALF BLOCK
+ENCODING 9612
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 11 0 -2
+BITMAP
+E0
+E0
+E0
+E0
+E0
+E0
+E0
+E0
+E0
+E0
+E0
+ENDCHAR
+STARTCHAR LEFT THREE EIGHTHS BLOCK
+ENCODING 9613
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 11 0 -2
+BITMAP
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR LEFT ONE QUARTER BLOCK
+ENCODING 9614
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 2 11 0 -2
+BITMAP
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR LEFT ONE EIGHTH BLOCK
+ENCODING 9615
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 11 0 -2
+BITMAP
+80
+80
+80
+80
+80
+80
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR RIGHT HALF BLOCK
+ENCODING 9616
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 11 3 -2
+BITMAP
+E0
+E0
+E0
+E0
+E0
+E0
+E0
+E0
+E0
+E0
+E0
+ENDCHAR
+STARTCHAR LIGHT SHADE
+ENCODING 9617
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 9 0 -1
+BITMAP
+A8
+00
+54
+00
+A8
+00
+54
+00
+A8
+ENDCHAR
+STARTCHAR MEDIUM SHADE
+ENCODING 9618
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+54
+A8
+54
+A8
+54
+A8
+54
+A8
+54
+A8
+54
+ENDCHAR
+STARTCHAR DARK SHADE
+ENCODING 9619
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+FC
+A8
+FC
+54
+FC
+A8
+FC
+54
+FC
+A8
+FC
+ENDCHAR
+STARTCHAR UPPER ONE EIGHTH BLOCK
+ENCODING 9620
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 1 0 8
+BITMAP
+FC
+ENDCHAR
+STARTCHAR RIGHT ONE EIGHTH BLOCK
+ENCODING 9621
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 11 5 -2
+BITMAP
+80
+80
+80
+80
+80
+80
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR QUADRANT LOWER LEFT
+ENCODING 9622
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 0 -2
+BITMAP
+E0
+E0
+E0
+E0
+E0
+ENDCHAR
+STARTCHAR QUADRANT LOWER RIGHT
+ENCODING 9623
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 3 -2
+BITMAP
+E0
+E0
+E0
+E0
+E0
+ENDCHAR
+STARTCHAR QUADRANT UPPER LEFT
+ENCODING 9624
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 6 0 3
+BITMAP
+E0
+E0
+E0
+E0
+E0
+E0
+ENDCHAR
+STARTCHAR QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT
+ENCODING 9625
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+E0
+E0
+E0
+E0
+E0
+E0
+FC
+FC
+FC
+FC
+FC
+ENDCHAR
+STARTCHAR QUADRANT UPPER LEFT AND LOWER RIGHT
+ENCODING 9626
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+E0
+E0
+E0
+E0
+E0
+E0
+1C
+1C
+1C
+1C
+1C
+ENDCHAR
+STARTCHAR QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT
+ENCODING 9627
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+FC
+FC
+FC
+FC
+FC
+FC
+E0
+E0
+E0
+E0
+E0
+ENDCHAR
+STARTCHAR QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT
+ENCODING 9628
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+FC
+FC
+FC
+FC
+FC
+FC
+1C
+1C
+1C
+1C
+1C
+ENDCHAR
+STARTCHAR QUADRANT UPPER RIGHT
+ENCODING 9629
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 6 3 3
+BITMAP
+E0
+E0
+E0
+E0
+E0
+E0
+ENDCHAR
+STARTCHAR QUADRANT UPPER RIGHT AND LOWER LEFT
+ENCODING 9630
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+1C
+1C
+1C
+1C
+1C
+1C
+E0
+E0
+E0
+E0
+E0
+ENDCHAR
+STARTCHAR QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT
+ENCODING 9631
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+1C
+1C
+1C
+1C
+1C
+1C
+FC
+FC
+FC
+FC
+FC
+ENDCHAR
+STARTCHAR BLACK SQUARE
+ENCODING 9632
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F8
+F8
+F8
+F8
+F8
+ENDCHAR
+STARTCHAR WHITE SQUARE
+ENCODING 9633
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+F8
+88
+88
+88
+F8
+ENDCHAR
+STARTCHAR BLACK SMALL SQUARE
+ENCODING 9642
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 4 1 0
+BITMAP
+F0
+F0
+F0
+F0
+ENDCHAR
+STARTCHAR WHITE SMALL SQUARE
+ENCODING 9643
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 4 1 0
+BITMAP
+F0
+90
+90
+F0
+ENDCHAR
+STARTCHAR BLACK RECTANGLE
+ENCODING 9644
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 4 0 0
+BITMAP
+FC
+FC
+FC
+FC
+ENDCHAR
+STARTCHAR BLACK VERTICAL RECTANGLE
+ENCODING 9646
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 6 1 -1
+BITMAP
+F0
+F0
+F0
+F0
+F0
+F0
+ENDCHAR
+STARTCHAR BLACK UP-POINTING TRIANGLE
+ENCODING 9650
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+20
+20
+70
+70
+F8
+F8
+ENDCHAR
+STARTCHAR WHITE UP-POINTING TRIANGLE
+ENCODING 9651
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+20
+20
+50
+50
+88
+F8
+ENDCHAR
+STARTCHAR BLACK RIGHT-POINTING POINTER
+ENCODING 9658
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 0
+BITMAP
+C0
+F0
+FC
+F0
+C0
+ENDCHAR
+STARTCHAR WHITE RIGHT-POINTING POINTER
+ENCODING 9659
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 0
+BITMAP
+C0
+B0
+8C
+B0
+C0
+ENDCHAR
+STARTCHAR BLACK DOWN-POINTING TRIANGLE
+ENCODING 9660
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+F8
+F8
+70
+70
+20
+20
+ENDCHAR
+STARTCHAR WHITE DOWN-POINTING TRIANGLE
+ENCODING 9661
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+F8
+88
+50
+50
+20
+20
+ENDCHAR
+STARTCHAR BLACK LEFT-POINTING POINTER
+ENCODING 9668
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 0
+BITMAP
+0C
+3C
+FC
+3C
+0C
+ENDCHAR
+STARTCHAR WHITE LEFT-POINTING POINTER
+ENCODING 9669
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 5 0 0
+BITMAP
+0C
+34
+C4
+34
+0C
+ENDCHAR
+STARTCHAR BLACK DIAMOND
+ENCODING 9670
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 1
+BITMAP
+20
+70
+F8
+70
+20
+ENDCHAR
+STARTCHAR LOZENGE
+ENCODING 9674
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+50
+50
+88
+50
+50
+20
+ENDCHAR
+STARTCHAR WHITE CIRCLE
+ENCODING 9675
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR DOTTED CIRCLE
+ENCODING 9676
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+F8
+F8
+F8
+70
+ENDCHAR
+STARTCHAR BLACK CIRCLE
+ENCODING 9679
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 5 0 0
+BITMAP
+70
+F8
+F8
+F8
+70
+ENDCHAR
+STARTCHAR INVERSE BULLET
+ENCODING 9688
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+FC
+FC
+FC
+FC
+CC
+84
+84
+CC
+FC
+FC
+FC
+ENDCHAR
+STARTCHAR INVERSE WHITE CIRCLE
+ENCODING 9689
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 11 0 -2
+BITMAP
+FC
+FC
+FC
+FC
+CC
+B4
+B4
+CC
+FC
+FC
+FC
+ENDCHAR
+STARTCHAR WHITE BULLET
+ENCODING 9702
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 4 1 1
+BITMAP
+60
+90
+90
+60
+ENDCHAR
+STARTCHAR BLACK SUN WITH RAYS
+ENCODING 9728
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 8 0 -1
+BITMAP
+10
+54
+00
+B0
+34
+00
+A8
+20
+ENDCHAR
+STARTCHAR WHITE SMILING FACE
+ENCODING 9786
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 -1
+BITMAP
+78
+84
+CC
+84
+B4
+84
+78
+ENDCHAR
+STARTCHAR BLACK SMILING FACE
+ENCODING 9787
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+F8
+A8
+F8
+A8
+D8
+70
+ENDCHAR
+STARTCHAR WHITE SUN WITH RAYS
+ENCODING 9788
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 8 0 -1
+BITMAP
+10
+54
+00
+B0
+34
+00
+A8
+20
+ENDCHAR
+STARTCHAR MERCURY
+ENCODING 9791
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 9 0 -2
+BITMAP
+88
+70
+88
+88
+88
+70
+20
+70
+20
+ENDCHAR
+STARTCHAR FEMALE SIGN
+ENCODING 9792
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 -2
+BITMAP
+70
+88
+88
+88
+70
+20
+70
+20
+ENDCHAR
+STARTCHAR EARTH
+ENCODING 9793
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+70
+20
+70
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR MALE SIGN
+ENCODING 9794
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+1C
+0C
+74
+88
+88
+88
+70
+ENDCHAR
+STARTCHAR BLACK SPADE SUIT
+ENCODING 9824
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+20
+70
+F8
+F8
+20
+70
+ENDCHAR
+STARTCHAR WHITE HEART SUIT
+ENCODING 9825
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+50
+A8
+A8
+88
+50
+20
+ENDCHAR
+STARTCHAR WHITE DIAMOND SUIT
+ENCODING 9826
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+50
+50
+88
+88
+50
+50
+20
+ENDCHAR
+STARTCHAR BLACK CLUB SUIT
+ENCODING 9827
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+70
+20
+A8
+F8
+A8
+20
+70
+ENDCHAR
+STARTCHAR WHITE SPADE SUIT
+ENCODING 9828
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+20
+20
+50
+88
+D8
+20
+70
+ENDCHAR
+STARTCHAR BLACK HEART SUIT
+ENCODING 9829
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+50
+F8
+F8
+F8
+70
+20
+ENDCHAR
+STARTCHAR BLACK DIAMOND SUIT
+ENCODING 9830
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 0
+BITMAP
+20
+70
+70
+F8
+F8
+70
+70
+20
+ENDCHAR
+STARTCHAR EIGHTH NOTE
+ENCODING 9834
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 6 0 0
+BITMAP
+30
+28
+20
+60
+E0
+60
+ENDCHAR
+STARTCHAR BEAMED EIGHTH NOTES
+ENCODING 9835
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+60
+50
+48
+48
+C8
+D8
+18
+ENDCHAR
+STARTCHAR BEAMED SIXTEENTH NOTES
+ENCODING 9836
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+60
+50
+68
+58
+C8
+D8
+18
+ENDCHAR
+STARTCHAR MUSIC FLAT SIGN
+ENCODING 9837
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 7 1 0
+BITMAP
+80
+80
+A0
+D0
+90
+A0
+C0
+ENDCHAR
+STARTCHAR MUSIC NATURAL SIGN
+ENCODING 9838
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 4 8 1 -1
+BITMAP
+80
+90
+B0
+D0
+B0
+D0
+90
+10
+ENDCHAR
+STARTCHAR MUSIC SHARP SIGN
+ENCODING 9839
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 -1
+BITMAP
+10
+58
+70
+D0
+58
+70
+D0
+40
+ENDCHAR
+STARTCHAR MATHEMATICAL LEFT ANGLE BRACKET
+ENCODING 10216
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+40
+40
+80
+40
+40
+20
+ENDCHAR
+STARTCHAR MATHEMATICAL RIGHT ANGLE BRACKET
+ENCODING 10217
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+40
+40
+20
+40
+40
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN BLANK
+ENCODING 10240
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 0 0 0 0
+BITMAP
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1
+ENCODING 10241
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 1 1 6
+BITMAP
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2
+ENCODING 10242
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 1 1 4
+BITMAP
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12
+ENCODING 10243
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 3 1 4
+BITMAP
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-3
+ENCODING 10244
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 1 1 2
+BITMAP
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-13
+ENCODING 10245
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 5 1 2
+BITMAP
+80
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-23
+ENCODING 10246
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 3 1 2
+BITMAP
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-123
+ENCODING 10247
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 5 1 2
+BITMAP
+80
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-4
+ENCODING 10248
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 1 3 6
+BITMAP
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-14
+ENCODING 10249
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 1 1 6
+BITMAP
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-24
+ENCODING 10250
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 4
+BITMAP
+20
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-124
+ENCODING 10251
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 4
+BITMAP
+A0
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-34
+ENCODING 10252
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+20
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-134
+ENCODING 10253
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+A0
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-234
+ENCODING 10254
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+20
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1234
+ENCODING 10255
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+A0
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-5
+ENCODING 10256
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 1 3 4
+BITMAP
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-15
+ENCODING 10257
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 4
+BITMAP
+80
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-25
+ENCODING 10258
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 1 1 4
+BITMAP
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-125
+ENCODING 10259
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 4
+BITMAP
+80
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-35
+ENCODING 10260
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 2
+BITMAP
+20
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-135
+ENCODING 10261
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+80
+00
+20
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-235
+ENCODING 10262
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 2
+BITMAP
+A0
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1235
+ENCODING 10263
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+80
+00
+A0
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-45
+ENCODING 10264
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 3 3 4
+BITMAP
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-145
+ENCODING 10265
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 4
+BITMAP
+A0
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-245
+ENCODING 10266
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 4
+BITMAP
+20
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1245
+ENCODING 10267
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 4
+BITMAP
+A0
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-345
+ENCODING 10268
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+20
+00
+20
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1345
+ENCODING 10269
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+A0
+00
+20
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2345
+ENCODING 10270
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+20
+00
+A0
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12345
+ENCODING 10271
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+A0
+00
+A0
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-6
+ENCODING 10272
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 1 3 2
+BITMAP
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-16
+ENCODING 10273
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+80
+00
+00
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-26
+ENCODING 10274
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 2
+BITMAP
+80
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-126
+ENCODING 10275
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+80
+00
+80
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-36
+ENCODING 10276
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 1 1 2
+BITMAP
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-136
+ENCODING 10277
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+80
+00
+00
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-236
+ENCODING 10278
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 2
+BITMAP
+80
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1236
+ENCODING 10279
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+80
+00
+80
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-46
+ENCODING 10280
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 5 3 2
+BITMAP
+80
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-146
+ENCODING 10281
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+A0
+00
+00
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-246
+ENCODING 10282
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+20
+00
+80
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1246
+ENCODING 10283
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+A0
+00
+80
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-346
+ENCODING 10284
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+20
+00
+00
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1346
+ENCODING 10285
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+A0
+00
+00
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2346
+ENCODING 10286
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+20
+00
+80
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12346
+ENCODING 10287
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+A0
+00
+80
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-56
+ENCODING 10288
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 3 3 2
+BITMAP
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-156
+ENCODING 10289
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+80
+00
+20
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-256
+ENCODING 10290
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 2
+BITMAP
+A0
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1256
+ENCODING 10291
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+80
+00
+A0
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-356
+ENCODING 10292
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 2
+BITMAP
+20
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1356
+ENCODING 10293
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+80
+00
+20
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2356
+ENCODING 10294
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 2
+BITMAP
+A0
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12356
+ENCODING 10295
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+80
+00
+A0
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-456
+ENCODING 10296
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 5 3 2
+BITMAP
+80
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1456
+ENCODING 10297
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+A0
+00
+20
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2456
+ENCODING 10298
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+20
+00
+A0
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12456
+ENCODING 10299
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+A0
+00
+A0
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-3456
+ENCODING 10300
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+20
+00
+20
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-13456
+ENCODING 10301
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+A0
+00
+20
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-23456
+ENCODING 10302
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+20
+00
+A0
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-123456
+ENCODING 10303
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 2
+BITMAP
+A0
+00
+A0
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-7
+ENCODING 10304
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 1 1 0
+BITMAP
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-17
+ENCODING 10305
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 7 1 0
+BITMAP
+80
+00
+00
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-27
+ENCODING 10306
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 5 1 0
+BITMAP
+80
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-127
+ENCODING 10307
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 7 1 0
+BITMAP
+80
+00
+80
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-37
+ENCODING 10308
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 3 1 0
+BITMAP
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-137
+ENCODING 10309
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 7 1 0
+BITMAP
+80
+00
+00
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-237
+ENCODING 10310
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 5 1 0
+BITMAP
+80
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1237
+ENCODING 10311
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 7 1 0
+BITMAP
+80
+00
+80
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-47
+ENCODING 10312
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+00
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-147
+ENCODING 10313
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+00
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-247
+ENCODING 10314
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+80
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1247
+ENCODING 10315
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+80
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-347
+ENCODING 10316
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+00
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1347
+ENCODING 10317
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+00
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2347
+ENCODING 10318
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+80
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12347
+ENCODING 10319
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+80
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-57
+ENCODING 10320
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+20
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-157
+ENCODING 10321
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+20
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-257
+ENCODING 10322
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+A0
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1257
+ENCODING 10323
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+A0
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-357
+ENCODING 10324
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+20
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1357
+ENCODING 10325
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+20
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2357
+ENCODING 10326
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+A0
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12357
+ENCODING 10327
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+A0
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-457
+ENCODING 10328
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+20
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1457
+ENCODING 10329
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+20
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2457
+ENCODING 10330
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+A0
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12457
+ENCODING 10331
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+A0
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-3457
+ENCODING 10332
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+20
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-13457
+ENCODING 10333
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+20
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-23457
+ENCODING 10334
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+A0
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-123457
+ENCODING 10335
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+A0
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-67
+ENCODING 10336
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 0
+BITMAP
+20
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-167
+ENCODING 10337
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+00
+00
+20
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-267
+ENCODING 10338
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+80
+00
+20
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1267
+ENCODING 10339
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+80
+00
+20
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-367
+ENCODING 10340
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 0
+BITMAP
+A0
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1367
+ENCODING 10341
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+00
+00
+A0
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2367
+ENCODING 10342
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+80
+00
+A0
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12367
+ENCODING 10343
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+80
+00
+A0
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-467
+ENCODING 10344
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+00
+00
+20
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1467
+ENCODING 10345
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+00
+00
+20
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2467
+ENCODING 10346
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+80
+00
+20
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12467
+ENCODING 10347
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+80
+00
+20
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-3467
+ENCODING 10348
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+00
+00
+A0
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-13467
+ENCODING 10349
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+00
+00
+A0
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-23467
+ENCODING 10350
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+80
+00
+A0
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-123467
+ENCODING 10351
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+80
+00
+A0
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-567
+ENCODING 10352
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+20
+00
+20
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1567
+ENCODING 10353
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+20
+00
+20
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2567
+ENCODING 10354
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+A0
+00
+20
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12567
+ENCODING 10355
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+A0
+00
+20
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-3567
+ENCODING 10356
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+20
+00
+A0
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-13567
+ENCODING 10357
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+20
+00
+A0
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-23567
+ENCODING 10358
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+A0
+00
+A0
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-123567
+ENCODING 10359
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+A0
+00
+A0
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-4567
+ENCODING 10360
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+20
+00
+20
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-14567
+ENCODING 10361
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+20
+00
+20
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-24567
+ENCODING 10362
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+A0
+00
+20
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-124567
+ENCODING 10363
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+A0
+00
+20
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-34567
+ENCODING 10364
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+20
+00
+A0
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-134567
+ENCODING 10365
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+20
+00
+A0
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-234567
+ENCODING 10366
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+A0
+00
+A0
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1234567
+ENCODING 10367
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+A0
+00
+A0
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-8
+ENCODING 10368
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 1 3 0
+BITMAP
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-18
+ENCODING 10369
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+00
+00
+00
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-28
+ENCODING 10370
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+80
+00
+00
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-128
+ENCODING 10371
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+80
+00
+00
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-38
+ENCODING 10372
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 0
+BITMAP
+80
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-138
+ENCODING 10373
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+00
+00
+80
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-238
+ENCODING 10374
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+80
+00
+80
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1238
+ENCODING 10375
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+80
+00
+80
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-48
+ENCODING 10376
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 7 3 0
+BITMAP
+80
+00
+00
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-148
+ENCODING 10377
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+00
+00
+00
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-248
+ENCODING 10378
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+80
+00
+00
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1248
+ENCODING 10379
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+80
+00
+00
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-348
+ENCODING 10380
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+00
+00
+80
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1348
+ENCODING 10381
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+00
+00
+80
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2348
+ENCODING 10382
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+80
+00
+80
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12348
+ENCODING 10383
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+80
+00
+80
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-58
+ENCODING 10384
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 5 3 0
+BITMAP
+80
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-158
+ENCODING 10385
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+20
+00
+00
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-258
+ENCODING 10386
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+A0
+00
+00
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1258
+ENCODING 10387
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+A0
+00
+00
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-358
+ENCODING 10388
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+20
+00
+80
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1358
+ENCODING 10389
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+20
+00
+80
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2358
+ENCODING 10390
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+A0
+00
+80
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12358
+ENCODING 10391
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+A0
+00
+80
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-458
+ENCODING 10392
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 7 3 0
+BITMAP
+80
+00
+80
+00
+00
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1458
+ENCODING 10393
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+20
+00
+00
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2458
+ENCODING 10394
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+A0
+00
+00
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12458
+ENCODING 10395
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+A0
+00
+00
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-3458
+ENCODING 10396
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+20
+00
+80
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-13458
+ENCODING 10397
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+20
+00
+80
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-23458
+ENCODING 10398
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+A0
+00
+80
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-123458
+ENCODING 10399
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+A0
+00
+80
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-68
+ENCODING 10400
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 3 3 0
+BITMAP
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-168
+ENCODING 10401
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+00
+00
+20
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-268
+ENCODING 10402
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+80
+00
+20
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1268
+ENCODING 10403
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+80
+00
+20
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-368
+ENCODING 10404
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 0
+BITMAP
+A0
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1368
+ENCODING 10405
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+00
+00
+A0
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2368
+ENCODING 10406
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+80
+00
+A0
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12368
+ENCODING 10407
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+80
+00
+A0
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-468
+ENCODING 10408
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 7 3 0
+BITMAP
+80
+00
+00
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1468
+ENCODING 10409
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+00
+00
+20
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2468
+ENCODING 10410
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+80
+00
+20
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12468
+ENCODING 10411
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+80
+00
+20
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-3468
+ENCODING 10412
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+00
+00
+A0
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-13468
+ENCODING 10413
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+00
+00
+A0
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-23468
+ENCODING 10414
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+80
+00
+A0
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-123468
+ENCODING 10415
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+80
+00
+A0
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-568
+ENCODING 10416
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 5 3 0
+BITMAP
+80
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1568
+ENCODING 10417
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+20
+00
+20
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2568
+ENCODING 10418
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+A0
+00
+20
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12568
+ENCODING 10419
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+A0
+00
+20
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-3568
+ENCODING 10420
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+20
+00
+A0
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-13568
+ENCODING 10421
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+20
+00
+A0
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-23568
+ENCODING 10422
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+A0
+00
+A0
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-123568
+ENCODING 10423
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+A0
+00
+A0
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-4568
+ENCODING 10424
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 1 7 3 0
+BITMAP
+80
+00
+80
+00
+80
+00
+80
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-14568
+ENCODING 10425
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+20
+00
+20
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-24568
+ENCODING 10426
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+A0
+00
+20
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-124568
+ENCODING 10427
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+A0
+00
+20
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-34568
+ENCODING 10428
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+20
+00
+A0
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-134568
+ENCODING 10429
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+20
+00
+A0
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-234568
+ENCODING 10430
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+A0
+00
+A0
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1234568
+ENCODING 10431
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+A0
+00
+A0
+00
+20
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-78
+ENCODING 10432
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 1 1 0
+BITMAP
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-178
+ENCODING 10433
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+00
+00
+00
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-278
+ENCODING 10434
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+80
+00
+00
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1278
+ENCODING 10435
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+80
+00
+00
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-378
+ENCODING 10436
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 0
+BITMAP
+80
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1378
+ENCODING 10437
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+00
+00
+80
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2378
+ENCODING 10438
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+80
+00
+80
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12378
+ENCODING 10439
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+80
+00
+80
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-478
+ENCODING 10440
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+00
+00
+00
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1478
+ENCODING 10441
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+00
+00
+00
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2478
+ENCODING 10442
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+80
+00
+00
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12478
+ENCODING 10443
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+80
+00
+00
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-3478
+ENCODING 10444
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+00
+00
+80
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-13478
+ENCODING 10445
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+00
+00
+80
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-23478
+ENCODING 10446
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+80
+00
+80
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-123478
+ENCODING 10447
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+80
+00
+80
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-578
+ENCODING 10448
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+20
+00
+00
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1578
+ENCODING 10449
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+20
+00
+00
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2578
+ENCODING 10450
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+A0
+00
+00
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12578
+ENCODING 10451
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+A0
+00
+00
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-3578
+ENCODING 10452
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+20
+00
+80
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-13578
+ENCODING 10453
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+20
+00
+80
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-23578
+ENCODING 10454
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+A0
+00
+80
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-123578
+ENCODING 10455
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+A0
+00
+80
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-4578
+ENCODING 10456
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+20
+00
+00
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-14578
+ENCODING 10457
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+20
+00
+00
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-24578
+ENCODING 10458
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+A0
+00
+00
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-124578
+ENCODING 10459
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+A0
+00
+00
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-34578
+ENCODING 10460
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+20
+00
+80
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-134578
+ENCODING 10461
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+20
+00
+80
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-234578
+ENCODING 10462
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+A0
+00
+80
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1234578
+ENCODING 10463
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+A0
+00
+80
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-678
+ENCODING 10464
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 0
+BITMAP
+20
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1678
+ENCODING 10465
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+00
+00
+20
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2678
+ENCODING 10466
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+80
+00
+20
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12678
+ENCODING 10467
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+80
+00
+20
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-3678
+ENCODING 10468
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 3 1 0
+BITMAP
+A0
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-13678
+ENCODING 10469
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+00
+00
+A0
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-23678
+ENCODING 10470
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+80
+00
+A0
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-123678
+ENCODING 10471
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+80
+00
+A0
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-4678
+ENCODING 10472
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+00
+00
+20
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-14678
+ENCODING 10473
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+00
+00
+20
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-24678
+ENCODING 10474
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+80
+00
+20
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-124678
+ENCODING 10475
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+80
+00
+20
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-34678
+ENCODING 10476
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+00
+00
+A0
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-134678
+ENCODING 10477
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+00
+00
+A0
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-234678
+ENCODING 10478
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+80
+00
+A0
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1234678
+ENCODING 10479
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+80
+00
+A0
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-5678
+ENCODING 10480
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+20
+00
+20
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-15678
+ENCODING 10481
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+20
+00
+20
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-25678
+ENCODING 10482
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+A0
+00
+20
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-125678
+ENCODING 10483
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+A0
+00
+20
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-35678
+ENCODING 10484
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+20
+00
+A0
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-135678
+ENCODING 10485
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+20
+00
+A0
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-235678
+ENCODING 10486
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 5 1 0
+BITMAP
+A0
+00
+A0
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1235678
+ENCODING 10487
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+80
+00
+A0
+00
+A0
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-45678
+ENCODING 10488
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+20
+00
+20
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-145678
+ENCODING 10489
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+20
+00
+20
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-245678
+ENCODING 10490
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+A0
+00
+20
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1245678
+ENCODING 10491
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+A0
+00
+20
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-345678
+ENCODING 10492
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+20
+00
+A0
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-1345678
+ENCODING 10493
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+20
+00
+A0
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-2345678
+ENCODING 10494
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+20
+00
+A0
+00
+A0
+00
+A0
+ENDCHAR
+STARTCHAR BRAILLE PATTERN DOTS-12345678
+ENCODING 10495
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 3 7 1 0
+BITMAP
+A0
+00
+A0
+00
+A0
+00
+A0
+ENDCHAR
+STARTCHAR LATIN SMALL LIGATURE FI
+ENCODING 64257
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 7 0 0
+BITMAP
+30
+48
+40
+E8
+48
+48
+48
+ENDCHAR
+STARTCHAR LATIN SMALL LIGATURE FL
+ENCODING 64258
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 6 7 0 0
+BITMAP
+38
+48
+48
+F8
+48
+48
+44
+ENDCHAR
+STARTCHAR REPLACEMENT CHARACTER
+ENCODING 65533
+SWIDTH 392 0
+DWIDTH 6 0
+BBX 5 8 0 -1
+BITMAP
+70
+D8
+A8
+E8
+D8
+F8
+D8
+70
+ENDCHAR
+ENDFONT
diff --git a/configs/shared/.local/share/fonts/file-icons.ttf b/configs/shared/.local/share/fonts/file-icons.ttf
new file mode 100644
index 0000000000..5302538bd0
--- /dev/null
+++ b/configs/shared/.local/share/fonts/file-icons.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/fontawesome.ttf b/configs/shared/.local/share/fonts/fontawesome.ttf
new file mode 100644
index 0000000000..f221e50a2e
--- /dev/null
+++ b/configs/shared/.local/share/fonts/fontawesome.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/material-design-icons.ttf b/configs/shared/.local/share/fonts/material-design-icons.ttf
new file mode 100644
index 0000000000..7015564ad1
--- /dev/null
+++ b/configs/shared/.local/share/fonts/material-design-icons.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/octicons.ttf b/configs/shared/.local/share/fonts/octicons.ttf
new file mode 100644
index 0000000000..6f3edd6679
--- /dev/null
+++ b/configs/shared/.local/share/fonts/octicons.ttf
Binary files differdiff --git a/configs/shared/.local/share/fonts/weathericons.ttf b/configs/shared/.local/share/fonts/weathericons.ttf
new file mode 100644
index 0000000000..948f0a5d26
--- /dev/null
+++ b/configs/shared/.local/share/fonts/weathericons.ttf
Binary files differdiff --git a/configs/shared/misc/.local/share/sounds/gong.mp3 b/configs/shared/.local/share/sounds/gong.mp3
index de0220f329..de0220f329 100644
--- a/configs/shared/misc/.local/share/sounds/gong.mp3
+++ b/configs/shared/.local/share/sounds/gong.mp3
Binary files differdiff --git a/configs/shared/.local/share/wallpaper/bike_tire_blue_4k.jpg b/configs/shared/.local/share/wallpaper/bike_tire_blue_4k.jpg
new file mode 100644
index 0000000000..5576e5b8a5
--- /dev/null
+++ b/configs/shared/.local/share/wallpaper/bike_tire_blue_4k.jpg
Binary files differdiff --git a/configs/shared/.local/share/wallpaper/cartoon_outdoors.jpg b/configs/shared/.local/share/wallpaper/cartoon_outdoors.jpg
new file mode 100644
index 0000000000..1fdee71f88
--- /dev/null
+++ b/configs/shared/.local/share/wallpaper/cartoon_outdoors.jpg
Binary files differdiff --git a/configs/shared/.local/share/wallpaper/coffee_4k.jpg b/configs/shared/.local/share/wallpaper/coffee_4k.jpg
new file mode 100644
index 0000000000..954874949d
--- /dev/null
+++ b/configs/shared/.local/share/wallpaper/coffee_4k.jpg
Binary files differdiff --git a/configs/shared/.local/share/wallpaper/construction_paper_iceberg_4k.jpg b/configs/shared/.local/share/wallpaper/construction_paper_iceberg_4k.jpg
new file mode 100644
index 0000000000..246445d133
--- /dev/null
+++ b/configs/shared/.local/share/wallpaper/construction_paper_iceberg_4k.jpg
Binary files differdiff --git a/configs/shared/.local/share/wallpaper/fantasy_tree_4k.jpg b/configs/shared/.local/share/wallpaper/fantasy_tree_4k.jpg
new file mode 100644
index 0000000000..d800e79ffa
--- /dev/null
+++ b/configs/shared/.local/share/wallpaper/fantasy_tree_4k.jpg
Binary files differdiff --git a/configs/shared/.local/share/wallpaper/finding_nemo.jpg b/configs/shared/.local/share/wallpaper/finding_nemo.jpg
new file mode 100644
index 0000000000..385b674b8d
--- /dev/null
+++ b/configs/shared/.local/share/wallpaper/finding_nemo.jpg
Binary files differdiff --git a/configs/shared/.local/share/wallpaper/forest_8k.jpg b/configs/shared/.local/share/wallpaper/forest_8k.jpg
new file mode 100644
index 0000000000..f66a4c11c0
--- /dev/null
+++ b/configs/shared/.local/share/wallpaper/forest_8k.jpg
Binary files differdiff --git a/configs/shared/.local/share/wallpaper/galaxy_4k.jpg b/configs/shared/.local/share/wallpaper/galaxy_4k.jpg
new file mode 100644
index 0000000000..7180b436bd
--- /dev/null
+++ b/configs/shared/.local/share/wallpaper/galaxy_4k.jpg
Binary files differdiff --git a/configs/shared/.local/share/wallpaper/geometric_4k.jpg b/configs/shared/.local/share/wallpaper/geometric_4k.jpg
new file mode 100644
index 0000000000..337bd41b5e
--- /dev/null
+++ b/configs/shared/.local/share/wallpaper/geometric_4k.jpg
Binary files differdiff --git a/configs/shared/.local/share/wallpaper/geometric_dark_4k.jpg b/configs/shared/.local/share/wallpaper/geometric_dark_4k.jpg
new file mode 100644
index 0000000000..c5d72ecf65
--- /dev/null
+++ b/configs/shared/.local/share/wallpaper/geometric_dark_4k.jpg
Binary files differdiff --git a/configs/shared/.local/share/wallpaper/japan_cherry_blossoms_4k.jpg b/configs/shared/.local/share/wallpaper/japan_cherry_blossoms_4k.jpg
new file mode 100644
index 0000000000..7f2bdbf3eb
--- /dev/null
+++ b/configs/shared/.local/share/wallpaper/japan_cherry_blossoms_4k.jpg
Binary files differdiff --git a/configs/shared/.local/share/wallpaper/lego_manhattan.jpg b/configs/shared/.local/share/wallpaper/lego_manhattan.jpg
new file mode 100644
index 0000000000..c5fa8cae26
--- /dev/null
+++ b/configs/shared/.local/share/wallpaper/lego_manhattan.jpg
Binary files differdiff --git a/configs/shared/.local/share/wallpaper/lightbulb_4k.jpg b/configs/shared/.local/share/wallpaper/lightbulb_4k.jpg
new file mode 100644
index 0000000000..2319b5dfaf
--- /dev/null
+++ b/configs/shared/.local/share/wallpaper/lightbulb_4k.jpg
Binary files differdiff --git a/configs/shared/.local/share/wallpaper/mount_fuji_4k.jpg b/configs/shared/.local/share/wallpaper/mount_fuji_4k.jpg
new file mode 100644
index 0000000000..48c8cca317
--- /dev/null
+++ b/configs/shared/.local/share/wallpaper/mount_fuji_4k.jpg
Binary files differdiff --git a/configs/shared/.local/share/wallpaper/mount_fuji_flowers_4k.jpg b/configs/shared/.local/share/wallpaper/mount_fuji_flowers_4k.jpg
new file mode 100644
index 0000000000..238e7e8f26
--- /dev/null
+++ b/configs/shared/.local/share/wallpaper/mount_fuji_flowers_4k.jpg
Binary files differdiff --git a/configs/shared/.local/share/wallpaper/pixel_art_bridge.jpg b/configs/shared/.local/share/wallpaper/pixel_art_bridge.jpg
new file mode 100644
index 0000000000..505c942e43
--- /dev/null
+++ b/configs/shared/.local/share/wallpaper/pixel_art_bridge.jpg
Binary files differdiff --git a/configs/shared/.local/share/wallpaper/pixelated_china.png b/configs/shared/.local/share/wallpaper/pixelated_china.png
new file mode 100644
index 0000000000..ef1b25e443
--- /dev/null
+++ b/configs/shared/.local/share/wallpaper/pixelated_china.png
Binary files differdiff --git a/configs/shared/.local/share/wallpaper/pixelated_japanese.png b/configs/shared/.local/share/wallpaper/pixelated_japanese.png
new file mode 100644
index 0000000000..edfff638e9
--- /dev/null
+++ b/configs/shared/.local/share/wallpaper/pixelated_japanese.png
Binary files differdiff --git a/configs/shared/.local/share/wallpaper/pixelated_lakehouse.png b/configs/shared/.local/share/wallpaper/pixelated_lakehouse.png
new file mode 100644
index 0000000000..8b2020f11a
--- /dev/null
+++ b/configs/shared/.local/share/wallpaper/pixelated_lakehouse.png
Binary files differdiff --git a/configs/shared/.local/share/wallpaper/pixelated_landscape.jpg b/configs/shared/.local/share/wallpaper/pixelated_landscape.jpg
new file mode 100644
index 0000000000..79eb57de25
--- /dev/null
+++ b/configs/shared/.local/share/wallpaper/pixelated_landscape.jpg
Binary files differdiff --git a/configs/shared/.local/share/wallpaper/pixelated_new_york_city.jpg b/configs/shared/.local/share/wallpaper/pixelated_new_york_city.jpg
new file mode 100644
index 0000000000..23934f82d6
--- /dev/null
+++ b/configs/shared/.local/share/wallpaper/pixelated_new_york_city.jpg
Binary files differdiff --git a/configs/shared/.local/share/wallpaper/pixelated_outdoors.png b/configs/shared/.local/share/wallpaper/pixelated_outdoors.png
new file mode 100644
index 0000000000..66ab14c3c8
--- /dev/null
+++ b/configs/shared/.local/share/wallpaper/pixelated_outdoors.png
Binary files differdiff --git a/configs/shared/.local/share/wallpaper/pixelated_outer_space.png b/configs/shared/.local/share/wallpaper/pixelated_outer_space.png
new file mode 100644
index 0000000000..cf635989d2
--- /dev/null
+++ b/configs/shared/.local/share/wallpaper/pixelated_outer_space.png
Binary files differdiff --git a/configs/shared/.local/share/wallpaper/psychadelic_mushroom_4k.jpg b/configs/shared/.local/share/wallpaper/psychadelic_mushroom_4k.jpg
new file mode 100644
index 0000000000..1ec4cee808
--- /dev/null
+++ b/configs/shared/.local/share/wallpaper/psychadelic_mushroom_4k.jpg
Binary files differdiff --git a/configs/shared/.local/share/wallpaper/walle_4k.jpg b/configs/shared/.local/share/wallpaper/walle_4k.jpg
new file mode 100644
index 0000000000..df2f83ed3a
--- /dev/null
+++ b/configs/shared/.local/share/wallpaper/walle_4k.jpg
Binary files differdiff --git a/configs/shared/.ncmpcpp/config b/configs/shared/.ncmpcpp/config
new file mode 100644
index 0000000000..8dc2fff441
--- /dev/null
+++ b/configs/shared/.ncmpcpp/config
@@ -0,0 +1,12 @@
+mpd_host localhost
+mpd_port 6600
+# mpd_music_dir ~/.local/share/sounds
+
+# visualization - taken from here:
+# https://wiki.archlinux.org/index.php/ncmpcpp
+visualizer_fifo_path = "/tmp/mpd.fifo"
+visualizer_output_name = "my_fifo"
+visualizer_sync_interval = "30" 
+visualizer_in_stereo = "yes"
+visualizer_type = "ellipse"
+visualizer_look = "+|"
diff --git a/configs/shared/.profile b/configs/shared/.profile
new file mode 100644
index 0000000000..725817222c
--- /dev/null
+++ b/configs/shared/.profile
@@ -0,0 +1,68 @@
+# Some programs read from ~/.profile for values. It's best to set environment
+# variables here instead of in ~/.zshrc or similar files, which are sourced
+# everytime a new shell is created. The ~/.profile, on the other hand, is
+# typically sourced only once at login.
+
+PATH+=":$HOME/bin"                            # personal
+PATH+=":$HOME/.local/bin"                     # personal
+PATH+=":$HOME/.cargo/bin"                     # Rust
+PATH+=":$HOME/.rvm/bin"                       # Ruby
+PATH+=":$HOME/n/bin"                          # JavaScript, et al
+PATH+=":$HOME/.yarn/bin"                      # JavaScript, et al
+PATH+=":$HOME/.yarn/global/node_modules/.bin" # JavaScript, et al
+export PATH
+systemctl --user import-environment PATH
+
+# Taken from the EXWM configuration documentation.
+if [ -z "$DISPLAY" -a "$(tty)" = '/dev/tty5' ]; then
+  exec xinit -- vt05
+fi
+
+# Application preferences
+export BROWSER=google-chrome-stable
+export TERMINAL=alacritty # temporary; change this back to `st`
+export VISUAL=emacsclient
+export EDITOR=$VISUAL
+export ALTERNATE_EDITOR=nvim
+
+# Rust integration. Keep here so programs like Emacs can read this value.
+RUST_SRC_PATH="$(rustc --print sysroot)/lib/rustlib/src/rust/src"
+export RUST_SRC_PATH
+
+# TODO: Decide if clipmenu is compatible with EXWM.
+# Ensure clipmenu uses rofi instead of dmenu
+export CM_LAUNCHER=rofi
+
+# Application configuration
+export FZF_DEFAULT_COMMAND='fd --hidden --follow --exclude ".git"'
+export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
+
+export DOTFILES="$HOME/Dropbox/dotfiles"
+export ORG_DIRECTORY="$HOME/Dropbox/org"
+
+# Prevent compton from fading to the lock screen. This also prevents the white
+# overlay that compton was causing to appear. Still unsure why that was
+# happening.
+# For more information, see the following GitHub issue:
+# https://github.com/google/xsecurelock/issues/28
+export XSECURELOCK_NO_COMPOSITE=1
+
+# This fixes nixpkgs that rely on glibc-2.27, which allegedly breaks locale
+# issues.
+# See this thread for more details: https://github.com/NixOS/nixpkgs/issues/8398
+LOCALE_ARCHIVE=$(readlink ~/.nix-profile/lib/locale)/locale-archive
+export LOCALE_ARCHIVE
+
+# Set environment variables for Nix
+# Don't run this for systems running NixOS
+case $(hostname) in
+  # desktop
+  wpcarro.lon.corp.google.com)
+    . ~/.nix-profile/etc/profile.d/nix.sh;;
+  # cloudtop
+  wpcarro.c.googlers.com)
+    . ~/.nix-profile/etc/profile.d/nix.sh;;
+  # work_laptop
+  wpcarro2)
+    . ~/.nix-profile/etc/profile.d/nix.sh;;
+esac
diff --git a/configs/shared/.ssh/config b/configs/shared/.ssh/config
new file mode 100644
index 0000000000..2283a7b0cc
--- /dev/null
+++ b/configs/shared/.ssh/config
@@ -0,0 +1,21 @@
+# Google work station
+Host desktop
+  Hostname wpcarro.lon.corp.google.com
+
+# Google cloud instance
+Host cloudtop
+  Hostname wpcarro.c.googlers.com
+
+Host gcp
+  User wpcarro
+  Hostname 35.246.93.73
+
+# Raspberry Pi home computer
+# router_public_ip: 150.143.40.77
+# private_ip: 192.168.1.67
+Host rpi
+  User pi
+  Hostname 150.143.40.77
+
+Match host *.corp.google.com
+  ProxyCommand corp-ssh-helper %h %p
diff --git a/configs/shared/tmux/.tmux.conf b/configs/shared/.tmux.conf
index 6dc3ec0f68..6dc3ec0f68 100644
--- a/configs/shared/tmux/.tmux.conf
+++ b/configs/shared/.tmux.conf
diff --git a/configs/shared/.xsecurelockrc b/configs/shared/.xsecurelockrc
new file mode 100644
index 0000000000..be315ba1f2
--- /dev/null
+++ b/configs/shared/.xsecurelockrc
@@ -0,0 +1,11 @@
+# Replace the gLinux penguin with a custom image.
+XSECURELOCK_LOGO_IMAGE=~/Dropbox/static/pickle-rick.jpg
+
+# Enable this to remove the background imagery from the xsecurelock screen.
+# XSECURELOCK_SAVER=saver_blank
+
+# Enable this to use the famous "Flying Toasters" screensaver.
+# XSECURELOCK_SAVER=saver_xscreensaver
+
+# Turn this off on laptop (not on desktop).
+XSECURELOCK_BLANK_DPMS_STATE=on
\ No newline at end of file
diff --git a/configs/shared/.xsessionrc b/configs/shared/.xsessionrc
new file mode 100644
index 0000000000..0bb00ffb8e
--- /dev/null
+++ b/configs/shared/.xsessionrc
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+. ~/.xsessionrc.shared
+. ~/.xsessionrc.device
diff --git a/configs/shared/x_server/.xsessionrc.shared b/configs/shared/.xsessionrc.shared
index 13886fe755..ed12786be9 100644
--- a/configs/shared/x_server/.xsessionrc.shared
+++ b/configs/shared/.xsessionrc.shared
@@ -1,6 +1,7 @@
 #!/bin/sh
 
-source ~/.profile
+# Might be unnecessary...
+. ~/.profile
 
 export DESKTOP_SESSION=cinnamon  # gnome for trusty.
 
@@ -9,34 +10,43 @@ export DESKTOP_SESSION=cinnamon  # gnome for trusty.
 # NOTE: IM_MODULE is an "Input Method" module, which I believe affects the way
 # keyboard events are processed. `xim` is "X Input Method"; other options
 # include: `ibus`, `fcitx`, but I'm unsure what features each offers.
-export GTK_IM_MODULE=xim
+# export GTK_IM_MODULE=xim
 
 # Desktop background color.
 xsetroot -solid "#333333"
 
+# Set fallback cursor.
+xsetroot -cursor_name left_ptr
+
+# Set KBDs.
+xmodmap -e 'remove Lock = Caps_Lock'
+xmodmap -e 'keysym Caps_Lock = Escape'
+
+# set key repeat preferences
+# NOTE: This is now being handled with my keyboard.el module in Emacs.
+# xset r rate 250 60
+
 # start tmux with a few commonly used sessions
 # TODO: consider moving this else like ~/.profile, so it doesn't depend on X.
 # This might be better for SSH.
 tmux new -d -s main
 
-# start `clipmenud`,
-# TODO: research if this would be better handled by init/clipmenud.service?
-clipmenud &
-
 # Start the Emacs server
+# TODO: Consider starting this with `systemctl --user enable emacs.service`
 emacs --daemon
 
+# Start ssh-agent
+eval "$(ssh-agent -s)"
+
+# TODO: Prefer `systemctl start docker.service`
+dockerd &
+
 # start compton for shadows, transparency, fading, etc.
+# TODO: Consider starting this with `systemctl --user enable compton.service`
 compton &
 
-# set kbds
-xmodmap -e 'remove Lock = Caps_Lock'
-xmodmap -e 'keysym Caps_Lock = Escape'
-
-# since we separated our i3 configurations between a shared and device-specific
-# setup, we need to make sure that when we start an X session, our i3
-# configuration is up-to-date.
-cat ~/.config/i3/config.{shared,device} >~/.config/i3/config
+# `unclutter` hide the cursor in when it is inactive
+unclutter &
 
-# set key repeat preferences
-xset r rate 250 60
+# Startup Emacs (and EXWM).
+exec dbus-launch --exit-with-session emacs
diff --git a/configs/shared/zsh/.zprofile b/configs/shared/.zprofile
index b8be66f6f6..ceccf996fc 100644
--- a/configs/shared/zsh/.zprofile
+++ b/configs/shared/.zprofile
@@ -8,3 +8,5 @@
 #
 # See this thread for more information: https://groups.google.com/a/google.com/forum/#!topic/zsh-users/VO2lEJRfFzk
 source ~/.profile
+
+export PATH="$HOME/.cargo/bin:$PATH"
diff --git a/configs/shared/.zshrc b/configs/shared/.zshrc
new file mode 100644
index 0000000000..0783f35529
--- /dev/null
+++ b/configs/shared/.zshrc
@@ -0,0 +1,100 @@
+# Necessary to add this line and keep it at the top of my ~/.zshrc to ensure
+# that Tramp works as expected. This was taken from here:
+# https://www.emacswiki.org/emacs/TrampMode
+[[ $TERM == "dumb" ]] && unsetopt zle && PS1='$ ' && return
+
+source ~/antigen.zsh
+
+# Helper functions
+# TODO: Find a way to share these functions across zsh files.
+defensively_source() {
+  # Checks if the file exists before sourcing it
+  if [ -f $1 ]; then
+    source $1
+  else
+    "Cannot source: $1. Aborting..."
+  fi
+}
+
+command_exists() {
+  # Predicate to check if the command exists
+  command -v $1 >/dev/null
+}
+
+# TODO: remove this from here
+export DOTFILES=$HOME/Dropbox/dotfiles
+
+# Load the oh-my-zsh library
+antigen use oh-my-zsh
+
+# Bundles from robbyrussell's oh-my-zsh repo.
+antigen bundle git
+antigen bundle extract         # extracts archives polymorphically
+antigen bundle zsh-completions # extracts archives polymorphically
+
+# Syntax highlighting
+antigen bundle zsh-users/zsh-syntax-highlighting
+
+# Theming
+case $(hostname) in
+  # desktop
+  wpcarro.lon.corp.google.com)
+    antigen theme frisk;;
+  # cloudtop
+  wpcarro.c.googlers.com)
+    antigen theme cloud;;
+  # laptop
+  wpcarro2)
+    antigen theme refined;;
+  # acer NixOS laptop
+  acer-manjaro)
+    antigen theme frisk;;
+esac
+
+# Leave this last
+antigen apply
+
+# Configure fzf
+if command_exists fzf-share; then
+  source "$(fzf-share)/key-bindings.zsh"
+
+  fzf-locate-widget() {
+    # Press M-i to search entire locate database with fzf.
+    local selected
+    if selected=$(locate / | fzf); then
+      LBUFFER+=$selected
+    fi
+    zle redisplay
+  }
+  zle -N fzf-locate-widget
+  bindkey '\ei' fzf-locate-widget
+
+else
+  defensively_source "/usr/share/fzf/key-bindings.zsh"
+fi
+
+# Configure fasd
+eval "$(fasd --init auto)"
+
+# the above line slows tab-completion down dramatically because it attemtps to
+# autocomplete for the 600k+ users found in `compgen -u`. Below is a fix which
+# also restores the function of `cd ~<tab>` to display only ZSH Named
+# Directories.
+zstyle ':completion:*' users root $USER
+
+# Avoiding the defensive source because I want to ensure these files are
+# available.
+source "$DOTFILES/configs/shared/variables.zsh"
+source "$DOTFILES/configs/shared/aliases.zsh"
+source "$DOTFILES/configs/shared/functions.zsh"
+source "$DOTFILES/configs/shared/zle.zsh"
+
+preexec() {
+  # `preexec` runs before every command is run.
+  update_x11_forwarding
+}
+
+defensively_source ~/.rvm/scripts/rvm         # Ruby
+defensively_source ~/.opam/opam-init/init.zsh # OCaml
+defensively_source ~/.ghcup/env               # Haskell
+defensively_source /etc/bash_completion.d/g4d # Google's g4d
diff --git a/configs/shared/zsh/aliases.zsh b/configs/shared/aliases.zsh
index ad16f7c07e..b08999cafe 100644
--- a/configs/shared/zsh/aliases.zsh
+++ b/configs/shared/aliases.zsh
@@ -7,7 +7,9 @@
 #   blaze:      bz
 #   borgcfg:    br
 #   piper:      pi
+#   pass:       ps
 #   pastebin:   pb
+#   pacman:     pm
 #   codesearch: cs
 #   git:        g
 #   mercurial:  hg
@@ -16,6 +18,10 @@
 #   elixir:     ex
 #   haskell:    hk
 #   wifi:       wf
+#   piper:      pp
+#   g4:         pp
+#   g4d:        pp
+#   cci:        circleci
 #
 # Supported qualifiers:
 #   hidden:      h
@@ -32,17 +38,17 @@
 # Misc
 alias c="xclip -selection clipboard -i"
 alias p="xclip -selection clipboard -o"
-alias mdd="mkdir_cd"
+alias cp=cp_dwim
+alias mdd=mkdir_cd
 alias mdp='mkdir --parents'
-alias ls="exa"
-alias ll="exa -l"
-alias la="exa -la"
+alias ls="exa              --sort=type"
+alias ll="exa --long       --sort=type"
+alias la="exa --long --all --sort=type"
 alias lorem="echo Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
 alias e="emacsclient --no-wait --create-frame"
 alias cat="bat --theme=TwoDark"
 alias j='fasd_cd -d' # to emulate autojump; my muscle memory is hardened here
 alias vim=nvim # prefer neovim to vim
-alias links='find ~ -maxdepth 1 -type l -exec exa {} \;' # list all of the links in the home directory
 alias di=dired
 alias chrome=google-chrome
 alias btctl=bluetoothctl
@@ -53,12 +59,30 @@ alias define=sdcv # uses stardict to lookup a word
 alias intellij='nohup /opt/intellij-ce-stable/bin/idea.sh >/dev/null 2>&1 &'
 alias tpr='tput reset'
 alias nordvpn='sudo openvpn /etc/openvpn/ovpn_tcp/us3559.nordvpn.com.tcp.ovpn' # connects to the nordvpn servers in USA
+alias perms='ls -ld' # list the permissions of a directory
+alias please='sudo $(fc -ln -1)'
+alias plz=please # for those keystroke-conscience folks
+alias rmrf='rm -rf' # sometimes the dash is just too much...
+alias open=xdg-open
+alias o=open
+alias simple_vim='vim -u ~/.config/nvim/simple.vim' # vim without a zero-dependency vimrc
+alias stopx='sudo service lightdm stop' # stop X server session
+alias next_wallpaper="emacsclient --eval '(wallpaper/next)'" # Cycles forwards one wallpaper.
+alias prev_wallpaper="emacsclient --eval '(wallpaper/prev)'" # Cycles backwards one wallpaper.
+
+# filesystem
+alias files=laf
+alias dirs=lad
+alias links=lal
 
 # device / power mgt
-alias off='shutdown now'
+alias off='shutdown now' # TODO: Consider using `systemctl poweroff`
 alias suspend='systemctl suspend'
 alias hibernate='systemctl hibernate'
 
+# pass
+alias pscp='pass show --clip'
+
 # nmcli
 # NOTE: check out `tldr nmcli` for more information
 alias wfls='nmcli device wifi' # list available wifi network
@@ -126,13 +150,14 @@ alias gsh="git show"
 alias gbm="git branch --merged"
 alias gwip="git add . && git commit -m wip"
 alias gpr="git pull-request"
+alias gst="git status && hub pr list" # git status and list open hub PRs (if is a GH repository)
 
 # Mercurial
 # The attempt here is to map my well-known, existing `git` aliases to their
 # Mercurial counterparts. Some may map 1:1, others may be like putting a square
 # peg into a round hole. I will try and use my best judgement in these cases
 # while erring on the side of unifying the two APIs.
-alias hgst='hg status'
+alias hgst='PAGER="" hg status'
 alias hglp='hg xl'
 alias hgp='hg uploadchain' # this is like `git push`
 alias hga='hg add'
@@ -146,6 +171,11 @@ alias hgls='hg citc --list' # should have different output from `pils`
 alias hgrc='hg rebase --continue'
 alias hgra='hg rebase --abort'
 alias hgconflicts="hg resolve --list 'set:unresolved()'" # much like `gconflicts`
+alias hgrm='hg citc -d' # delete a CitC client created with Fig
+
+# Piper
+alias ppls='g4 listclients | sed "s/^Client wpcarro://" | sed "s/:[0-9]*:citc.*$//g"'
+alias pprm='p4 citc -d -f' # warning this will forcefully delete a CitC client even if contains pending changes
 
 # Haskell
 alias sb="stack build"
@@ -172,11 +202,17 @@ alias nr="nix repl"
 alias ni='nix-env --install'
 alias nrm='nix-env --uninstall'
 alias nls='nix-env --query'
+alias nrs='sudo nixos-rebuild switch'
 
 # Aptitude (apt)
-alias apti='sudo apt-get install'
+alias apti='sudo apt-get install --assume-yes'
 alias aptrm='sudo apt remove'
 
+# Pacman
+alias pmi='sudo pacman -S --noconfirm'
+alias pms='pacman -Ss'
+alias pmrm='sudo pacman -Rs'
+
 # couple the e* aliases to the <leader>e* kbds in vim
 alias ev='e ~/.config/nvim/init.vim'
 alias ee='e ~/.emacs.d/init.el'
@@ -185,8 +221,12 @@ alias ea='e ~/aliases.zsh'
 alias ef='e ~/functions.zsh'
 alias el='e ~/variables.zsh'
 alias ex='e ~/.Xresources'
-alias ei='e ~/.config/i3/config.shared'
+alias ei='e ~/.config/i3/config'
 alias em='e ~/.tmux.conf'
+# TODO: consider DRYing this up with `e`. Unfortunately, `sudo` won't support
+# aliases.
+alias en='sudo ALTERNATE_EDITOR=nvim emacsclient --no-wait --create-frame /etc/nixos/configuration.nix'
+alias er='e ~/Dropbox/dotfiles/README.md'
 
 # couple the s* aliases to the <leader>s* kbds in vim
 alias sz='source ~/.zshrc'
@@ -196,6 +236,15 @@ alias sl='source ~/variables.zsh'
 alias sx='xrdb ~/.Xresources'
 alias si='i3-msg restart'
 alias sm='tmux source-file ~/.tmux.conf'
+alias sn='sudo nixos-rebuild switch'
+
+# CircleCI
+alias cci='circleci local'
+alias ccijob='circleci local execute --job'
+
+# Personal projects
+alias ide_client='cd ~/Dropbox/ide && nsh'
+alias ide_server='cd ~/Dropbox/ide-server && nsh'
 
 # Google aliases
 alias bzb='blaze build'
@@ -208,3 +257,6 @@ alias pbc='pb --private --title $(date +${date_fmt})| tee >(c && chrome $(p))' #
 alias pbcp='p | pb --private --title $(date +${date_fmt})| tee >(c && chrome $(p))' # create a private gPaste from your clipboard's content; open the result in a browser
 alias pbls='$BROWSER https://paste.googleplex.com/$(whoami)'
 alias flagpick=/google/data/ro/users/sk/skaushik/www/public-tools/flagpick
+alias jaze=/google/data/ro/projects/devtools/javascript/jaze
+alias aclcheck=/google/data/ro/projects/ganpati/aclcheck
+alias g3python=/google/data/ro/projects/g3python/g3python
diff --git a/configs/shared/emacs/.emacs.d/init.el b/configs/shared/emacs/.emacs.d/init.el
deleted file mode 100644
index a674ddc19a..0000000000
--- a/configs/shared/emacs/.emacs.d/init.el
+++ /dev/null
@@ -1,26 +0,0 @@
-(require 'wpc-package "~/.emacs.d/wpc/packages/wpc-package.el")
-
-;; load order is intentional
-(require 'variables)
-(require 'wpc-misc)
-
-;; my libraries
-(require 'functions)
-(require 'string-functions)
-(require 'macros)
-(require 'casing)
-
-(require 'wpc-ui)
-(require 'wpc-keybindings)
-(require 'wpc-dired)
-(require 'wpc-terminal)
-(require 'wpc-org)
-(require 'wpc-company)
-(require 'wpc-flycheck)
-(require 'wpc-docker)
-(require 'wpc-lisp)
-(require 'wpc-haskell)
-(require 'wpc-elixir)
-(require 'wpc-nix)
-(require 'wpc-clojure)
-(require 'wpc-javascript)
diff --git a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/redux-action b/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/redux-action
deleted file mode 100644
index d196f8ee80..0000000000
--- a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/redux-action
+++ /dev/null
@@ -1,5 +0,0 @@
-# -*- mode: snippet -*-
-# name: redux-action
-# key: rax
-# --
-export const ${1:$$(lower->caps yas-text)} = '`(downcase (buffer-dirname))`/${1:$(caps->kebab yas-text)}'
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/typed-redux-action b/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/typed-redux-action
deleted file mode 100644
index a4ef0181cd..0000000000
--- a/configs/shared/emacs/.emacs.d/snippets/rjsx-mode/typed-redux-action
+++ /dev/null
@@ -1,5 +0,0 @@
-# -*- mode: snippet -*-
-# name: typed-redux-action
-# key: trax
-# --
-export const ${1:$$(lower->caps yas-text)}: '`(downcase (buffer-dirname))`/${1:$(caps->kebab yas-text)}' = '`(downcase (buffer-dirname))`/${1:$(caps->kebab yas-text)}'
\ No newline at end of file
diff --git a/configs/shared/emacs/.emacs.d/tramp b/configs/shared/emacs/.emacs.d/tramp
deleted file mode 100644
index dcbfb28ed0..0000000000
--- a/configs/shared/emacs/.emacs.d/tramp
+++ /dev/null
@@ -1,42 +0,0 @@
-;; -*- emacs-lisp -*- <18/11/04 17:19:20 /home/wpcarro/.emacs.d/tramp>
-;; Tramp connection history.  Don't change this file.
-;; You can delete it, forcing Tramp to reapply the checks.
-
-((["sudo" "root" "nixos" nil nil]
-  ("uname" "Linux 4.14.71")
-  ("locale" "LC_ALL=en_US.utf8")
-  ("test" "test")
-  ("remote-path"
-   ("/run/current-system/sw/bin" "/bin" "/usr/bin"))
-  ("remote-shell" "/bin/sh")
-  ("readlink" "\\readlink")
-  ("stat" nil)
-  ("perl-file-spec" t)
-  ("perl-cwd-realpath" t)
-  ("perl" "\\perl")
-  ("id" "/run/current-system/sw/bin/id")
-  ("gid-integer" 0)
-  ("file-exists" "test -e")
-  ("gid-string" "root")
-  ("uid-integer" 0)
-  ("git" "\\git")
-  ("~root" "/root")
-  ("env-u-option" t))
- (["ssh" nil "chords" nil nil]
-  ("uname" "Linux 4.4.0-138-generic")
-  ("locale" "LC_ALL=en_US.utf8")
-  ("test" "test")
-  ("remote-path"
-   ("/bin" "/usr/bin" "/sbin" "/usr/sbin" "/usr/local/bin" "/usr/local/sbin"))
-  ("remote-shell" "/bin/sh")
-  ("readlink" "\\readlink")
-  ("stat" nil)
-  ("perl-file-spec" t)
-  ("perl-cwd-realpath" t)
-  ("perl" "\\perl")
-  ("id" "/usr/bin/id")
-  ("gid-integer" 0)
-  ("gid-string" "root")
-  ("file-exists" "test -e")
-  ("ls" "/bin/ls --color=never")
-  ("ls-dired" t)))
diff --git a/configs/shared/emacs/.emacs.d/wpc/casing.el b/configs/shared/emacs/.emacs.d/wpc/casing.el
deleted file mode 100644
index 9f8e8a2318..0000000000
--- a/configs/shared/emacs/.emacs.d/wpc/casing.el
+++ /dev/null
@@ -1,46 +0,0 @@
-;; casing.el --- Helper functions for formatting text -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; These functions are intended to be bound to KBDs for daily use and
-;; refactoring.
-
-;;; Code:
-
-;; todo - grab the string at point and replace it with the output of
-;; each fn
-
-(defun caps->kebab (x)
-  "Change the casing of X from CAP_CASE to kebab-case."
-  (->> x
-       s-downcase
-       (s-replace "_" "-")))
-
-(defun kebab->caps (x)
-  "Change the casing of X from CAP_CASE to kebab-case."
-  (->> x
-       s-upcase
-       (s-replace "-" "_")))
-
-(defun lower->caps (x)
-  "Change the casing of X from lowercase to CAPS_CASE."
-  (->> x
-       s-upcase
-       (s-replace " " "_")))
-
-(defun lower->kebab (x)
-  "Change the casing of X from lowercase to kebab-case"
-  (s-replace " " "-" x))
-
-;;; Tests:
-
-(ert-deftest caps->kebab-test ()
-  (should (string= (caps->kebab "CAPS_CASE_STRING")
-                   "caps-case-string")))
-
-(ert-deftest kebab->caps-test ()
-  (should (string= (kebab->caps "kebab-case-string")
-                   "KEBAB_CASE_STRING")))
-
-(provide 'casing)
-;;; casing.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/fs-functions.el b/configs/shared/emacs/.emacs.d/wpc/fs-functions.el
deleted file mode 100644
index 9ca970c242..0000000000
--- a/configs/shared/emacs/.emacs.d/wpc/fs-functions.el
+++ /dev/null
@@ -1,24 +0,0 @@
-;;; fs-functions.el --- Functions to make working with the filesystem easier. -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; Hosts ergonomic functions for working with a filesystem.
-
-;;; Code:
-(defun ensure-file-path (path)
-  "Ensure that a file and its directories in PATH exist.
-Will error for inputs with a trailing slash."
-  (when (s-ends-with? "/" path)
-    (error (format "Input path has trailing slash: %s" path)))
-  (let ((dirs (->> path f-dirname f-split)))
-    (apply #'f-mkdir dirs)
-    (f-touch path)))
-
-(defun ensure-dir-path (path)
-  "Ensures that a directory and its ancestor directories in PATH exist."
-  (->> path
-       f-split
-       (apply #'f-mkdir)))
-
-(provide 'fs-functions)
-;;; fs-functions.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/macros.el b/configs/shared/emacs/.emacs.d/wpc/macros.el
deleted file mode 100644
index 02d7501b22..0000000000
--- a/configs/shared/emacs/.emacs.d/wpc/macros.el
+++ /dev/null
@@ -1,28 +0,0 @@
-;;; macros.el --- Helpful variables for making my ELisp life more enjoyable -*- lexical-binding: t -*-
-;; Authpr: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; This file contains helpful variables that I use in my ELisp development.
-
-;;; Code:
-(defmacro xi (&rest FORMS)
-  `(lambda ,(--filter (s-contains? (symbol-name it)
-                                   (prin1-to-string FORMS))
-                      '(x1 x2 x3 x4 x5))
-     ,FORMS))
-
-(defmacro enable (mode)
-  "Helper for enabling MODE. Useful in `add-hook' calls."
-  `#'(lambda nil (,mode 1)))
-
-(defmacro disable (mode)
-  "Helper for disabling MODE. Useful in `add-hook' calls."
-  `#'(lambda nil (,mode -1)))
-
-(defmacro add-hooks (modes)
-  "Add multiple MODES for the CALLBACK."
-  `(dolist (mode ,modes)
-     (add-hook (symbol/ensure-hookified mode) ,callback)))
-
-(provide 'macros)
-;;; macros.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-clojure.el b/configs/shared/emacs/.emacs.d/wpc/packages/wpc-clojure.el
deleted file mode 100644
index 1939d3eced..0000000000
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-clojure.el
+++ /dev/null
@@ -1,51 +0,0 @@
-;;; clojure.el --- My Clojure preferences -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; Hosting my Clojure tooling preferences
-
-;;; Code:
-
-;; Helper functions
-(defun wpc/buffer-name-for-clojure-mode (mode)
-  (let* ((project-name (projectile-project-name))
-         (cljs-name (concat "*cider-repl CLJS " project-name "*"))
-         (clj-name  (concat "*cider-repl " project-name "*")))
-    (cond ((eq mode 'clojurescript-mode) cljs-name)
-          ((eq mode 'clojure-mode) clj-name)
-          ((eq mode 'clojurec-mode) cljs-name))))
-
-(defun wpc/repl-function-for-clojure-mode (mode)
-  (let ((project-name (projectile-project-name))
-        (cljs-fn #'cider-jack-in-clojurescript)
-        (clj-fn  #'cider-jack-in))
-    (cond ((eq mode 'clojurescript-mode) cljs-fn)
-          ((eq mode 'clojure-mode) clj-fn)
-          ((eq mode 'clojurec-mode) cljs-fn))))
-
-(defun wpc/find-or-create-clojure-or-clojurescript-repl ()
-  (interactive)
-  (with-current-buffer (current-buffer)
-    (let ((buffer-name   (wpc/buffer-name-for-clojure-mode major-mode))
-          (repl-function (wpc/repl-function-for-clojure-mode major-mode)))
-      (if (get-buffer buffer-name)
-          (switch-to-buffer buffer-name)
-        (funcall repl-function)))))
-
-(use-package cider
-  :config
-  (general-define-key
-    :keymaps 'cider-repl-mode-map
-    "C-l"    #'cider-repl-clear-buffer
-    "C-u"    #'kill-whole-line
-    "<up>"   #'cider-repl-previous-input
-    "<down>" #'cider-repl-next-input
-    "C-c 'j" #'wpc/find-or-create-clojure-or-clojurescript-repl)
-  (setq cider-cljs-lein-repl
-        "(do (require 'figwheel-sidecar.repl-api)
-             (figwheel-sidecar.repl-api/start-figwheel!)
-             (figwheel-sidecar.repl-api/cljs-repl))"
-        cider-prompt-for-symbol nil))
-
-(provide 'wpc-clojure)
-;;; wpc-clojure.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-dired.el b/configs/shared/emacs/.emacs.d/wpc/packages/wpc-dired.el
deleted file mode 100644
index 6639ea5306..0000000000
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-dired.el
+++ /dev/null
@@ -1,22 +0,0 @@
-;;; dired.el --- My dired preferences -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; Hosts my attempts at configuring dired
-
-;;; Code:
-
-(require 'dired)
-(general-nmap
-  :keymaps 'dired-mode-map
-  "c" #'find-file
-  "f" #'wpc/find-file
-  "-" #'dired-up-directory)
-(general-unbind
-  :keymaps 'dired-mode-map
-  "s")
-(general-add-hook 'dired-mode-hook (list (enable dired-hide-details-mode)
-                                         #'auto-revert-mode))
-
-(provide 'wpc-dired)
-;;; wpc-dired.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-keybindings.el b/configs/shared/emacs/.emacs.d/wpc/packages/wpc-keybindings.el
deleted file mode 100644
index a01505a041..0000000000
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-keybindings.el
+++ /dev/null
@@ -1,139 +0,0 @@
-;;; keybindings.el --- My Evil preferences -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; This module hosts my Evil preferences
-;;
-;; Wish List:
-;; - drop support for `evil-leader' library in favor of `general.el'
-;; - restore support for concise (n <kbd> <function>) instead of `general-mmap'
-;; - restore support for `general-unbind'
-
-;;; Code:
-
-(use-package evil
-  :init
-  (setq evil-want-integration nil)
-  (general-evil-setup)
-  :config
-  (general-mmap
-    :keymaps 'override
-    "RET" #'evil-goto-line
-    "H"   #'evil-first-non-blank
-    "L"   #'evil-end-of-line
-    "-"   #'dired-jump
-    "sl"  #'wpc/evil-window-vsplit-right
-    "sh"  #'evil-window-vsplit
-    "sk"  #'evil-window-split
-    "sj"  #'wpc/evil-window-split-down)
-  (general-nmap
-    :keymaps 'override
-    "gd"  #'xref-find-definitions)
-  (general-unbind 'motion "M-." "C-p")
-  (general-unbind 'normal "s"   "M-.")
-  (general-unbind 'insert "C-d" "C-a" "C-e" "C-n" "C-p" "C-k")
-  (setq evil-symbol-word-search t)
-  (evil-mode 1))
-
-;; evil keybindings
-(use-package evil-collection
-  :after (evil)
-  :config
-  (evil-collection-init))
-
-;; expose a leader key
-(use-package evil-leader
-  :after (evil counsel)
-  :config
-  (global-evil-leader-mode)
-  (evil-leader/set-leader "<SPC>")
-  ;; global
-  (evil-leader/set-key
-    "i"  #'counsel-semantic-or-imenu
-    "j"  #'jump-to-register
-    "h"  #'help
-    "a"  #'wpc/toggle-terminal
-    "="  #'align
-    "p"  #'flycheck-previous-error
-    "P"  #'counsel-git-grep
-    "f"  #'wpc/find-file
-    "n"  #'flycheck-next-error
-    "N"  #'smerge-next
-    "P"  #'smerge-prev
-    "b"  #'ivy-switch-buffer
-    "gs" #'magit-status
-
-    "es" #'wpc/create-snippet
-    "ev" (lambda () (interactive) (wpc/find-file-split "~/.config/nvim/init.vim"))
-    "ee" (lambda () (interactive) (wpc/find-file-split "~/.emacs.d/init.el"))
-    "ez" (lambda () (interactive) (wpc/find-file-split "~/.zshrc"))
-    "ea" (lambda () (interactive) (wpc/find-file-split "~/aliases.zsh"))
-    "ef" (lambda () (interactive) (wpc/find-file-split "~/functions.zsh"))
-    "el" (lambda () (interactive) (wpc/find-file-split "~/variables.zsh"))
-    "ex" (lambda () (interactive) (wpc/find-file-split "~/.Xresources"))
-    "ei" (lambda () (interactive) (wpc/find-file-split "~/.config/i3/config.shared"))
-    "em" (lambda () (interactive) (wpc/find-file-split "~/.tmux.conf"))
-
-    "B"  #'magit-blame
-    "w"  #'save-buffer
-    "x"  #'evil-save-and-close
-    "W"  #'save-all-buffers
-    "r"  #'wpc/evil-replace-under-point
-    ))
-
-;; create comments easily
-(use-package evil-commentary
-  :after (evil)
-  :config
-  (evil-commentary-mode))
-
-;; evil surround
-(use-package evil-surround
-  :after (evil)
-  :config
-  (global-evil-surround-mode 1))
-
-(defun wpc/ensure-kbds (_ignore)
-  "Try to ensure that my keybindings retain priority over other minor modes."
-  (unless (eq (caar minor-mode-map-alist) 'wpc/kbds-minor-mode)
-    (let ((mykbds (assq 'wpc/kbds-minor-mode minor-mode-map-alist)))
-      (assq-delete-all 'wpc/kbds-minor-mode minor-mode-map-alist)
-      (add-to-list 'minor-mode-map-alist mykbds))))
-
-;; Custom minor mode that ensures that my kbds are available no matter which
-;; major or minor modes are active.
-(add-hook 'after-load-functions #'wpc/ensure-kbds)
-
-(defvar wpc/kbds
-  (let ((map (make-sparse-keymap)))
-    (bind-keys :map map
-               ("M-q" . delete-window)
-               ("C-x C-;" . comment-or-uncomment-region)
-               ("C-x h" . help)
-               ("<s-return>" . toggle-frame-fullscreen)
-               ("<down-mouse-1>" . ffap-other-window)
-               ("M-h"  . wpc/tmux-emacs-windmove-left)
-               ("M-l"  . wpc/tmux-emacs-windmove-right)
-               ("M-k"  . wpc/tmux-emacs-windmove-up)
-               ("M-j"  . wpc/tmux-emacs-windmove-down)
-               ("M--"  . wpc/evil-window-split-down)
-               ("M-\\" . wpc/evil-window-vsplit-right)
-               ("M-q"  . delete-window))
-    map)
-  "William Carroll's keybindings that should have the highest precedence.")
-
-(define-minor-mode wpc/kbds-minor-mode
-  "A minor mode so that my key settings override annoying major modes."
-  :init-value t
-  :lighter " wpc/kbds"
-  :keymap wpc/kbds)
-
-;; allow jk to escape
-(use-package key-chord
-  :after (evil)
-  :config
-  (key-chord-mode 1)
-  (key-chord-define evil-insert-state-map "jk" 'evil-normal-state))
-
-(provide 'wpc-keybindings)
-;;; wpc-keybindings.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-lisp.el b/configs/shared/emacs/.emacs.d/wpc/packages/wpc-lisp.el
deleted file mode 100644
index cebe7b2657..0000000000
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-lisp.el
+++ /dev/null
@@ -1,48 +0,0 @@
-;;; lisp.el --- Generic LISP preferences -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; This hosts things like Paredit settings
-;;
-;; Here is some of the thinking behind some of the keybindings:
-;;
-;; slurp    s
-;; barf     S
-;; forward  )
-;; backward (
-;;
-;; Known concession: s and S eclipse Vim bindings.  There is a precedent already
-;; for eclipsing the s binding for window splitting.  Shift-s feel appropriate
-;; for barfing, since eclisping the b KBD feels less acceptable than eclisping
-;; the s KBD.
-
-;;; Code:
-
-(defconst wpc/lisp-mode-hooks
-  '(emacs-lisp-mode-hook
-    clojure-mode-hook
-    clojurescript-mode-hook))
-
-;; Elisp
-(use-package elisp-slime-nav
-  :config
-  (general-add-hook 'emacs-lisp-mode #'ielm-mode))
-
-;; paredit LISP editing
-(use-package paredit
-  :config
-  (general-unbind
-    :keymaps 'paredit-mode-map
-    "C-j"
-    "M-q")
-  (general-nmap
-    :keymaps 'paredit-mode-map
-     "s)" #'paredit-forward-slurp-sexp
-     "s(" #'paredit-backward-slurp-sexp
-     "S)" #'paredit-forward-barf-sexp
-     "S(" #'paredit-backward-barf-sexp
-     "gr" #'paredit-raise-sexp)
-  (general-add-hook wpc/lisp-mode-hooks #'enable-paredit-mode))
-
-(provide 'wpc-lisp)
-;;; wpc-lisp.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-terminal.el b/configs/shared/emacs/.emacs.d/wpc/packages/wpc-terminal.el
deleted file mode 100644
index aa76fde6a1..0000000000
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-terminal.el
+++ /dev/null
@@ -1,22 +0,0 @@
-;;; terminal.el --- My cobbled together terminal -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; My attempts at creating a sane Emacs terminal
-;;
-;; This module previously contained more logic, which has since been stripped.
-;;
-;; If the variable `explicit-shell-file-name' is `nil', Emacs will use the value
-;; for the $SHELL environment variable.  When running on NixOS, since binaries
-;; like `zsh' won't be available at `/bin/zsh' or other common places, we need
-;; to ensure that `explicit-shell-file-name' remain `nil'.
-;;
-;; Wish List:
-;; - prevent Emacs from asking: "Run program: /run/current-system/sw/bin/zsh"
-
-;;; Code:
-
-(setq wpc/terminal-name "wpc/terminal")
-
-(provide 'wpc-terminal)
-;;; wpc-terminal.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-ui.el b/configs/shared/emacs/.emacs.d/wpc/packages/wpc-ui.el
deleted file mode 100644
index 8cbcf3248f..0000000000
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-ui.el
+++ /dev/null
@@ -1,162 +0,0 @@
-;;; wpc-ui.el --- Any related to the UI/UX goes here -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; Hosts font settings, scrolling, color schemes.
-
-;;; Code:
-
-;; increase line height
-(setq-default line-spacing 4)
-
-;; change font
-(add-to-list 'default-frame-alist '(font . "Operator Mono Book-9"))
-
-(defconst wpc/font-size-step 10
-  "The amount (%) by which to increase or decrease a font.")
-
-(defun wpc/increase-font ()
-  "Increase font size."
-  (interactive)
-  (->> (face-attribute 'default :height)
-       (+ wpc/font-size-step)
-       (set-face-attribute 'default (selected-frame) :height)))
-
-(defun wpc/decrease-font ()
-  "Decrease font size."
-  (interactive)
-  (->> (face-attribute 'default :height)
-       (+ (- wpc/font-size-step))
-       (set-face-attribute 'default (selected-frame) :height)))
-
-(general-define-key "s-j" #'wpc/decrease-font)
-(general-define-key "s-k" #'wpc/increase-font)
-
-;; smooth scrolling settings
-(setq scroll-step 1
-      scroll-conservatively 10000)
-
-;; theme mgt
-(use-package cycle-themes
-  :after (doom-themes)
-  :config
-  ;; NOTE: may want to use `defconst' here
-  (setq wpc/doom-themes
-        (->> (custom-available-themes)
-             (-map #'symbol-name)
-             (-filter (-partial #'s-starts-with? "doom-"))
-             (-map #'intern)))
-  (setq cycle-themes-theme-list wpc/doom-themes))
-
-;; clean up modeline
-(use-package diminish
-  :after (yasnippet ivy which-key)
-  :config
-  (diminish 'evil-commentary-mode)
-  (diminish 'flycheck-mode "Flycheck")
-  (diminish 'company-mode "Company")
-  (diminish 'auto-revert-mode)
-  (diminish 'which-key-mode)
-  (diminish 'yas-minor-mode)
-  (diminish 'ivy-mode))
-
-;; disable startup screen
-(setq inhibit-startup-screen t)
-
-;; disable toolbar
-(tool-bar-mode -1)
-
-;; enable line numbers
-(general-add-hook '(prog-mode-hook
-                    text-mode-hook
-                    conf-mode-hook)
-                  (enable linum-mode))
-;;(add-hook 'after-init-hook (lambda () (set-face-foreground 'linum "#da5468")))
-
-;; set default buffer for Emacs
-(setq initial-buffer-choice wpc/current-project)
-
-;; transparent Emacs
-(set-frame-parameter (selected-frame) 'alpha '(90 . 90))
-(setq frame-transparent? t)
-
-(defun wpc/toggle-transparency ()
-  "Toggle the frame transparency."
-  (interactive)
-  (set-frame-parameter (selected-frame) 'alpha '(90 . 90))
-  (let ((alpha (if frame-transparent? 100 90)))
-    (set-frame-parameter (selected-frame) 'alpha `(,alpha . ,alpha)))
-  (setq frame-transparent? (not frame-transparent?)))
-
-(general-define-key "s-u" #'wpc/toggle-transparency)
-
-;; premium Emacs themes
-(use-package doom-themes
-  :config
-  (setq doom-themes-enable-bold t
-        doom-themes-enable-italic t)
-  (load-theme 'doom-one t)
-  (doom-themes-visual-bell-config)
-  (doom-themes-org-config))
-
-;; kbd discovery
-(use-package which-key
-  :config
-  (setq which-key-idle-delay 0.25)
-  (which-key-mode))
-
-;; completion framework
-(use-package ivy
-  :config
-  (ivy-mode t))
-
-;; icons for Ivy
-(use-package all-the-icons-ivy
-  :after (ivy)
-  :config
-  (all-the-icons-ivy-setup))
-
-;; disable menubar
-(menu-bar-mode -1)
-(when (string-equal system-type "darwin")
-  (setq ns-auto-hide-menu-bar t))
-
-;; reduce noisiness of auto-revert-mode
-(setq auto-revert-verbose nil)
-
-;; highlight lines that are over 100 characters long
-(use-package whitespace
-  :config
-  (setq whitespace-line-column wpc/fill-column)
-  (setq whitespace-style '(face lines-tail))
-  (add-hook 'prog-mode-hook #'whitespace-mode))
-
-
-
-;; rebalance emacs windows after splits are created
-(defadvice split-window-below (after rebalance-windows activate)
-  (balance-windows))
-
-(defadvice split-window-right (after rebalance-windows activate)
-  (balance-windows))
-
-(defadvice delete-window (after rebalance-window activate)
-  (balance-windows))
-
-;; dirname/filename instead of filename<dirname>
-(setq uniquify-buffer-name-style 'forward)
-
-;; highlight matching parens, brackets, etc
-(show-paren-mode 1)
-
-;; hide the scroll-bars in the GUI
-(scroll-bar-mode -1)
-
-;; GUI alerts in emacs
-(use-package alert
-  :commands (alert)
-  :config
-  (setq alert-default-style 'notifier))
-
-(provide 'wpc-ui)
-;;; wpc-ui.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/string-functions.el b/configs/shared/emacs/.emacs.d/wpc/string-functions.el
deleted file mode 100644
index 2ddd22b223..0000000000
--- a/configs/shared/emacs/.emacs.d/wpc/string-functions.el
+++ /dev/null
@@ -1,48 +0,0 @@
-;; functions.el --- String helper functions for my Emacs development -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; String & Symbol helpers!
-
-;;; Code:
-
-;; Strings
-(defun string/hookify (x)
-  "Append \"-hook\" to X."
-  (s-append "-hook" x))
-
-(defun symbol->string (symbol)
-  "Alias for `symbol-name' with SYMBOL, since I can never remember that
-function's name."
-  (symbol-name symbol))
-
-(defun string->symbol (string)
-  "Alias for `intern' for STRING since I can never remember that function's
-  name."
-  (intern string))
-
-(defun string/ensure-hookified (x)
-  "Ensure that X has \"-hook\" appended to it."
-  (if (s-ends-with? "-hook" x)
-      x
-    (string/hookify x)))
-
-;; Symbols
-(defun symbol/as-string (callback x)
-  "Treat the symbol, X, as a string while applying CALLBACK to it.
-Coerce back to a symbol on the way out."
-  (->> x
-       symbol-name
-       callback
-       intern))
-
-(defun symbol/hookify (x)
-  "Append \"-hook\" to X when X is a symbol."
-  (symbol/as-string #'string/hookify x))
-
-(defun symbol/ensure-hookified (x)
-  "Ensure that X has \"-hook\" appended to it when X is a symbol."
-  (symbol/as-string #'string/ensure-hookified x))
-
-(provide 'string-functions)
-;;; string-functions.el ends here
diff --git a/configs/shared/zsh/functions.zsh b/configs/shared/functions.zsh
index 9a02b1b947..cae434274e 100644
--- a/configs/shared/zsh/functions.zsh
+++ b/configs/shared/functions.zsh
@@ -1,3 +1,322 @@
+# NOTE: All functions should be documented. Including usage examples.
+# NOTE: Prioritize the error handling (especially error messages) as highly as
+# most people prioritize "happy-paths" (aka features).
+
+################################################################################
+# Personal dependencies
+################################################################################
+
+source ~/Dropbox/programming/db_cli/src/index.zsh
+
+
+################################################################################
+# Documentation and error messages
+################################################################################
+
+# TODO: Move these to their own repository.
+
+echo_info() {
+  # Echos an informational message.
+  #
+  # depends_variable blue
+  echo -e "${blue}[INFO]: $1"
+}
+
+echo_warn() {
+  # Echos a warning message.
+  # This function depends on the colors defined in variables.zsh.
+  #
+  # depends_variable yellow
+  echo -e "${yellow}[WARNING]: $1"
+}
+
+echo_error() {
+  # Echos an error message.
+  #
+  # depends_variable red
+  echo -e "${red}[ERROR]: $1"
+}
+
+unsupported_input() {
+  # Generic error message. Consume herein to standardize the error messages.
+  # Pass the supported inputs as $1.
+  #
+  # depends error_error
+  echo_error "Unsupported input. This function only supports the following inputs: $1. Exiting..."
+}
+
+depends() {
+  # Prints a message explaining a function's dependencies. Consume here to
+  # standardize the error messages.
+  # Pass the dependencies as $1.
+  #
+  # depends echo_info
+  echo_info "This function depends on the following functions: $@"
+}
+
+depends_variable() {
+  # Prints a message explaining a dependency on a variable. Consume here to
+  # standardize the error messages.
+  # Pass the dependencies as $1.
+  #
+  # depends echo_info
+  echo_info "This function depends on the following variables: $@"
+}
+
+depends_alias() {
+  # Prints a message explaining a dependency on a shell alias. Consume here to
+  # standardize the error messages.
+  # Pass the dependencies as $1.
+  #
+  # depends echo_info
+  echo_info "This function depends on the following aliases: $@"
+}
+
+compliments() {
+  # Prints a message explaining that a function compliments another function.
+  # Think of complimentary functions as `zip` and `unzip`.
+  #
+  # depends echo_info
+  echo_info "This function compliments the \`$1\` function."
+}
+
+
+################################################################################
+# Filesystem operations
+################################################################################
+
+tar_dir() {
+  # Tars dir as dir.tar. Removes dir.
+  # compliments untar_dir
+  tar -cf  "$1.tar" "$(basename $1)" && rm -rf "$1"
+}
+
+untar_dir() {
+  # Untars dir.tar as dir. Removes dir.tar.
+  # compliments tar_dir
+  tar -xvf "$1" && rm "$1"
+}
+
+targz_dir() {
+  # Tars a dir as dir.tar.gz.
+  # compliments untargz_dir
+  tar -czf "$1.tar.gz" "$(basename $1)"; rm -rf "$1"
+}
+
+untargz_dir() {
+  # Untars dir.tar.gz as dir. Removes dir.tar.gz.
+  # compliments targz_dir
+  tar -xzvf "$1" && rm "$1"
+}
+
+zip_dir() {
+  # Zips dir as dir.zip. Removes dir.
+  # compliments unzip_dir
+  zip -r "$1.zip" "$(basename $1)" && rm -rf "$1"
+}
+
+unzip_dir() {
+  # Unzips dir.zip as dir. Removes dir.zip.
+  # compliments zip_dir
+  unzip "$1" && rm "$1"
+}
+
+archive() {
+  # Generic function for archiving directories
+  #
+  # depends tar_dir targz_dir zip_dir
+  # compliments unarchive
+  printf "Which type of archive would you like to like create? (tar, tar.gz, zip) "
+  case $(read -e) in
+    tar)    tar_dir   "$1";;
+    tar.gz) targz_dir "$1";;
+    zip)    zip_dir   "$1";;
+    *)      unsupported_input "tar, tar.gz, zip";;
+  esac
+}
+
+unarchive() {
+  # Generic way to unarchive files.
+  # Currently supports the following extensions:
+  # - .tar
+  # - .tar.gz
+  # - .zip
+  #
+  # depends untar unzip
+  # compliments archive
+  case $1 in
+    *.tar.gz) untargz_dir "$1";;
+    *.tar)    untar_dir   "$1";;
+    *.zip)    unzip_dir   "$1";;
+    *)        unsupported_input ".tar, .tar.zip, .zip"
+  esac
+}
+
+
+################################################################################
+# Filesystem operations
+################################################################################
+
+alert() {
+  # Send the user information via the GUI.
+  # Intended to have the same API as the Javascript alert function.
+  # Usage: alert [msg-body]
+  # depends notify-send
+  notify-send 'Info' "$1"
+}
+
+alert_echo() {
+  # Composes `echo` and `alert` together.
+  # Usage: alert_echo [msg-body]
+  # depends alert echo
+  echo "$1" && alert "$1"
+}
+
+
+################################################################################
+# Unclassified
+################################################################################
+
+deref() {
+  # Dereferences a symlink.
+  # Usage: deref [symlink]
+  if ! [ -L $1 ]; then
+    echo_error "File is not a symlink: $1. Exiting..."
+  else
+    local src=$(readlink -f $1)
+    echo "Moving $src -> $1" && \
+      mv $1 $1.bak && \
+      mv $src $1 && \
+      rm $1.bak
+  fi
+}
+
+wallpaper() {
+  # Select and load a wallpaper from the wallpaper directory.
+  local files=$(ls ~wallpaper)
+  local selection=$(echo $files | fzf)
+  local fullpath=~wallpaper/$selection
+
+  feh --bg-scale $fullpath
+}
+
+# TODO: Write more robust, tested dotfile manager application in Elisp.
+dotfilify() {
+  # Moves a regular, non-symlinked file into my dotfiles.
+  # compliments undotfilify
+  local original_path=$(realpath $1)
+  # Trim $HOME prefix
+  local dotfile_path="${DOTFILES#$HOME/}/configs/shared/${original_path#$HOME/}"
+
+  mv $original_path $dotfile_path && ln --force -s $dotfile_path $original_path
+}
+
+# TODO: Write more robust, tested dotfile manager application in Elisp.
+undotfilify() {
+  # De-references a file that is symlinked to in my dotfiles.
+  # Usage: undotfilify [path-to-symlink]
+  # compliments dotfilify
+
+  if ! [ -L "$1" ]; then
+    echo_error "Not a symbolic link: $1. Exiting..."
+    return 1
+  else
+    local src=$(readlink -f $1)
+
+    echo "Removing: $1" && rm $1 && \
+      echo "Moving: $src -> $1" && \
+      mv $src $1
+  fi
+}
+
+markdown() {
+  # Simple way to read markdown on the command-line.
+  # Usage: markdown [file]
+  # depends pandoc less
+  pandoc -t plain $1 | less
+}
+
+rofi_prompt() {
+  # Simple prompt for user input using `rofi`.
+  # Usage: rofi_prompt [label]
+  local label="${1:-Input}"
+  rofi -dmenu -p "$label" -theme-str 'listview { enabled: false; }'
+}
+
+import_gpg() {
+  # Shorthand for executing the import script for my GPG creds.
+  local gpg_config=$DOTFILES/configs/shared/gpg/.gnupg
+  $gpg_config/import.sh $gpg_config/exported
+}
+
+export_gpg() {
+  # Shorthand for executing the export script for my GPG creds.
+  local gpg_config=$DOTFILES/configs/shared/gpg/.gnupg
+  $gpg_config/export.sh $gpg_config/exported
+}
+
+create_bootable_usb() {
+  # This was created primarily to document the bootable USB creation process, so
+  # that I'm less dependent on internet solutions.
+  # Warning this is experimental.
+  printf 'Path to .iso: '
+  local lf=$(read -e) # NOTE: maybe use `read lf` instead.
+  printf 'Path to USB: '
+  local of=$(read -e)
+
+  sudo dd \
+    bs=4M \
+    if="${lf}"
+    of="${of}"
+    status=progress \
+    iflag=sync
+}
+
+file_sizes() {
+  # Table to help me conceptualize file sizes.
+  echo "  1 kB\tHalf a page of raw text"
+  echo "  8 kB\tLogo image"
+  echo "500 kB\t5-page word processor document"
+  echo "  1 MB\t1 minute MP3"
+  echo "  5 MB\t3 minute MP3"
+  echo "700 MB\tA full CD-ROM"
+  echo "  4 GB\tA full DVD"
+}
+
+ldap() {
+  # Returns the Google LDAP for `user`
+  declare -A ldaps
+  ldaps["ahmed"]=ahmedhegazy
+  ldaps["arturo"]=arturog
+  ldaps["daniel"]=dsipasseuth
+  ldaps["dirichi"]=dirichi
+  ldaps["jack"]=jackwootton
+  ldaps["jon"]=jonmatthews
+  ldaps["micheal"]=michealg
+  ldaps["rose"]=roseanna
+  ldaps["william"]=wpcarro
+
+  echo ${ldaps["$1"]}
+}
+
+repl_closure() {
+  # Creates a `node` REPL for users to test out Google's Closure library.
+  # The naming `repl_closure` follows the repl_ convention that alias.sh
+  # follows.
+  docker build -t closure_repl - <~/programming/dockerfiles/closure_repl.docker
+  docker run -it closure_repl:latest
+}
+
+checkout_cl() {
+  # - find-or-create a new workspace named `cl-<number>`
+  # - syncs the workspace to tip
+  # - patches the CL ontop of tip
+  hg citc "cl-$1" && \
+  g4d "cl-$1" && \
+  hg sync && \
+  hg patch "cl/$1"
+}
+
 prodaccess() {
   # Wraps existing `prodaccess` command to provide Google-specific tips.
   # Take from this: https://g3doc.corp.google.com/experimental/users/diamondm/fortunes/README.md?cl=head
@@ -84,19 +403,31 @@ tj() {
   fi
 }
 
+screenshot() {
+  # Ergonomic way to take a screenshot.
+  # Writing this since I usually forget the command.
+  # Usage: screenshot
+  alert_echo 'Click-and-drag to select the region to capture.'
+  local filepath=$(scrot --select '%Y-%m-%d_$wx$h.png' -e 'mv $f /tmp && echo /tmp/$f')
+  c <<<$filepath
+  alert_echo "Copied to clipboard!"
+}
+
 snipit() {
   # Take a screenshot and host it at https://screenshot.googleplex.com
   # Adapted from SnipIt to fit my workflow.
+  # depends alert_echo
+  # TODO: Ensure C-c works with i3 integration.
   server="https://screenshot.googleplex.com/upload"
   file="${TEMP:-/tmp}/snipit_temp_$$.png"
 
   # Capture
-  echo "SnipIt - Click a window, or drag to snip a region (Ctrl+C to cancel):" && \
+  alert_echo "SnipIt - Click a window, or drag to snip a region (Ctrl+C to cancel):" && \
     import "$file" && \
     echo "Sending image to server..." && \
     uri=$(curl -sF "imagedata=@$file" $server) && \
     c <<<"$uri" && \
-    echo "Copied \"$uri\" to your clipboard."
+    alert_echo "Copied to clipboard!"
 }
 
 # Java
@@ -141,64 +472,139 @@ dired() {
   emacsclient --eval "(dired \"$directory\")" && focus Emacs
 }
 
+emacsclient_floating() {
+  # Creates an Emacs frame that i3 will float.
+  # All additional arguments are forwarded to `emacsclient`.
+  # Usage: emacs_floating [...additional-args]
+  # depends emacsclient
+  emacsclient \
+    --create-frame \
+    --frame-parameters '(quote (name . "floating"))' \
+    "$@"
+}
+
 org_capture() {
   # Spawns an Emacs frame running org-capture.
-  echo called
-  emacsclient --create-frame \
-              --frame-parameters '(quote (name . "org-protocol-capture"))' \
-              --eval '(org-capture)'
+  # Usage: org_capture
+  # depends emacsclient_floating
+  emacsclient_floating --eval '(org-capture)'
+}
+
+# gist
+gistp() {
+  # Creates a gist with the contents of the clipboard.
+  # Prompts the user for the filename and the descriptions of the gist.
+  # Copies the Gist URL to the user's clipboard thereafter.
+  #
+  # depends_alias p
+  # depends gist
+  printf "Filename including extension: "
+  read filename
+  printf "Gist description: "
+  read description
+  p | gist -e -f $filename -d $description
+}
+
+# Github
+gh_create() {
+  # Create git repository in `~/Dropbox/programming`.
+  # Push repo to my github account.
+  # Usage: grepo [repo-name]
+  # depends_alias mdd g
+  # compliments gh_delete
+
+  if [ $# -eq 0 ]; then
+    echo 'You must supply the name for the repo. Exiting...'
+    return 1
+  else
+    mdd "$HOME/Dropbox/programming/$1" && \
+      g init && \
+      g create
+  fi
+}
+
+gh_delete() {
+  # Deletes a repository from my Github.
+  # compliments gh_create
+
+  if [ $# -eq 0 ]; then
+    echo 'You must supply the name for the repo to delete. Exiting...'
+    return 1
+  else
+    g delete "$1"
+  fi
 }
 
 # Git
+
 gconflicts() {
   # Edit git conflicts one-by-one in your favorite editor.
   ${EDITOR} "$(git status --porcelain | awk '/^UU/ { print $2 }')"
 }
 
-# GPG
-gpg_encrypt() {
-  # Convenience function around encryping files and directories.
-  # Appends a .gpg extension and deletes the unencrypted source.
-  local file=${1}
+gclone() {
+  # Since I inevitably always call `cd` after `g clone`.
+  # Usage: gclone cdown/clipmenu
+  # depends_alias g
+  # depends_alias la
+  g clone "$1" && cd "${1#*/}"
+}
 
+# GPG
+_do_encrypt() {
+  # Helper  function for `encrypt`.
+  # depends gpg targz_dir
   echo "Encrypting..."
 
-  if [ -f "${file}" ]; then
-    gpg --symmetric "${file}" && \
-    rm "${file}"
+  if [ -f $1 ]; then
+    gpg --encrypt --recipient=wpcarro@gmail.com $1
+    rm $1
 
-  elif [ -d "${file}" ]; then
-    tar -cz "${file}" | gpg --symmetric --output "${file}.tar.gz.gpg"
+  elif [ -d  $1 ]; then
+    targz_dir $1
+    # NOTE: recursion is nice here but it causes the echo statements to happen
+    # twice. Because of this, we redirect to /dev/null.
+    _do_encrypt "$1.tar.gz" >/dev/null
   fi
 
   echo "Done."
 }
 
-gpg_decrypt() {
-  # Convenience function around decrypting .gpg files and directories.
-  # Deletes the original encrypted file with the .gpg extension.
-  local file=$1
-
+_do_decrypt() {
+  # Helper function for `decrypt`.
+  # depends gpg untargz_dir
   echo "Decrypting..."
 
-  if [ -f "${file}" ]; then
-    gpg --decrypt "${file}" >"${file%.gpg}" && \
-    rm "${file}"
-
-  elif [ -d "${file}" ]; then
-    local outdir="${dirname%.tar.gz.gpg}"
+  gpg --decrypt $1 2>/dev/null >"${1%.gpg}"
+  rm $1
 
-    if [ -d "${outdir}" ]; then
-      echo "Output directory, ${outdir}, already exists and will be overwritten by this command. Aborting..."
-      return 1
-    else
-      gpg --decrypt "${dirname}" | tar -xv
-    fi
+  # If the file ends with tar.gz, it was most like a directory that we targz'd
+  # then encrypted.
+  if [[ "${1%.gpg}" =~ \.tar.gz$ ]]; then
+    untargz_dir "${1%.gpg}" >/dev/null
   fi
 
   echo "Done."
 }
 
+encrypt() {
+  # Convenience function around encrypting files and directories.
+  # Appends a .gpg extension and deletes the unencrypted source.
+  # depends _do_encrypt
+  for f in $@; do
+    _do_encrypt $f
+  done
+}
+
+decrypt() {
+  # Convenience function around decrypting .gpg files and directories.
+  # Deletes the original encrypted file with the .gpg extension.
+  # depends _do_decrypt
+  for f in $@; do
+    _do_decrypt $f
+  done
+}
+
 # Python
 python_sandbox() {
   # Creates a nix-shell with the specified arguments as Python packages
@@ -445,6 +851,16 @@ mkdir_cd() {
   mkdir -p "$1" && cd "$1"
 }
 
+cp_dwim() {
+  # Calls `cp -r` when a directory is specified, otherwise uses `cp`.
+  # This is closer to the UX you expect in GUIs when you copy-and-paste files.
+  if [ -d $1 ]; then
+    command cp -r $@
+  else
+    command cp $@
+  fi
+}
+
 swap() {
   # Swaps the names of files and directories.
   local file_a="${1}"
@@ -585,6 +1001,27 @@ lt() {
   fi
 }
 
+lad() {
+  # List only directories in a directory..
+  # Usage: lad [directory]
+  # depends fd
+  (cd ${1:-.} && fd --hidden --maxdepth 1 --type d)
+}
+
+laf() {
+  # List only files in a directory.
+  # Usage: lad [directory]
+  # depends fd
+  (cd ${1:-.} && fd --hidden --maxdepth 1 --type f)
+}
+
+lal() {
+  # List only links in a directory.
+  # Usage: lad [directory]
+  # depends fd
+  (cd ${1:-.} && fd --hidden --maxdepth 1 --type l)
+}
+
 gql() {
   # Convenience wrapper around `http POST` that allows you write GQL queries in
   # Vim before posting them to the server.
@@ -663,8 +1100,9 @@ citc_workspace() {
   pwd | grep -o -P "$(whoami)\/[^\/]+"
 }
 
-codesearch() {
+hgbrowse() {
   # Attempts to open the current directory in Google's Code Search.
+  # Note: try and get this command supported by Fig
   local slug="$(pwd | grep -P -o 'google3\/.+$')"
   browse "https://cs.corp.google.com/piper///depot/$slug"
 }
@@ -683,6 +1121,26 @@ focus() {
   i3-msg "[class=\"$1\"] focus" >/dev/null
 }
 
+# C
+runc() {
+  # Compile and run $1. Pass $1 as file.c.
+  # This is modelled after the `runhaskell` command.
+  # Deletes the compiled binary after executing it.
+  #
+  # depends gcc
+  gcc "$1" -o "${1%.c}" && "./${1%.c}" && rm "${1%.c}"
+}
+
+# Rust
+runrust() {
+  # Compile and run $1. Pass $1 as file.rs.
+  # This is modelled after the `runhaskell` command.
+  # Deletes the compiled binary after executing it.
+  #
+  # depends rustc
+  rustc "$1" && "./${1%.rs}" && rm "${1%.rs}"
+}
+
 # zsh
 fns() {
   # Outputs all available functions.
@@ -705,3 +1163,102 @@ builtins() {
   # Outputs all of the shell's builtin commands.
   compgen -b
 }
+
+
+################################################################################
+# Theming
+################################################################################
+
+colors() {
+  # Outputs the wpgtk-generated color palette annotated with numbers.
+  echo '  0   1   2   3   4   5   6   7' && \
+    wpg --preview && \
+    echo '  8   9  10  11  12  13  14  15'
+}
+
+gvcci() {
+  # Integrates `gvcii` and `wpgtk`.
+  # Usage: gvcii path/to/wallpaper.jpg
+  local filename="$(basename $1)"
+  local directory="${filename%.*}"
+  local json=~/.gvcci/themes/$directory/json-scheme.json
+
+  if [ -f $json ]; then
+    wpg --theme $json
+  else
+    (cd ~/Dropbox/programming/gvcci && \
+       ./gvcci.sh "$1" && \
+       wpg --theme $json)
+  fi
+
+  # TODO: Why do I need this?
+  sleep 0.1 && feh --bg-scale $1
+}
+
+
+################################################################################
+# Configuration file management
+################################################################################
+
+# Easily management the myriad of configuration files required to set my
+# preferences. This is intended to be integrated with i3.
+# TODO: Support editing config name.
+# TODO: Support editing config filepath.
+# TODO: Is there a way to get rofi to just display information.
+#       E.g. output of `ls_configs`.
+
+prompt_config() {
+  # Asks the user which file they'd like to edit. Returns the filepath to that
+  # configuration file.
+  local name=$(kv_keys configuration_files | rofi -dmenu)
+  kv_get configuration_files "$name"
+}
+
+add_config() {
+  # Adds a configuration file to the configuration file database.
+
+  # NOTE: Cannot use `local` here if I want to capture the exit code of the
+  # subshell.
+  name=$(rofi_prompt 'Config name')
+  local ec=$?
+
+  if [ $ec -eq 0 ]; then
+    filepath=$(rofi_prompt 'Path to file')
+    ec=$?
+
+    if [ $ec -eq 0 ]; then
+      kv_set configuration_files "$name" "$filepath"
+    else
+      echo 'Failed to get a path for the config. Exiting...'
+      return $ec
+    fi
+  else
+    echo 'Failed to get a name for the config. Exiting...'
+    return $ec
+  fi
+
+}
+
+edit_config() {
+  # Opens the selected configuration file in an editor.
+  # depends emacsclient_floating
+  emacsclient_floating "$(prompt_config)"
+}
+
+rm_config() {
+  # Removes a configuration file from the configuration file database.
+  name=$(kv_keys configuration_files | rofi -dmenu)
+  local ec=$?
+
+  if [ $ec -eq 0 ]; then
+    kv_delete configuration_files "$name"
+  else
+    echo 'Failed to get a name for the config. Exiting...'
+    return $ec
+  fi
+}
+
+ls_configs() {
+  # Lists
+  kv_entries configuration_files
+}
diff --git a/configs/shared/misc/.config/lf/marks b/configs/shared/misc/.config/lf/marks
deleted file mode 100644
index a62bd91b85..0000000000
--- a/configs/shared/misc/.config/lf/marks
+++ /dev/null
@@ -1,5 +0,0 @@
-':/usr/local/google/home/wpcarro
-D:~/Dropbox
-c:~/Dropbox/dotfiles/configs
-d:~/Dropbox/dotfiles
-s:~/Pictures/screenshots
diff --git a/configs/shared/misc/.config/rofi/config b/configs/shared/misc/.config/rofi/config
deleted file mode 100644
index 3bc0a7cab0..0000000000
--- a/configs/shared/misc/.config/rofi/config
+++ /dev/null
@@ -1 +0,0 @@
-rofi.theme: /usr/share/rofi/themes//lb.rasi
diff --git a/configs/shared/misc/.config/terminator/config b/configs/shared/misc/.config/terminator/config
deleted file mode 100644
index 5e62b9d4be..0000000000
--- a/configs/shared/misc/.config/terminator/config
+++ /dev/null
@@ -1,20 +0,0 @@
-[global_config]
-[keybindings]
-[layouts]
-  [[default]]
-    [[[child1]]]
-      parent = window0
-      type = Terminal
-    [[[window0]]]
-      parent = ""
-      type = Window
-[plugins]
-[profiles]
-  [[default]]
-    background_type = transparent
-    cursor_color = "#aaaaaa"
-    cursor_shape = ibeam
-    font = Source Code Pro 12
-    scrollbar_position = hidden
-    show_titlebar = False
-    use_system_font = False
diff --git a/configs/shared/misc/.ssh/config b/configs/shared/misc/.ssh/config
deleted file mode 100644
index d99315e39d..0000000000
--- a/configs/shared/misc/.ssh/config
+++ /dev/null
@@ -1,8 +0,0 @@
-Host desktop
-  Hostname wpcarro.lon.corp.google.com
-
-Host cloudtop
-  Hostname wpcarro.c.googlers.com
-
-Match host *.corp.google.com
-  ProxyCommand corp-ssh-helper %h %p
diff --git a/configs/shared/misc/.unison/cloudtop b/configs/shared/misc/.unison/cloudtop
deleted file mode 100644
index db6ecdae12..0000000000
--- a/configs/shared/misc/.unison/cloudtop
+++ /dev/null
@@ -1,7 +0,0 @@
-root = /usr/local/google/home/wpcarro/cloud
-root = ssh://cloudtop//usr/local/google/home/wpcarro/cloud
-auto = true
-batch = true
-backuploc = local
-backupsuffix = ~~
-ignore = Name *~
diff --git a/configs/shared/shell/.profile b/configs/shared/shell/.profile
deleted file mode 100644
index 0bb636e22a..0000000000
--- a/configs/shared/shell/.profile
+++ /dev/null
@@ -1,34 +0,0 @@
-# Some programs read from ~/.profile for values. It's best to set environment
-# variables here instead of in ~/.zshrc or similar files, which are sourced
-# everytime a new shell is created. The ~/.profile, on the other hand, is
-# typically sourced only once at login.
-
-PATH="$PATH:$HOME/bin"
-
-# Application preferences
-export BROWSER=google-chrome
-export TERMINAL=st
-export EDITOR=emacsclient
-export ALTERNATE_EDITOR=nvim
-
-# Application configuration
-export FZF_DEFAULT_COMMAND='fd --hidden --follow --exclude ".git"'
-export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
-
-export DOTFILES="$HOME/Dropbox/dotfiles"
-export ORG_DIRECTORY="$HOME/Dropbox/org"
-
-# Prevent compton from fading to the lock screen. This also prevents the white
-# overlay that compton was causing to appear. Still unsure why that was
-# happening.
-# For more information, see the following GitHub issue:
-# https://github.com/google/xsecurelock/issues/28
-export XSECURELOCK_NO_COMPOSITE=1
-
-# This fixes nixpkgs that rely on glibc-2.27, which allegedly breaks locale
-# issues.
-# See this thread for more details: https://github.com/NixOS/nixpkgs/issues/8398
-export LOCALE_ARCHIVE=$(readlink ~/.nix-profile/lib/locale)/locale-archive
-
-# Set environment variables for Nix
-source ~/.nix-profile/etc/profile.d/nix.sh
diff --git a/configs/shared/zsh/variables.zsh b/configs/shared/variables.zsh
index 15b7bc1001..7fac031ae8 100644
--- a/configs/shared/zsh/variables.zsh
+++ b/configs/shared/variables.zsh
@@ -5,13 +5,14 @@ date_fmt=%b-%d-%Y_%T # my preferred date formatting string used for generated fi
 # ZSH's static named directories
 hash -d pro=~/programming
 hash -d dot="$DOTFILES"
+hash -d wpg=~/.config/wpg/templates
 hash -d citc=/google/src/cloud/$USER
 hash -d doc=~/Documents
 hash -d d=~/Downloads
 hash -d ss=~/Pictures/screenshots
-hash -d fonts="$DOTFILES/configs/shared/misc/.local/share/fonts"
-hash -d sounds="$DOTFILES/configs/shared/misc/.local/share/sounds"
-hash -d wallpaper="$DOTFILES/configs/shared/misc/.local/share/wallpaper"
+hash -d fonts="$DOTFILES/configs/shared/.local/share/fonts"
+hash -d sounds="$DOTFILES/configs/shared.local/share/sounds"
+hash -d wallpaper="$DOTFILES/configs/shared/.local/share/wallpaper"
 hash -d org="$ORG_DIRECTORY"
 hash -d x20=/google/data/rw/users/wp/wpcarro # remember: to access x20, you need to run `prodaccess`
 hash -d experimental=./experimental/users/wpcarro
@@ -62,4 +63,5 @@ a="$HOME/aliases.zsh"
 f="$HOME/functions.zsh"
 l="$HOME/variables.zsh" # v is taken by vim
 x="$HOME/.Xresources"
-i="$HOME/.config/i3/config.shared"
+i="$HOME/.config/i3/config"
+n="/etc/nixos/configuration.nix"
diff --git a/configs/shared/x_server/.Xresources.shared b/configs/shared/x_server/.Xresources.shared
deleted file mode 100644
index 379eab03d7..0000000000
--- a/configs/shared/x_server/.Xresources.shared
+++ /dev/null
@@ -1 +0,0 @@
-! Put shared configuration here
\ No newline at end of file
diff --git a/configs/shared/x_server/.xsessionrc b/configs/shared/x_server/.xsessionrc
deleted file mode 100644
index 7f41552718..0000000000
--- a/configs/shared/x_server/.xsessionrc
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-
-source ~/.xsessionrc.shared
-source ~/.xsessionrc.device # desktop, laptop, cloudtop
diff --git a/configs/shared/zsh/zle.zsh b/configs/shared/zle.zsh
index 4ded511ffc..4ded511ffc 100644
--- a/configs/shared/zsh/zle.zsh
+++ b/configs/shared/zle.zsh
diff --git a/configs/shared/zsh/.zshrc b/configs/shared/zsh/.zshrc
deleted file mode 100644
index b4ccd66a16..0000000000
--- a/configs/shared/zsh/.zshrc
+++ /dev/null
@@ -1,55 +0,0 @@
-source ~/antigen.zsh
-
-# Load the oh-my-zsh library
-antigen use oh-my-zsh
-
-# Bundles from robbyrussell's oh-my-zsh repo.
-antigen bundle git
-antigen bundle extract         # extracts archives polymorphically
-antigen bundle zsh-completions # extracts archives polymorphically
-
-# Syntax highlighting
-antigen bundle zsh-users/zsh-syntax-highlighting
-
-# Theming
-case $(hostname) in
-  # desktop
-  wpcarro.lon.corp.google.com)
-    antigen theme frisk;;
-  # cloudtop
-  wpcarro.c.googlers.com)
-    antigen theme cloud;;
-  # laptop
-  wpcarro)
-    antigen theme refined;;
-esac
-
-# Leave this last
-antigen apply
-
-# Configure fzf
-source "$(fzf-share)/key-bindings.zsh"
-
-# Configure fasd
-eval "$(fasd --init auto)"
-
-# Configure g4 with zsh
-if [ -f /etc/bash_completion.d/g4d ]; then
-  source /etc/bash_completion.d/g4d
-fi
-# the above line slows tab-completion down dramatically because it attemtps to
-# autocomplete for the 600k+ users found in `compgen -u`. Below is a fix which
-# also restores the function of `cd ~<tab>` to display only ZSH Named
-# Directories.
-zstyle ':completion:*' users root $USER
-
-source "$DOTFILES/configs/shared/zsh/variables.zsh"
-source "$DOTFILES/configs/shared/zsh/aliases.zsh"
-source "$DOTFILES/configs/shared/zsh/functions.zsh"
-source "$DOTFILES/configs/shared/zsh/zle.zsh"
-
-preexec() {
-  # `preexec` runs before every command is run.
-  update_x11_forwarding
-}
-
diff --git a/configs/uninstall b/configs/uninstall
index bab7a41207..77d3199f69 100755
--- a/configs/uninstall
+++ b/configs/uninstall
@@ -5,13 +5,13 @@ configs="$DOTFILES/configs"
 case $(hostname) in
   # desktop
   wpcarro.lon.corp.google.com)
-    (cd "$configs/desktop" && stow --delete --target="$HOME" *);;
+    (cd "$configs/desktop" && stow --delete --target="$HOME" .);;
   # laptop
-  wpcarro)
-    (cd "$configs/laptop" && stow --delete --target="$HOME" *);;
+  wpcarro2)
+    (cd "$configs/laptop" && stow --delete --target="$HOME" .);;
   # cloudtop
   wpcarro.c.googlers.com)
-    (cd "$configs/cloudtop" && stow --delete --target="$HOME" *);;
+    (cd "$configs/cloudtop" && stow --delete --target="$HOME" .);;
 esac
 
-(cd "$configs/shared" && stow --delete --target="$HOME" *)
+(cd "$configs/shared" && stow --delete --target="$HOME" .)
diff --git a/configs/work_laptop/.Xresources.device b/configs/work_laptop/.Xresources.device
new file mode 100644
index 0000000000..93a8d7e025
--- /dev/null
+++ b/configs/work_laptop/.Xresources.device
@@ -0,0 +1 @@
+XTerm.vt100.faceName: GohuFont
diff --git a/configs/work_laptop/.xsessionrc.device b/configs/work_laptop/.xsessionrc.device
new file mode 100644
index 0000000000..aa4015e4cf
--- /dev/null
+++ b/configs/work_laptop/.xsessionrc.device
@@ -0,0 +1,11 @@
+# natural scrolling - trackpad
+xinput --set-prop 'SynPS/2 Synaptics TouchPad' 'libinput Natural Scrolling Enabled' 1
+
+# increase cursor speed - trackpad
+xinput --set-prop 'SynPS/2 Synaptics TouchPad' 'libinput Accel Speed' 1
+
+# natural scrolling - mouse
+xinput --set-prop 'Logitech USB Receiver Mouse' 'libinput Natural Scrolling Enabled' 1
+
+# increase cursor speed - mouse
+xinput --set-prop 'Logitech USB Receiver Mouse' 'libinput Accel Speed' 1