[
  {
    "path": ".github/workflows/main.yml",
    "content": "name: Compile\non: [push, pull_request]\njobs:\n    build:\n        runs-on: ubuntu-latest\n        steps:\n            - uses: actions/checkout@v1\n            - name: Run build.\n              run: make -B\n"
  },
  {
    "path": ".gitignore",
    "content": "paleta\n.ccls*\nsrc/*.o\n"
  },
  {
    "path": "LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2019-2020 Dylan Araps\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "Makefile",
    "content": ".POSIX:\n\nPREFIX       = /usr/local\nALL_WARNINGS = -Wall -Wextra -pedantic -Wmissing-prototypes -Wstrict-prototypes\nALL_CFLAGS   = -std=c99 $(ALL_WARNINGS) -O3 $(CFLAGS) $(CPPFLAGS)\n\nOBJ = src/paleta.o\nHDR =\n\n.c.o:\n\t$(CC) $(ALL_CFLAGS) -c -o $@ $<\n\npaleta: $(OBJ)\n\t$(CC) $(ALL_CFLAGS) -o $@ $(OBJ) $(LDFLAGS)\n\n$(OBJ): $(HDR)\n\ninstall: paleta\n\tmkdir -p $(DESTDIR)$(PREFIX)/bin\n\tcp paleta  $(DESTDIR)$(PREFIX)/bin/\n\nclean:\n\trm -f paleta $(OBJ)\n\n.PHONY: install clean\n"
  },
  {
    "path": "README",
    "content": "paleta\n________________________________________________________________________________\n\nChange terminal colors on-the-fly independent of terminal emulator.\n\nMost terminal emulators support a set of escape sequences which allow for the\nmodification of the terminal's color palette. Combined with the ability to write\nto all open terminal devices, this allows for theming in a truly independent way.\n\nPaleta reads a list of colors over <stdin>, transforms the input into the set of\nescape sequences and sends these sequences to every open terminal in the system.\nIt additionally prints the sequences to <stdout>.\n\n+------------------------------------------------------------------------------+\n|                                                                              |\n|  $ paleta < palettes/jellybeans-dark > ~/.cache/current-palette              |\n|                                                                              |\n+------------------------------------------------------------------------------+\n\nThis tool is small and generic. It reads input and writes output. Effortless to\nincorporate with the system. This repository also contains 150~ popular palettes\nready for use with paleta.\n\n\nterminal support\n________________________________________________________________________________\n\n+------------------------------------------------------------------------------+\n|                                                                              |\n|  this list is not complete                                                   |\n|                                                                              |\n|                                                                              |\n|  alacritty  good        https://github.com/alacritty/alacritty/issues/656    |\n|  kitty      good                                                             |\n|  vte [0]    good        1a651cf990e67c4046fbff7674249259bcaa89a8             |\n|  xterm      good                                                             |\n|  urxvt      good                                                             |\n|                                                                              |\n|  st         patch       ./misc/st-osc_10_11_12-20200418-66520e1.patch        |\n|                                                                              |\n|  hyper      clueless    https://github.com/vercel/hyper/issues/2038          |\n|                                                                              |\n|                                                                              |\n+------------------------------------------------------------------------------+\n\n[0] vte includes Termite, XFCE terminal, GNOME terminal, Konsole and many more.\n\n\ndependencies\n________________________________________________________________________________\n\n- POSIX <stdio.h> <stdlib.h> <glob.h>\n- C99 compiler\n\n\nbuild\n________________________________________________________________________________\n\nSee src/config.h for configuration.\n\n+------------------------------------------------------------------------------+\n|                                                                              |\n|  Using make (recommended)                                                    |\n|                                                                              |\n|  $ make                                                                      |\n|  $ make install                                                              |\n|                                                                              |\n|                                                                              |\n|  Invoking the compiler directly                                              |\n|                                                                              |\n|  $ c99 $CFLAGS -o paleta src/paleta.c                                        |\n|                                                                              |\n|                                                                              |\n+------------------------------------------------------------------------------+\n\n\nusage\n________________________________________________________________________________\n\n+------------------------------------------------------------------------------+\n|                                                                              |\n|  1. Set the colorscheme to jellybeans-dark in all open terminals.            |\n|                                                                              |\n|  $ paleta < palettes/jellybeans-dark > ~/.cache/current-palette              |\n|                                                                              |\n+------------------------------------------------------------------------------+\n\nSaving paleta's <stdout> to a file is how the current palette is stored. This\nfile is used to set the palette in newly opened terminals. Scripts might instead\nstore this in a variable or ignore it entirely as they maintain state.\n\n\nsetup\n________________________________________________________________________________\n\nThis line must be added to $SHELL's startup file. It tells future terminals to\nload the current palette at launch.\n\n+------------------------------------------------------------------------------+\n|                                                                              |\n|  $ echo 'cat ~/.cache/current-palette' >> ~/.bashrc                          |\n|                                                                              |\n+------------------------------------------------------------------------------+\n\n\ninput format\n________________________________________________________________________________\n\nInput is one hex color per line, without #. The first three lines are\nreserved for <foreground>, <background> and <cursor> with the remaining lines\nfilling the numerical palette (0-256).\n\nExample: https://github.com/dylanaraps/paleta/blob/master/palettes/gruvbox-dark\n\n+------------------------------------------------------------------------------+\n|  format                             |  example                               |\n+-------------------------------------+----------------------------------------+\n|                                     |                                        |\n|  <foreground>                       |  dedede                                |\n|  <background>                       |  121212                                |\n|  <cursor>                           |  dedede                                |\n|  <color0>                           |  929292                                |\n|  <color1>                           |  e27373                                |\n|  <color2>                           |  94b979                                |\n|                                     |                                        |\n|  ...                                |  ,,,                                   |\n|                                     |                                        |\n|  <color256>                         |  1ab2a8                                |\n|                                     |                                        |\n|                                     |                                        |\n+-------------------------------------+----------------------------------------+\n\nThe maximum palette is (3 + 256). This is configurable at compile-time.\n\n\nsoftware written around paleta\n________________________________________________________________________________\n\n- shuffle through palettes in a directory. https://github.com/dylanaraps/bin/blob/c06b2c0df0194487fc4cb9c65b451b6369e2c398/shuffle\n\n\ntodo\n________________________________________________________________________________\n\n- [ ] Find good 256 color palettes to include. All are currently 16 colors.\n      256 color palettes added to this repository should contain -256 in their\n      filenames.\n"
  },
  {
    "path": "misc/st-osc_10_11_12-20200418-66520e1.patch",
    "content": "Source: https://st.suckless.org/patches/osc_10_11_12/\n\nThis patch adds support for OSC escape sequences 10, 11 and 12,\nthat modify the bg, fg and cursor colors. To decouple them from\nthe palette you can select entries from the colorname table after\nthe 255 position for defaultfg, defaultbg and defaultcs.\n\nOriginal author:\n    Christian Tenllado - <ctenllado at gmail dot com>\n\nChangelog:\n    * Fixed bg flicker when setting both 0 and bg.\n\n---\ndiff --git a/config.def.h b/config.def.h\nindex 6f05dce..a4f021e 100644\n--- a/config.def.h\n+++ b/config.def.h\n@@ -129,8 +129,8 @@ static const char *colorname[] = {\n  */\n unsigned int defaultfg = 7;\n unsigned int defaultbg = 0;\n-static unsigned int defaultcs = 256;\n-static unsigned int defaultrcs = 257;\n+unsigned int defaultcs = 256;\n+unsigned int defaultrcs = 257;\n\n /*\n  * Default shape of cursor\ndiff --git a/st.c b/st.c\nindex 76b7e0d..6898aae 100644\n--- a/st.c\n+++ b/st.c\n@@ -1870,12 +1870,23 @@ strhandle(void)\n \t\t\t}\n \t\t\treturn;\n \t\tcase 4: /* color set */\n-\t\t\tif (narg < 3)\n+\t\tcase 10: /* foreground set */\n+\t\tcase 11: /* background set */\n+\t\tcase 12: /* cursor color */\n+\t\t\tif ((par == 4 && narg < 3) || narg < 2)\n \t\t\t\tbreak;\n-\t\t\tp = strescseq.args[2];\n+\t\t\tp = strescseq.args[((par == 4) ? 2 : 1)];\n \t\t\t/* FALLTHROUGH */\n \t\tcase 104: /* color reset, here p = NULL */\n-\t\t\tj = (narg > 1) ? atoi(strescseq.args[1]) : -1;\n+\t\t\tif (par == 10)\n+\t\t\t\tj = defaultfg;\n+\t\t\telse if (par == 11)\n+\t\t\t\tj = defaultbg;\n+\t\t\telse if (par == 12)\n+\t\t\t\tj = defaultcs;\n+\t\t\telse\n+\t\t\t\tj = (narg > 1) ? atoi(strescseq.args[1]) : -1;\n+\n \t\t\tif (xsetcolorname(j, p)) {\n \t\t\t\tif (par == 104 && narg <= 1)\n \t\t\t\t\treturn; /* color reset without parameter */\n@@ -1886,7 +1897,9 @@ strhandle(void)\n \t\t\t\t * TODO if defaultbg color is changed, borders\n \t\t\t\t * are dirty\n \t\t\t\t */\n-\t\t\t\tredraw();\n+                if (j != 0 && j != 15) {\n+                    redraw();\n+                }\n \t\t\t}\n \t\t\treturn;\n \t\t}\ndiff --git a/st.h b/st.h\nindex 3d351b6..054366d 100644\n--- a/st.h\n+++ b/st.h\n@@ -123,3 +123,4 @@ extern char *termname;\n extern unsigned int tabspaces;\n extern unsigned int defaultfg;\n extern unsigned int defaultbg;\n+extern unsigned int defaultcs;\n"
  },
  {
    "path": "palettes/5peter-dark",
    "content": "ece7fa\n2a1a4a\nece7fa\n0a0520\nff796d\n99b481\nefdfac\n66d9ef\ne78fcd\nba8cff\nffba81\n100b23\nf99f92\nb4be8f\nf2e9bf\n79daed\nba91d4\na0a0d6\nb9aed3\n"
  },
  {
    "path": "palettes/aci-dark",
    "content": "b4e1fd\n0d1926\nb4e1fd\n363636\nff0883\n83ff08\nff8308\n0883ff\n8308ff\n08ff83\nb6b6b6\n424242\nff1e8e\n8eff1e\nff8e1e\n1e8eff\n8e1eff\n1eff8e\nc2c2c2\n"
  },
  {
    "path": "palettes/aco-dark",
    "content": "b4e1fd\n1f1305\nb4e1fd\n3f3f3f\nff0883\n83ff08\nff8308\n0883ff\n8308ff\n08ff83\nbebebe\n474747\nff1e8e\n8eff1e\nff8e1e\n1e8eff\n8e1eff\n1eff8e\nc4c4c4\n"
  },
  {
    "path": "palettes/afterglow-dark",
    "content": "d0d0d0\n212121\nd0d0d0\n151515\nac4142\n7e8e50\ne5b567\n6c99bb\n9f4e85\n7dd6cf\nd0d0d0\n505050\nac4142\n7e8e50\ne5b567\n6c99bb\n9f4e85\n7dd6cf\nf5f5f5\n"
  },
  {
    "path": "palettes/argonaut-dark",
    "content": "fffaf4\n0e1019\nfffaf4\n232323\nff000f\n8ce10b\nffb900\n008df8\n6d43a6\n00d8eb\nffffff\n444444\nff2740\nabe15b\nffd242\n0092ff\n9a5feb\n67fff0\nffffff\n"
  },
  {
    "path": "palettes/atom-dark",
    "content": "c5c8c6\n161719\nc5c8c6\n000000\nfd5ff1\n87c38a\nffd7b1\n85befd\nb9b6fc\n85befd\ne0e0e0\n000000\nfd5ff1\n94fa36\nf5ffa8\n96cbfe\nb9b6fc\n85befd\ne0e0e0\n"
  },
  {
    "path": "palettes/ayu-dark",
    "content": "e6e1cf\n0f1419\ne6e1cf\n000000\nff3333\nb8cc52\ne7c547\n36a3d9\nf07178\n95e6cb\nffffff\n323232\nff6565\neafe84\nfff779\n68d5ff\nffa3aa\nc7fffd\nffffff\n"
  },
  {
    "path": "palettes/azu-dark",
    "content": "d9e6f2\n09111a\nd9e6f2\n000000\nac6d74\n74ac6d\naca46d\n6d74ac\na46dac\n6daca4\ne6e6e6\n262626\nd6b8bc\nbcd6b8\nd6d3b8\nb8bcd6\nd3b8d6\nb8d6d3\nffffff\n"
  },
  {
    "path": "palettes/banana-blueberry-dark",
    "content": "cccccc\n191323\ncccccc\n17141f\nff6b7f\n00bd9c\ne6c62f\n22e8df\ndc396a\n56b6c2\nf1f1f1\n495162\nfe9ea1\n98c379\nf9e46b\n91fff4\nda70d6\nbcf3ff\nffffff\n"
  },
  {
    "path": "palettes/base16-3024-dark",
    "content": "a5a2a2\n090300\na5a2a2\n090300\ndb2d20\n01a252\nfded02\n01a0e4\na16a94\nb5e4f4\na5a2a2\n5c5855\ndb2d20\n01a252\nfded02\n01a0e4\na16a94\nb5e4f4\nf7f7f7\n"
  },
  {
    "path": "palettes/base16-3024-light",
    "content": "4a4543\nf7f7f7\n4a4543\n090300\ndb2d20\n01a252\nfded02\n01a0e4\na16a94\nb5e4f4\na5a2a2\n5c5855\ndb2d20\n01a252\nfded02\n01a0e4\na16a94\nb5e4f4\nf7f7f7\n"
  },
  {
    "path": "palettes/base16-ashes-dark",
    "content": "c7ccd1\n1c2023\nc7ccd1\n1c2023\nc7ae95\n95c7ae\naec795\nae95c7\nc795ae\n95aec7\nc7ccd1\n747c84\nc7ae95\n95c7ae\naec795\nae95c7\nc795ae\n95aec7\nf3f4f5\n"
  },
  {
    "path": "palettes/base16-ashes-light",
    "content": "565e65\nf3f4f5\n565e65\n1c2023\nc7ae95\n95c7ae\naec795\nae95c7\nc795ae\n95aec7\nc7ccd1\n747c84\nc7ae95\n95c7ae\naec795\nae95c7\nc795ae\n95aec7\nf3f4f5\n"
  },
  {
    "path": "palettes/base16-atelierdune-dark",
    "content": "a6a28c\n20201d\na6a28c\n20201d\nd73737\n60ac39\ncfb017\n6684e1\nb854d4\n1fad83\na6a28c\n7d7a68\nd73737\n60ac39\ncfb017\n6684e1\nb854d4\n1fad83\nfefbec\n"
  },
  {
    "path": "palettes/base16-atelierdune-light",
    "content": "6e6b5e\nfefbec\n6e6b5e\n20201d\nd73737\n60ac39\ncfb017\n6684e1\nb854d4\n1fad83\na6a28c\n7d7a68\nd73737\n60ac39\ncfb017\n6684e1\nb854d4\n1fad83\nfefbec\n"
  },
  {
    "path": "palettes/base16-atelierforest-dark",
    "content": "a8a19f\n1b1918\na8a19f\n1b1918\nf22c40\n5ab738\nd5911a\n407ee7\n6666ea\n00ad9c\na8a19f\n766e6b\nf22c40\n5ab738\nd5911a\n407ee7\n6666ea\n00ad9c\nf1efee\n"
  },
  {
    "path": "palettes/base16-atelierforest-light",
    "content": "68615e\nf1efee\n68615e\n1b1918\nf22c40\n5ab738\nd5911a\n407ee7\n6666ea\n00ad9c\na8a19f\n766e6b\nf22c40\n5ab738\nd5911a\n407ee7\n6666ea\n00ad9c\nf1efee\n"
  },
  {
    "path": "palettes/base16-atelierheath-dark",
    "content": "ab9bab\n1b181b\nab9bab\n1b181b\nca402b\n379a37\nbb8a35\n516aec\n7b59c0\n159393\nab9bab\n776977\nca402b\n379a37\nbb8a35\n516aec\n7b59c0\n159393\nf7f3f7\n"
  },
  {
    "path": "palettes/base16-atelierheath-light",
    "content": "695d69\nf7f3f7\n695d69\n1b181b\nca402b\n379a37\nbb8a35\n516aec\n7b59c0\n159393\nab9bab\n776977\nca402b\n379a37\nbb8a35\n516aec\n7b59c0\n159393\nf7f3f7\n"
  },
  {
    "path": "palettes/base16-atelierlakeside-dark",
    "content": "7ea2b4\n161b1d\n7ea2b4\n161b1d\nd22d72\n568c3b\n8a8a0f\n257fad\n5d5db1\n2d8f6f\n7ea2b4\n5a7b8c\nd22d72\n568c3b\n8a8a0f\n257fad\n5d5db1\n2d8f6f\nebf8ff\n"
  },
  {
    "path": "palettes/base16-atelierlakeside-light",
    "content": "516d7b\nebf8ff\n516d7b\n161b1d\nd22d72\n568c3b\n8a8a0f\n257fad\n5d5db1\n2d8f6f\n7ea2b4\n5a7b8c\nd22d72\n568c3b\n8a8a0f\n257fad\n5d5db1\n2d8f6f\nebf8ff\n"
  },
  {
    "path": "palettes/base16-atelierseaside-dark",
    "content": "8ca68c\n131513\n8ca68c\n131513\ne6193c\n29a329\nc3c322\n3d62f5\nad2bee\n1999b3\n8ca68c\n687d68\ne6193c\n29a329\nc3c322\n3d62f5\nad2bee\n1999b3\nf0fff0\n"
  },
  {
    "path": "palettes/base16-atelierseaside-light",
    "content": "5e6e5e\nf0fff0\n5e6e5e\n131513\ne6193c\n29a329\nc3c322\n3d62f5\nad2bee\n1999b3\n8ca68c\n687d68\ne6193c\n29a329\nc3c322\n3d62f5\nad2bee\n1999b3\nf0fff0\n"
  },
  {
    "path": "palettes/base16-bespin-dark",
    "content": "8a8986\n28211c\n8a8986\n28211c\ncf6a4c\n54be0d\nf9ee98\n5ea6ea\n9b859d\nafc4db\n8a8986\n666666\ncf6a4c\n54be0d\nf9ee98\n5ea6ea\n9b859d\nafc4db\nbaae9e\n"
  },
  {
    "path": "palettes/base16-bespin-light",
    "content": "5e5d5c\nbaae9e\n5e5d5c\n28211c\ncf6a4c\n54be0d\nf9ee98\n5ea6ea\n9b859d\nafc4db\n8a8986\n666666\ncf6a4c\n54be0d\nf9ee98\n5ea6ea\n9b859d\nafc4db\nbaae9e\n"
  },
  {
    "path": "palettes/base16-brewer-dark",
    "content": "b7b8b9\n0c0d0e\nb7b8b9\n0c0d0e\ne31a1c\n31a354\ndca060\n3182bd\n756bb1\n80b1d3\nb7b8b9\n737475\ne31a1c\n31a354\ndca060\n3182bd\n756bb1\n80b1d3\nfcfdfe\n"
  },
  {
    "path": "palettes/base16-brewer-light",
    "content": "515253\nfcfdfe\n515253\n0c0d0e\ne31a1c\n31a354\ndca060\n3182bd\n756bb1\n80b1d3\nb7b8b9\n737475\ne31a1c\n31a354\ndca060\n3182bd\n756bb1\n80b1d3\nfcfdfe\n"
  },
  {
    "path": "palettes/base16-chalk-dark",
    "content": "d0d0d0\n151515\nd0d0d0\n151515\nfb9fb1\nacc267\nddb26f\n6fc2ef\ne1a3ee\n12cfc0\nd0d0d0\n505050\nfb9fb1\nacc267\nddb26f\n6fc2ef\ne1a3ee\n12cfc0\nf5f5f5\n"
  },
  {
    "path": "palettes/base16-chalk-light",
    "content": "303030\nf5f5f5\n303030\n151515\nfb9fb1\nacc267\nddb26f\n6fc2ef\ne1a3ee\n12cfc0\nd0d0d0\n505050\nfb9fb1\nacc267\nddb26f\n6fc2ef\ne1a3ee\n12cfc0\nf5f5f5\n"
  },
  {
    "path": "palettes/base16-codeschool-dark",
    "content": "9ea7a6\n232c31\n9ea7a6\n232c31\n2a5491\n237986\na03b1e\n484d79\nc59820\nb02f30\n9ea7a6\n3f4944\n2a5491\n237986\na03b1e\n484d79\nc59820\nb02f30\nb5d8f6\n"
  },
  {
    "path": "palettes/base16-codeschool-light",
    "content": "2a343a\nb5d8f6\n2a343a\n232c31\n2a5491\n237986\na03b1e\n484d79\nc59820\nb02f30\n9ea7a6\n3f4944\n2a5491\n237986\na03b1e\n484d79\nc59820\nb02f30\nb5d8f6\n"
  },
  {
    "path": "palettes/base16-default-dark",
    "content": "d0d0d0\n151515\nd0d0d0\n151515\nac4142\n90a959\nf4bf75\n6a9fb5\naa759f\n75b5aa\nd0d0d0\n505050\nac4142\n90a959\nf4bf75\n6a9fb5\naa759f\n75b5aa\nf5f5f5\n"
  },
  {
    "path": "palettes/base16-default-light",
    "content": "303030\nf5f5f5\n303030\n151515\nac4142\n90a959\nf4bf75\n6a9fb5\naa759f\n75b5aa\nd0d0d0\n505050\nac4142\n90a959\nf4bf75\n6a9fb5\naa759f\n75b5aa\nf5f5f5\n"
  },
  {
    "path": "palettes/base16-eighties-dark",
    "content": "d3d0c8\n2d2d2d\nd3d0c8\n2d2d2d\nf2777a\n99cc99\nffcc66\n6699cc\ncc99cc\n66cccc\nd3d0c8\n747369\nf2777a\n99cc99\nffcc66\n6699cc\ncc99cc\n66cccc\nf2f0ec\n"
  },
  {
    "path": "palettes/base16-eighties-light",
    "content": "515151\nf2f0ec\n515151\n2d2d2d\nf2777a\n99cc99\nffcc66\n6699cc\ncc99cc\n66cccc\nd3d0c8\n747369\nf2777a\n99cc99\nffcc66\n6699cc\ncc99cc\n66cccc\nf2f0ec\n"
  },
  {
    "path": "palettes/base16-embers-dark",
    "content": "a39a90\n16130f\na39a90\n16130f\n826d57\n57826d\n6d8257\n6d5782\n82576d\n576d82\na39a90\n5a5047\n826d57\n57826d\n6d8257\n6d5782\n82576d\n576d82\ndbd6d1\n"
  },
  {
    "path": "palettes/base16-embers-light",
    "content": "433b32\ndbd6d1\n433b32\n16130f\n826d57\n57826d\n6d8257\n6d5782\n82576d\n576d82\na39a90\n5a5047\n826d57\n57826d\n6d8257\n6d5782\n82576d\n576d82\ndbd6d1\n"
  },
  {
    "path": "palettes/base16-google-dark",
    "content": "c5c8c6\n1d1f21\nc5c8c6\n1d1f21\ncc342b\n198844\nfba922\n3971ed\na36ac7\n3971ed\nc5c8c6\n969896\ncc342b\n198844\nfba922\n3971ed\na36ac7\n3971ed\nffffff\n"
  },
  {
    "path": "palettes/base16-google-light",
    "content": "373b41\nffffff\n373b41\n1d1f21\ncc342b\n198844\nfba922\n3971ed\na36ac7\n3971ed\nc5c8c6\n969896\ncc342b\n198844\nfba922\n3971ed\na36ac7\n3971ed\nffffff\n"
  },
  {
    "path": "palettes/base16-grayscale-dark",
    "content": "b9b9b9\n101010\nb9b9b9\n101010\n7c7c7c\n8e8e8e\na0a0a0\n686868\n747474\n868686\nb9b9b9\n525252\n7c7c7c\n8e8e8e\na0a0a0\n686868\n747474\n868686\nf7f7f7\n"
  },
  {
    "path": "palettes/base16-grayscale-light",
    "content": "464646\nf7f7f7\n464646\n101010\n7c7c7c\n8e8e8e\na0a0a0\n686868\n747474\n868686\nb9b9b9\n525252\n7c7c7c\n8e8e8e\na0a0a0\n686868\n747474\n868686\nf7f7f7\n"
  },
  {
    "path": "palettes/base16-greenscreen-dark",
    "content": "00bb00\n001100\n00bb00\n001100\n007700\n00bb00\n007700\n009900\n00bb00\n005500\n00bb00\n007700\n007700\n00bb00\n007700\n009900\n00bb00\n005500\n00ff00\n"
  },
  {
    "path": "palettes/base16-greenscreen-light",
    "content": "005500\n00ff00\n005500\n001100\n007700\n00bb00\n007700\n009900\n00bb00\n005500\n00bb00\n007700\n007700\n00bb00\n007700\n009900\n00bb00\n005500\n00ff00\n"
  },
  {
    "path": "palettes/base16-isotope-dark",
    "content": "d0d0d0\n000000\nd0d0d0\n000000\nff0000\n33ff00\nff0099\n0066ff\ncc00ff\n00ffff\nd0d0d0\n808080\nff0000\n33ff00\nff0099\n0066ff\ncc00ff\n00ffff\nffffff\n"
  },
  {
    "path": "palettes/base16-isotope-light",
    "content": "606060\nffffff\n606060\n000000\nff0000\n33ff00\nff0099\n0066ff\ncc00ff\n00ffff\nd0d0d0\n808080\nff0000\n33ff00\nff0099\n0066ff\ncc00ff\n00ffff\nffffff\n"
  },
  {
    "path": "palettes/base16-londontube-dark",
    "content": "d9d8d8\n231f20\nd9d8d8\n231f20\nee2e24\n00853e\nffd204\n009ddc\n98005d\n85cebc\nd9d8d8\n737171\nee2e24\n00853e\nffd204\n009ddc\n98005d\n85cebc\nffffff\n"
  },
  {
    "path": "palettes/base16-londontube-light",
    "content": "5a5758\nffffff\n5a5758\n231f20\nee2e24\n00853e\nffd204\n009ddc\n98005d\n85cebc\nd9d8d8\n737171\nee2e24\n00853e\nffd204\n009ddc\n98005d\n85cebc\nffffff\n"
  },
  {
    "path": "palettes/base16-marrakesh-dark",
    "content": "948e48\n201602\n948e48\n201602\nc35359\n18974e\na88339\n477ca1\n8868b3\n75a738\n948e48\n6c6823\nc35359\n18974e\na88339\n477ca1\n8868b3\n75a738\nfaf0a5\n"
  },
  {
    "path": "palettes/base16-marrakesh-light",
    "content": "5f5b17\nfaf0a5\n5f5b17\n201602\nc35359\n18974e\na88339\n477ca1\n8868b3\n75a738\n948e48\n6c6823\nc35359\n18974e\na88339\n477ca1\n8868b3\n75a738\nfaf0a5\n"
  },
  {
    "path": "palettes/base16-mocha-dark",
    "content": "d0c8c6\n3b3228\nd0c8c6\n3b3228\ncb6077\nbeb55b\nf4bc87\n8ab3b5\na89bb9\n7bbda4\nd0c8c6\n7e705a\ncb6077\nbeb55b\nf4bc87\n8ab3b5\na89bb9\n7bbda4\nf5eeeb\n"
  },
  {
    "path": "palettes/base16-mocha-light",
    "content": "645240\nf5eeeb\n645240\n3b3228\ncb6077\nbeb55b\nf4bc87\n8ab3b5\na89bb9\n7bbda4\nd0c8c6\n7e705a\ncb6077\nbeb55b\nf4bc87\n8ab3b5\na89bb9\n7bbda4\nf5eeeb\n"
  },
  {
    "path": "palettes/base16-monokai-dark",
    "content": "f8f8f2\n272822\nf8f8f2\n272822\nf92672\na6e22e\nf4bf75\n66d9ef\nae81ff\na1efe4\nf8f8f2\n75715e\nf92672\na6e22e\nf4bf75\n66d9ef\nae81ff\na1efe4\nf9f8f5\n"
  },
  {
    "path": "palettes/base16-monokai-light",
    "content": "49483e\nf9f8f5\n49483e\n272822\nf92672\na6e22e\nf4bf75\n66d9ef\nae81ff\na1efe4\nf8f8f2\n75715e\nf92672\na6e22e\nf4bf75\n66d9ef\nae81ff\na1efe4\nf9f8f5\n"
  },
  {
    "path": "palettes/base16-ocean-dark",
    "content": "c0c5ce\n2b303b\nc0c5ce\n2b303b\nbf616a\na3be8c\nebcb8b\n8fa1b3\nb48ead\n96b5b4\nc0c5ce\n65737e\nbf616a\na3be8c\nebcb8b\n8fa1b3\nb48ead\n96b5b4\neff1f5\n"
  },
  {
    "path": "palettes/base16-ocean-light",
    "content": "4f5b66\neff1f5\n4f5b66\n2b303b\nbf616a\na3be8c\nebcb8b\n8fa1b3\nb48ead\n96b5b4\nc0c5ce\n65737e\nbf616a\na3be8c\nebcb8b\n8fa1b3\nb48ead\n96b5b4\neff1f5\n"
  },
  {
    "path": "palettes/base16-paraiso-dark",
    "content": "a39e9b\n2f1e2e\na39e9b\n2f1e2e\nef6155\n48b685\nfec418\n06b6ef\n815ba4\n5bc4bf\na39e9b\n776e71\nef6155\n48b685\nfec418\n06b6ef\n815ba4\n5bc4bf\ne7e9db\n"
  },
  {
    "path": "palettes/base16-paraiso-light",
    "content": "4f424c\ne7e9db\n4f424c\n2f1e2e\nef6155\n48b685\nfec418\n06b6ef\n815ba4\n5bc4bf\na39e9b\n776e71\nef6155\n48b685\nfec418\n06b6ef\n815ba4\n5bc4bf\ne7e9db\n"
  },
  {
    "path": "palettes/base16-railscasts-dark",
    "content": "e6e1dc\n2b2b2b\ne6e1dc\n2b2b2b\nda4939\na5c261\nffc66d\n6d9cbe\nb6b3eb\n519f50\ne6e1dc\n5a647e\nda4939\na5c261\nffc66d\n6d9cbe\nb6b3eb\n519f50\nf9f7f3\n"
  },
  {
    "path": "palettes/base16-railscasts-light",
    "content": "3a4055\nf9f7f3\n3a4055\n2b2b2b\nda4939\na5c261\nffc66d\n6d9cbe\nb6b3eb\n519f50\ne6e1dc\n5a647e\nda4939\na5c261\nffc66d\n6d9cbe\nb6b3eb\n519f50\nf9f7f3\n"
  },
  {
    "path": "palettes/base16-shapeshifter-dark",
    "content": "ababab\n000000\nababab\n000000\ne92f2f\n0ed839\ndddd13\n3b48e3\nf996e2\n23edda\nababab\n343434\ne92f2f\n0ed839\ndddd13\n3b48e3\nf996e2\n23edda\nf9f9f9\n"
  },
  {
    "path": "palettes/base16-shapeshifter-light",
    "content": "102015\nf9f9f9\n102015\n000000\ne92f2f\n0ed839\ndddd13\n3b48e3\nf996e2\n23edda\nababab\n343434\ne92f2f\n0ed839\ndddd13\n3b48e3\nf996e2\n23edda\nf9f9f9\n"
  },
  {
    "path": "palettes/base16-solarized-dark",
    "content": "93a1a1\n002b36\n93a1a1\n002b36\ndc322f\n859900\nb58900\n268bd2\n6c71c4\n2aa198\n93a1a1\n657b83\ndc322f\n859900\nb58900\n268bd2\n6c71c4\n2aa198\nfdf6e3\n"
  },
  {
    "path": "palettes/base16-solarized-light",
    "content": "586e75\nfdf6e3\n586e75\n002b36\ndc322f\n859900\nb58900\n268bd2\n6c71c4\n2aa198\n93a1a1\n657b83\ndc322f\n859900\nb58900\n268bd2\n6c71c4\n2aa198\nfdf6e3\n"
  },
  {
    "path": "palettes/base16-tomorrow-dark",
    "content": "c5c8c6\n1d1f21\nc5c8c6\n1d1f21\ncc6666\nb5bd68\nf0c674\n81a2be\nb294bb\n8abeb7\nc5c8c6\n969896\ncc6666\nb5bd68\nf0c674\n81a2be\nb294bb\n8abeb7\nffffff\n"
  },
  {
    "path": "palettes/base16-tomorrow-light",
    "content": "373b41\nffffff\n373b41\n1d1f21\ncc6666\nb5bd68\nf0c674\n81a2be\nb294bb\n8abeb7\nc5c8c6\n969896\ncc6666\nb5bd68\nf0c674\n81a2be\nb294bb\n8abeb7\nffffff\n"
  },
  {
    "path": "palettes/base16-twilight-dark",
    "content": "a7a7a7\n1e1e1e\na7a7a7\n1e1e1e\ncf6a4c\n8f9d6a\nf9ee98\n7587a6\n9b859d\nafc4db\na7a7a7\n5f5a60\ncf6a4c\n8f9d6a\nf9ee98\n7587a6\n9b859d\nafc4db\nffffff\n"
  },
  {
    "path": "palettes/base16-twilight-light",
    "content": "464b50\nffffff\n464b50\n1e1e1e\ncf6a4c\n8f9d6a\nf9ee98\n7587a6\n9b859d\nafc4db\na7a7a7\n5f5a60\ncf6a4c\n8f9d6a\nf9ee98\n7587a6\n9b859d\nafc4db\nffffff\n"
  },
  {
    "path": "palettes/belafonte-dark",
    "content": "968c83\n20111b\n968c83\n20111b\nbe100e\n858162\neaa549\n426a79\n97522c\n989a9c\n968c83\n5e5252\nbe100e\n858162\neaa549\n426a79\n97522c\n989a9c\nd5ccba\n"
  },
  {
    "path": "palettes/bim-dark",
    "content": "a9bed8\n012849\na9bed8\n2c2423\nf557a0\na9ee55\nf5a255\n5ea2ec\na957ec\n5eeea0\n918988\n918988\nf579b2\nbbee78\nf5b378\n81b3ec\nbb79ec\n81eeb2\nf5eeec\n"
  },
  {
    "path": "palettes/birds-of-paradise-dark",
    "content": "e0dbb7\n2a1f1d\ne0dbb7\n573d26\nbe2d26\n6ba18a\ne99d2a\n5a86ad\nac80a6\n74a6ad\ne0dbb7\n9b6c4a\ne84627\n95d8ba\nd0d150\nb8d3ed\nd19ecb\n93cfd7\nfff9d5\n"
  },
  {
    "path": "palettes/blazer-dark",
    "content": "d9e6f2\n0d1926\nd9e6f2\n000000\nb87a7a\n7ab87a\nb8b87a\n7a7ab8\nb87ab8\n7ab8b8\nd9d9d9\n262626\ndbbdbd\nbddbbd\ndbdbbd\nbdbddb\ndbbddb\nbddbdb\nffffff\n"
  },
  {
    "path": "palettes/cai-dark",
    "content": "d9e6f2\n09111a\nd9e6f2\n000000\nca274d\n4dca27\ncaa427\n274dca\na427ca\n27caa4\n808080\n808080\ne98da3\na3e98d\ne9d48d\n8da3e9\nd48de9\n8de9d4\nffffff\n"
  },
  {
    "path": "palettes/calamity-dark",
    "content": "d5ced9\n2f2833\nd5ced9\n2f2833\nfc644d\na5f69c\ne9d7a5\n3b79c7\nf92672\n74d3de\nd5ced9\n7e6c88\nfc644d\na5f69c\ne9d7a5\n3b79c7\nf92672\n74d3de\nffffff\n"
  },
  {
    "path": "palettes/chalk-dark",
    "content": "D4D4D4\n2D2D2D\nD4D4D4\n646464\nF58E8E\nA9D3AB\nFED37E\n7AABD4\nD6ADD5\n79D4D5\nD4D4D4\n646464\nF58E8E\nA9D3AB\nFED37E\n7AABD4\nD6ADD5\n79D4D5\nD4D4D4\n"
  },
  {
    "path": "palettes/chalkboard-dark",
    "content": "d9e6f2\n29262f\nd9e6f2\n000000\nc37372\n72c373\nc2c372\n7372c3\nc372c2\n72c2c3\nd9d9d9\n323232\ndbaaaa\naadbaa\ndadbaa\naaaadb\ndbaada\naadadb\nffffff\n"
  },
  {
    "path": "palettes/challengerdeep-dark",
    "content": "cbe1e7\n1e1c31\ncbe1e7\n141228\nff5458\n62d196\nffb378\n65b2ff\n906cff\n63f2f1\na6b3cc\n565575\nff8080\n95ffa4\nffe9aa\n91ddff\nc991e1\naaffe4\ncbe3e7\n"
  },
  {
    "path": "palettes/clrs-light",
    "content": "262626\nffffff\n262626\n000000\nf8282a\n328a5d\nfa701d\n135cd0\n9f00bd\n33c3c1\nb3b3b3\n555753\nfb0416\n2cc631\nfdd727\n1670ff\ne900b0\n3ad5ce\neeeeec\n"
  },
  {
    "path": "palettes/cyberpunk-dark",
    "content": "e5e5e5\n332a57\ne5e5e5\n000000\nff7092\n00fbac\nfffa6a\n00bfff\ndf95ff\n86cbfe\nffffff\n000000\nff8aa4\n21f6bc\nfff787\n1bccfd\ne6aefe\n99d6fc\nffffff\n"
  },
  {
    "path": "palettes/dkeg-amiox-dark",
    "content": "c3c1b8\n262020\nb1a89c\n292323\n925633\n55634f\naa9a71\n5e6676\n57464d\n47676e\nb1a89c\n514c4c\n925633\n55634f\naa9a71\n5e6676\n57464d\n47676e\nc8c1b9\n"
  },
  {
    "path": "palettes/dkeg-bark-dark",
    "content": "bcb8ba\n30272b\nbcb8ba\n31282c\n925633\n697234\n978341\n5e6676\n694e63\n47676e\nbcb8ba\n443c40\n925633\n697234\n978341\n5e6676\n694e63\n47676e\nbcb8ba\n"
  },
  {
    "path": "palettes/dkeg-blend-dark",
    "content": "edeee8\n272725\nedeee8\n282826\n7d5151\n959c4f\na78749\n455563\n9f908d\n4a5e5b\nf2f2f2\n4f4f4b\n9c6565\nb6bd6e\nbc9f67\n4d6377\nb0a7b4\n80a09b\nffffff\n"
  },
  {
    "path": "palettes/dkeg-blok-dark",
    "content": "bab9ba\n2c2a2b\nbab9ba\n2d2b2c\na67979\n809f7b\nbaad8a\n6d7575\n7d6969\n7b9899\nbab9ba\n545253\na67979\n809f7b\nbaad8a\n6d7575\n7d6969\n7b9899\nbab9ba\n"
  },
  {
    "path": "palettes/dkeg-bluetype-dark",
    "content": "eaeaed\n272a2a\neaeaed\n282c2c\nb05f5f\n88aa55\nccb05f\n556973\n80807e\n558888\neaeaed\n484c4e\nb05f5f\n88aa55\nccb05f\n556973\n80807e\n558888\nf6f7f8\n"
  },
  {
    "path": "palettes/dkeg-branch-dark",
    "content": "cfc1a9\n32221a\ncfc1a9\n35241c\nc2562d\n96a65e\nd29b5a\n3b8e8c\nc47e5b\n639a90\ncfc1a9\n564a45\nc2562d\n96a65e\nd29b5a\n3b8e8c\nc47e5b\n639a90\ncfc1a9\n"
  },
  {
    "path": "palettes/dkeg-depth-dark",
    "content": "dbd7b8\n2c2833\ndbd7b8\n322d39\nbf6257\n82a37c\nb7a16c\n6d6a80\n825969\n938e8f\ndbd7b8\n4e4955\nbf6257\n82a37c\nb7a16c\n6d6a80\n825969\n938e8f\ndbd7b8\n"
  },
  {
    "path": "palettes/dkeg-designr-dark",
    "content": "c4c4b5\n242e32\nc4c4b5\n253034\na66959\n769070\nac8d6e\n607a86\n8a757e\n60867f\nc4c4b5\n35444b\na66959\n769070\nac8d6e\n607a86\n8a757e\n60867f\nc4c4b5\n"
  },
  {
    "path": "palettes/dkeg-escen-dark",
    "content": "bcbebb\n1c2319\nbcbebb\n1d241a\nc14d38\na0ce52\nbe9e61\n4c7e89\n814d61\n79a69d\nbcbebb\n35422f\nc14d38\na0ce52\nbe9e61\n4c7e89\n814d61\n79a69d\nbcbebb\n"
  },
  {
    "path": "palettes/dkeg-fury-dark",
    "content": "9e9e91\n1e1e1e\n9e9e91\n1f1f1f\n98442f\n4c6640\n9d8554\n4c596b\n7b6072\n385853\n9e9e91\n363636\n98442f\n4c6640\n9d8554\n4c596b\n7b6072\n385853\n9e9e91\n"
  },
  {
    "path": "palettes/dkeg-harbing-dark",
    "content": "c8b49d\n322b26\nc8b49d\n332c27\nbd6151\n6e9383\nd7b18a\n8a8f94\nbd9a81\n91a1a5\nc8b49d\n63554c\nbd6151\n6e9383\nd7b18a\n8a8f94\nbd9a81\n91a1a5\nc8b49d\n"
  },
  {
    "path": "palettes/dkeg-kit-dark",
    "content": "cac5b7\n272733\ncac5b7\n292935\nd65f2f\naabf7f\ndabe72\n5e7e9b\nbf6c68\n5a7273\ncac5b7\n48485e\nd65f2f\naabf7f\ndabe72\n5e7e9b\nbf6c68\n5a7273\nd5d1c6\n"
  },
  {
    "path": "palettes/dkeg-link-dark",
    "content": "c2c2c2\n222222\nc2c2c2\n242424\n4d4d4d\n8a8c84\nc5c5b2\n5d5d5d\n707070\n898989\nc2c2c2\n484848\n4d4d4d\n8a8c84\nc5c5b2\n5d5d5d\n707070\n898989\nf1f1f1\n"
  },
  {
    "path": "palettes/dkeg-mattd-dark",
    "content": "b0b0a2\n20201f\nb0b0a2\n222221\n996140\n799c6a\n9d8554\n5f656a\n7b6064\n566e6b\nb0b0a2\n3a3a38\n996140\n799c6a\n9d8554\n5f656a\n7b6064\n566e6b\nd3d3cb\n"
  },
  {
    "path": "palettes/dkeg-novmbr-dark",
    "content": "c7b8ac\n241d1a\nc7b8ac\n251e1b\n9f6434\n9dac5f\ncca75f\n2f7d7c\nb5896e\n52877f\nc7b8ac\n50413a\n9f6434\n9dac5f\ncca75f\n2f7d7c\nb5896e\n52877f\nc7b8ac\n"
  },
  {
    "path": "palettes/dkeg-poly-dark",
    "content": "a5a39d\n231c0d\na5a39d\n241e0e\na47b3d\n7b9764\naead5d\n628e8f\nad9d52\n709681\na5a39d\n3f392a\na47b3d\n7b9764\naead5d\n628e8f\nad9d52\n709681\na5a39d\n"
  },
  {
    "path": "palettes/dkeg-raiin-dark",
    "content": "bfbec3\n221f2c\nbfbec3\n23202c\naf6c69\n7e9c80\nb29c7c\n637b81\n896e72\n5a8585\nbfbec3\n46444d\naf6c69\n7e9c80\nb29c7c\n637b81\n896e72\n5a8585\nbfbec3\n"
  },
  {
    "path": "palettes/dkeg-scag-dark",
    "content": "c4bbb0\n252326\nc4bbb0\n282528\n93503e\n7a8648\n9d8554\n5f656a\n7b6064\n566e6b\nc4bbb0\n413f43\n93503e\n7a8648\n9d8554\n5f656a\n7b6064\n566e6b\nc4bbb0\n"
  },
  {
    "path": "palettes/dkeg-shade-dark",
    "content": "ededb7\n2c2c2c\nededb7\n2e2e2e\nc77369\n93988a\nd0c57a\n747f89\n825969\n938e8f\nddddb5\n4e4e4e\nc77369\n93988a\nd0c57a\n747f89\n825969\n938e8f\nededb7\n"
  },
  {
    "path": "palettes/dkeg-simplicity-dark",
    "content": "F3F3F3\n28282C\nF3F3F3\n29292D\nBF5C56\n97B19C\nD7BD8A\n545F72\nA18673\n75909F\nE9E9E9\n404047\nBF5C56\n97B19C\nD7BD8A\n545f72\nA18673\nBE926B\nF4F4F2\n"
  },
  {
    "path": "palettes/dkeg-skigh-dark",
    "content": "bab7b5\n252a32\nbab7b5\n272c34\n876058\n6f7f71\nb39580\n546780\n84787d\n556f86\nbab7b5\n3b434f\n876058\n6f7f71\nb39580\n546780\n84787d\n556f86\ndfdedd\n"
  },
  {
    "path": "palettes/dkeg-sprout-dark",
    "content": "cfccbe\n2d3144\ncfccbe\n2f3447\n8d6d5c\n6d806d\n96915d\n68758d\n8a747b\n8d97a8\ncfccbe\n525a69\n8d6d5c\n6d806d\n96915d\n68758d\n8a747b\n8d97a8\nf0efeb\n"
  },
  {
    "path": "palettes/dkeg-stv-dark",
    "content": "c4c0bb\n2c373d\nc4c0bb\n2f393f\na67979\n809f7b\nbaad8a\n6d7575\n8e7d79\n7b9899\nc4c0bb\n4d5459\na67979\n809f7b\nbaad8a\n6d7575\n8e7d79\n7b9899\nc4c0bb\n"
  },
  {
    "path": "palettes/dkeg-subtle-dark",
    "content": "b4ada4\n2c2c35\nb4ada4\n2d2d36\nb56550\n6b925a\nb79b58\n6e747b\n96787d\n7b8889\nb4ada4\n45454d\nb56550\n6b925a\nb79b58\n6e747b\n96787d\n7b8889\nb4ada4\n"
  },
  {
    "path": "palettes/dkeg-traffic-dark",
    "content": "cfb9a8\n272c30\ncfb9a8\n282d31\n934e46\n637268\nc79e84\n515e67\n715f5e\n5c6f7d\ncfb9a8\n414a51\n934e46\n637270\nc79e84\n515e67\n715f5e\n5c6f7d\nddcec2\n"
  },
  {
    "path": "palettes/dkeg-transposet-dark",
    "content": "b8b2a7\n2a2725\nb8b2a7\n2b2927\n8e6f64\n849385\nbdac8c\n4c5467\n757580\n64697f\nb8b2a7\n474543\n8e6f64\n849385\nbdac8c\n4c5467\n757580\n64697f\nb8b2a7\n"
  },
  {
    "path": "palettes/dkeg-wintry-dark",
    "content": "c3bec3\n37273a\nc3bec3\n3d2b40\n9c595c\n8ba07a\nb3a67d\n7B6677\n83466D\n899079\nc3bec3\n5e5261\n9c595c\n8ba07a\nb3a67d\n7B6677\n83466D\n899079\nc3bec3\n"
  },
  {
    "path": "palettes/dracula-dark",
    "content": "94A3A5\n282a36\n94A3A5\n44475a\nff5555\n50fa7b\nffb86c\n8be9fd\nbd93f9\nff79c6\n94A3A5\n000000\nff5555\n50fa7b\nffb86c\n8be9fd\nbd93f9\nff79c6\nffffff\n"
  },
  {
    "path": "palettes/earthsong-dark",
    "content": "e5c7a9\n292520\ne5c7a9\n121418\nc94234\n85c54c\nf5ae2e\n1398b9\nd0633d\n509552\ne5c6aa\n675f54\nff645a\n98e036\ne0d561\n5fdaff\nff9269\n84f088\nf6f7ec\n"
  },
  {
    "path": "palettes/elementary-dark",
    "content": "f2f2f2\n101010\nf2f2f2\n303030\ne1321a\n6ab017\nffc005\n004f9e\nec0048\n2aa7e7\nf2f2f2\n5d5d5d\nff361e\n7bc91f\nffd00a\n0071ff\nff1d62\n4bb8fd\na020f0\n"
  },
  {
    "path": "palettes/elio-dark",
    "content": "f2f2f2\n041A3B\nf2f2f2\n303030\ne1321a\n6ab017\nffc005\n729FCF\nec0048\n2aa7e7\nf2f2f2\n5d5d5d\nff361e\n7bc91f\nffd00a\n0071ff\nff1d62\n4bb8fd\na020f0\n"
  },
  {
    "path": "palettes/espresso-dark",
    "content": "ffffff\n323232\nffffff\n353535\nd25252\na5c261\nffc66d\n6c99bb\nd197d9\nbed6ff\neeeeec\n535353\nf00c0c\nc2e075\ne1e48b\n8ab7d9\nefb5f7\ndcf4ff\nffffff\n"
  },
  {
    "path": "palettes/espresso-libre-dark",
    "content": "b8a898\n2a211c\nb8a898\n000000\ncc0000\n1a921c\nf0e53a\n0066ff\nc5656b\n06989a\nd3d7cf\n555753\nef2929\n9aff87\nfffb5c\n43a8ed\nff818a\n34e2e2\neeeeec\n"
  },
  {
    "path": "palettes/fairyfloss-dark",
    "content": "C2FFDF\n42395D\nFFB8D1\n42395D\nA8757B\nFF857F\nE6C000\nAE81FF\n716799\nC2FFDF\nF8F8F2\n75507B\nFFB8D1\nF1568E\nD5A425\nC5A3FF\n8077A8\nC2FFFF\nF8F8F0\n"
  },
  {
    "path": "palettes/fishtank-dark",
    "content": "ecf0fe\n232537\necf0fe\n03073c\nc6004a\nacf157\nfecd5e\n525fb8\n986f82\n968763\necf0fc\n6c5b30\nda4b8a\ndbffa9\nfee6a9\nb2befa\nfda5cd\na5bd86\nf6ffec\n"
  },
  {
    "path": "palettes/flatland-dark",
    "content": "b8dbef\n1d1f21\nb8dbef\n1d1d19\nf18339\n9fd364\nf4ef6d\n5096be\n695abc\nd63865\nffffff\n1d1d19\nd22a24\na7d42c\nff8949\n61b9d0\n695abc\nd63865\nffffff\n"
  },
  {
    "path": "palettes/frontend-galaxy-dark",
    "content": "ffffff\n1d2837\nffffff\n000000\nf9555f\n21b089\nfef02a\n589df6\n944d95\n1f9ee7\nbbbbbb\n555555\nfa8c8f\n35bb9a\nffff55\n589df6\ne75699\n3979bc\nffffff\n"
  },
  {
    "path": "palettes/glacier-dark",
    "content": "ffffff\n0c1115\nffffff\n2e343c\nbd0f2f\n35a770\nfb9435\n1f5872\nbd2523\n778397\nffffff\n404a55\nbd0f2f\n49e998\nfddf6e\n2a8bc1\nea4727\na0b6d3\nffffff\n"
  },
  {
    "path": "palettes/gooey-dark",
    "content": "EBEEF9\n0D101B\nEBEEF9\n000009\nBB4F6C\n72CCAE\nC65E3D\n58B6CA\n6488C4\n8D84C6\n858893\n1f222d\nee829f\na5ffe1\nf99170\n8be9fd\n97bbf7\nc0b7f9\nffffff\n"
  },
  {
    "path": "palettes/gotham-dark",
    "content": "98d1ce\n0a0f14\n98d1ce\n0a0f14\nc33027\n26a98b\nedb54b\n195465\n4e5165\n33859d\n98d1ce\n10151b\nd26939\n081f2d\n245361\n093748\n888ba5\n599caa\nd3ebe9\n"
  },
  {
    "path": "palettes/grape-dark",
    "content": "9f9fa1\n171423\n9f9fa1\n2d283f\ned2261\n1fa91b\n8ddc20\n487df4\n8d35c9\n3bdeed\n9e9ea0\n59516a\nf0729a\n53aa5e\nb2dc87\na9bcec\nad81c2\n9de3eb\na288f7\n"
  },
  {
    "path": "palettes/gruvbox-dark",
    "content": "ebdbb2\n282828\nebdbb2\n282828\ncc241d\n98971a\nd79921\n458588\nb16286\n689d6a\na89984\n928374\nfb4934\nb8bb26\nfabd2f\n83a598\nd3869b\n8ec07c\nebdbb2\n"
  },
  {
    "path": "palettes/gruvbox-light",
    "content": "3c3836\nfbf1c7\n3c3836\nfdf4c1\ncc241d\n98971a\nd79921\n458588\nb16286\n689d6a\n7c6f64\n928374\n9d0006\n79740e\nb57614\n076678\n8f3f71\n427b58\n3c3836\n"
  },
  {
    "path": "palettes/hal-dark",
    "content": "E8DFD6\n021B21\n2E3340\n032C36\nC2454E\n7CBF9E\n8A7A63\n2E3340\nFF5879\n44B5B1\nF2F1B9\n065F73\nEF5847\nA2D9B1\nBEB090\n61778D\nFF99A1\n9ED9D8\nF6F6C9\n"
  },
  {
    "path": "palettes/harper-dark",
    "content": "a8a49d\n010101\na8a49d\n010101\nf8b63f\n7fb5e1\nd6da25\n489e48\nb296c6\nf5bfd7\na8a49d\n726e6a\nf8b63f\n7fb5e1\nd6da25\n489e48\nb296c6\nf5bfd7\nfefbea\n"
  },
  {
    "path": "palettes/hemisu-dark",
    "content": "FFFFFF\n000000\nBAFFAA\n444444\nFF0054\nB1D630\n9D895E\n67BEE3\nB576BC\n569A9F\nEDEDED\n777777\nD65E75\nBAFFAA\nECE1C8\n9FD3E5\nDEB3DF\nB6E0E5\nFFFFFF\n"
  },
  {
    "path": "palettes/hemisu-light",
    "content": "444444\nEFEFEF\nFF0054\n777777\nFF0055\n739100\n503D15\n538091\n5B345E\n538091\n999999\n999999\nD65E76\n9CC700\n947555\n9DB3CD\nA184A4\n85B2AA\nBABABA\n"
  },
  {
    "path": "palettes/hopscotch-256-dark",
    "content": "b9b5b8\n322931\nb9b5b8\n322931\ndd464c\n8fc13e\nfdcc59\n1290bf\nc85e7c\n149b93\nb9b5b8\n797379\ndd464c\n8fc13e\nfdcc59\n1290bf\nc85e7c\n149b93\nffffff\n"
  },
  {
    "path": "palettes/hybrid-dark",
    "content": "94a3a5\n141414\n94a3a5\n282a2e\nA54242\n8C9440\nde935f\n5F819D\n85678F\n5E8D87\n969896\n373b41\ncc6666\nb5bd68\nf0c674\n81a2be\nb294bb\n8abeb7\nc5c8c6\n"
  },
  {
    "path": "palettes/ibm3270-dark",
    "content": "FDFDFD\n000000\nFDFDFD\n222222\nF01818\n24D830\nF0D824\n7890F0\nF078D8\n54E4E4\nA5A5A5\n888888\nEF8383\n7ED684\nEFE28B\nB3BFEF\nEFB3E3\n9CE2E2\nFFFFFF\n"
  },
  {
    "path": "palettes/ir-black-dark",
    "content": "eeeeee\n000000\nffa560\n4e4e4e\nff6c60\na8ff60\nffffb6\n69cbfe\nff73Fd\nc6c5fe\neeeeee\n7c7c7c\nffb6b0\nceffac\nffffcb\nb5dcfe\nff9cfe\ndfdffe\nffffff\n"
  },
  {
    "path": "palettes/jellybeans-dark",
    "content": "dedede\n121212\ndedede\n929292\ne27373\n94b979\nffba7b\n97bedc\ne1c0fa\n00988e\ndedede\nbdbdbd\nffa1a1\nbddeab\nffdca0\nb1d8f6\nfbdaff\n1ab2a8\nffffff\n"
  },
  {
    "path": "palettes/mar-light",
    "content": "23476a\nffffff\n23476a\n000000\nb5407b\n7bb540\nb57b40\n407bb5\n7b40b5\n40b57b\nf8f8f8\n737373\ncd73a0\na0cd73\ncda073\n73a0cd\na073cd\n73cda0\nffffff\n"
  },
  {
    "path": "palettes/medallion-dark",
    "content": "cac296\n1d1908\ncac296\n000000\nb64c00\n7c8b16\nd3bd26\n616bb0\n8c5a90\n916c25\ncac29a\n5e5219\nff9149\nb2ca3b\nffe54a\nacb8ff\nffa0ff\nffbc51\nfed698\n"
  },
  {
    "path": "palettes/miu-dark",
    "content": "d9e6f2\n0d1926\nd9e6f2\n000000\nb87a7a\n7ab87a\nb8b87a\n7a7ab8\nb87ab8\n7ab8b8\nd9d9d9\n262626\ndbbdbd\nbddbbd\ndbdbbd\nbdbddb\ndbbddb\nbddbdb\nffffff\n"
  },
  {
    "path": "palettes/molokai-dark",
    "content": "BBBBBB\n1b1d1e\nBBBBBB\n1b1d1e\n7325FA\n23E298\n60D4DF\nD08010\nFF0087\nD0A843\nBBBBBB\n555555\n9D66F6\n5FE0B1\n6DF2FF\nFFAF00\nFF87AF\nFFCE51\nFFFFFF\n"
  },
  {
    "path": "palettes/monokai-dark",
    "content": "f8f8f2\n272822\nf8f8f2\n75715e\nf92672\na6e22e\nf4bf75\n66d9ef\nae81ff\n2AA198\nf9f8f5\n272822\nf92672\na6e22e\nf4bf75\n66d9ef\nae81ff\n2AA198\nf8f8f2\n"
  },
  {
    "path": "palettes/neutron-dark",
    "content": "e6e8ef\n1c1e22\ne6e8ef\n23252b\nb54036\n5ab977\ndeb566\n6a7c93\na4799d\n3f94a8\ne6e8ef\n23252b\nb54036\n5ab977\ndeb566\n6a7c93\na4799d\n3f94a8\nebedf2\n"
  },
  {
    "path": "palettes/night-owl-dark",
    "content": "d6deeb\n011627\nd6deeb\n011627\nEF5350\n22da6e\naddb67\n82aaff\nc792ea\n21c7a8\nffffff\n575656\nef5350\n22da6e\nffeb95\n82aaff\nc792ea\n7fdbca\nffffff\n"
  },
  {
    "path": "palettes/nocturnal-winter-dark",
    "content": "e6e5e5\n0d0d17\ne6e5e5\n4d4d4d\nf12d52\n09cd7e\nf5f17a\n3182e0\nff2b6d\n09c87a\nfcfcfc\n808080\nf16d86\n0ae78d\nfffc67\n6096ff\nff78a2\n0ae78d\nffffff\n"
  },
  {
    "path": "palettes/nord",
    "content": "D8DEE9\n2E3440\nD8DEE9\n3B4252\nBF616A\nA3BE8C\nEBCB8B\n81A1C1\nB48EAD\n88C0D0\nE5E9F0\n4C566A\nBF616A\nA3BE8C\nEBCB8B\n81A1C1\nB48EAD\n8FBCBB\nECEFF4\n"
  },
  {
    "path": "palettes/onedark-dark",
    "content": "abb2bf\n1e2127\nabb2bf\n1e2127\ne06c75\n98c379\nd19a66\n61afef\nc678dd\n56b6c2\nabb2bf\n5c6370\ne06c75\n98c379\nd19a66\n61afef\nc678dd\n56b6c2\nffffff\n"
  },
  {
    "path": "palettes/paraiso-dark",
    "content": "a39e9b\n2f1e2e\na39e9b\n2f1e2e\nef6155\n48b685\nfec418\n06b6ef\n815ba4\n5bc4bf\na39e9b\n776e71\nef6155\n48b685\nfec418\n06b6ef\n815ba4\n5bc4bf\ne7e9db\n"
  },
  {
    "path": "palettes/pnevma-dark",
    "content": "d0d0d0\n1c1c1c\nd0d0d0\n2f2e2d\na36666\n90a57d\nd7af87\n7fa5bd\nc79ec4\n8adbb4\nd0d0d0\n4a4845\nd78787\nafbea2\ne4c9af\na1bdce\nd7beda\nb1e7dd\nefefef\n"
  },
  {
    "path": "palettes/rose-pine-dark",
    "content": "e0def4\n191724\ne0def4\n706e86\neb6f92\n9ccfd8\nf6c177\n31748f\nc4a7e7\nebbcba\ne0def4\n706e86\neb6f92\n9ccfd8\nf6c177\n31748f\nc4a7e7\nebbcba\ne0def4\n"
  },
  {
    "path": "palettes/ryuuko-dark",
    "content": "ececec\n2c3941\nececec\n2c3941\n865f5b\n66907d\nb1a990\n6a8e95\nb18a73\n88b2ac\nececec\n5d7079\n865f5b\n66907d\nb1a990\n6a8e95\nb18a73\n88b2ac\nececec\n"
  },
  {
    "path": "palettes/sea-shells-dark",
    "content": "deb88d\n09141b\ndeb88d\n17384c\nd15123\n027c9b\nfca02f\n1e4950\n68d4f1\n50a3b5\ndeb88d\n434b53\nd48678\n628d98\nfdd39f\n1bbcdd\nbbe3ee\n87acb4\nfee4ce\n"
  },
  {
    "path": "palettes/seafoam-pastel-dark",
    "content": "d4e7d4\n243435\nd4e7d4\n757575\n825d4d\n728c62\nada16d\n4d7b82\n8a7267\n729494\ne0e0e0\n8a8a8a\ncf937a\n98d9aa\nfae79d\n7ac3cf\nd6b2a1\nade0e0\ne0e0e0\n"
  },
  {
    "path": "palettes/selenized-black",
    "content": "b9b9b9\n181818\nb9b9b9\n252525\ned4a46\n70b433\ndbb32d\n368aeb\neb6eb7\n3fc5b7\n777777\n3b3b3b\nff5e56\n83c746\nefc541\n4f9cfe\nff81ca\n56d8c9\ndedede\n"
  },
  {
    "path": "palettes/selenized-dark",
    "content": "adbcbc\n103c48\nadbcbc\n184956\nfa5750\n75b938\ndbb32d\n4695f7\nf275be\n41c7b9\n72898f\n2d5b69\nff665c\n84c747\nebc13d\n58a3ff\nff84cd\n53d6c7\ncad8d9\n"
  },
  {
    "path": "palettes/selenized-light",
    "content": "53676d\nfbf3db\n53676d\nece3cc\nd2212d\n489100\nad8900\n0072d4\nca4898\n009c8f\n909995\nd5cdb6\ncc1729\n428b00\na78300\n006dce\nc44392\n00978a\n3a4d53\n"
  },
  {
    "path": "palettes/selenized-white",
    "content": "474747\nffffff\n474747\nebebeb\nd6000c\n1d9700\nc49700\n0064e4\ndd0f9d\n00ad9c\n878787\ncdcdcd\nbf0000\n008400\naf8500\n0054cf\nc7008b\n009a8a\n282828\n"
  },
  {
    "path": "palettes/solarized-dark",
    "content": "839496\n002b36\n93a1a1\n073642\ndc322f\n859900\nb58900\n268bd2\nd33682\n2aa198\neee8d5\n002b36\ncb4b16\n586e75\n657b83\n839496\n6c71c4\n93a1a1\nfdf6e3\n"
  },
  {
    "path": "palettes/solarized-light",
    "content": "657b83\nfdf6e3\n586e75\n073642\ndc322f\n859900\nb58900\n268bd2\nd33682\n2aa198\neee8d5\n002b36\ncb4b16\n586e75\n657b83\n839496\n6c71c4\n93a1a1\nfdf6e3\n"
  },
  {
    "path": "palettes/spacedust-dark",
    "content": "ecf0c1\n0a1e24\necf0c1\n6e5346\ne35b00\n5cab96\ne3cd7b\n0f548b\ne35b00\n06afc7\nf0f1ce\n684c31\nff8a3a\naecab8\nffc878\n67a0ce\nff8a3a\n83a7b4\nfefff1\n"
  },
  {
    "path": "palettes/spacegray-dark",
    "content": "b3b8c3\n20242d\nb3b8c3\n000000\nb04b57\n87b379\ne5c179\n7d8fa4\na47996\n85a7a5\nb3b8c3\n000000\nb04b57\n87b379\ne5c179\n7d8fa4\na47996\n85a7a5\nffffff\n"
  },
  {
    "path": "palettes/square-dark",
    "content": "a1a1a1\n0a1e24\na1a1a1\n050505\ne9897c\nb6377d\necebbe\na9cdeb\n75507b\nc9caec\nf2f2f2\n141414\nf99286\nc3f786\nfcfbcc\nb6defb\nad7fa8\nd7d9fc\ne2e2e2\n"
  },
  {
    "path": "palettes/srcery-dark",
    "content": "ebdbb2\n282828\nebdbb2\n1C1B19\nFF3128\n519F50\nFBB829\n5573A3\nE02C6D\n0AAEB3\n918175\n2D2B28\nF75341\n98BC37\nFED06E\n8EB2F7\nE35682\n53FDE9\nFCE8C3\n"
  },
  {
    "path": "palettes/subliminal-dark",
    "content": "d4d4d4\n282c35\nd4d4d4\n7f7f7f\ne15a60\na9cfa4\nffe2a9\n6699cc\nf1a5ab\n5fb3b3\nd4d4d4\n7f7f7f\ne15a60\na9cfa4\nffe2a9\n6699cc\nf1a5ab\n5fb3b3\nd4d4d4\n"
  },
  {
    "path": "palettes/sundried-dark",
    "content": "c9c9c9\n1a1818\nc9c9c9\n302b2a\na7463d\n587744\n9d602a\n485b98\n864651\n9c814f\nc9c9c9\n4d4e48\naa000c\n128c21\nfc6a21\n7999f7\nfd8aa1\nfad484\nffffff\n"
  },
  {
    "path": "palettes/teerb-dark",
    "content": "d0d0d0\n262626\nd0d0d0\n1c1c1c\nd68686\naed686\nd7af87\n86aed6\nd6aed6\n8adbb4\nd0d0d0\n1c1c1c\nd68686\naed686\ne4c9af\n86aed6\nd6aed6\nb1e7dd\nefefef\n"
  },
  {
    "path": "palettes/tempus-autumn-dark",
    "content": "8e8f8d\n322622\n8e8f8d\n322622\nfc5526\n83973f\n9e9022\n7f8dbf\nce7673\n6e978b\n919078\n35260f\ndc721a\n609d59\nb1891a\n6b8ed6\n9d80d3\n229ea0\n8e8f8d\n"
  },
  {
    "path": "palettes/tempus-dusk-dark",
    "content": "a2a8ba\n1f252d\na2a8ba\n1f252d\ncb8d56\n8ba089\na79c46\n8c9abe\nb190af\n8e9aba\na29899\n2c3150\nd39d74\n80b48f\nbda75a\n9ca5de\nc69ac6\n8caeb6\na2a8ba\n"
  },
  {
    "path": "palettes/tempus-future-dark",
    "content": "a4a0ac\n18161d\na4a0ac\n18161d\nff7780\n68b183\nbda014\n54a5ff\nda89b2\n79a8c3\nbd9b87\n001b1a\nef873d\n08b885\nd39710\na294fe\nec7aca\n4ab0b9\na4a0ac\n"
  },
  {
    "path": "palettes/tempus-rift-dark",
    "content": "abacac\n2b353c\nabacac\n2b353c\nbe9604\n0eb40e\n79aa00\n00acb3\nba964c\n5fa98f\nab9699\n3d3038\nbdae13\n3ac53a\n9ab800\n20bdce\ncca57a\n6fb9ae\nabacac\n"
  },
  {
    "path": "palettes/tempus-spring-dark",
    "content": "a5a8a7\n34403c\na5a8a7\n34403c\nff855a\n6ab78a\nb6aa1a\n5daeee\nd495b4\n6eb2bc\n96aca7\n2a423d\ndf993a\n4abb88\n99b22a\n3caffe\nd091db\n4ab4d3\na5a8a7\n"
  },
  {
    "path": "palettes/tempus-summer-dark",
    "content": "9b999e\n293345\n9b999e\n293345\nfe6d32\n6ba86d\naf9a0a\n679ed7\nbc8ab6\n6ea590\na39799\n352f49\ndf8251\n7aa747\nba953a\n3ba1e8\nc97ed7\n52a6b1\n9b999e\n"
  },
  {
    "path": "palettes/tomorrow-night-dark",
    "content": "c5c8c6\n1d1f21\nc5c8c6\n000000\ncc6666\nb5bd68\nf0c674\n81a2be\nb294bb\n8abeb7\nffffff\n000000\ncc6666\nb5bd68\nf0c674\n81a2be\nb294bb\n8abeb7\nffffff\n"
  },
  {
    "path": "palettes/wild-cherry-dark",
    "content": "dafaff\n1f1726\ndafaff\n000507\nd94085\n2ab250\nffd16f\n883cdc\nececec\nc1b8b7\nfff8de\n009cc9\nda6bac\nf4dca5\neac066\n308cba\nae636b\nff919d\ne4838d\n"
  },
  {
    "path": "palettes/wombat-dark",
    "content": "dedacf\n171717\ndedacf\n000000\nff615a\nb1e969\nebd99c\n5da9f6\ne86aff\n82fff7\ndedacf\n313131\nf58c80\nddf88f\neee5b2\na5c7ff\nddaaff\nb7fff9\nffffff\n"
  },
  {
    "path": "src/config.h",
    "content": "/* numerical terminal palette (0-256 by default) */\n/* 3 reserved for bg, fg and cursor */\n#define MAX_PAL 3 + 256\n\n/* maximum length of color */\n#define MAX_COL 6\n\n/* file glob to match for directory entries */\n/* See: https://man7.org/linux/man-pages/man7/pty.7.html */\n/* macOS: /dev/ttys00[0-9] */\n#define PTS_GLOB \"/dev/pts/[0-9]*\"\n"
  },
  {
    "path": "src/log.h",
    "content": "#define msg(...) \\\n    do { \\\n        fprintf(stderr, __VA_ARGS__); \\\n        puts(\"\"); \\\n    } while (0)\n\n#define die(...) \\\n    do { \\\n        msg(__VA_ARGS__); \\\n        exit(EXIT_FAILURE); \\\n    } while (0)\n"
  },
  {
    "path": "src/paleta.c",
    "content": "#define _POSIX_C_SOURCE 200809L\n#include <stdio.h>\n#include <stdlib.h>\n#include <glob.h>\n\n#include \"config.h\"\n#include \"log.h\"\n\nstruct buf {\n    size_t size;\n    size_t cap;\n    char *str;\n};\n\nstatic char pal[MAX_PAL + 1][MAX_COL + 1];\n\nstatic void pal_read(void);\nstatic void pal_morph(const int);\nstatic void pal_write(struct buf);\n\nstatic void seq_add(struct buf *, const char *, const int, const char *);\n\nstatic void pal_read() {\n    int c;\n    int color = 0;\n    int num = 0;\n\n    while ((c = fgetc(stdin)) != EOF) {\n        if ((c >= 'A' && c <= 'F') ||\n            (c >= 'a' && c <= 'f') ||\n            (c >= '0' && c <= '9')) {\n\n            if (color > MAX_COL) {\n                die(\"invalid input found on stdin\");\n            }\n\n            pal[num][color++] = c;\n            pal[num][MAX_COL] = 0;\n\n        } else if (c == '\\n') {\n            if (color < MAX_COL) {\n                die(\"invalid input found on stdin\");\n            }\n\n            color = 0;\n            num++;\n\n            if (num > MAX_PAL) {\n                break;\n            }\n\n        } else {\n            die(\"invalid input found on stdin: %c\", c);\n        }\n    }\n\n    pal_morph(num);\n}\n\nstatic void pal_morph(const int max_cols) {\n    struct buf seq = {\n        .cap = 18, /* most frequent size */\n    };\n\n    const char *fmt_spe = \"\\033]%d;#%s\\033\\\\\";\n    const char *fmt_pal = \"\\033]4;%d;#%s\\033\\\\\";\n\n    /* border background */\n    seq_add(&seq, \"\\033]%d;#%s\\033\\\\\", 708, pal[1]);\n\n    /* cursor */\n    seq_add(&seq, fmt_spe, 12, pal[2]);\n\n    /* numerical palette */\n    for (int i = 3; i < max_cols; i++) {\n        seq_add(&seq, fmt_pal, i - 3, pal[i]);\n\n        /* some terminals require that these sequences go\n         * after colors 0-16. other terminals flicker if\n         * these sequences are sent too late. send them\n         * as soon as possible */\n        switch (i - 3) {\n            case 0:\n                /* background */\n                seq_add(&seq, fmt_spe, 11, pal[1]);\n                break;\n\n            case 15:\n                /* foreground */\n                seq_add(&seq, fmt_spe, 10, pal[0]);\n                break;\n        }\n    }\n\n    pal_write(seq);\n    free(seq.str);\n}\n\nstatic void pal_write(struct buf seq) {\n    glob_t buf;\n\n    if (glob(PTS_GLOB, GLOB_NOSORT, NULL, &buf) != 0) {\n        die(\"glob %s failed\", PTS_GLOB);\n    }\n\n    fwrite(seq.str, 1, seq.size, stdout);\n\n    for (size_t i = 0; i < buf.gl_pathc; i++) {\n        FILE *f = fopen(buf.gl_pathv[i], \"w\");\n\n        if (f) {\n            fwrite(seq.str, 1, seq.size, f);\n            fclose(f);\n        }\n    }\n\n    globfree(&buf);\n}\n\nstatic void seq_add(struct buf *seq, const char *fmt,\n                    const int off, const char *col) {\n    int ret = snprintf(NULL, 0, fmt, off, col) + 1;\n\n    if (!seq->size || (seq->size + ret) >= seq->cap) {\n        seq->cap *= 2;\n        seq->str  = realloc(seq->str, seq->cap);\n\n        if (!seq->str) {\n            die(\"failed to allocate memory\");\n        }\n    }\n\n    ret = snprintf(seq->str + seq->size, ret, fmt, off, col);\n\n    if (ret < 0) {\n        die(\"failed to construct sequences\");\n    }\n\n    seq->size += ret;\n}\n\nint main(int argc, char **argv) {\n    if (argc < 2) {\n        pal_read();\n\n    } else if (*++argv[1] == 'v') {\n        msg(\"%s 1.0.2\", argv[0]);\n\n    } else {\n        msg(\"usage: %s -[hv] <stdin>\", argv[0]);\n    }\n\n    return EXIT_SUCCESS;\n}\n"
  }
]