diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2022-10-20 16:29:00 -0400 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2022-10-20 16:29:00 -0400 |
commit | bc962303c4757ff94229022b3a9867f437243ed0 (patch) | |
tree | 9abc2f614a00bac5fa39971124747831776a256b | |
download | sayeth-bc962303c4757ff94229022b3a9867f437243ed0.tar.gz |
Initial commit
-rw-r--r-- | .gitignore | 4 | ||||
-rw-r--r-- | CMakeLists.txt | 6 | ||||
-rw-r--r-- | LICENSE | 24 | ||||
-rw-r--r-- | README.md | 119 | ||||
-rw-r--r-- | fierrhea.h | 24 | ||||
-rw-r--r-- | jenkins.h | 32 | ||||
-rw-r--r-- | main.c | 226 | ||||
-rw-r--r-- | romero.h | 49 |
8 files changed, 484 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..64e2423 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea +cmake-* +*.o +sayeth diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..f6c6069 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,6 @@ +cmake_minimum_required(VERSION 3.23) +project(sayeth C) + +set(CMAKE_C_STANDARD 99) + +add_executable(sayeth main.c fierrhea.h jenkins.h romero.h) @@ -0,0 +1,24 @@ +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to <https://unlicense.org> diff --git a/README.md b/README.md new file mode 100644 index 0000000..5fea1f3 --- /dev/null +++ b/README.md @@ -0,0 +1,119 @@ +# Sayeth + +A `cowsay`-like program featuring a few of my favorite characters. + +``` +usage: sayeth [-d driver_name] [-] {input} +-h Show this help message +-d Driver name (fierrhea, jenkins, romero) + +- Read from standard input +input A quoted string +``` + +## Characters like... + +### Fierrhea Fury + +A bit like Fiorina Fury 161 -- only with a face, and on fire. + +``` + ,▌ + ▄▓ + ÆJ▓ , + Æ ▀█▄ ██ + ▐ ▄▓▄▀█▄, █▐█ + █ █▌██ `▓ █ ▐▓ + ▐▌ ▐█ ▀▀██▀ ▀█, + ╒█▄▄▄▄▄,█ █ ▐█ ╒█ ▀µ ,█ + █ ▀ ,▀▀` ▐██ █æ▀'▄ + ▐▄ ═▀▀▄▄╦▓▓▌▀`▀ⁿw ▀ + ▐` æ'` ▓▓▓', ¬r' V ▐ + ▄P Æ ` '' ▄ ,▀ + F Æ 4▀▀▓ ▀▀ ▄ ▄▀ + █ █ ]█N` ▀█ⁿ ,, ▐ '▌ ▄▄m + █ ▐█ ╘▀' ╙▀² /// ▌ ▌ ,▓══ +▄ⁿHÅ█,╙ ╟ ╒A█▓R▄ ```⌐`█w,▄W' +▀M▀▄ ▀█▄▄'Y ▀▓▓▌ ┌ < Æ √` + ╙m'`▀▀ ╙w ` ,∞ ,, + ⁿw, ,+²' + ` +``` + +## Jenkins + +Because who doesn't love sifting through thousands of lines of tracebacks? + +``` + ┌╓╓┌ + ▄▄▓▀▀╙└└└▀▀▀▄┌ + ▄▀▄▓▀ ░░░░░░░░░░▀█┐ + ▓▀▌▓▌░░┌▄▀╛░░░░░░▀▀█─ + █╫▓▓▓▀░░╨░░░╥░░░─░░▐ ▌ + ██▓▓▓▓ ░░░░░▄▄▓░░▀░┌▄▌█ + ╫▌▐▓▄▀╜░░░░░ └ ░░░▀▄░░█ + █░─ ░░░░░░░░░╒┌┌▄╫╜▐▌ + ▀▓█ ░░░░░░ ░╪▄█▄▄▓▀█▒ + █─░░╨▄ ░░▐▀╪╪╧ ╥█▒ + ▒▓██▄┌░ ▀▄▄┌┌┌▄▄▓███▓▒ +▓██▓▓▓▓██▀▄▌▒▀████▀▒▒█▓▓█ +█▓▓▓▓▓▓▓▓▓▓▌╫╫▒█▀▀▓▓▓█▓▓▌ +██▓▓▓▓▓▓▓▓▓█▓▓▀▒▓▐▐▒▄█▓█ +╫█▓▓▓▓▓▓▌▓▓▓█▓▄▄▒▓▐▓▓▓█▒▓▓█─ +██▌▓▓▓▓████▀▀▀▀▀▀████▀▌▀▄ █ + ▀█▓▓▓▓▓█ ░▓▓█ ▌ ╚┌ ▐▌ + █▓▓▓▓▓█ ░█▓█▄▀▄▄▄▄▓─ + ╙▀▀███▌ ░▌▀▌ + █ ░▌░█ + └▌ ░█▀└ + ╙▀▀▀▀▀▀└ +``` + +## Romero + +*Hiss* +You have thirty seconds. + +``` + ▒╫▄╦ ▒╫▓▄▄▓▓▓▄▓▒╦╦▄▓▓▒╩ ╫▓▓▒▒╫ + ╫▓▓▓▓▒ ╦▓▓▓▓▓▓██▓▓▓▓▓██▓▓░▓▓▓▓▓▓▓▀▓ + └ ╦▓▓▓▓▓▓▒▄▓█▓██████████████▄▓████▓▓▄▓▄▒▒╨ + ▒▒╦┌▒▒╦╦▓▓█▓▓▓▓▓▓███████████████▓▓███████▓▓▓▓▓▒╥ + ╦ ╫▀▓▓▓▓█████▓▓█████████████████▓███████▓▓▓▓▓▓▓▓▓▓▀╙ + ╫▓▓▓▓██████████████████████████▓███████▓▓▓███████╬ + ▐▓▓█████████████████████████████████████████████▓▓▀▒▒░ + ╥▓▓██████████████████████▓███████████████████████▓▓▓╨┘ + ▓▓▄╥╓╥▓█▓██████████████████████████████████████▓███████▓▓▓▄╦▄╗▄ + ▓▓▓▓▓█▓▓█▓██████████████████████████████████████████▓▓██████▓▓▓▓▓▓▓▓▓▄▄╦╥ + ╥▀█████████████▓██████▓█▓▓▓▓▓▓▓▓▓▓▓▓▓████████████████████▓▓█████▓╫▒ ╥▓▓█▓▓▀▀╫ + ░░▓███████████████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█████████████▓▓▓▓▓████▓▓▓████▓▓▒▒▒▒ + ╥╫▓██████████████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓██████████▓▓▓██████████▓▓▓▌░ + ▒▓▓█████████████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓███████████████████▓▓▓▓▒╦░ + ╘╫▓████████████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓╫▓▓▓▓▓▓▓▓▓▓███████████▓▓▓▓▓▓█▓▓▓╫▒▒▒▒ + ╦▒▓▓██████████▓▓▓▓▓▓▓▓▓▓╫╫▒╫╫▓╫▓▓▓▓▓▓▓▓▓▓▓▓▓▓╫▓▓▓▓▓▓▓▀▓▓▓██▓██████▓█████▓▓▓▒▒▒ + ╫▓▓▓███████▓████████▓▓▓▓╫╫╫▒╫▒▒▒▒▒▒▒╫╫▓╫▒╫▒╫▓▓▓▓▓▓▓╫╫▓▓▓▓▓▓▓███▓▓▓████▓▓▓▒ + ╨▓█▓▓█████████▓▓▓▓██████▓▓▓▓▒▒▒╫▓▓▓▓▓▓▓▓▓╫▒▒╫▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓████▓▓▒ + ▒▓▓█████████████▓▓█▓████▓▓▓╫╫▓▓▓▓████████▓▓▓╫╫╫▓▓▓▓██████▓█████▓█████▓▓▓▒ + ╝▓▓█████████▓▓▓█████████▓▓▓▓▓▓▓▓▓▓█▓█▓▓▓███▓▄▒▓▓▓███████████▓███████▓▓▓▒ + ▀██████▓█████████▓██▓▓▓▓▓▓███▓▓█▓▀▓▓█████▓▓▓╫▓▓████████▓▓▓▓▓██████▓▀▒ + ╘▓██▓▓▓▓▓█▓████▓▓▓▓▓▓▓▒╫▓▓▓██▓▓▓▓▓███████▓▓▓▓▓▓█████████▓▓██████▓▓▓▓▒ + ╫▓█▓▓▓▓▓▓▓▓▓▓▓██▓▓▓▓▓▓▓▓▓▓▓▓▓████▓██▓█████▓▓█▓▓██████████████▓▓▓▓▓▓▒ + ▓█▓▓▓▓▓▓▓▓▓▓█████▓▓▓██▓▓▓▓▓▀▓▓▓██████▓▓▓▓▓▓▓▓▓█████████████████▓▓▓▓╜ + ▓███▓▓▓▓▓▓▓▓▓▓███████████▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓████████████▓▀▀╨ ╨ + ▓███▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒╫▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓██████████▓▓▓▓▒ + ═████▓▓▓▓▓██████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓╫▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓██████████▓▓▓▓ + ▓███▓▓▓█████▀█▀██████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█▓█▓█▓▓▓▓▓▓▓▓██▓▓▓▓▀╩ + ▓███▓▓▓███▓▓▓▓╫▓▓▒╫▓▀╫███▓▓▓▓▓▓▓▓███▓████▓█████▓▓▓▓▓▓█▓▒▓▓▓░ + ▐███▓▓▓▓█████████▓██▄▓▒▓██▓▓▓▓▓▓▓█████▓████▓█▓▓▓▓╫▓▓▓▓▓ ▀▀ + ███▓▓████████████████████▓▓▓▓▓▓████▓▓▓█████▓▓▓▓▓▓▓▓▀╨╨ + ███▓▓██████▓███████████▓▓▓▓▓▓▓███▓▓▓▓▓████▓▓▓▓▓▓▓▀╩ + ▓████▓██████████████████▓▓▓▓▓▓██▓▓▓▓▓██▓▓▓▓▓▓▓▓▒ + ████▓▓▓▓▓█████▓▓▓▓█▓▓▓▓▓▓▓▓▓██▓▓▓▓▓▓█▓▓██▓▓▓▓▓▓░ + ▓███████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█▓▓▓▓▓▓█████████▓▓▓▓ + █████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓██████████▓▓▓▓▓ + ▓███████████████████████████████▓▓▓▓╩ ╙╨░╨╩▀▓▓▒ + █████████████████████████████▓▓▓▓▓▓▌ ╨╩ + ████████▓▓▓▓███████████████▓▓▓▓▓▓▓▓▌ + ▄▓▓█▓▄▓████████▓▓▓▓▓╫▓▓▓▓▓▓▓▓▓██▓▓▓▓▓▓▓▓▓▓▓╦ +``` + diff --git a/fierrhea.h b/fierrhea.h new file mode 100644 index 0000000..c8b30c5 --- /dev/null +++ b/fierrhea.h @@ -0,0 +1,24 @@ +#ifndef SAYETH_FIERRHEA_H +#define SAYETH_FIERRHEA_H +#define FIERRHEA \ +" ,▌\n" \ +" ▄▓\n" \ +" ÆJ▓ ,\n" \ +" Æ ▀█▄ ██\n" \ +" ▐ ▄▓▄▀█▄, █▐█\n" \ +" █ █▌██ `▓ █ ▐▓\n" \ +" ▐▌ ▐█ ▀▀██▀ ▀█,\n" \ +" ╒█▄▄▄▄▄,█ █ ▐█ ╒█ ▀µ ,█\n" \ +" █ ▀ ,▀▀` ▐██ █æ▀'▄\n" \ +" ▐▄ ═▀▀▄▄╦▓▓▌▀`▀ⁿw ▀\n" \ +" ▐` æ'` ▓▓▓', ¬r' V ▐\n" \ +" ▄P Æ ` '' ▄ ,▀\n" \ +" F Æ 4▀▀▓ ▀▀ ▄ ▄▀\n" \ +" █ █ ]█N` ▀█ⁿ ,, ▐ '▌ ▄▄m\n" \ +" █ ▐█ ╘▀' ╙▀² /// ▌ ▌ ,▓══\n" \ +"▄ⁿHÅ█,╙ ╟ ╒A█▓R▄ ```⌐`█w,▄W'\n" \ +"▀M▀▄ ▀█▄▄'Y ▀▓▓▌ ┌ < Æ √`\n" \ +" ╙m'`▀▀ ╙w ` ,∞ ,,\n" \ +" ⁿw, ,+²'\n" \ +" `" +#endif //SAYETH_FIERRHEA_H
\ No newline at end of file diff --git a/jenkins.h b/jenkins.h new file mode 100644 index 0000000..e5bbd60 --- /dev/null +++ b/jenkins.h @@ -0,0 +1,32 @@ +// +// Created by jhunk on 10/19/22. +// + +#ifndef SAYETH_JENKINS_H +#define SAYETH_JENKINS_H + +#define JENKINS \ +" ┌╓╓┌\n" \ +" ▄▄▓▀▀╙└└└▀▀▀▄┌\n" \ +" ▄▀▄▓▀ ░░░░░░░░░░▀█┐\n" \ +" ▓▀▌▓▌░░┌▄▀╛░░░░░░▀▀█─\n" \ +" █╫▓▓▓▀░░╨░░░╥░░░─░░▐ ▌\n" \ +" ██▓▓▓▓ ░░░░░▄▄▓░░▀░┌▄▌█\n" \ +" ╫▌▐▓▄▀╜░░░░░ └ ░░░▀▄░░█\n" \ +" █░─ ░░░░░░░░░╒┌┌▄╫╜▐▌\n" \ +" ▀▓█ ░░░░░░ ░╪▄█▄▄▓▀█▒\n" \ +" █─░░╨▄ ░░▐▀╪╪╧ ╥█▒\n" \ +" ▒▓██▄┌░ ▀▄▄┌┌┌▄▄▓███▓▒\n" \ +"▓██▓▓▓▓██▀▄▌▒▀████▀▒▒█▓▓█\n" \ +"█▓▓▓▓▓▓▓▓▓▓▌╫╫▒█▀▀▓▓▓█▓▓▌\n" \ +"██▓▓▓▓▓▓▓▓▓█▓▓▀▒▓▐▐▒▄█▓█\n" \ +"╫█▓▓▓▓▓▓▌▓▓▓█▓▄▄▒▓▐▓▓▓█▒▓▓█─ \n" \ +"██▌▓▓▓▓████▀▀▀▀▀▀████▀▌▀▄ █ \n" \ +" ▀█▓▓▓▓▓█ ░▓▓█ ▌ ╚┌ ▐▌\n" \ +" █▓▓▓▓▓█ ░█▓█▄▀▄▄▄▄▓─\n" \ +" ╙▀▀███▌ ░▌▀▌\n" \ +" █ ░▌░█\n" \ +" └▌ ░█▀└\n" \ +" ╙▀▀▀▀▀▀└" + +#endif //SAYETH_JENKINS_H @@ -0,0 +1,226 @@ +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <stdarg.h> +#include <unistd.h> +#include "fierrhea.h" +#include "romero.h" +#include "jenkins.h" + +#define INPUT_BUFSIZ 4096 + +size_t START_Y = 0; +const char *A_TAB = " "; + +void repchar(char ch, size_t limit) { + while (limit > 0) { + putc(ch, stdout); + limit--; + } +} + +size_t get_longest_line(char *s) { + size_t lengths[INPUT_BUFSIZ] = {0}; + size_t len; + size_t line; + + len = 0; + line = 0; + for (size_t i = 0; i < strlen(s); i++) { + if (s[i] == '\n') { + lengths[line] = len; + line++; + len = 0; + continue; + } + len++; + } + + size_t longest; + + longest = lengths[0]; + for (size_t i = 0; i < sizeof(lengths) / sizeof(*lengths); i++) { + if (lengths[i] > longest) { + longest = lengths[i]; + } + } + return longest; +} + +void box_draw_top(size_t y, size_t longest) { + repchar(' ', y); + repchar('/', 1); + repchar('-', longest); + repchar('\\', 1); +} + +void box_draw_bottom(size_t y, size_t longest) { + repchar(' ', y); + repchar('\\', 1); + repchar('-', longest); + repchar('/', 1); +} + +void box_draw_next_line(size_t y) { + repchar(' ', y); + repchar('|', 1); +} + +void box_draw_end_line(size_t longest, size_t len) { + repchar(' ', longest - len); + repchar('|', 1); +} + +int boxprintf(const char *fmt, ...) { + int count; + va_list list; + va_start(list, fmt); + size_t len = 0; + char data[INPUT_BUFSIZ] = {0}; + char output[INPUT_BUFSIZ] = {0}; + vsnprintf(data, sizeof(data) - 1, fmt, list); + + // convert tabs to spaces + for (size_t i = 0, n = 0; i < strlen(data) && n < sizeof(output); i++, n++) { + if (data[i] == '\t') { + strcat(&output[n], A_TAB); + n = n + strlen(A_TAB) - 1; + continue; + } + output[n] = data[i]; + } + + size_t longest = get_longest_line(output); + + box_draw_top(START_Y, longest); + puts(""); + + for (size_t i = 0; i < strlen(output); i++) { + if (i == strlen(output) - 1) { + box_draw_end_line(longest, len); + continue; + } + + if (len == 0) { + box_draw_next_line(START_Y); + } + + if (output[i] == '\n') { + box_draw_end_line(longest, len); + putc('\n', stdout); + len = 0; + continue; + } + + putc(output[i], stdout); + + len++; + } + puts(""); + box_draw_bottom(START_Y, longest); + + va_end(list); + return count; +} + +void driver_fierrhea(char *input) { + START_Y = 22; + printf("%s", FIERRHEA); + printf("\\ /\n"); + printf(" \\/\n"); + boxprintf(input); + puts(""); +} + +void driver_jenkins(char *input) { + START_Y = 18; + boxprintf(input); + puts(""); + printf(" | /\n"); + printf(" | /\n"); + printf(" |/\n"); + puts(JENKINS); +} + +void driver_romero(char *input) { + START_Y = 11; + boxprintf(input); + puts(""); + printf(" \\ |\n"); + printf(" \\ |\n"); + printf(" \\|\n"); + puts(ROMERO); +} + +void usage(char *prog) { + printf("usage: %s [-d driver_name] [-] {input}\n" + "-h Show this help message\n" + "-d Driver name (fierrhea, jenkins, romero)\n" + "\n" + "- Read from standard input\n" + "input A quoted string\n", prog); +} + +int main(int argc, char *argv[]) { + char driver_name[255] = {0}; + char input[INPUT_BUFSIZ] = {0}; + char *iptr = input; + + // set default driver + strcpy(driver_name, "fierrhea"); + + int option; + while ((option = getopt (argc, argv, "hd:")) != -1) { + switch (option) { + case 'h': + usage(argv[0]); + exit(0); + case 'd': + strcpy(driver_name, optarg); + break; + case ':': + fprintf(stderr, "option requires value\n"); + usage(argv[0]); + exit(1); + break; + case '?': + fprintf(stderr, "unknown option: %c\n", optopt); + usage(argv[0]); + exit(1); + break; + default: + usage(argv[0]); + exit(1); + } + } + + if (optind < argc) { + strcpy(input, argv[optind]); + } else { + fprintf(stderr, "Missing input string or standard input (`-`)\n"); + usage(argv[0]); + exit(1); + } + + if (input[0] == '-') { + fread(input, 1, sizeof(input) - 1, stdin); + } + + if (input[strlen(input) - 1] != '\n') { + input[strlen(input)] = '\n'; + } + + if (!strcmp(driver_name, "fierrhea")) { + driver_fierrhea(input); + } else if (!strcmp(driver_name, "jenkins")) { + driver_jenkins(input); + } else if (!strcmp(driver_name, "romero")) { + driver_romero(input); + } else { + fprintf(stderr, "invalid driver: '%s'\n", driver_name); + exit(1); + } + + puts(""); + return 0; +} diff --git a/romero.h b/romero.h new file mode 100644 index 0000000..fa1df48 --- /dev/null +++ b/romero.h @@ -0,0 +1,49 @@ +// +// Created by jhunk on 10/19/22. +// + +#ifndef SAYETH_ROMERO_H +#define SAYETH_ROMERO_H + +#define ROMERO \ +" ▒╫▄╦ ▒╫▓▄▄▓▓▓▄▓▒╦╦▄▓▓▒╩ ╫▓▓▒▒╫\n" \ +" ╫▓▓▓▓▒ ╦▓▓▓▓▓▓██▓▓▓▓▓██▓▓░▓▓▓▓▓▓▓▀▓\n" \ +" └ ╦▓▓▓▓▓▓▒▄▓█▓██████████████▄▓████▓▓▄▓▄▒▒╨\n" \ +" ▒▒╦┌▒▒╦╦▓▓█▓▓▓▓▓▓███████████████▓▓███████▓▓▓▓▓▒╥\n" \ +" ╦ ╫▀▓▓▓▓█████▓▓█████████████████▓███████▓▓▓▓▓▓▓▓▓▓▀╙\n" \ +" ╫▓▓▓▓██████████████████████████▓███████▓▓▓███████╬\n" \ +" ▐▓▓█████████████████████████████████████████████▓▓▀▒▒░\n" \ +" ╥▓▓██████████████████████▓███████████████████████▓▓▓╨┘\n" \ +" ▓▓▄╥╓╥▓█▓██████████████████████████████████████▓███████▓▓▓▄╦▄╗▄\n" \ +" ▓▓▓▓▓█▓▓█▓██████████████████████████████████████████▓▓██████▓▓▓▓▓▓▓▓▓▄▄╦╥\n" \ +" ╥▀█████████████▓██████▓█▓▓▓▓▓▓▓▓▓▓▓▓▓████████████████████▓▓█████▓╫▒ ╥▓▓█▓▓▀▀╫\n" \ +" ░░▓███████████████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█████████████▓▓▓▓▓████▓▓▓████▓▓▒▒▒▒\n" \ +" ╥╫▓██████████████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓██████████▓▓▓██████████▓▓▓▌░\n" \ +" ▒▓▓█████████████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓███████████████████▓▓▓▓▒╦░\n" \ +" ╘╫▓████████████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓╫▓▓▓▓▓▓▓▓▓▓███████████▓▓▓▓▓▓█▓▓▓╫▒▒▒▒\n" \ +" ╦▒▓▓██████████▓▓▓▓▓▓▓▓▓▓╫╫▒╫╫▓╫▓▓▓▓▓▓▓▓▓▓▓▓▓▓╫▓▓▓▓▓▓▓▀▓▓▓██▓██████▓█████▓▓▓▒▒▒\n" \ +" ╫▓▓▓███████▓████████▓▓▓▓╫╫╫▒╫▒▒▒▒▒▒▒╫╫▓╫▒╫▒╫▓▓▓▓▓▓▓╫╫▓▓▓▓▓▓▓███▓▓▓████▓▓▓▒ \n" \ +" ╨▓█▓▓█████████▓▓▓▓██████▓▓▓▓▒▒▒╫▓▓▓▓▓▓▓▓▓╫▒▒╫▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓████▓▓▒\n" \ +" ▒▓▓█████████████▓▓█▓████▓▓▓╫╫▓▓▓▓████████▓▓▓╫╫╫▓▓▓▓██████▓█████▓█████▓▓▓▒\n" \ +" ╝▓▓█████████▓▓▓█████████▓▓▓▓▓▓▓▓▓▓█▓█▓▓▓███▓▄▒▓▓▓███████████▓███████▓▓▓▒\n" \ +" ▀██████▓█████████▓██▓▓▓▓▓▓███▓▓█▓▀▓▓█████▓▓▓╫▓▓████████▓▓▓▓▓██████▓▀▒\n" \ +" ╘▓██▓▓▓▓▓█▓████▓▓▓▓▓▓▓▒╫▓▓▓██▓▓▓▓▓███████▓▓▓▓▓▓█████████▓▓██████▓▓▓▓▒\n" \ +" ╫▓█▓▓▓▓▓▓▓▓▓▓▓██▓▓▓▓▓▓▓▓▓▓▓▓▓████▓██▓█████▓▓█▓▓██████████████▓▓▓▓▓▓▒\n" \ +" ▓█▓▓▓▓▓▓▓▓▓▓█████▓▓▓██▓▓▓▓▓▀▓▓▓██████▓▓▓▓▓▓▓▓▓█████████████████▓▓▓▓╜\n" \ +" ▓███▓▓▓▓▓▓▓▓▓▓███████████▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓████████████▓▀▀╨ ╨\n" \ +" ▓███▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒╫▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓██████████▓▓▓▓▒\n" \ +" ═████▓▓▓▓▓██████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓╫▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓██████████▓▓▓▓\n" \ +" ▓███▓▓▓█████▀█▀██████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█▓█▓█▓▓▓▓▓▓▓▓██▓▓▓▓▀╩\n" \ +" ▓███▓▓▓███▓▓▓▓╫▓▓▒╫▓▀╫███▓▓▓▓▓▓▓▓███▓████▓█████▓▓▓▓▓▓█▓▒▓▓▓░\n" \ +" ▐███▓▓▓▓█████████▓██▄▓▒▓██▓▓▓▓▓▓▓█████▓████▓█▓▓▓▓╫▓▓▓▓▓ ▀▀\n" \ +" ███▓▓████████████████████▓▓▓▓▓▓████▓▓▓█████▓▓▓▓▓▓▓▓▀╨╨\n" \ +" ███▓▓██████▓███████████▓▓▓▓▓▓▓███▓▓▓▓▓████▓▓▓▓▓▓▓▀╩\n" \ +" ▓████▓██████████████████▓▓▓▓▓▓██▓▓▓▓▓██▓▓▓▓▓▓▓▓▒\n" \ +" ████▓▓▓▓▓█████▓▓▓▓█▓▓▓▓▓▓▓▓▓██▓▓▓▓▓▓█▓▓██▓▓▓▓▓▓░\n" \ +" ▓███████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█▓▓▓▓▓▓█████████▓▓▓▓\n" \ +" █████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓██████████▓▓▓▓▓\n" \ +" ▓███████████████████████████████▓▓▓▓╩ ╙╨░╨╩▀▓▓▒\n" \ +" █████████████████████████████▓▓▓▓▓▓▌ ╨╩\n" \ +" ████████▓▓▓▓███████████████▓▓▓▓▓▓▓▓▌\n" \ +" ▄▓▓█▓▄▓████████▓▓▓▓▓╫▓▓▓▓▓▓▓▓▓██▓▓▓▓▓▓▓▓▓▓▓╦" +#endif //SAYETH_ROMERO_H |