First commit
This commit is contained in:
commit
52f703ac70
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
iwd
|
197
configuration.nix
Normal file
197
configuration.nix
Normal file
|
@ -0,0 +1,197 @@
|
|||
# Edit this configuration file to define what should be installed on
|
||||
# your system. Help is available in the configuration.nix(5) man page
|
||||
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
# Include the results of the hardware scan.
|
||||
./hardware-configuration.nix
|
||||
#user home configuration
|
||||
./users
|
||||
];
|
||||
|
||||
# Use the systemd-boot EFI boot loader.
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
|
||||
networking.hostName = "patricknix"; # Define your hostname.
|
||||
networking.hostId = "68438432";
|
||||
# Pick only one of the below networking options.
|
||||
networking.wireless.iwd.enable = true;
|
||||
# I would advise against pushing your secrets
|
||||
#system.activationScripts.getIWD.text = ''
|
||||
# cp -r /etc/nixos/iwd /var/lib/
|
||||
#'';
|
||||
|
||||
networking.useNetworkd = true;
|
||||
networking.dhcpcd.enable = false;
|
||||
systemd.network.wait-online.anyInterface = true;
|
||||
services.resolved = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
# Set your time zone.
|
||||
time.timeZone = "Europe/Berlin";
|
||||
|
||||
# Configure network proxy if necessary
|
||||
# networking.proxy.default = "http://user:password@proxy:port/";
|
||||
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
||||
|
||||
# Select internationalisation properties.
|
||||
i18n.defaultLocale = "C.UTF-8";
|
||||
console = {
|
||||
font = "ter-v28n";
|
||||
packages = with pkgs; [terminus_font];
|
||||
useXkbConfig = true; # use xkbOptions in tty.
|
||||
};
|
||||
|
||||
# Configure keymap in X11
|
||||
services.xserver = {
|
||||
enable = true;
|
||||
displayManager.startx.enable = true;
|
||||
layout = "de";
|
||||
xkbVariant = "bone";
|
||||
videoDrivers = ["modesetting" "nvidia"];
|
||||
};
|
||||
|
||||
#TODO sollte nur bestimmte packages sein nicht alle
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
# services.xserver.xkbOptions = {
|
||||
# "eurosign:e";
|
||||
# "caps:escape" # map caps to escape.
|
||||
# };
|
||||
|
||||
# Enable CUPS to print documents.
|
||||
# services.printing.enable = true;
|
||||
|
||||
# Enable sound.
|
||||
# sound.enable = true;
|
||||
# hardware.pulseaudio.enable = true;
|
||||
|
||||
# Enable touchpad support (enabled default in most desktopManager).
|
||||
services.xserver.libinput.enable = true;
|
||||
|
||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||||
users.users.patrick = {
|
||||
isNormalUser = true;
|
||||
uid = 1000;
|
||||
createHome = true;
|
||||
extraGroups = ["wheel" "audio" "video" "input"]; # Enable ‘sudo’ for the user.
|
||||
group = "patrick";
|
||||
shell = pkgs.zsh;
|
||||
};
|
||||
users.groups.patrick.gid = 1000;
|
||||
|
||||
users.users.root = {
|
||||
initialPassword = "ctie";
|
||||
openssh.authorizedKeys.keys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDZixkix0KfKuq7Q19whS5FQQg51/AJGB5BiNF/7h/LM"
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJSXqbGLOeTVFRgeafkCJ1IRMyxl3/VcpLRdAJ7Br3CW"
|
||||
];
|
||||
shell = pkgs.zsh;
|
||||
};
|
||||
|
||||
security.sudo.enable = false;
|
||||
|
||||
# List packages installed in system profile. To search, run:
|
||||
# $ nix search wget
|
||||
environment.systemPackages = with pkgs; [
|
||||
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
||||
xterm
|
||||
wget
|
||||
htop
|
||||
gcc
|
||||
];
|
||||
|
||||
# Some programs need SUID wrappers, can be configured further or are
|
||||
# started in user sessions.
|
||||
# programs.mtr.enable = true;
|
||||
# programs.gnupg.agent = {
|
||||
# enable = true;
|
||||
# enableSSHSupport = true;
|
||||
# };
|
||||
|
||||
# List services that you want to enable:
|
||||
|
||||
# Enable the OpenSSH daemon.
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
settings = {
|
||||
PasswordAuthentication = false;
|
||||
KbdInteractiveAuthentication = false;
|
||||
PermitRootLogin = "yes";
|
||||
};
|
||||
hostKeys = [
|
||||
{
|
||||
path = "/etc/ssh/ssh_host_ed25519_key";
|
||||
type = "ed25519";
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
services.thermald.enable = true;
|
||||
services.pcscd.enable = true;
|
||||
services.fstrim.enable = true;
|
||||
hardware.cpu.intel.updateMicrocode = true;
|
||||
# Open ports in the firewall.
|
||||
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||
# networking.firewall.allowedUDPPorts = [ ... ];
|
||||
# Or disable the firewall altogether.
|
||||
networking.firewall.enable = false;
|
||||
|
||||
services.udev.packages = with pkgs; [yubikey-personalization libu2f-host];
|
||||
programs.gnupg.agent = {
|
||||
enable = true;
|
||||
enableSSHSupport = true;
|
||||
};
|
||||
|
||||
environment.shellInit = ''
|
||||
gpg-connect-agent /bye
|
||||
export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
|
||||
'';
|
||||
|
||||
# Copy the NixOS configuration file and link it from the resulting system
|
||||
# (/run/current-system/configuration.nix). This is useful in case you
|
||||
# accidentally delete configuration.nix.
|
||||
system.copySystemConfiguration = true;
|
||||
|
||||
# This value determines the NixOS release from which the default
|
||||
# settings for stateful data, like file locations and database versions
|
||||
# on your system were taken. It‘s perfectly fine and recommended to leave
|
||||
# this value at the release version of the first install of this system.
|
||||
# Before changing this value read the documentation for this option
|
||||
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||||
system.stateVersion = "23.05"; # Did you read the comment?
|
||||
|
||||
nix = {
|
||||
settings = {
|
||||
auto-optimise-store = true;
|
||||
allowed-users = ["@wheel"];
|
||||
trusted-users = ["root" "@wheel"];
|
||||
system-features = ["recursive-nix"];
|
||||
substituters = [
|
||||
"https://nix-config.cachix.org"
|
||||
"https://nix-community.cachix.org"
|
||||
];
|
||||
trusted-public-keys = [
|
||||
"nix-config.cachix.org-1:Vd6raEuldeIZpttVQfrUbLvXJHzzzkS0pezXCVVjDG4="
|
||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||
];
|
||||
cores = 0;
|
||||
max-jobs = "auto";
|
||||
};
|
||||
daemonCPUSchedPolicy = "batch";
|
||||
daemonIOSchedPriority = 5;
|
||||
distributedBuilds = true;
|
||||
extraOptions = ''
|
||||
builders-use-substitutes = true
|
||||
experimental-features = nix-command flakes recursive-nix
|
||||
flake-registry = /etc/nix/registry.json
|
||||
'';
|
||||
optimise.automatic = true;
|
||||
gc.automatic = true;
|
||||
};
|
||||
}
|
90
data/herbstluftwm/keybinds.nix
Normal file
90
data/herbstluftwm/keybinds.nix
Normal file
|
@ -0,0 +1,90 @@
|
|||
MOD: TAGS:
|
||||
{
|
||||
# ${MOD} will be set to the main modifier key
|
||||
|
||||
# General
|
||||
"${MOD}-q" = " close";
|
||||
#"${MOD}-Shift-Escape" = " spawn ${HOME}/.config/rofi/powermenu/powermenu.sh";
|
||||
|
||||
# Moving
|
||||
"${MOD}-Shift-Left" = " shift left";
|
||||
"${MOD}-Shift-Down" = " shift down";
|
||||
"${MOD}-Shift-Up" = " shift up";
|
||||
"${MOD}-Shift-Right" = " shift right";
|
||||
|
||||
"${MOD}-Shift-n" = " shift left";
|
||||
"${MOD}-Shift-r" = " shift down";
|
||||
"${MOD}-Shift-l" = " shift up";
|
||||
"${MOD}-Shift-s" = " shift right";
|
||||
|
||||
# Resizing
|
||||
"${MOD}-Control-Left" = " resize left +$RESIZE_STEP";
|
||||
"${MOD}-Control-Down" = " resize down +$RESIZE_STEP";
|
||||
"${MOD}-Control-Up" = " resize up +$RESIZE_STEP";
|
||||
"${MOD}-Control-Right" = " resize right +$RESIZE_STEP";
|
||||
|
||||
"${MOD}-Control-n" = " resize left +$RESIZE_STEP";
|
||||
"${MOD}-Control-r" = " resize down +$RESIZE_STEP";
|
||||
"${MOD}-Control-l" = " resize up +$RESIZE_STEP";
|
||||
"${MOD}-Control-s" = " resize right +$RESIZE_STEP";
|
||||
|
||||
"${MOD}-Shift-Control-Left" = " resize right -$RESIZE_STEP";
|
||||
"${MOD}-Shift-Control-Down" = " resize up -$RESIZE_STEP";
|
||||
"${MOD}-Shift-Control-Up" = " resize down -$RESIZE_STEP";
|
||||
"${MOD}-Shift-Control-Right" = " resize left -$RESIZE_STEP";
|
||||
|
||||
"${MOD}-Shift-Control-s" = " resize right -$RESIZE_STEP";
|
||||
"${MOD}-Shift-Control-l" = " resize up -$RESIZE_STEP";
|
||||
"${MOD}-Shift-Control-r" = " resize down -$RESIZE_STEP";
|
||||
"${MOD}-Shift-Control-n" = " resize left -$RESIZE_STEP";
|
||||
|
||||
# Focusing
|
||||
"${MOD}-Left" = " focus left";
|
||||
"${MOD}-Down" = " focus down";
|
||||
"${MOD}-Up" = " focus up";
|
||||
"${MOD}-Right" = " focus right";
|
||||
# Focusing
|
||||
"${MOD}-n" = " focus left";
|
||||
"${MOD}-r" = " focus down";
|
||||
"${MOD}-l" = " focus up";
|
||||
"${MOD}-s" = " focus right";
|
||||
|
||||
"${MOD}-BackSpace" = " cycle_monitor";
|
||||
"${MOD}-c" = " cycle";
|
||||
"${MOD}-i" = " jumpto urgent";
|
||||
"${MOD}-Tab" = " cycle_all +1";
|
||||
"${MOD}-Shift-Tab" = " cycle_all -1";
|
||||
|
||||
# Tag cycle
|
||||
"${MOD}-period" = " use_index +1 ";
|
||||
"${MOD}-comma" = " use_index -1 ";
|
||||
|
||||
# Splitting frames
|
||||
"${MOD}-x" = " split bottom";
|
||||
"${MOD}-v" = " split right";
|
||||
"${MOD}-Control-space" = " split explode";
|
||||
|
||||
# Layouting
|
||||
"${MOD}-Return" = " fullscreen toggle";
|
||||
"${MOD}-shift-x" = " remove";
|
||||
"${MOD}-f" = " floating toggle";
|
||||
"${MOD}-p" = " pseudotile toggle";
|
||||
"${MOD}-space" = " cycle_layout +1";
|
||||
"${MOD}-Shift-space" = " cycle_layout -1";
|
||||
|
||||
"${MOD}-t " = "spawn kitty";
|
||||
"${MOD}-b " = "spawn firefox";
|
||||
"${MOD}-m " = "spawn thunderbird";
|
||||
"${MOD}-Shift-l " = "spawn systemctl suspend";
|
||||
"${MOD}-Shift-f " = "spawn /home/patrick/scripts/fix_shit.sh";
|
||||
}
|
||||
// builtins.listToAttrs (map (x: {
|
||||
name = "${MOD}-${x}";
|
||||
value = "use_index ${x}";
|
||||
})
|
||||
TAGS)
|
||||
// builtins.listToAttrs (map (x: {
|
||||
name = "${MOD}-Shift-${x}";
|
||||
value = "move_index ${x}";
|
||||
})
|
||||
TAGS)
|
23
data/herbstluftwm/xinitrc
Executable file
23
data/herbstluftwm/xinitrc
Executable file
|
@ -0,0 +1,23 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# ~/.xinitrc
|
||||
#
|
||||
# Executed by startx (run your window manager from here)
|
||||
|
||||
xrdb load "${HOME}/.Xresources"
|
||||
xset r rate 235 60
|
||||
xset m 1 0
|
||||
# numlockx on
|
||||
syndaemon -d -i 1.2 -t -K
|
||||
xsetroot -solid '#000000'
|
||||
#setxkbmap de bone
|
||||
#autorandr -c
|
||||
#xgamma -gamma 1
|
||||
#echo disabled > /sys/bus/usb/devices/1-1/power/wakeup
|
||||
#
|
||||
#touchegg &
|
||||
#
|
||||
#gpg-connect-agent "\bye" &
|
||||
#dunst &
|
||||
exec dbus-launch --sh-syntax --exit-with-session -- herbstluftwm --locked
|
||||
# exec icewm-session
|
27
data/newpubkey.gpg
Normal file
27
data/newpubkey.gpg
Normal file
|
@ -0,0 +1,27 @@
|
|||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
mDMEY8fw7xYJKwYBBAHaRw8BAQdA9SnRTn6kCb127eI39inOEc8hcYszo8wRXyyR
|
||||
ravT5My0KVBhdHJpY2sgR3Jvc3NtYW5uIDxwYXRyaWNrZGdyb0BnbWFpbC5jb20+
|
||||
iJEEExYKADkCGwEECwkIBwQVCgkIBRYCAwEAAh4FAheAFiEE3g3oaTKsDpGOpSP/
|
||||
vYrbqlwC1QwFAmPH9HUCGQEACgkQvYrbqlwC1QwN/QD+LnPY7A7y7fgaI80S51Bw
|
||||
GcwNTlW5LaPmi3ou3tEehQAA/i8go9rYG8WxLpQlQErn4Q6BbB4494kUhp9piI6k
|
||||
K0gLtCxQYXRyaWNrIEdyb3NzbWFubiA8cGF0cmljay5ncm9zc21hbm5AdHVtLmRl
|
||||
PoiOBBMWCgA2FiEE3g3oaTKsDpGOpSP/vYrbqlwC1QwFAmPH9BICGwEECwkIBwQV
|
||||
CgkIBRYCAwEAAh4FAheAAAoJEL2K26pcAtUM534BAN32iy4ssjGm5DuwSCIc/UDz
|
||||
3gks29aKWi/eqlhqspbeAP4yhJcIyl9HY4eAsOargkrPxLcA2z7A6k23tTn9byAB
|
||||
DLgzBGPH80MWCSsGAQQB2kcPAQEHQJNT1azcNatyc0LmeTpMo/Oi2LddMaNoWGv/
|
||||
oqvutWgNiO8EGBYKACAWIQTeDehpMqwOkY6lI/+9ituqXALVDAUCY8fzQwIbAgCB
|
||||
CRC9ituqXALVDHYgBBkWCgAdFiEE0A2EcgdFZgLCQgnEU+drLzc8zRMFAmPH80MA
|
||||
CgkQU+drLzc8zRPKfAEAkp5bVwq7Kv6SaXHj4oL8YaFTbtLD5SiWgw6vLnSbB40B
|
||||
AKHG2DWbIFdQsNjSizk+IP1cQC4auKlIK6aKPLf82ZACctABAIRQoBKYQG7+GIr7
|
||||
W2O4n/deZMOgqwoygPyGGgS6fUAbAP4rxNaVgTdyLfdVo3WXE67+4GbwPuEJ6N/r
|
||||
vxVXAX4VCrg4BGPH86USCisGAQQBl1UBBQEBB0CFKCVr4/vXBMnSdgiaQceXwjuu
|
||||
/nzgue6a9QjIcI2ZcwMBCAeIeAQYFgoAIBYhBN4N6GkyrA6RjqUj/72K26pcAtUM
|
||||
BQJjx/OlAhsMAAoJEL2K26pcAtUMmYMBAKSUJe4fj3pC8YbQXW2hE/2bIn7+XjOn
|
||||
2ufbPHQP9ePwAQDBsyY8n5KfXMm8w4Icr/yQoTVjC+M/YiroUQHLGaV+C7gzBGPH
|
||||
874WCSsGAQQB2kcPAQEHQHxD4GOrwrBTG4/qQhm5hoSB2CP7W9g1LPWP11oLGOjQ
|
||||
iHgEGBYKACAWIQTeDehpMqwOkY6lI/+9ituqXALVDAUCY8fzvgIbIAAKCRC9ituq
|
||||
XALVDN/qAPwPSJLiQ9FclH991/SooSiyA8Pt4OC8Qgg4aNjAzeC1VgD+OjRvb8i6
|
||||
0C+noricZRLXpo/XOSU8oJeFanpvDjwj8gg=
|
||||
=kdCQ
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
15
data/nvim/init.lua
Normal file
15
data/nvim/init.lua
Normal file
|
@ -0,0 +1,15 @@
|
|||
-- required programs
|
||||
-- ripgrep
|
||||
-- git
|
||||
|
||||
|
||||
-- general settings
|
||||
|
||||
require "core"
|
||||
|
||||
|
||||
--Plugins
|
||||
require "plugins"
|
||||
|
||||
|
||||
-- Lua config lets go
|
81
data/nvim/lua/core/config.lua
Normal file
81
data/nvim/lua/core/config.lua
Normal file
|
@ -0,0 +1,81 @@
|
|||
local opt = vim.opt
|
||||
|
||||
-- Set maximum undo levels
|
||||
opt.undolevels = 1000000
|
||||
-- Persistent Undo
|
||||
opt.undofile = true
|
||||
opt.undodir = vim.fn.stdpath("cache") .. "/undo"
|
||||
|
||||
-- swap file save interval
|
||||
opt.updatetime = 300
|
||||
|
||||
-- Ignore *.o and *~ files in wildmenu
|
||||
opt.wildignore = "*.o,*~"
|
||||
-- Only complete the longest common prefix and list all results.
|
||||
-- You can use the cursor keys to select an item in this list
|
||||
opt.wildmode = {"list", "full"}
|
||||
|
||||
-- set case handling
|
||||
opt.ignorecase = true
|
||||
opt.smartcase = true
|
||||
|
||||
-- ╓──────────────────╖
|
||||
-- ║ Editor visuals ║
|
||||
-- ╙──────────────────╜
|
||||
|
||||
-- Enable true color in terminals
|
||||
opt.termguicolors = true
|
||||
-- set font
|
||||
opt.guifont = "FiraCode Nerd Font Mono:h10.5"
|
||||
-- full mouse support
|
||||
opt.mouse = "a"
|
||||
|
||||
-- Do not wrap text longer than the window's width
|
||||
opt.wrap = false
|
||||
|
||||
-- Show line numbers
|
||||
opt.number = true
|
||||
opt.relativenumber = false
|
||||
|
||||
-- Keep 2 lines around the cursor.
|
||||
opt.scrolloff = 2
|
||||
opt.sidescrolloff = 2
|
||||
|
||||
-- Set indentation of tabs to be equal to 4 spaces.
|
||||
opt.tabstop = 4
|
||||
opt.shiftwidth = 4
|
||||
opt.softtabstop = 4
|
||||
--round indentation to shifwidth
|
||||
opt.shiftround = true
|
||||
|
||||
|
||||
-- ╓────────────────────╖
|
||||
-- ║ Editing behavior ║
|
||||
-- ╙────────────────────╜
|
||||
|
||||
-- r = insert comment leader when hitting <Enter> in insert mode
|
||||
-- q = allow explicit formatting with gq
|
||||
-- j = remove comment leaders when joining lines if it makes sense
|
||||
opt.formatoptions = "rqj"
|
||||
|
||||
-- Allow the curser to be positioned on cells that have no actual character;
|
||||
-- Like moving beyond EOL or on any visual 'space' of a tab character
|
||||
opt.virtualedit = "all"
|
||||
|
||||
-- Do not include line ends in past the-line selections
|
||||
opt.selection = "old"
|
||||
|
||||
-- Use smart auto indenting for all file types
|
||||
opt.smartindent = true
|
||||
|
||||
-- Only wait 20 milliseconds for characters to arrive (see :help timeout)
|
||||
opt.timeoutlen = 20
|
||||
opt.ttimeoutlen = 20
|
||||
|
||||
-- Disable timeout, set ttimeout (only timeout on keycodes)
|
||||
opt.timeout = false
|
||||
opt.ttimeout = true
|
||||
|
||||
-- replace grep with ripgrep
|
||||
opt.grepprg = "rg --vimgrep --smartcase --follow"
|
||||
|
18
data/nvim/lua/core/init.lua
Normal file
18
data/nvim/lua/core/init.lua
Normal file
|
@ -0,0 +1,18 @@
|
|||
|
||||
--required programs
|
||||
--ripgrep
|
||||
--fd
|
||||
--?pynvim
|
||||
--git
|
||||
--nvim
|
||||
|
||||
|
||||
|
||||
|
||||
--basic global settings
|
||||
require "core.config"
|
||||
require "core.keybinds"
|
||||
require "core.lsp"
|
||||
|
||||
--set venv
|
||||
vim.g.python3_host_prog=vim.fn.stdpath("data").."/venv/bin/python3"
|
42
data/nvim/lua/core/keybinds.lua
Normal file
42
data/nvim/lua/core/keybinds.lua
Normal file
|
@ -0,0 +1,42 @@
|
|||
-- global keybinds
|
||||
vim.g.mapleader = " "
|
||||
|
||||
local map = vim.api.nvim_set_keymap
|
||||
local opts = {noremap = true, silent = true}
|
||||
|
||||
|
||||
-- change window with alt
|
||||
map("", "<M-down>" , "<down>" , { noremap = true, silent = true })
|
||||
map("", "<M-up>" , "<up>" , { noremap = true, silent = true })
|
||||
map("", "<M-left>" , "<left>" , { noremap = true, silent = true })
|
||||
map("", "<M-right>", "<right>", { noremap = true, silent = true })
|
||||
|
||||
-- scroll with cursor loch
|
||||
map("" , "<S-down>" , "" , { noremap = true, silent = true })
|
||||
map("" , "<S-up>" , "" , { noremap = true, silent = true })
|
||||
map("i", "<S-down>" , "a", { noremap = true, silent = true })
|
||||
map("i", "<S-up>" , "a", { noremap = true, silent = true })
|
||||
|
||||
|
||||
-- Plugin: LSP
|
||||
map("n", "gD", "<cmd>lua vim.lsp.buf.declaration()<CR>", opts)
|
||||
map("n", "gd", "<cmd>lua vim.lsp.buf.definition()<CR>", opts)
|
||||
map("n", "K", "<cmd>lua vim.lsp.buf.hover()<CR>", opts)
|
||||
map("n", "gI", "<cmd>lua vim.lsp.buf.implementation()<CR>", opts)
|
||||
map("n", "gk", "<cmd>lua vim.lsp.buf.signature_help()<CR>", opts)
|
||||
map("n", "<leader>wa", "<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>", opts)
|
||||
map("n", "<leader>wr", "<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>", opts)
|
||||
map("n", "<leader>wl", "<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>", opts)
|
||||
map("n", "gt", "<cmd>lua vim.lsp.buf.type_definition()<CR>", opts)
|
||||
map("n", "<leader>r", "<cmd>lua vim.lsp.buf.rename()<CR>", opts)
|
||||
map("n", "<leader>A", "<cmd>lua vim.lsp.buf.code_action()<CR>", opts)
|
||||
map("n", "gr", "<cmd>lua vim.lsp.buf.references()<CR>", opts)
|
||||
map("n", "gl", "<cmd>lua vim.diagnostic.open_float()<CR>", opts)
|
||||
map("n", "gp", "<cmd>lua vim.diagnostic.goto_prev()<CR>", opts)
|
||||
map("n", "gn", "<cmd>lua vim.diagnostic.goto_next()<CR>", opts)
|
||||
map("n", "<leader>q", "<cmd>lua vim.diagnostic.setloclist()<CR>", opts)
|
||||
map("n", "<leader>f", "<cmd>lua vim.lsp.buf.formatting()<CR>", opts)
|
||||
|
||||
-- Plugin: EasyAlign
|
||||
map("n", "<leader>a", "<Plug>(EasyAlign)", {silent = true})
|
||||
map("v", "<leader>a", "<Plug>(EasyAlign)", {silent = true})
|
8
data/nvim/lua/core/lsp.lua
Normal file
8
data/nvim/lua/core/lsp.lua
Normal file
|
@ -0,0 +1,8 @@
|
|||
local lsp_symbol = function(name, icon)
|
||||
vim.fn.sign_define("DiagnosticSign" .. name, { text = icon, texthl = "Diagnostic" .. name })
|
||||
end
|
||||
|
||||
lsp_symbol("Error", "E")
|
||||
lsp_symbol("Warn", "W")
|
||||
lsp_symbol("Info" ,"I")
|
||||
lsp_symbol("Hint", "H")
|
23
data/nvim/lua/plugins/config/alpha.lua
Normal file
23
data/nvim/lua/plugins/config/alpha.lua
Normal file
|
@ -0,0 +1,23 @@
|
|||
local A = require('plugins.utils.alpha')
|
||||
local images = require("plugins.data.alpha")
|
||||
math.randomseed(os.time())
|
||||
local header = images[math.random(#images)]
|
||||
|
||||
local separator = '╼═╾────────────────────────────────────────────╼═╾'
|
||||
|
||||
require('alpha').setup {
|
||||
layout = {
|
||||
A.pad(2), A.text(header, 'Type'),
|
||||
A.pad(2), A.text(separator, 'Number'),
|
||||
A.pad(1), A.buttons {
|
||||
A.button("e", " New file", ":enew<CR>"),
|
||||
},
|
||||
A.pad(2), A.buttons {
|
||||
A.button("u", " Update plugins", ":PackerSync<CR>"),
|
||||
A.button("c", " Check health", ":checkhealth<CR>"),
|
||||
A.button("q", " Quit", ":qa<CR>"),
|
||||
},
|
||||
A.text(separator, 'Number'),
|
||||
},
|
||||
opts = { margin = 5 },
|
||||
}
|
15
data/nvim/lua/plugins/config/better-whitespace.lua
Normal file
15
data/nvim/lua/plugins/config/better-whitespace.lua
Normal file
|
@ -0,0 +1,15 @@
|
|||
local map = vim.api.nvim_set_keymap
|
||||
local opts = {noremap = true, silent = true}
|
||||
|
||||
function _G.whitespace_visibility()
|
||||
if vim.api.nvim_eval("&buftype") == "nofile" then
|
||||
vim.cmd('execute "DisableWhitespace"')
|
||||
else
|
||||
vim.cmd('execute "EnableWhitespace"')
|
||||
end
|
||||
end
|
||||
|
||||
vim.cmd("autocmd BufEnter * lua whitespace_visibility()")
|
||||
|
||||
-- Strip whitespace
|
||||
map('n', '<leader>$', ':StripWhitespace<CR>', opts)
|
1
data/nvim/lua/plugins/config/comment.lua
Normal file
1
data/nvim/lua/plugins/config/comment.lua
Normal file
|
@ -0,0 +1 @@
|
|||
require("Comment").setup()
|
4
data/nvim/lua/plugins/config/indent-blankline.lua
Normal file
4
data/nvim/lua/plugins/config/indent-blankline.lua
Normal file
|
@ -0,0 +1,4 @@
|
|||
require("indent_blankline").setup {
|
||||
buftype_exclude = { "help", "terminal", "packer", "nofile" },
|
||||
filetype_exclude = { "terminal", "lsp-info" },
|
||||
}
|
1
data/nvim/lua/plugins/config/lightbulb.lua
Normal file
1
data/nvim/lua/plugins/config/lightbulb.lua
Normal file
|
@ -0,0 +1 @@
|
|||
vim.cmd [[autocmd CursorHold,CursorHoldI * lua require("nvim-lightbulb").update_lightbulb()]]
|
6
data/nvim/lua/plugins/config/lualine.lua
Normal file
6
data/nvim/lua/plugins/config/lualine.lua
Normal file
|
@ -0,0 +1,6 @@
|
|||
require "lualine".setup {
|
||||
options = {
|
||||
theme = "auto"
|
||||
},
|
||||
extensions = {"nvim-tree", "quickfix"},
|
||||
}
|
4
data/nvim/lua/plugins/config/mundo.lua
Normal file
4
data/nvim/lua/plugins/config/mundo.lua
Normal file
|
@ -0,0 +1,4 @@
|
|||
local map = vim.api.nvim_set_keymap
|
||||
local opts = {noremap = true, silent = true}
|
||||
|
||||
map("n", "<leader>u", ":MundoToggle<CR>", opts)
|
105
data/nvim/lua/plugins/config/neotree.lua
Normal file
105
data/nvim/lua/plugins/config/neotree.lua
Normal file
|
@ -0,0 +1,105 @@
|
|||
vim.cmd [[let g:neo_tree_remove_legacy_commands = 1]]
|
||||
|
||||
local map = vim.api.nvim_set_keymap
|
||||
local opts = {noremap = true, silent = true}
|
||||
|
||||
map("n", "<leader>t", ":Neotree toggle<CR>", opts)
|
||||
local notify = function(message, level)
|
||||
vim.notify(message, level, { title = "NeoTree" })
|
||||
end
|
||||
|
||||
require("neo-tree").setup {
|
||||
sort_case_insensitive = true,
|
||||
use_popups_for_input = false,
|
||||
popup_border_style = "rounded",
|
||||
-- source_selector = {
|
||||
-- winbar = true,
|
||||
-- separator = { left = "", right= "" },
|
||||
-- },
|
||||
win_options = {
|
||||
winblend = 0,
|
||||
},
|
||||
default_component_configs = {
|
||||
modified = {
|
||||
symbol = "~ ",
|
||||
},
|
||||
indent = {
|
||||
with_expanders = true,
|
||||
},
|
||||
name = {
|
||||
trailing_slash = true,
|
||||
},
|
||||
git_status = {
|
||||
symbols = {
|
||||
added = "+",
|
||||
deleted = "✖",
|
||||
modified = "",
|
||||
renamed = "➜",
|
||||
untracked = "?",
|
||||
ignored = "",
|
||||
unstaged = "",
|
||||
staged = "",
|
||||
conflict = "",
|
||||
},
|
||||
},
|
||||
},
|
||||
window = {
|
||||
width = 34,
|
||||
position = "left",
|
||||
mappings = {
|
||||
["<CR>"] = "open_with_window_picker",
|
||||
["s"] = "split_with_window_picker",
|
||||
["v"] = "vsplit_with_window_picker",
|
||||
["t"] = "open_tabnew",
|
||||
["z"] = "close_all_nodes",
|
||||
["Z"] = "expand_all_nodes",
|
||||
["a"] = { "add", config = { show_path = "relative" } },
|
||||
["A"] = { "add_directory", config = { show_path = "relative" } },
|
||||
["c"] = { "copy", config = { show_path = "relative" } },
|
||||
["m"] = { "move", config = { show_path = "relative" } },
|
||||
},
|
||||
},
|
||||
filesystem = {
|
||||
window = {
|
||||
mappings = {
|
||||
["gA"] = "git_add_all",
|
||||
["ga"] = "git_add_file",
|
||||
["gu"] = "git_unstage_file",
|
||||
},
|
||||
},
|
||||
group_empty_dirs = true,
|
||||
follow_current_file = true,
|
||||
use_libuv_file_watcher = true,
|
||||
filtered_items = {
|
||||
hide_dotfiles = false,
|
||||
hide_by_name = { ".git" },
|
||||
},
|
||||
},
|
||||
event_handlers = {
|
||||
{
|
||||
event = "file_added",
|
||||
handler = function(arg)
|
||||
notify("Added: " .. arg, "info")
|
||||
end,
|
||||
},
|
||||
{
|
||||
event = "file_deleted",
|
||||
handler = function(arg)
|
||||
notify("Deleted: " .. arg, "info")
|
||||
end,
|
||||
},
|
||||
{
|
||||
event = "file_renamed",
|
||||
handler = function(args)
|
||||
notify("Renamed: " .. args.source .. " -> " .. args.destination, "info")
|
||||
end,
|
||||
},
|
||||
{
|
||||
event = "file_moved",
|
||||
handler = function(args)
|
||||
notify("Moved: " .. args.source .. " -> " .. args.destination, "info")
|
||||
end,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
143
data/nvim/lua/plugins/config/nvim-cmp.lua
Normal file
143
data/nvim/lua/plugins/config/nvim-cmp.lua
Normal file
|
@ -0,0 +1,143 @@
|
|||
local present, cmp = pcall(require, "cmp")
|
||||
if not present then
|
||||
return
|
||||
end
|
||||
local lspkind = require('lspkind')
|
||||
|
||||
function format(opts)
|
||||
if opts == nil then
|
||||
opts = {}
|
||||
end
|
||||
|
||||
return function(entry, vim_item)
|
||||
vim_item.kind = lspkind.symbolic(vim_item.kind, opts)
|
||||
|
||||
if opts.menu ~= nil then
|
||||
vim_item.menu = opts.menu[entry.source.name]
|
||||
end
|
||||
|
||||
if entry.source.name == 'cmp_tabnine' then
|
||||
if entry.completion_item.data ~= nil and entry.completion_item.data.detail ~= nil then
|
||||
vim_item.menu = entry.completion_item.data.detail .. ' ' .. vim_item.menu
|
||||
end
|
||||
vim_item.kind = ''
|
||||
end
|
||||
|
||||
if opts.maxwidth ~= nil then
|
||||
vim_item.abbr = string.sub(vim_item.abbr, 1, opts.maxwidth)
|
||||
end
|
||||
|
||||
return vim_item
|
||||
end
|
||||
end
|
||||
|
||||
cmp.setup({
|
||||
-- Integrate luasnip
|
||||
snippet = {
|
||||
expand = function(args)
|
||||
require('luasnip').lsp_expand(args.body)
|
||||
end,
|
||||
},
|
||||
-- Add pictograms from lspkind
|
||||
formatting = {
|
||||
format = format({
|
||||
with_text = false,
|
||||
maxwidth = 50,
|
||||
menu = {
|
||||
buffer = "[Buf]",
|
||||
calc = "[Calc]",
|
||||
cmp_git = "[Git]",
|
||||
cmp_tabnine = "[TN]",
|
||||
emoji = "[Emoji]",
|
||||
luasnip = "[Snip]",
|
||||
nvim_lsp = "[LSP]",
|
||||
nvim_lua = "[Lua]",
|
||||
path = "[Path]",
|
||||
}
|
||||
})
|
||||
},
|
||||
mapping = {
|
||||
['<C-d>'] = cmp.mapping(cmp.mapping.scroll_docs(-4), { 'i', 'c'}),
|
||||
['<C-f>'] = cmp.mapping(cmp.mapping.scroll_docs(4), { 'i', 'c'}),
|
||||
['<C-Space>'] = cmp.mapping(cmp.mapping.complete(), { 'i', 'c'}),
|
||||
['<C-e>'] = cmp.mapping(cmp.mapping.close(), { 'i', 'c'} ),
|
||||
['<CR>'] = cmp.mapping.confirm({ select = false }),
|
||||
["<Tab>"] = function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_next_item()
|
||||
elseif require("luasnip").expand_or_jumpable() then
|
||||
vim.fn.feedkeys(vim.api.nvim_replace_termcodes("<Plug>luasnip-expand-or-jump", true, true, true), "")
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end,
|
||||
["<S-Tab>"] = function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_prev_item()
|
||||
elseif require("luasnip").jumpable(-1) then
|
||||
vim.fn.feedkeys(vim.api.nvim_replace_termcodes("<Plug>luasnip-jump-prev", true, true, true), "")
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end,
|
||||
},
|
||||
sources = {
|
||||
{ name = 'luasnip' },
|
||||
{ name = 'buffer' },
|
||||
{ name = 'path' },
|
||||
{ name = 'nvim_lsp' },
|
||||
{ name = 'nvim_lua' },
|
||||
{ name = 'cmp_git' },
|
||||
{ name = 'emoji' },
|
||||
{ name = 'calc' },
|
||||
{ name = 'cmp_tabnine' },
|
||||
}
|
||||
})
|
||||
|
||||
-- Use buffer source for `/` (if you enabled `native_menu`, this won't work anymore).
|
||||
cmp.setup.cmdline('/', {
|
||||
sources = {
|
||||
{ name = 'buffer' }
|
||||
}
|
||||
})
|
||||
|
||||
-- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore).
|
||||
cmp.setup.cmdline(':', {
|
||||
sources = {
|
||||
{ name = 'path' },
|
||||
{ name = 'cmdline' }
|
||||
}
|
||||
})
|
||||
-- language servers
|
||||
local sumneko_root_path = vim.fn.stdpath("data").."/lua-language-server"
|
||||
local sumneko_binary = sumneko_root_path.."/bin/lua-language-server"
|
||||
|
||||
require("lspconfig").sumneko_lua.setup { -- lua: https://github.com/sumneko/lua-language-server
|
||||
cmd = { sumneko_binary, "-E", sumneko_root_path .. "/main.lua" },
|
||||
settings = {
|
||||
Lua = {
|
||||
diagnostics = {
|
||||
-- Get the language server to recognize the `vim` global
|
||||
globals = {'vim'},
|
||||
},
|
||||
workspace = {
|
||||
-- Make the server aware of Neovim runtime files
|
||||
library = vim.api.nvim_get_runtime_file("", true),
|
||||
},
|
||||
-- Do not send telemetry data containing a randomized but unique identifier
|
||||
telemetry = { enable = false, },
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
require('lspconfig').clangd.setup {} --needs clang
|
||||
require('lspconfig').rust_analyzer.setup {} --still needs rust analyzer installed
|
||||
require('lspconfig').bashls.setup {} --needs bash-language-server from npm
|
||||
require('lspconfig').cmake.setup {} --still needs cmake language servers
|
||||
require('lspconfig').html.setup {} --needs npm vscode-langservers-extracted
|
||||
require('lspconfig').hls.setup {} --still needs github: haskell-language-server
|
||||
-- maybe use jdtls ??? require('lspconfig').java_language_server.setup {} --still needs github java-language-server
|
||||
require('lspconfig').pyright.setup {} -- needs npm pyright
|
||||
require('lspconfig').texlab.setup {} -- needs github texlab
|
||||
require'lspconfig'.gopls.setup{} -- needs gopls installed
|
||||
require'lspconfig'.zls.setup{}
|
6
data/nvim/lua/plugins/config/onedark.lua
Normal file
6
data/nvim/lua/plugins/config/onedark.lua
Normal file
|
@ -0,0 +1,6 @@
|
|||
-- setup onedark
|
||||
require("onedark").setup{
|
||||
toggle_style_key = "<nop>",
|
||||
}
|
||||
|
||||
require("onedark").load()
|
34
data/nvim/lua/plugins/config/telescope.lua
Normal file
34
data/nvim/lua/plugins/config/telescope.lua
Normal file
|
@ -0,0 +1,34 @@
|
|||
require('telescope').setup{
|
||||
defaults = {
|
||||
-- Default configuration for telescope goes here:
|
||||
-- config_key = value,
|
||||
mappings = {
|
||||
i = {
|
||||
-- map actions.which_key to <C-h> (default: <C-/>)
|
||||
-- actions.which_key shows the mappings for your picker,
|
||||
-- e.g. git_{create, delete, ...}_branch for the git_branches picker
|
||||
["<C-h>"] = "which_key"
|
||||
}
|
||||
}
|
||||
},
|
||||
pickers = {
|
||||
-- Default configuration for builtin pickers goes here:
|
||||
-- picker_name = {
|
||||
-- picker_config_key = value,
|
||||
-- ...
|
||||
-- }
|
||||
-- Now the picker_config_key will be applied every time you call this
|
||||
-- builtin picker
|
||||
},
|
||||
extensions = {
|
||||
-- Your extension configuration goes here:
|
||||
-- extension_name = {
|
||||
-- extension_config_key = value,
|
||||
-- }
|
||||
-- please take a look at the readme of the extension you want to configure
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
require('telescope').load_extension('fzf')
|
||||
require('telescope').load_extension('cheatsheet')
|
7
data/nvim/lua/plugins/config/treesitter.lua
Normal file
7
data/nvim/lua/plugins/config/treesitter.lua
Normal file
|
@ -0,0 +1,7 @@
|
|||
require "nvim-treesitter.configs" .setup {
|
||||
ensure_installed = "all",
|
||||
highlight = {
|
||||
enable = true,
|
||||
use_languagetree = true
|
||||
}
|
||||
}
|
2
data/nvim/lua/plugins/config/vim-visual-multi.lua
Normal file
2
data/nvim/lua/plugins/config/vim-visual-multi.lua
Normal file
|
@ -0,0 +1,2 @@
|
|||
local map = vim.api.nvim_set_keymap
|
||||
local opts = {noremap = true, silent = true}
|
746
data/nvim/lua/plugins/data/alpha.lua
Normal file
746
data/nvim/lua/plugins/data/alpha.lua
Normal file
|
@ -0,0 +1,746 @@
|
|||
return { {
|
||||
"⬛⬛🔴🔴🔴🔴⬛🔴⬛⬛🔴⬛🔴🔴🔴🔴⬛⬛",
|
||||
"⬛⬛🔴⬛⬛⬛⬛🔴⬛⬛🔴⬛🔴⬛⬛⬛⬛⬛",
|
||||
"⬛⬛🔴🔴🔴🔴⬛🔴⬛⬛🔴⬛🔴🔴🔴🔴⬛⬛",
|
||||
"⬛⬛⬛⬛⬛🔴⬛🔴⬛⬛🔴⬛⬛⬛⬛🔴⬛⬛",
|
||||
"⬛⬛🔴🔴🔴🔴⬛⬛🔴🔴⬛⬛🔴🔴🔴🔴⬛⬛",
|
||||
"⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛",
|
||||
}, {
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⢿⣻⣫⢯⣗⣗⣗⣗⣗⡷⡽⣝⡯⣟⢿⢿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⢿⢝⣞⣗⢷⡽⣽⣺⣳⢯⣾⣺⡽⣽⣳⢯⢯⢯⢯⢞⢿⢿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⢿⣕⡯⣟⣞⡾⣽⢽⣳⣟⣾⣻⣞⣷⣻⣽⣞⣯⢿⡽⣽⢽⢽⢵⣻⣿⣿⣿",
|
||||
"⣿⣿⢯⣳⣳⢽⣳⢯⡯⣿⣽⣻⡾⣷⢿⣞⣿⣞⣷⣟⣾⢯⣯⢷⣻⡽⣳⢧⡻⣿⣿",
|
||||
"⣿⣏⣗⢷⢽⡽⣞⣯⣿⣳⢟⣷⢿⣻⣽⣟⣾⣻⣾⣻⢾⢿⣞⣯⣷⣻⢽⣳⣝⣝⣿",
|
||||
"⣿⣺⣪⢿⢽⡽⣯⢷⡯⢐⠄⠄⣻⣟⣷⢿⣽⣻⡞⠠⡂⠄⢻⣗⣷⢯⣟⣞⡮⣖⣿",
|
||||
"⣿⡺⣺⢽⢯⣻⣽⢯⣧⠐⠐⡀⣺⣽⣾⢿⣽⣯⣇⢐⠠⠈⣼⣟⣾⣻⣺⣵⡻⡮⣿",
|
||||
"⣿⡺⡽⡽⡯⣷⣻⣻⣽⣾⣲⢾⣽⢷⣟⣿⣳⣯⡿⣶⢶⣽⣻⣾⣳⡯⣷⡳⣯⡳⣻",
|
||||
"⣿⡺⣝⡯⡿⡽⣞⣯⣷⢿⣽⢿⣽⢿⣽⢷⣟⣷⢿⣻⡿⣽⢷⣻⢾⣽⣳⢯⣗⢝⣿",
|
||||
"⣿⣝⣞⡽⡽⡯⣟⣷⠉⡁⠅⠡⠁⠅⠡⠁⠅⠡⢉⠨⠈⠌⡉⣿⢽⣞⣞⣗⡗⣽⣿",
|
||||
"⣿⣿⡼⣺⢽⢯⣟⣞⡷⡶⡾⡶⣷⢾⡶⣷⢾⣶⢶⣶⢷⡶⡾⣽⢽⣺⢞⡞⣼⣿⣿",
|
||||
"⣿⣿⣿⣮⢯⣳⡳⡯⡯⣟⣟⣯⢿⡽⣯⣟⣿⣺⡯⣯⡯⣯⢿⢽⢽⡺⡹⣼⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣷⣧⡫⡯⡯⣗⣟⡾⣽⢽⣳⢯⢾⣺⢽⣳⢯⢯⢯⢏⢇⣿⣾⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣾⣽⣕⡳⡫⣗⢟⢾⣝⢯⢯⢻⢪⡫⣽⣼⣾⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣾⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
}, {
|
||||
"⡏⠉⠉⠉⠉⠉⠉⠋⠉⠉⠉⠉⠉⠉⠋⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠙⠉⠉⠉⠹",
|
||||
"⡇⢸⣿⡟⠛⢿⣷⠀⢸⣿⡟⠛⢿⣷⡄⢸⣿⡇⠀⢸⣿⡇⢸⣿⡇⠀⢸⣿⡇⢸",
|
||||
"⡇⢸⣿⣧⣤⣾⠿⠀⢸⣿⣇⣀⣸⡿⠃⢸⣿⡇⠀⢸⣿⡇⢸⣿⣇⣀⣸⣿⡇⢸",
|
||||
"⡇⢸⣿⡏⠉⢹⣿⡆⢸⣿⡟⠛⢻⣷⡄⢸⣿⡇⠀⢸⣿⡇⢸⣿⡏⠉⢹⣿⡇⢸",
|
||||
"⡇⢸⣿⣧⣤⣼⡿⠃⢸⣿⡇⠀⢸⣿⡇⠸⣿⣧⣤⣼⡿⠁⢸⣿⡇⠀⢸⣿⡇⢸",
|
||||
"⣇⣀⣀⣀⣀⣀⣀⣄⣀⣀⣀⣀⣀⣀⣀⣠⣀⡈⠉⣁⣀⣄⣀⣀⣀⣠⣀⣀⣀⣰",
|
||||
}, {
|
||||
"⣿⣿⣿⡇⠄⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⡇⠄⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⡇⠄⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⡇⠄⣿⣿⣿⡿⠟⠋⣉⣉⣉⡙⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⠃⠄⠹⠟⣡⣶⡿⢟⣛⣛⡻⢿⣦⣩⣤⣤⣤⣬⡉⢻⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⠄⢀⢤⣾⣿⣿⣿⣿⡿⠿⠿⠿⢮⡃⣛⣛⡻⠿⢿⠈⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⡟⢡⣴⣯⣿⣿⣿⣉⠤⣤⣭⣶⣶⣶⣮⣔⡈⠛⠛⠛⢓⠦⠈⢻⣿⣿⣿⣿⣿",
|
||||
"⠏⣠⣿⣿⣿⣿⣿⣿⣿⣯⡪⢛⠿⢿⣿⣿⣿⡿⣼⣿⣿⣿⣶⣮⣄⠙⣿⣿⣿⣿",
|
||||
"⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣾⡭⠴⣶⣶⣽⣽⣛⡿⠿⠿⠿⠿⠇⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⠿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣝⣛⢛⡛⢋⣥⣴⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⢿⠱⣿⣿⣛⠾⣭⣛⡿⢿⣿⣿⣿⣿⣿⣿⣿⡀⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⠑⠽⡻⢿⣿⣮⣽⣷⣶⣯⣽⣳⠮⣽⣟⣲⠯⢭⣿⣛⣛⣿⡇⢸⣿⣿⣿⣿⣿⣿",
|
||||
"⠄⠄⠈⠑⠊⠉⠟⣻⠿⣿⣿⣿⣿⣷⣾⣭⣿⣛⠷⠶⠶⠂⣴⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⠄⠄⠄⠄⠄⠄⠄⠄⠁⠙⠒⠙⠯⠍⠙⢉⣉⣡⣶⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠙⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
}, {
|
||||
"⢀⡴⠑⡄⠀⠀⠀⠀⠀⠀⠀⣀⣀⣤⣤⣤⣀⡀⠀⠀⠀⠀ ",
|
||||
"⠸⡇⠀⠿⡀⠀⠀⠀⣀⡴⢿⣿⣿⣿⣿⣿⣿⣿⣷⣦⡀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠑⢄⣠⠾⠁⣀⣄⡈⠙⣿⣿⣿⣿⣿⣿⣿⣿⣆⠀⠀",
|
||||
"⠀⠀⠀⠀⢀⡀⠁⠀⠀⠈⠙⠛⠂⠈⣿⣿⣿⣿⣿⠿⡿⢿⣆⠀",
|
||||
"⠀⠀⠀⢀⡾⣁⣀⠀⠴⠂⠙⣗⡀⠀⢻⣿⣿⠭⢤⣴⣦⣤⣹⠀",
|
||||
"⠀⠀⢀⣾⣿⣿⣿⣷⣮⣽⣾⣿⣥⣴⣿⣿⡿⢂⠔⢚⡿⢿⣿⣦",
|
||||
"⠀⢀⡞⠁⠙⠻⠿⠟⠉⠀⠛⢹⣿⣿⣿⣿⣿⣌⢤⣼⣿⣾⣿⡟",
|
||||
"⠀⣾⣷⣶⠇⠀⠀⣤⣄⣀⡀⠈⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇",
|
||||
"⠀⠉⠈⠉⠀⠀⢦⡈⢻⣿⣿⣿⣶⣶⣶⣶⣤⣽⡹⣿⣿⣿⣿⡇",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠉⠲⣽⡻⢿⣿⣿⣿⣿⣿⣿⣷⣜⣿⣿⣿⡇",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣷⣶⣮⣭⣽⣿⣿⣿⣿⣿⣿⣿⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⣀⣀⣈⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀⠀⠀⠀⠀",
|
||||
}, {
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣀⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⠋⠉⠉⠉⠙⠛⠻⢶⣤⡀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⡾⠁⠀⠀⠀⠀⠀⠀⠀⠀⠈⢻⡆⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣠⣴⠟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⡟⠁⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⠶⠟⠛⠉⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⡟⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣠⣴⠾⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⠁⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⡶⠛⠛⠋⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⠞⠋⠀⠀⠀⠀⣠⣴⠶⠶⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⣄⣀⣀⣤⡴⠟⠋⠀⠀⠀⠘⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣟⠉⠙⢷⣄⠀⠀⠀⠀⠀⠀⠘⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⣷⡀⠀⠹⣧⡀⠀⠀⠀⠀⠀⣼⠃⠀⠀⠀⠀⠀⠀⠀⢀⣾⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣷⡀⠀⠈⠛⣷⣤⣴⠶⠟⠃⠀⠀⠀⠀⠀⠀⠀⢀⣾⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣷⡀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠻⠟⠛⣻⡿⠀⠀⠀⠀⠀⢀⣤⡾⠛⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⡾⠋⠀⠀⠀⠀⢀⣴⠟⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⠟⠀⠀⠀⠀⣠⣾⡿⠁⢀⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⠏⠀⠀⠀⢀⡾⢫⣿⠁⠀⣼⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡾⠃⠀⠀⢀⣴⠟⢡⡟⣿⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠟⠁⠀⠀⣰⠟⠁⢠⡿⠀⢿⡄⢰⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⠏⠀⠀⢠⣾⠋⠀⢀⡿⠁⠀⠈⠛⠿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡏⠀⠀⣴⢿⡟⠀⠀⣾⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢷⣄⣾⠋⠘⣧⡀⢰⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠁⠀⠀⠈⠛⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
}, {
|
||||
"⣿⣿⣿⣿⣿⣿⣧⠻⣿⣿⠿⠿⠿⢿⣿⠟⣼⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⠟⠃⠁⠀⠀⠀⠀⠀⠀⠘⠻⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⡿⠃⠀⣴⡄⠀⠀⠀⠀⠀⣴⡆⠀⠘⢿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⣿⣿⣿",
|
||||
"⣿⠿⢿⣿⠶⠶⠶⠶⠶⠶⠶⠶⠶⠶⠶⠶⠶⠶⠶⣿⡿⠿⣿",
|
||||
"⡇⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⢸",
|
||||
"⡇⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⢸",
|
||||
"⡇⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⢸",
|
||||
"⡇⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⢸",
|
||||
"⣧⣤⣤⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣤⣤⣼",
|
||||
"⣿⣿⣿⣿⣶⣤⡄⠀⠀⠀⣤⣤⣤⠀⠀⠀⢠⣤⣴⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⣿⣿⣿⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣤⣤⣴⣿⣿⣿⣦⣤⣤⣾⣿⣿⣿⣿⣿⣿",
|
||||
}, {
|
||||
"⠀⠀⠀⠀⠀⠀⢀⣠⡶⠖⠛⠉⠉⠉⠉⠉⠛⠲⣦⣄⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⣤⠖⠋⠁⠀⠀⠀⠀⢀⣴⣿⠛⠙⠛⢷⣤⣈⢿⠀⠀",
|
||||
"⠀⠀⣴⠋⠀⠀⠀⠀⣀⣤⣶⠶⠚⠛⠁⠀⠀⠀⠀⠀⠀⠀⣿⠀",
|
||||
"⢀⡟⣠⣶⠖⠛⠉⢁⣠⣴⣶⢶⡄⠀⠺⣯⣭⣭⣭⣿⠿⠗⢸⡆",
|
||||
"⣾⠀⠀⠀⣴⣞⣉⣈⣿⡿⠛⠁⠀⠀⠀⠀⣻⣦⠶⠛⠉⠙⢿⡇",
|
||||
"⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣤⠶⠛⠉⠀⠀⠀⠀⠀⡶⢻⠁",
|
||||
"⣿⠀⠀⠀⠀⠀⠛⠛⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⡇⣿⠀",
|
||||
"⠘⣆⠀⠀⠀⠀⠀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⡟⣼⠃⠀",
|
||||
"⠀⠹⣄⠀⠀⠀⠀⠀⠀⠀⠛⣦⣀⠀⠀⠀⠀⣠⡶⠋⣼⠃⠀⠀",
|
||||
"⠀⠀⠈⠛⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⡾⠋⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠈⠉⠛⠛⠶⣤⣿⣿⣴⣶⠛⠉⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠋⢸⠀⠙⢷⡀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⣾⠁⠀⢸⠀⠀⠀⠈⢷⡀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⢠⡟⠀⠀⠀⢸⡆⠀⠀⠀⠀⠘⢶⡀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⣾⠃⠀⠀⠀⠀⠀⣇⠀⠀⠀⠀⠀⠀⠻⡄⠀⠀⠀",
|
||||
"⠀⠀⠀⢀⡿⠀⠀⠀⠀⠀⠀⣀⣿⣀⣀⣀⣀⣀⣀⡀⢹⣦⣤⠄",
|
||||
"⢀⣤⣶⣿⣿⣷⣶⠟⠛⠉⠀⠀⢸⡄⠀⠀⠉⠙⠛⠿⣿⣿⣦⢻",
|
||||
"⠀⣸⠃⢿⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠘⣿⠀⠀",
|
||||
}, {
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡤⠶⢶⣶⣦⣄⡀⠀⠀ ",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⡄⠒⠪⢝⠻⣿⣿⣦⡀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣿⡿⢉⡀⠀⠈⠐⠄⢿⣿⣿⣷",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⡇⠀⠀⠈⡄⠤⢀⠈⣾⣿⣿⣿",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡾⣿⣟⣕⡤⡠⠘⠀⠀⠀⢱⣿⣿⣿⣿",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣾⣾⣿⣞⣄⠮⠔⠈⡢⠄⣠⣾⣿⣿⣿⣿",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⢿⣿⢽⡻⣿⣿⣿⣽⣵⣾⡽⣿⣿⣿⣿⣿⡏",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣗⣿⡟⠈⠉⠚⢽⣻⢷⡝⣿⡿⣿⣿⣿⣿⡿⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⣿⣿⠇⠀⠀⠀⠀⠀⢩⣯⣭⣾⣿⣿⣿⣿⠁⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣿⣿⠃⠀⠀⠀⠀⠀⣰⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣿⣿⡿⠃⠀⠀⠀⠀⣠⣼⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⢞⣿⣿⡿⠁⠀⠀⠀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣾⣿⠏⠀⠀⠀⠀⣾⣿⣿⣿⣿⣿⣿⡟⣿⣿⠏⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⠃⠀⠀⠀⠀⣸⣿⣿⣿⣿⣿⣟⣷⣾⣿⠏⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⢀⣾⣿⣿⣿⣿⠃⠀⠀⠀⢀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⠋⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⡰⢿⣿⣿⣯⡶⠁⠀⠀⢀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠃⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⢀⣼⣟⣿⣿⡿⠃⠀⠀⢀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⢀⣾⣿⣿⡯⣿⠀⠀⢠⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⣾⣿⣿⣿⣿⣿⣶⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠿⣿⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠛⠀⠈⠀⠻⣿⣿⣿⣿⣿⣟⣛⣿⣿⡭⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠢⡀⠀⠀⠀⠀⠻⣿⣿⣿⣿⣿⣭⠟⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠈⠐⠤⢀⡀⠀⢀⣙⣿⠿⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ",
|
||||
}, {
|
||||
"⣿⣿⡿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣿⣿⣿",
|
||||
"⣿⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢿⣿",
|
||||
"⡇⠀⠀⠀⠀⣤⣤⣀⣀⣠⣤⣤⣷⣦⣤⣤⣤⣤⣀⣀⣀⣀⠀⠀⠀⠀⠀⠀⠀⢸⣿",
|
||||
"⡇⠀⠀⠀⠈⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣶⣄⠀⠀⢸⣿",
|
||||
"⣷⠀⠀⠈⠨⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀⠀⢸⣿",
|
||||
"⣿⡄⠀⠀⣈⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠀⠀⢸⣿",
|
||||
"⣿⡇⠀⠀⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠁⠀⠀⢸⣿",
|
||||
"⡇⠀⠀⠀⠀⠉⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠿⡿⢀⡀⠀⣔⣿",
|
||||
"⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠛⣿⣿⣿⠿⠛⠛⠛⠋⠈⠀⠀⠀⠀⠘⡇⢠⣾⣿",
|
||||
"⣇⠇⠀⣠⣄⠀⠀⠀⠀⣀⣀⣀⡀⢸⣿⣿⣇⣀⣀⢠⣀⢀⠀⠀⣀⣠⣶⡇⣾⣿⣿",
|
||||
"⣿⡄⠀⢸⣿⣶⣤⣀⣀⣠⣽⣿⠁⣼⣿⣿⣿⣿⣿⣼⣬⣭⣶⣶⣿⣿⣿⠀⣿⣿⣿",
|
||||
"⣿⡇⠀⠀⢹⣿⣿⣿⣿⣿⣿⡿⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠁⠀⣿⣿⣿",
|
||||
"⣿⣷⡄⠀⠈⢿⣿⣿⣿⣿⣿⠁⢬⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠀⢠⣿⣿⣿",
|
||||
"⣿⣿⣇⠀⠀⠘⠿⣿⣿⣿⣿⠀⠈⠛⠿⠟⠙⠛⣻⣿⣿⣿⣿⣿⣯⠀⠀⣼⣿⣿⣿",
|
||||
"⣿⣿⣿⡄⠀⠀⠀⠙⢿⣿⣿⣖⣄⣀⠀⢰⣿⣿⢿⣿⢿⣿⣿⡿⠀⠀⠸⢿⣿⣿⣿",
|
||||
"⠛⠋⠉⠀⠀⠀⠀⠀⢀⣄⡀⠈⢈⠙⠛⢟⣋⢁⢁⣠⣤⣼⡿⠀⠀⠀⠀⠀⠀⠈⠙",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠹⠟⢀⢀⠚⠚⠛⠙⠛⢛⣿⣿⡟⠛⠁⠀⡀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠨⢿⣷⣿⣾⣿⣿⣿⣿⠇⠂⠀⠀⢠⡇⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⢐⠀⠀⠀⠀⠈⠛⠯⠿⡹⠛⠟⠉⠀⠀⠀⢀⣾⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⢆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⡟⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠸⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⢿⠁⠀⠀⠀⠀⠀ ",
|
||||
}, {
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⡀⠠⠤⠀⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⣀⢤⡒⠉⠁⠀⠒⢂⡀⠀⠀⠀⠈⠉⣒⠤⣀⠀⠀⠀⠀",
|
||||
"⠀⠀⣠⠾⠅⠈⠀⠙⠀⠀⠀⠈⠀⠀⢀⣀⣓⡀⠉⠀⠬⠕⢄⠀⠀",
|
||||
"⠀⣰⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡤⠶⢦⡀⠑⠀⠀⠀⠀⠈⢧⠀",
|
||||
"⠀⡇⠀⠀⠀⠀⠀⢤⣀⣀⣀⣀⡀⢀⣀⣀⠙⠀⠀⠀⠀⠀⠀⢸⡄",
|
||||
"⠀⢹⡀⠀⠀⠀⠀⡜⠁⠀⠀⠙⡴⠁⠀⠀⠱⡄⠀⠀⠀⠀⠀⣸⠀",
|
||||
"⠀⠀⠱⢄⡀⠀⢰⣁⣒⣒⣂⣰⣃⣀⣒⣒⣂⢣⠀⠀⠀⢀⡴⠁⠀",
|
||||
"⠀⠀⠀⠀⠙⠲⢼⡀⠀⠙⠀⢠⡇⠀⠛⠀⠀⣌⣀⡤⠖⠉⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⢸⡗⢄⣀⡠⠊⠈⢦⣀⣀⠔⡏⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠈⡇⠀⢰⠁⠀⠀⠀⢣⠀⠀⣷⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⣠⠔⠊⠉⠁⡏⠀⠀⠀⠀⠘⡆⠤⠿⣄⣀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⣧⠸⠒⣚⡩⡇⠀⠀⠀⠀⠀⣏⣙⠒⢴⠈⡇⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠈⠋⠉⠀⠀⢳⡀⠀⠀⠀⣸⠁⠈⠉⠓⠚⠁⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠓⠛⠛",
|
||||
}, {
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⣠⠞⠉⢉⠩⢍⡙⠛⠋⣉⠉⠍⢉⣉⣉⣉⠩⢉⠉⠛⠲⣄⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⡴⠁⠀⠂⡠⠑⠀⠀⠀⠂⠀⠀⠀⠀⠠⠀⠀⠐⠁⢊⠀⠄⠈⢦⠀⠀⠀",
|
||||
"⠀⣠⡾⠁⠀⠀⠄⣴⡪⠽⣿⡓⢦⠀⠀⡀⠀⣠⢖⣻⣿⣒⣦⠀⡀⢀⣈⢦⡀⠀",
|
||||
"⣰⠑⢰⠋⢩⡙⠒⠦⠖⠋⠀⠈⠁⠀⠀⠀⠀⠈⠉⠀⠘⠦⠤⠴⠒⡟⠲⡌⠛⣆",
|
||||
"⢹⡰⡸⠈⢻⣈⠓⡦⢤⣀⡀⢾⠩⠤⠀⠀⠤⠌⡳⠐⣒⣠⣤⠖⢋⡟⠒⡏⡄⡟",
|
||||
"⠀⠙⢆⠀⠀⠻⡙⡿⢦⣄⣹⠙⠒⢲⠦⠴⡖⠒⠚⣏⣁⣤⣾⢚⡝⠁⠀⣨⠞⠀",
|
||||
"⠀⠀⠈⢧⠀⠀⠙⢧⡀⠈⡟⠛⠷⡾⣶⣾⣷⠾⠛⢻⠉⢀⡽⠋⠀⠀⣰⠃⠀⠀",
|
||||
"⠀⠀⠀⠀⠑⢤⡠⢂⠌⡛⠦⠤⣄⣇⣀⣀⣸⣀⡤⠼⠚⡉⢄⠠⣠⠞⠁⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠉⠓⠮⣔⡁⠦⠀⣤⠤⠤⣤⠄⠰⠌⣂⡬⠖⠋⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠒⠤⢤⣀⣀⡤⠴⠒⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
}, {
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀⠀⠀⠠⣀⣠⣤⣤⣤⣤⣤⣄⡠⠤⠄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⠤⠄⠒⠒⠒⠂⠂⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀⠈⠳⠤⢀⡀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⣠⠊⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⡆⠀⠀⠀⠀⠀⠀⠈⠳⡄⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⡠⠒⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠘⣄⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⢄⠀",
|
||||
"⠀⠀⠀⢀⢖⣿⡷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⣿⣿⣿⣿⣿⣿⣿⡿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀",
|
||||
"⠀⠀⠀⢸⡾⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣿⣿⣿⣿⣿⣿⣿⠟⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢇⠀",
|
||||
"⠀⠀⠀⣴⣛⣿⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢺⣿⣿⣿⣿⣿⣿⣿⢥⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡸⠀",
|
||||
"⠀⠀⣾⣾⣿⣿⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣤⠽⠿⠿⠿⠿⠿⣧⣄⡈⠛⠛⠛⣛⣛⣳⣶⣶⣦⣄⡀⠀⠀⠀⠀⡎⠀⠀",
|
||||
"⠀⠘⡿⣿⣿⣿⣿⣿⣦⣄⠀⠀⣀⣠⠤⠤⣤⣖⡺⢟⣩⠥⢒⡊⠭⠭⠝⢑⣒⠲⠤⢭⢖⣪⠭⠜⠓⢒⣒⠒⠒⢒⣛⢷⣄⠀⢀⡇⠀⠀",
|
||||
"⠀⢀⣽⣿⣿⣿⣿⣿⣿⣿⣠⠞⠉⢀⣤⣿⡭⠷⡺⠚⠉⢩⣾⣩⡿⠻⣦⡀⠀⠀⠀⠁⠲⡠⠒⠁⠀⣴⣈⡿⠷⣦⠀⠈⠈⠙⠻⣄⠀⠀",
|
||||
"⠀⢸⣿⣿⣿⣿⣿⡭⠟⠉⠁⠀⠀⠘⠓⠒⠲⡉⠀⠀⠀⢸⣿⣬⣷⣶⣿⡇⠀⠀⠀⠀⠈⠀⠀⠀⢸⣿⣧⣿⣶⣿⠇⠀⠀⠀⠀⣸⠀⠀",
|
||||
"⠀⠀⠈⠓⣿⠶⠟⠁⠀⠀⠀⠀⠀⠘⠛⠂⠀⠈⠑⠠⢀⠈⢛⣿⣿⠛⠋⣀⡀⣀⠠⠐⠂⠀⢀⣀⠀⠙⠻⠿⢿⣍⡀⠤⠤⠒⢊⡍⠀⠀",
|
||||
"⠀⠀⠀⡴⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⢠⣄⣤⣾⣿⣷⣤⠀⠀⠀⠀⠀⠀⣀⡤⡎⠀⠀⠀",
|
||||
"⠀⠀⡸⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⡤⠤⠶⠦⢤⣤⣀⠀⠀⢠⣿⣿⣿⣤⣿⣿⣿⣿⣇⣀⣀⣤⢶⠛⠁⢀⡏⠀⠀⠀",
|
||||
"⠀⢰⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣅⡀⠐⠦⣤⣤⣀⣈⠉⠙⠻⣿⣿⣿⣿⣿⣿⣿⡿⠉⠀⢀⣀⣠⣤⠴⢻⠀⠀⠀⠀",
|
||||
"⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠳⠶⢤⣄⣉⠉⠛⠛⠛⠻⠻⣿⣿⣿⠿⠿⠿⠛⠛⠋⠉⠁⣀⣴⠏⠀⠀⠀⠀",
|
||||
"⠀⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠰⢦⣀⠀⠀⠀⠀⠀⠀⠈⠉⠓⠒⠦⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠶⠒⠋⠉⡘⠀⠀⠀⠀⠀",
|
||||
"⢀⣧⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⡇⠀⠀⠀⠀⠀",
|
||||
"⢸⠀⠙⠦⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡔⠑⠒⠦⢤⣄⠀⠀⠀⠀⠀⠀⠀⣀⠤⠤⠤⢤⣀⣀⣀⠴⠚⠉⠀⢸⠀⠀⠀⠀⠀",
|
||||
"⢸⠀⠀⠀⠈⠉⠛⠒⠦⠤⢤⣀⣀⣀⣀⣀⣀⣀⣰⠁⠀⠀⠀⠀⠈⠑⡤⠒⠒⢢⠖⣉⠀⠀⠀⠀⠀⠉⠁⠀⠀⠀⠀⠀⠈⠳⣄⠀⠀⠀",
|
||||
"⠸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠩⠇⠀⠀⠀⠧⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠈⢦⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⡀⠜⠒⠤⠀⠐⠒⠤⡀⠀⠀⠀⡰⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠱⡄",
|
||||
}, {
|
||||
"⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄",
|
||||
"⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢀⣀⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄",
|
||||
"⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢀⣴⣿⣿⣿⣿⣷⣄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄",
|
||||
"⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣸⣿⣿⠋⠉⠹⣿⣿⡆⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄",
|
||||
"⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢹⣿⣿⣄⡀⣰⣿⣿⠃⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄",
|
||||
"⠄⠄⠄⠄⠄⢀⣤⣶⣶⣶⣦⣄⡙⢿⡿⣱⣿⣿⠋⣠⣤⣤⣤⣤⡀⠄⠄⠄⠄⠄",
|
||||
"⠄⠄⠄⠄⢠⣿⣿⡿⠛⠛⢿⣿⣿⣷⣾⣿⣿⢣⣾⣿⡿⠿⢿⣿⣿⣆⠄⠄⠄⠄",
|
||||
"⠄⠄⠄⠄⢸⣿⣿⣄⠄⢀⣴⣮⣝⠻⢿⣿⣿⣷⣭⣛⠄⠄⠄⣽⣿⣿⠄⠄⠄⠄",
|
||||
"⠄⠄⠄⠄⠄⠻⣿⣿⣿⣿⣿⡿⠃⠄⠄⠈⠙⠻⢿⣿⣿⣶⣿⣿⣿⠃⠄⠄⠄⠄",
|
||||
"⠄⠄⠄⠄⠄⠄⠄⠉⠉⠉⠁⠄⠄⠄⠄⠄⠄⠄⠄⠈⠙⠛⠛⠉⠄⠄⠄⠄⠄⠄",
|
||||
"⠄⠄⠄⠄⢰⡿⠛⠿⢸⡇⢀⡾⠛⣿⣾⣿⠀⣿⢸⡏⠻⣦⢰⡟⢻⣷⠄⠄⠄⠄",
|
||||
"⠄⠄⠄⠄⠘⠿⠶⠟⠸⠷⠆⠻⠶⠿⠛⠿⠶⠿⠸⠷⠾⠏⠘⢷⣾⠏⠄⠄⠄⠄",
|
||||
"⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠾⠋⠄⠄⠄⠄⠄",
|
||||
"⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄",
|
||||
}, {
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⡿⠟⠿⣿⣿⣿⣿⣿⣿⠿⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⡟⠁⠀⠀⠀⠈⠉⠻⣻⣻⠁⠀⡄⠬⠍⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⠀⠀⡔⠛⠛⠒⠦⠀⠈⠛⢄⣈⣧⠤⣀⠀⠘⣾⢛⡿⠿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⡏⠀⠘⣇⠀⠀⠀⠀⠀⠀⠀⠈⢉⠔⠉⡈⠉⠛⡷⠁⣤⡀⠈⢻⣿⣿⣿⣿⣿⣿",
|
||||
"⣷⠀⠀⠈⠳⢄⠀⠀⠀⠀⠀⠀⡜⠀⣸⠻⡆⠀⠈⠀⣿⣩⠀⠀⢻⣿⣿⣿⣿⣿",
|
||||
"⣿⣷⡶⣾⠂⠀⠀⠀⠀⠀⠀⠀⢳⡀⠿⠞⠀⠀⠀⡦⣈⣁⣠⣔⣽⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣹⠃⠀⠀⣀⡀⡀⠀⢰⡀⠸⣑⢤⣀⣠⡤⠎⠙⠲⠯⣭⡋⠛⠿⣿⣿⣟⣿",
|
||||
"⣿⣿⠃⠀⠀⢉⠟⠉⠛⢯⣛⠉⠛⠛⠛⠋⠙⠛⠋⠀⠀⠀⠀⠀⠀⣀⣠⣄⣀⣹",
|
||||
"⣿⡏⠈⠉⠉⢹⠉⠙⣭⣉⠉⠙⠛⠛⠿⠿⠿⠿⠶⠒⠒⣒⣚⣫⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⡇⠀⠀⠀⠈⢧⣀⡀⠉⠙⠓⠒⠒⠒⠒⠒⠛⢛⣉⣉⣭⣴⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⠋⠀⠀⠀⠀⠀⠀⠀⠉⠙⠛⠓⠖⠲⠒⠒⣛⣭⣿⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠠⠤⠤⠴⠶⠖⠚⠉⠉⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
}, {
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⠿⠋⠉⠉⠉⠉⠛⠿⠿⣿⣿⣿⣿⣿⡿⣟⠟⠉⠋⠉⠛⠛⠻⢿⢿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⠟⠛⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠹⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⡿⠟⠁⠀⢀⡤⠖⠒⠛⠛⠒⠒⠲⠤⣄⣀⠀⠀⠀⠀⢀⣀⣤⣤⣤⣤⣤⣤⣀⠀⠀⠀⠀⠙⢿⣿⣿⣿",
|
||||
"⣿⡿⠃⠀⠀⡔⣁⡤⠖⠒⠛⠛⠛⠛⠒⠒⠤⣉⠳⣆⣠⠞⢉⣁⡤⠤⠤⠤⣀⣀⡉⠛⢶⣄⠀⠀⠘⣿⣿⣿",
|
||||
"⣿⡅⠀⠀⢸⠏⠁⠀⠀⢀⣀⣤⣄⣀⠀⠀⠀⠈⠳⣼⡧⠞⠁⠀⠀⠀⠀⠀⠀⠈⠉⠓⠦⣙⢦⠀⠀⢰⣿⣿",
|
||||
"⡏⡇⠀⠀⡎⠀⠀⢀⣾⣟⢙⣿⠿⢿⣷⡄⠀⠀⠀⢸⠁⠀⠀⢠⣴⡾⣿⡿⢻⣷⣦⡀⠀⠈⢻⡇⠀⠐⠛⣿",
|
||||
"⠟⠁⠀⠀⢱⠀⠀⣾⣿⣿⣿⣧⣀⣠⣿⣿⠄⠀⠀⢸⠀⠀⢠⣿⣇⣀⣼⣷⣾⣿⣿⣧⠀⠀⢠⠃⠀⠈⠛⣿",
|
||||
"⠀⠀⠀⠀⠀⠱⣤⣿⣿⣿⣿⣿⣿⣿⣿⡟⠀⠀⣠⣾⣆⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⢀⡴⠃⠀⠀⠀⠀⠙",
|
||||
"⣰⠞⠛⠲⢄⡀⠀⠉⠛⠿⢿⣿⣿⣿⣿⠶⠖⠚⠁⠀⠙⠷⣌⣿⣿⣿⣿⣿⣿⣿⡿⠟⠋⠀⠀⠀⣀⡤⢤⡀",
|
||||
"⣿⠀⠀⠀⠀⠙⠢⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠉⠉⠉⠉⠀⠀⠀⠀⣠⠴⠛⠁⠀⠀⢻",
|
||||
"⠹⣇⠀⢳⣄⡀⠀⠈⠙⠦⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣠⠖⠋⠀⠀⣀⣤⠀⠀⡼",
|
||||
"⠀⠘⣦⠀⠹⣍⠒⠤⣀⡀⠀⠉⠓⠶⠤⣤⣄⣀⣀⣀⣀⣀⣀⣀⣤⠤⠴⠖⠛⠉⠀⣀⠤⠒⢉⡴⠁⢀⠞⠁",
|
||||
"⠄⠀⠈⠳⣄⠈⠓⢤⡀⠉⠁⠒⠤⢤⣀⡀⠀⠀⠉⠁⠀⠀⠀⠀⠀⢀⣀⡠⠤⠒⠉⢁⣠⠖⠁⢀⡴⠋⠀⢀",
|
||||
"⣯⣆⠀⠀⠈⠳⢤⣀⠙⠲⢤⣀⡀⠀⠀⠀⠈⠉⠉⠉⠉⠉⠉⠉⠉⠀⠀⢀⣀⠴⠒⠉⢀⣤⠞⠁⠀⠀⠠⣾",
|
||||
"⣿⣿⣧⣄⠀⠀⠀⠉⠓⠦⣄⣀⠉⠙⠒⠒⠲⠤⠤⠤⠤⠤⠤⠔⠒⠒⠋⠉⣀⣠⠴⠚⠉⠀⠀⠀⠀⢀⣾⣿",
|
||||
"⣿⣿⣿⣿⣧⡦⣶⠤⣤⣀⡀⠈⠙⠓⠒⠶⠤⠤⠤⣤⠤⠤⠤⠴⠶⠖⠛⠋⠁⠀⠀⢀⣀⠤⠶⣶⣴⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⠃⠀⠀⠀⠉⠉⠁⠒⠒⠒⠶⠦⠤⠤⠤⠤⠤⠤⠤⠴⠶⠖⠒⠊⠉⠉⠀⠀⠀⢻⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⡿⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⣶⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡆⠀⠀⠀⠀⢸⣿⣿⣿⣿",
|
||||
}, {
|
||||
"⠄⠰⠛⠋⢉⣡⣤⣄⡉⠓⢦⣀⠙⠉⠡⠔⠒⠛⠛⠛⠶⢶⣄⠘⢿⣷⣤⡈⠻⣧",
|
||||
"⢀⡔⠄⠄⠄⠙⣿⣿⣿⣷⣤⠉⠁⡀⠐⠒⢿⣿⣿⣿⣶⣄⡈⠳⢄⣹⣿⣿⣾⣿",
|
||||
"⣼⠁⢠⡄⠄⠄⣿⣿⣿⣿⡟⠄⡐⠁⡀⠄⠈⣿⣿⣿⣿⣿⣷⣤⡈⠻⣿⣿⣿⣿",
|
||||
"⢻⡀⠈⠄⠄⣀⣿⣿⣿⡿⠃⠄⡇⠈⠛⠄⠄⣿⣿⣿⣿⣿⣿⠟⠋⣠⣶⣿⣿⣿",
|
||||
"⠄⢉⡓⠚⠛⠛⠋⣉⣩⣤⣤⣀⠑⠤⣤⣤⣾⣿⣿⣿⡿⠛⢁⣤⣾⣿⣿⣿⣿⣿",
|
||||
"⠄⠈⠙⠛⠋⣭⣭⣶⣾⣿⣿⣿⣷⣦⢠⡍⠉⠉⢠⣤⣴⠚⢩⣴⣿⣿⣿⣿⣿⣿",
|
||||
"⠄⢴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣭⣭⣭⣥⣴⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⠄⣴⣶⡶⠶⠶⠶⠶⠶⠶⠶⠶⣮⣭⣝⣛⠿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⠄⠙⣿⡄⠄⠄⢀⡤⠬⢭⣝⣒⢂⠭⣉⠻⠿⣷⣶⣦⣭⡛⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⠄⠄⠸⣿⡇⠄⠸⣎⣁⣾⠿⠉⢀⠇⣸⣿⣿⢆⡉⠹⣿⣿⢸⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⠄⠄⠄⣿⡇⠄⢀⡶⠶⠶⠾⠿⠮⠭⠭⢭⣥⣿⣿⣷⢸⣿⢸⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⠄⠄⠄⣿⡇⠄⠈⣷⠄⠄⠄⣭⣙⣹⢙⣰⡎⣿⢏⣡⣾⢏⣾⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⠄⠄⢰⣿⡇⠄⠄⢿⠄⠄⠈⣿⠉⠉⣻⣿⡷⣰⣿⡿⣡⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⠄⠄⢸⣿⡇⠄⠄⠘⠿⠤⠤⠿⠿⠿⢤⣤⣤⡿⣃⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⠄⠄⠘⢿⣷⣤⣄⣀⣀⣀⣀⣀⣠⣴⣾⡿⢋⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋",
|
||||
}, {
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⠟⠋⠁⠄⠄⠄⠄⠄⠄⠄⠄⠙⢿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⡟⠁⠄⠄⠄⠄⣠⣤⣴⣶⣶⣶⣶⣤⡀⠈⠙⢿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⡟⠄⠄⠄⠄⠄⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣆⠄⠈⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⠁⠄⠄⠄⢀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄⢺⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⡄⠄⠄⠄⠙⠻⠿⣿⣿⣿⣿⠿⠿⠛⠛⠻⣿⡄⠄⣾⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⡇⠄⠄⠁ ⠄⢹⣿⡗⠄ ⢄⡀⣾⢀⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⡇⠘⠄⠄⠄⢀⡀⠄⣿⣿⣷⣤⣤⣾⣿⣿⣿⣧⢸⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⡇⠄⣰⣿⡿⠟⠃⠄⣿⣿⣿⣿⣿⡛⠿⢿⣿⣷⣾⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⡄⠈⠁⠄⠄⠄⠄⠻⠿⢛⣿⣿⠿⠂⠄⢹⢹⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⡐⠐⠄⠄⣠⣀⣀⣚⣯⣵⣶⠆⣰⠄⠞⣾⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣷⡄⠄⠄⠈⠛⠿⠿⠿⣻⡏⢠⣿⣎⣾⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⡿⠟⠛⠄⠄⠄⠄⠙⣛⣿⣿⣵⣿⡿⢹⡟⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⠿⠿⠋⠉⠄⠄⠄⠄⠄⠄⠄⣀⣠⣾⣿⣿⣿⡟⠁⠹⡇⣸⣿⣿⣿⣿⣿⣿",
|
||||
"⠁⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠙⠿⠿⠛⠋⠄⣸⣦⣠⣿⣿⣿⣿⣿⣿⣿",
|
||||
}, {
|
||||
"⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠔⠊⠉⠉⠉⠉⠉⠐⢦⡄⠄⠄⠄⠄⠄⠄⠄⠄",
|
||||
"⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⡐⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠘⣆⠄⠄⠄⠄⠄⠄⠄",
|
||||
"⠄⠄⠄⠄⠄⠄⠄⠄⢀⠖⠁⢀⣾⣆⡰⠶⡷⠶⣀⣾⣄⠄⠈⣆⠄⠄⠄⠄⠄⠄",
|
||||
"⠄⠄⡄⠄⠠⢤⣤⠔⠃⠄⠄⠄⠄⠘⢧⣤⢣⣤⠋⠄⠄⠄⠄⠈⠣⢤⡠⠄⠄⠄",
|
||||
"⠄⠄⠘⠦⡀⠄⠄⠄⠄⠄⠄⠄⢻⡟⠻⣿⣿⡿⠻⡟⠃⠄⠄⠄⠄⠄⠄⠄⡀⠞",
|
||||
"⠄⠄⠄⠄⠉⢢⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠁⠄⠄⠄⠄⠄⠄⠄⠄⠄⡠⠊⠄⠄",
|
||||
"⠄⠄⠄⠄⠄⠄⠈⠢⣤⣤⣴⣶⡶⢶⣶⣶⣶⣆⢒⣤⣤⠄⢠⠤⠤⠚⠄⠄⠄⠄",
|
||||
"⠄⠄⠄⠄⠄⢀⣠⣾⣿⣿⣿⣿⣎⢻⣿⠁⡀⣿⡎⣿⣿⣀⣃⠧⡀⠄⠄⠄⠄⠄",
|
||||
"⠄⠄⣠⣶⣾⣿⣿⣿⣿⣿⣿⣿⡹⡼⢿⣠⠵⠿⣑⢿⣟⣛⠤⣩⡁⠄⠄⠄⠄⠄",
|
||||
"⢠⣿⣿⣿⢏⡜⡻⣷⡽⣿⣷⣭⣿⣮⣽⣯⣽⣿⣿⣷⣤⣾⡿⠟⠃⠄⠄⠄⠄⠄",
|
||||
"⠻⣿⣿⣿⣌⢷⣙⠾⠯⣒⡿⠭⣝⣛⣛⣛⣛⠛⠭⠭⠟⢣⠌⠄⠄⠄⠄⠄⠄⠄",
|
||||
"⠄⠻⣿⣿⣿⣮⣟⠷⣦⣤⣝⣛⠲⠶⠶⠒⢂⣀⠠⠄⠐⠁⠄⠄⠄⠄⠄⠄⠄⠄",
|
||||
"⠄⠄⠄⠙⠿⠿⢿⣿⡷⠶⠭⠭⠭⠵⠶⠒⠋⠉⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄",
|
||||
}, {
|
||||
"⠀⠀⠉⠛⠛⠻⢿⣿⣿⣿⣿⣿⣿⣶⣶⣶⣶⣶⣶⣶⣶⣦⣤⣄⡀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠚⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡄⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠘⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⢿⣿⣿⣿⠟⠛⠋⠉⠉⠉⠙⣿⣿⣿⣿⣶⣀⠀",
|
||||
"⠀⠀⠀⠰⠶⠿⢰⣿⣶⣦⠀⠀⢸⣿⣿⣦⡄⠀⢀⣴⣾⣿⣿⣿⡿⠿⣿⣿⣿⠇",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠻⠿⠃⠀⠀⠀⣿⣿⣿⣧⠀⠀⠉⣉⣉⣩⣥⡶⠀⠀⠀⣿⡇",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠻⣿⣿⣿⣿⠀⠀⣻⣿⣿⣿⠃⠀⠀⢠⣿⠃",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠁⣴⣿⣿⣿⠟⠃⡀⠀⢠⣿⠟⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣤⣄⠀⣤⣤⣤⢰⣿⡦⣿⠀⣿⣿⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠛⠛⠛⠀⠛⠛⠋⠈⠉⠀⠀⢀⣿⣿⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢴⡆⣤⣤⣄⡄⢀⣀⣀⢀⣀⢀⡄⠀⢨⣿⣿⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠃⣿⣿⣿⠇⣿⣿⡋⣿⠏⠛⣃⣤⣾⣿⣿⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣤⣤⣄⣠⣤⣠⣴⣶⣾⣿⣿⣿⣿⣿⣿⡀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠺⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠁",
|
||||
}, {
|
||||
"⠄⠄⠄⠄⠄⠄⠄⠄⢀⢀⣴⣿⣿⣷⣶⣤⣄⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄",
|
||||
"⠄⠄⠄⠄⠄⢀⣤⡶⠿⢘⣥⠢⠐⠗⣹⣿⣿⣿⣤⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄",
|
||||
"⠄⠄⠄⠄⠄⠘⣅⣂⠹⣪⣭⣥⣶⣿⡿⠿⢭⡻⣿⣷⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄",
|
||||
"⠄⠄⢀⣤⣤⡀⠄⣭⣧⣾⡿⠿⡋⢅⡪⠅⣢⣿⡿⠟⢁⣶⣶⣶⣤⣠⣄⡀⠄⠄",
|
||||
"⢠⣴⣿⣿⣟⣤⣤⡉⠭⣑⡨⢔⣊⣵⣶⡿⠛⢉⣴⡾⠿⠿⣿⣿⣿⣎⠻⣿⣦⡀",
|
||||
"⣼⣧⢻⣿⣿⣿⡈⣿⢰⢰⠌⣻⣭⣭⣶⡷⣠⡤⠶⠾⠛⢓⣒⣮⣝⡻⠸⣼⣿⣿",
|
||||
"⣿⣝⢶⣿⣿⣿⡃⠄⢏⣸⡄⢻⡿⣿⣟⣵⠶⢛⣛⣛⣛⡒⠦⣝⠿⣿⣦⡙⣿⡿",
|
||||
"⠻⣿⣿⣿⣿⣿⣷⣦⣜⡿⣿⣄⢓⡘⠃⣴⣾⣿⣿⣿⣿⢹⣯⣶⣅⢺⣿⡇⠻⠁",
|
||||
"⠄⠈⠛⠻⣿⣿⣿⣿⣿⣿⣿⡾⣿⣷⣾⣝⣻⢿⣿⣿⣿⠸⣛⣿⡟⣢⢻⣿⠄⠄",
|
||||
"⠄⠄⠄⠄⠘⢿⣿⣿⣿⣿⣿⣷⣦⣭⣿⣿⣿⣦⣵⡾⢃⣾⣿⣿⢱⡿⣸⠋⠄⠄",
|
||||
"⠄⠄⠄⠄⠄⠄⢻⣿⢿⣿⣿⠻⣿⣿⡿⠿⣟⣛⣉⣰⣿⣿⣿⠇⠛⠃⠄⠄⠄⠄",
|
||||
"⠄⠄⠄⠄⠄⠄⠄⠉⠲⣝⣫⣓⡙⣿⣜⣛⣛⣛⣻⡯⠹⠛⠁⠄⠄⠄⠄⠄⠄⠄",
|
||||
"⠄⠄⠄⠄⠄⠄⠄⠄⠄⠈⠙⠛⢻⡈⢿⡿⠟⠛⠁⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄",
|
||||
}, {
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⣿⣿⣿⣿⣿⡿⠟⠋⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⡿⣿⣿⣾⣿⠿⠟⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣽⣿⣿⠏⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣩⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⡟⣽⣿⡏⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠻⣿⣿⣾⣿⣿⣿⣿",
|
||||
"⣿⡿⢃⣾⡿⠏⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣿⣿⣿⣿⣿",
|
||||
"⣿⣇⣾⣿⠅⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢽⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⡗⠀⠀⠀⠀⠀⠀⢀⣸⣿⣿⣿⣶⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣶⣿⣿⣿⣧⣤⣄⡀⠀⠀⠀⠀⠀⠘⣿⣿⡿⢿",
|
||||
"⣿⣿⣿⠀⠀⠀⠀⣠⣴⡿⠟⠛⠛⠿⢿⣿⣿⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⣿⣿⣿⡿⠛⠉⠉⠉⠙⠻⣷⣄⠀⠀⠀⠀⣻⣿⡆⢸",
|
||||
"⣰⣿⡷⠀⠀⠀⣼⠟⠁⠀⢀⣀⡀⠀⠀⠙⢿⣿⣿⣿⡄⠀⠀⠀⠀⠀⠀⢠⣿⣿⡟⣻⠏⠀⠀⢀⣤⣤⡀⠀⠈⢻⡄⠀⠀⠀⢸⣿⣧⢠",
|
||||
"⢻⣿⠇⠀⠀⢰⡟⠀⠀⢠⣿⣿⣿⡆⠀⠀⠘⡧⠙⢿⣿⠀⠀⠀⠀⠀⠀⣾⡿⠋⠀⣿⠀⠀⠀⣿⣿⣿⡿⠀⠀⠈⡗⠀⠀⠀⠘⣿⣿⢸",
|
||||
"⣼⣿⡆⠀⠀⠀⣧⠀⠀⠀⠙⠿⠟⠁⠀⠀⣸⣇⡀⠀⠁⠀⠀⠀⠀⠀⠀⠈⠀⣠⣶⣿⡄⠀⠀⠉⠛⠛⠁⠀⠀⣸⠇⠀⠀⠀⢠⣿⣿⢸",
|
||||
"⡿⣿⣷⠀⠀⠀⠘⢷⣀⠀⠀⠀⠀⠀⢀⡴⠋⠻⣿⣶⣄⠀⠀⠀⠀⠀⣀⣴⣾⠟⠁⠀⠙⣦⡀⠀⠀⠀⠀⣀⡴⠋⠀⠀⠀⠀⢨⣿⡟⢸",
|
||||
"⣿⣿⣿⣷⣧⣤⠤⠶⠿⠷⠶⢶⣶⣾⣯⣀⣀⣀⣈⣛⣿⣿⣶⣤⣤⣤⡟⠋⠁⠀⠀⠀⢠⣿⣿⣿⣶⣿⣿⣷⣶⣤⣤⣤⣼⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⡿⠛⠀⠀⠀⠀⠀⠀⢸⣿⠉⠉⠉⠉⠙⠛⠛⠛⠛⠛⠛⠛⠛⠀⠀⠀⠀⠀⠀⠘⠛⠈⠉⠉⣭⡍⠛⠛⠛⠛⠛⠛⠉⠻⣿⣿⣿",
|
||||
"⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⣦⣄⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣠⣤⣶⣿⣇⠀⠀⠀⠀⠀⠀⠀⠀⢹⣿⣿",
|
||||
"⣿⣿⡁⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⡀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿",
|
||||
"⣿⣿⣷⡄⠀⠀⠀⠀⠀⢀⣼⡿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠛⣿⣷⡀⠀⠀⠀⠀⠀⣠⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣶⣤⣤⣤⣶⣿⡟⠁⠀⠈⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠋⠀⠀⠈⠹⣿⣷⣶⣤⣶⣾⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⡄⠀⠀⠀⠀⠀⠉⠛⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠿⠛⠋⠀⠀⠀⠀⠀⢀⣠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⡀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠉⠉⠉⠉⠉⠀⠀⠀⠀⠀⠀⠀⢀⣤⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣤⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣠⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣶⣶⣶⣶⣶⣶⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
}, {
|
||||
"⣿⣿⣿⣿⣿⠿⠿⠛⠛⠻⠿⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⠃⣠⣴⣶⣾⣿⣿⣷⣶⣦⣤⣈⠙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⡇⢰⣿⣿⡿⠟⠛⠛⠛⠻⢿⣿⣿⣶⠀⠿⠿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⡇⢸⣿⡇⠀⠀⠀⠀⠀⣶⡀⠹⣿⣿⡇⢀⣶⣶⠈⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⠃⣼⣿⣷⣄⣀⠀⠀⠀⠛⠃⣀⣿⣿⣧⠀⣿⣿⡇⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⠀⣿⣿⣿⣿⣿⣿⣿⣶⣾⣿⣿⣿⣿⣿⠀⣿⣿⠃⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⣿⡟⠀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠐⠋⢀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣆⠀⠀⠀⠤⠄⠀⠀⠀⠀⠈⠉⠉⠙⠃⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⠇⠀⢠⡆⠀⠀⠐⣶⠀⢠⣦⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⠀⠀⣿⡇⠀⠀⠛⠛⠀⣠⡇⠀⠀⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⡇⠀⠀⣿⡟⠁⢰⡟⠀⠾⠿⠛⠀⠀⠛⠋⠉⠉⠉⠉⠉⠉⠉⠙⠛⠿⢿⣿⣿⣿",
|
||||
"⣿⣿⣿⣦⡀⠘⠀⠾⣿⣧⣤⣤⣶⡶⠀⠀⣿⣿⣿⣿⡀⢀⠉⠉⠁⢲⣦⣤⡄⢹⣿⣿",
|
||||
"⣿⣿⣉⠉⠁⢠⠀⠐⠀⠌⠙⠛⠛⠋⠀⠀⣈⣉⣁⣀⣄⠈⠛⠻⠿⠿⠿⠟⢁⣼⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣶⣶⣾⣶⣶⣶⣿⣿⣿⣿⣿⣷⣶⣶⣶⣶⣶⣶⣿⣿⣿⣿",
|
||||
}, {
|
||||
"⠄⠄⠄⠄⠄⢀⣴⣾⣿⣿⣿⣶⣶⣤⣄⡀⠄⢀⣤⣴⣶⣶⣶⣦⡀⠄⠄⠄⠄⠄",
|
||||
"⠄⠄⠄⠄⣰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⣾⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀⠄⠄⠄",
|
||||
"⠄⠄⢀⣼⣿⣿⠿⣛⣛⣛⣛⣛⠿⣿⣯⣼⣿⡿⠟⣛⣛⣛⣛⣛⠿⢿⣿⣄⠄⠄",
|
||||
"⠄⢠⣿⢿⡫⢞⣫⣥⣴⣶⣶⣦⣭⡲⣝⣟⡥⣚⣭⣥⣶⣶⣬⣭⣟⡳⣼⣻⣧⡀",
|
||||
"⠄⣿⠛⣮⠗⠉⠁⠐⠶⠄⠰⠶⠭⢉⣿⣿⣃⠉⠵⠶⠄⠰⠖⠂⠉⠓⢮⣟⠻⡇",
|
||||
"⢸⣿⣿⣁⣰⣿⡭⠵⠶⠟⣛⣉⠴⠿⣣⣇⡿⠶⣍⣑⠻⠷⠾⢭⣤⣷⣈⣹⣿⡇",
|
||||
"⠄⠻⣿⣟⣻⢯⣍⣛⣛⣿⢭⣐⣭⣿⣿⣿⣿⣧⣗⣨⢿⣛⣛⣛⣭⡿⣟⣿⡿⠄",
|
||||
"⠄⠄⣀⣍⡛⠿⠿⢿⣿⣿⣿⣿⠿⠿⣿⣿⣿⣟⠿⣿⣿⣿⣿⣿⣿⣿⡿⣛⠄⠄",
|
||||
"⠄⣾⣿⣿⣿⣿⣶⣶⣦⣬⣥⣴⣶⣿⣿⣿⣿⣿⣷⣬⣛⣛⣛⣛⣭⣭⣶⣿⣦⠄",
|
||||
"⠄⣿⡈⠿⠟⠁⣀⣤⣄⣀⣐⡲⠶⠶⠶⠶⠶⠶⠶⠶⠶⠶⠶⣶⠉⣿⢻⣿⣿⠄",
|
||||
"⢀⣈⣤⣾⣏⣿⣿⣿⣿⢛⡭⠭⠤⡘⠸⢸⠃⣿⡇⣿⡇⡿⢇⠜⣠⢧⠞⣽⣿⠄",
|
||||
"⣾⡿⢹⣿⡿⠉⣿⣿⡟⡜⣢⣭⡒⢉⢠⢸⡄⣭⡅⠗⣢⠖⣡⡞⣥⣾⣾⠟⠁⠄",
|
||||
"⣿⡇⣾⣿⡇⣴⣿⣿⣇⢶⣿⡷⠚⣬⣬⣬⣷⣶⡾⢛⣽⣾⣿⣿⡿⠛⠁⠄⠄⠄",
|
||||
"⢟⡇⠿⠿⠇⣛⣭⣭⣍⢰⢆⣺⢨⣭⣭⣭⣥⣶⣿⡿⠿⠟⠋⠉⠄⠄⠄⠄⠄⠄",
|
||||
"⠈⠛⠈⠿⠿⣙⣭⣥⣤⣤⣴⣾⡇⣛⣛⣛⣛⣩⣥⣴⣿⣿⣿⣷⣦⣤⣄⣀⠄⠄",
|
||||
}, {
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠿⠟⠛⠛⠛⠛⠛⠛⠛⡛⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠛⠛⠉⠁⠀⠀⠀⠀⠀⠀⠈⠒⠀⠀⠀⠈⠑⠂⠈⠙⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⡿⠛⠷⠤⣄⠈⠛⠦⣀⠀⠑⠂⠀⠀⠀⠀⠀⠐⠂⠀⠀⠀⠀⠀⠀⠙⠒⠤⣘⣯⡻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⡿⠓⠢⢤⣀⠀⠀⠙⢦⡀⠈⠓⢤⡀⠀⠀⠉⠐⠠⢀⠀⠀⠈⠐⠄⡀⠈⠢⡀⠀⠀⠹⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⡷⡶⠤⣄⡈⠳⣤⡀⠀⠙⠲⣄⡀⠈⠓⠤⣀⡀⠀⠀⠑⠂⠀⠀⠀⢀⡐⠀⣈⣁⣠⡀⡻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⡿⠉⠻⣷⣤⡙⢦⣤⣍⣓⣦⣰⣶⡽⣷⣶⡟⠛⠿⠿⠶⠟⠛⠛⠛⠛⠋⠉⠉⠋⠈⠉⠙⠉⠉⠛⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⠃⠀⠀⠀⠉⠛⢦⣙⡄⠀⠉⠉⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⠏⠀⢀⡀⠀⣀⣀⠀⠈⠏⠀⠀⠀⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀⢹⡄⠀⠀⠀⠀⠀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⡀⣦⣀⣤⣶⣒⣶⣤⣀⠀⠀⠀⠀⠀⠀⢿⠀⢀⣠⡶⠛⠉⠻⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⠙⠚⠛⣦⠤⡤⠬⡙⠓⠦⠀⠀⠀⠀⢸⡇⢿⡉⠀⠒⠢⡄⢹⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⠇⠀⠆⠀⣻⣛⣂⣤⠜⠀⠀⠀⠀⠀⠀⠘⣏⠳⣽⣤⡴⠦⡌⡄⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⠏⠀⡌⠀⠀⠈⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡏⠳⡄⢸⡇⠀⢀⠇⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⡟⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣴⡋⠹⣗⡙⠻⡇⠀⠈⣰⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⠁⠀⠀⠀⠀⠤⢄⠀⠀⠀⠀⠀⠀⠀⡜⢿⠀⠹⢦⡀⢨⡁⣇⢀⣼⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣦⣤⣤⣶⣤⣤⡨⠀⢰⠖⠒⢤⡀⡼⡇⠈⠳⡀⠀⠀⠀⠙⣿⡏⠘⠦⠤⠤⠤⠴⠶⠦⠴⠖⠒⠋⢙⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⡇⢠⡀⢨⡙⠦⢤⣸⠟⡆⢠⢻⠃⢷⠀⠀⠘⠦⠀⠀⠁⠈⢻⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣷⣦⣵⣄⠉⡀⠀⠈⢿⠁⢴⡾⠀⠈⢧⡀⠀⠀⠀⠀⠀⠈⢹⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣷⣿⣿⣿⣿⡟⠚⣿⠿⠶⠶⠶⣦⠃⡴⠶⠶⠶⠶⣶⠾⠷⠶⠶⠶⠶⠶⠶⣦⠀⣠⡴⠶⠛⠛⠛⠻⠿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⡟⠉⠁⠀⣿⠉⠄⢻⡀⠀⠀⠀⢸⣿⡇⠀⠀⠀⢀⣿⠀⠀⠀⠀⠀⠀⠀⠀⣿⣼⠋⠀⠀⠀⠀⠀⠀⠀⠀⠙⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⢯⠇⠀⠀⠀⣼⠀⠈⢸⣧⠀⠀⠀⠈⣿⠀⠀⠀⠀⣼⣿⠀⠀⠀⠀⠀⣀⣀⣀⣿⡏⠀⠀⠀⠀⣴⣆⠀⠀⠀⠀⢻⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⡾⢀⠀⠀⢠⠏⠀⠀⢀⣿⡄⠀⠀⠀⠟⠀⠀⠀⢰⣏⣽⠀⠀⠀⠀⠀⣿⠀⠀⠸⡇⠀⠀⠀⠀⠻⣿⣀⣀⣀⣀⣼⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣄⣸⣤⣴⠋⠄⠀⡄⠈⡻⣧⠀⠀⠀⠀⠀⠀⠀⣾⠁⢸⠀⠀⠀⠀⠀⠛⠛⠛⣷⣷⡀⠀⠀⠀⠀⠈⠛⢿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⡇⠙⠋⠈⣷⠀⠀⠀⠈⠀⠁⢹⡄⠀⠀⠀⠀⠀⢸⠇⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣷⣄⡀⠀⠀⠀⠀⠀⠈⠻⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⡀⡀⠄⠀⠀⠆⠀⠀⡀⢀⣬⣷⠀⠀⠀⠀⢀⡟⠀⠀⢸⠀⠀⠀⠀⠀⣴⣶⣶⣿⣿⣿⣿⣿⣶⣄⠀⠀⠀⠀⠀⢹⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣄⣠⣄⣀⣀⣠⣿⣿⣿⣿⠀⠀⠀⠀⢸⡇⣀⣠⣼⠀⠀⠀⠀⠀⣿⣿⣿⣿⡇⠀⠀⠀⠀⣿⣷⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⢸⣿⣿⣿⣿⠀⠀⠀⠀⠀⠛⠛⠛⢻⣷⠀⠀⠀⠀⢻⡿⠀⠀⠀⠀⢸⡟⠛⠛⠛⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⢸⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣄⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⡇⠀⠀⠀⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣤⣤⣤⣼⣿⣿⣿⣿⣦⣤⣤⣤⣤⣤⣤⣤⣼⣿⣿⣷⣦⣤⣤⣤⣤⣤⣶⣿⣿⣷⣤⣤⣤⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
}, {
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⡖⠋⠉⠉⠙⢲⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⡿⠀⠀⠀⠀⠀⠀⠃⠀⣤⡄⠀⠠⣤⠀⠀⢤⡄⡠⠤⣤⡀⡠⠤⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣇⠀⠀⠀⠀⠀⠀⠀⠀⣿⡇⠀⠀⣿⠀⠀⢸⡏⠀⠀⢸⡇⠀⠀⢹⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⣄⠀⠀⠀⠀⢀⠄⠀⢿⡇⠀⢀⣿⡀⠀⢸⡇⠀⠀⢸⡇⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠓⠒⠒⠊⠁⠀⠀⠈⠛⠒⠁⠛⠃⠐⠚⠛⠂⠐⠚⠓⠂⠐⠛⠓⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
}, {
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣤⣴⣶⣿⠿⣿⣿⠿⠿⠿⠿⠿⢿⣿⣷⣶⣶⣤⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣶⣿⣿⣿⣿⣭⣤⣤⠤⠤⢤⣀⣀⣀⣀⣀⣀⣀⡈⠉⢙⣿⣿⣿⣶⣤⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⢀⣤⣾⠟⠋⠀⠀⣀⣤⣴⣿⡿⠿⢲⣤⣤⣄⣀⣀⠀⡀⠀⠀⣠⡾⠿⠟⠛⠛⠿⢿⣿⣿⣶⣤⣤⣀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⣰⣾⠟⠁⢀⣤⣾⣿⠟⠋⣉⣀⣀⣀⣈⣉⣩⠭⠭⠭⠭⠭⠭⠭⠤⠤⠀⠀⠀⣠⣶⠿⠿⠿⠿⣿⣿⣿⣿⣶⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⢠⣾⡟⠁⣠⣾⣿⡿⠋⠀⣠⡾⠛⠋⠉⠉⠙⠛⠿⣦⡀⠀⠀⠀⠀⠀⠀⠀⢀⣴⡿⠋⠀⠀⠀⣠⣾⣿⡟⢻⣿⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⢠⣿⠏⠠⠞⠛⠛⠋⠀⢀⣾⠋⠀⠀⠀⠀⠀⠀⠀⠀⠸⣷⠀⠀⠀⠀⠀⠀⠀⣾⠏⠀⠀⠀⠀⠀⠙⠻⠿⠁⢸⣿⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⣾⡿⠀⠀⠀⠀⠀⠀⠀⣸⡏⠀⣀⣤⣤⡀⠀⠀⠀⠀⠀⣿⡄⠀⠀⠀⠀⠀⠠⣏⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⢠⣿⠃⠀⠀⠀⠀⠀⢰⣶⣿⡇⠀⣿⣿⣿⡿⠂⠀⠀⠀⠀⣿⠃⠀⠀⠀⠀⠀⠀⢿⣄⠀⠀⠀⠀⠀⠀⠀⣀⣼⠏⣿⡇⠀⠀⠀⠀",
|
||||
"⠀⠀⢸⣿⠀⠀⠀⠀⠀⠚⠛⢛⣿⣿⣤⡙⠛⠋⠀⠀⠀⠀⢀⣼⠟⠀⠀⠀⠀⠀⠀⠀⠈⠙⠛⠳⣶⣶⠿⠛⠛⠛⠿⣦⣿⣿⠀⠀⠀⠀",
|
||||
"⠀⠀⣾⡇⠀⠀⠀⠀⠀⠀⠀⠞⠉⠀⠈⠛⠿⠶⣦⣤⣴⡾⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣴⠟⠁⢀⣀⣤⣀⡀⠀⠙⢿⣧⠀⠀⠀",
|
||||
"⠀⠀⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⢤⣤⣤⣤⣤⡤⠴⠖⢻⣿⠃⢀⣴⡿⠉⠉⠉⠻⣦⠀⠀⢿⣧⠀⠀",
|
||||
"⠀⠀⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣤⣤⣤⣤⣤⣤⠤⠖⠀⣠⣿⠃⠀⣼⡿⣿⡟⢲⡶⣤⣿⣆⠀⢸⣿⠀⠀",
|
||||
"⠀⠀⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠻⠿⢯⣥⣤⣤⣤⠖⠀⣿⡏⠀⢰⣿⣀⣿⣀⣸⣀⣿⣉⣿⠀⢸⣿⠀⠀",
|
||||
"⠀⠀⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⣤⣤⣤⣤⣤⣄⣀⣀⠀⣿⡇⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⣿⠂⣼⡇⠀⠀",
|
||||
"⠀⠀⢸⣇⠀⢠⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣧⠀⢸⡇⠀⠀⠀⠀⠀⠀⢰⡿⢠⣿⠁⠀⠀",
|
||||
"⠀⠀⠘⣿⡀⠈⣧⠀⠸⡆⠀⢤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⠀⢸⡇⠀⠀⠀⠀⠀⢠⣿⠁⣾⡇⠀⠀⠀",
|
||||
"⠀⠀⠀⢸⣧⠀⠸⣧⠀⣷⠀⠀⠳⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⠀⢸⡇⠀⠀⠀⠀⠀⣾⡇⠀⣿⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⢿⡄⠀⠘⣷⣻⡇⠀⠀⠙⢦⠀⠀⠀⠀⠀⠤⣤⣤⣤⣀⠀⠀⠀⠀⠀⠀⠀⢸⣿⠀⣾⡇⠀⠀⠀⠀⠀⣿⡇⠀⣿⡇⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠘⣿⡀⠀⠘⣿⣿⡀⠀⠀⠈⣷⠀⠀⠀⠀⠀⠐⠒⠾⠿⣷⣦⡀⠀⠀⠀⠀⣸⡏⢀⣿⠀⠀⠀⠀⠀⠀⢿⡇⠀⠸⣷⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠹⣧⠀⠀⢸⣿⣷⠀⠀⠀⢻⠀⠀⠀⠀⠀⠀⠐⠲⢶⣬⡙⠻⣦⠀⠀⢀⡿⠁⢸⡟⠉⠙⠓⠲⣄⠀⢸⣷⠀⠀⡇⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⢹⣇⠀⠀⢻⡟⣧⠀⠀⠸⣄⠀⠀⠀⠀⢀⣀⣀⠀⠈⠻⢦⣄⠀⠀⣾⡇⠀⣿⡇⠀⠀⠀⠀⠈⢷⡀⣿⠀⠀⡇⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⢿⣆⠀⠈⢷⡘⣧⠀⠀⠈⠳⣄⠀⠀⠀⠉⠉⠛⠲⣦⡀⠙⠷⠀⣿⠀⠀⣿⠶⠶⡶⠶⡶⢶⠶⢿⣿⠀⠀⡇⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠈⢿⣆⠀⠀⠻⣿⡷⣤⣀⠀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠙⠷⣄⠀⣿⠀⠀⢿⣧⣸⣧⣤⡇⢸⣆⣼⡏⠀⢀⡇⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣧⡀⠀⠈⠳⣄⠉⠓⢦⣀⠈⠻⢦⡀⠀⠀⠀⠀⠀⠈⢷⣿⠀⠀⠘⣿⣅⠀⠈⠉⢙⣻⡟⠀⠀⣼⡇⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣦⡀⠀⠈⠙⠶⣤⣽⣿⣦⣄⡀⠀⠀⠀⠀⠀⠀⠀⢿⣇⠀⠀⠈⠙⠻⠿⠿⠟⠋⠀⠀⣼⡿⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠻⢷⣦⣀⠀⠀⠈⠙⠻⠿⢿⣿⣶⣶⡶⠶⠶⣤⣼⣿⣷⣄⣀⠀⠀⠀⠀⢀⣀⣤⡾⠋⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠿⣶⣤⣄⡀⠀⠀⠈⠉⠙⠛⠓⠶⠶⠶⠆⠀⠉⠛⠛⢻⣾⣿⡿⠟⠋⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠿⢿⣶⣦⣄⡀⠀⠀⠀⠀⠀⢀⣶⣶⣶⡶⠟⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠙⠻⢷⣶⣶⣶⣶⠾⠟⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
}, {
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣤⣤⣤⣤⣤⣶⣦⣤⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⡿⠛⠉⠙⠛⠛⠛⠛⠻⢿⣿⣷⣤⡀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⠋⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⠈⢻⣿⣿⡄⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⣸⣿⡏⠀⠀⠀⣠⣶⣾⣿⣿⣿⠿⠿⠿⢿⣿⣿⣿⣄⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⣿⣿⠁⠀⠀⢰⣿⣿⣯⠁⠀⠀⠀⠀⠀⠀⠀⠈⠙⢿⣷⡄⠀",
|
||||
"⠀⠀⣀⣤⣴⣶⣶⣿⡟⠀⠀⠀⢸⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀⣿⣷⠀ ",
|
||||
"⠀⢰⣿⡟⠋⠉⣹⣿⡇⠀⠀⠀⠘⣿⣿⣿⣿⣷⣦⣤⣤⣤⣶⣶⣶⣶⣿⣿⣿⠀",
|
||||
"⠀⢸⣿⡇⠀⠀⣿⣿⡇⠀⠀⠀⠀⠹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠃⠀",
|
||||
"⠀⣸⣿⡇⠀⠀⣿⣿⡇⠀⠀⠀⠀⠀⠉⠻⠿⣿⣿⣿⣿⡿⠿⠿⠛⢻⣿⡇⠀⠀",
|
||||
"⠀⣿⣿⠁⠀⠀⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣧⠀⠀",
|
||||
"⠀⣿⣿⠀⠀⠀⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⠀⠀",
|
||||
"⠀⣿⣿⠀⠀⠀⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⠀⠀",
|
||||
"⠀⢿⣿⡆⠀⠀⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⡇⠀⠀",
|
||||
"⠀⠸⣿⣧⡀⠀⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⠃⠀⠀",
|
||||
"⠀⠀⠛⢿⣿⣿⣿⣿⣇⠀⠀⠀⠀⠀⣰⣿⣿⣷⣶⣶⣶⣶⠶⠀⢠⣿⣿⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⣿⣿⠀⠀⠀⠀⠀⣿⣿⡇⠀⣽⣿⡏⠁⠀⠀⢸⣿⡇⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⣿⣿⠀⠀⠀⠀⠀⣿⣿⡇⠀⢹⣿⡆⠀⠀⠀⣸⣿⠇⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⢿⣿⣦⣄⣀⣠⣴⣿⣿⠁⠀⠈⠻⣿⣿⣿⣿⡿⠏⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠈⠛⠻⠿⠿⠿⠿⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
}, {
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣴⣆⣠⣤⠀⠀⠀⠀⠀⠀⠀ ",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣻⣿⣯⣘⠹⣧⣤⡀⠀⠀⠀⠀⠀ ",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠛⠿⢿⣿⣷⣾⣯⠉⠀⠀⠀⠀⠀⠀ ",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⣿⠜⣿⡍⠀⠀⠀⠀⠀⠀⠀ ",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⠁⠀⠘⣿⣆⠀⠀⠀⠀⠀⠀ ",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⡟⠃⡄⠀⠘⢿⣆⠀⠀⠀⠀⠀ ",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⣿⣁⣋⣈ ⣤⣮⣿⣧⡀⠀ ",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣤⣤⣤⣤⣤⣶⣦⣤⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⡿⠛⠉⠙⠛⠛⠛⠛⠻⢿⣿⣷⣤⡀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⠋⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⠈⢻⣿⣿⡄⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⣸⣿⡏⠀⠀⠀⣠⣶⣾⣿⣿⣿⠿⠿⠿⢿⣿⣿⣿⣄⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⣿⣿⠁⠀⠀⢰⣿⣿⣯⠁⠀⠀⠀⠀⠀⠀⠀⠈⠙⢿⣷⡄⠀",
|
||||
"⠀⠀⣀⣤⣴⣶⣶⣿⡟⠀⠀⠀⢸⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣷⠀",
|
||||
"⠀⢰⣿⡟⠋⠉⣹⣿⡇⠀⠀⠀⠘⣿⣿⣿⣿⣷⣦⣤⣤⣤⣶⣶⣶⣶⣿⣿⣿⠀",
|
||||
"⠀⢸⣿⡇⠀⠀⣿⣿⡇⠀⠀⠀⠀⠹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠃⠀",
|
||||
"⠀⣸⣿⡇⠀⠀⣿⣿⡇⠀⠀⠀⠀⠀⠉⠻⠿⣿⣿⣿⣿⡿⠿⠿⠛⢻⣿⡇⠀⠀",
|
||||
"⠀⣿⣿⠁⠀⠀⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣧⠀⠀",
|
||||
"⠀⣿⣿⠀⠀⠀⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⠀⠀",
|
||||
"⠀⣿⣿⠀⠀⠀⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⠀⠀",
|
||||
"⠀⢿⣿⡆⠀⠀⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⡇⠀⠀",
|
||||
"⠀⠸⣿⣧⡀⠀⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⠃⠀⠀",
|
||||
"⠀⠀⠛⢿⣿⣿⣿⣿⣇⠀⠀⠀⠀⠀⣰⣿⣿⣷⣶⣶⣶⣶⠶⠀⢠⣿⣿⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⣿⣿⠀⠀⠀⠀⠀⣿⣿⡇⠀⣽⣿⡏⠁⠀⠀⢸⣿⡇⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⣿⣿⠀⠀⠀⠀⠀⣿⣿⡇⠀⢹⣿⡆⠀⠀⠀⣸⣿⠇⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⢿⣿⣦⣄⣀⣠⣴⣿⣿⠁⠀⠈⠻⣿⣿⣿⣿⡿⠏⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠈⠛⠻⠿⠿⠿⠿⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
}, {
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠋⣵⣶⣬⣉⡻⠿⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⠿⠿⠛⣃⣸⣿⣿⣿⣿⣿⣿⣷⣦⢸⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⢡⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣭⣙⠿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⡿⠿⠘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⢸⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⠋⣴⣾⣿⣿⣿⡟⠁⠄⠙⣿⣿⣿⣿⠁⠄⠈⣿⣿⣿⣿⣈⠛⢿⣿⣿",
|
||||
"⣿⣿⣇⢸⣿⣿⣿⣿⣿⣿⣦⣤⣾⣿⣿⣿⣿⣦⣤⣴⣿⣿⣿⣿⣿⣷⡄⢿⣿",
|
||||
"⣿⠟⣋⣠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢸⣿",
|
||||
"⢁⣾⣿⣿⣿⣿⣿⡉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⣹⣿⣿⣿⣦⠙",
|
||||
"⣾⣿⣿⣿⣿⣿⣿⣿⣦⣄⣤⣶⣿⣿⣿⣿⣿⣿⣷⣦⣄⣤⣾⣿⣿⣿⣿⣿⣧",
|
||||
"⠘⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏",
|
||||
"⣷⣦⣙⠛⠿⢿⣿⣿⡿⠿⠿⠟⢛⣛⣛⡛⠻⠿⠿⠿⣿⣿⣿⣿⠿⠟⢛⣡⣾",
|
||||
}, {
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁⣠⣤⣤⣤⣤⣤⣀⣀⠉⠻⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠄⣾⣬⣽⣿⣿⣿⣿⡿⢿⣿⣆⠈⢻⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⡿⢀⣞⡉⢩⣙⣿⡿⠉⠄⣠⣤⠤⠉⠄⠄⢿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⠁⣼⣿⣿⣯⣿⣿⠁⢰⣾⣦⡤⠄⢀⣶⡀⠸⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⡏⢀⣿⣿⣿⣿⣿⠟⠁⠄⠈⢿⣿⣿⣿⣿⡇⠄⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⠇⢸⣿⣿⡟⠛⠃⡠⠄⠄⠄⠈⣿⣿⣿⣿⡇⠄⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⠄⣿⣿⣿⣶⣾⣿⣿⣿⣤⣤⣄⣘⣿⣿⠁⡀⠄⢻⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⡇⢰⣿⣿⣿⣿⣿⣏⣉⣽⣿⣿⣿⣿⣿⣿⣿⣿⠄⢸⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⠄⣼⣿⣁⣸⣿⣿⣿⣿⣿⡿⠟⠉⠙⠋⠹⠟⠁⠄⢸⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⡏⢀⣿⣿⣿⣿⠋⢠⣤⣤⣤⣤⠈⢿⣿⣷⣦⣄⠄⠄⢸⣿⣿⣿",
|
||||
"⣿⠋⣀⣤⣄⣠⣼⣿⣿⣿⣿⡀⢹⣿⣿⣿⣿⠄⢸⣿⣿⣿⣿⣿⠄⢸⣿⣿⣿",
|
||||
"⣧⠄⢿⣿⣿⣿⣿⣿⣿⣿⡿⠃⢸⠿⠛⠉⣁⣠⣿⣿⣿⣿⣿⣿⠄⣼⣿⣿⣿",
|
||||
"⣿⣷⣄⣉⠉⠉⢉⣉⣉⣁⣤⣾⡏⠄⣾⣿⣿⣿⣿⣿⣿⣿⣿⡟⠄⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣤⣈⠙⠛⠛⠟⠛⠛⢉⣁⣤⣾⣿⣿⣿⣿",
|
||||
}, {
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠛⠛⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠘⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠛⣿⠀⠀⣄⣀⣈⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠀⢀⣤⣿⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⢿⣿⡿⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⡀⠀⠉⠀⢀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣟⡛⠛⣻⣛⡏⢹⣿⣿⣛⠛⣛⣿⠿⢿⣿⠉⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⣿⠀⡇⢈⠰⣿⣿⠀⣿⠀⣶⡆⢹⠀⡁⢾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⣤⣿⣤⣧⣼⣦⣼⣿⣤⣿⣦⣤⣴⣿⣤⣷⣤⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
}, {
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡀⠤⠲⠦⠉⠉⠉⠏⠉⠒⢄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡠⠲⠃⢀⣤⠀⠀⠀⠲⠂⠀⠠⠆⠀⠙⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⢀⡔⠁⣤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⢀⠊⠁⠀⢁⡴⠚⠉⣉⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⠠⠤⠔⠒⡄⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⡆⢰⠆⠀⠋⣠⠔⠉⠁⣀⡠⠄⠒⠂⠀⠀⠀⠀⠀⠀⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠔⠊⠁⠀⠀⠀⠀⠀⣠⡴⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⢠⡆⠀⠀⠀⡜⠁⣠⠔⠋⢁⡔⠒⠒⠤⡀⠀⠀⠀⠀⡐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠎⠀⠀⠀⢀⣀⣤⣶⡾⠋⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⡆⡶⠀⠀⢀⡜⠁⢀⣀⢸⠀⠀⠀⠀⠈⢆⠀⠀⡜⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠤⠊⠁⠀⢀⡀⣴⡿⠿⠛⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠰⡀⠀⠀⠘⠀⡞⠁⠀⠉⢇⠀⣿⣄⠀⠈⡆⠀⠕⠒⠉⣉⡒⡄⠀⠀⠀⠀⢀⠤⠊⠁⢀⡠⠔⠊⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠑⢄⡀⠀⠀⢇⠀⣤⡄⠈⢢⡈⠻⡖⢀⡞⣀⠔⠊⠁⠀⠀⠉⠐⠒⠠⢎⢁⡠⠔⠂⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠉⢂⠘⢿⣦⡇⠉⠓⢶⡫⠞⠁⣀⣤⣤⣤⣤⣤⣤⣤⠴⠛⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢡⠦⠭⡇⠀⡠⠊⠀⣠⣮⣬⣿⣿⣿⣿⣿⣯⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⠁⢀⠔⡧⠊⠀⢀⡜⠁⠙⣿⣿⣿⡿⠟⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣀⣡⠎⠀⠀⢠⠊⠀⠀⠀⣸⣿⣿⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠃⠀⠀⣰⣧⣀⣀⡠⣴⣿⣿⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢧⣤⣤⣾⡿⠿⠋⠁⠀⢹⣿⣿⣿⣿⣿⣿⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠁⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⣿⣿⣿⣿⣿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⠿⠛⠛⠛⠛⠻⢿⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡸⠀⠀⠀⠀⠀⠀⠀⡸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⠁⡰⢤⣀⣀⡄⢠⠞⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
}, {
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⠠⠤⠐⠒⠀⠉⠉⠉⠉⠉⠁⠒⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠄⠂⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⡴⠂⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⠢⠤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⠛⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠲⣦⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⡿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠙⣵⡀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⣿⠖⣒⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡖⠋⠉⠉⠙⠛⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡄⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⢀⣠⡔⡆⠀⠀⠀⢀⢔⣒⠢⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⣴⡿⡏⠀⡇⠀⠀⠀⠘⣼⣿⡇⡇⠀⠀⢀⡠⠤⢤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡁⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⣸⣿⣽⠣⠀⡇⠀⠀⠀⠐⠮⠭⠚⠀⠀⢠⡏⣶⣿⣧⢳⠀⢀⡀⠀⠀⠀⠀⠀⠀⠀⠠⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠃⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⢿⣯⢗⠀⠀⣱⠀⠀⠀⠀⠐⢗⠀⡄⡀⢎⢣⡹⠿⣣⠏⠀⠀⠉⠉⠉⠂⠀⠀⠀⠀⠀⠀⢜⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡞⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⢸⣗⡁⠀⡀⣿⣷⡀⠀⠀⠀⠀⠀⠀⠋⠀⠁⠈⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢑⢷⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⡎⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⢠⡿⠛⢳⢸⠏⠙⠿⢿⡦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡁⣿⡄⠀⠀⠀⠀⠀⢀⠀⠀⣠⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠉⠀⠀⠀⠫⠂⠀⠀⠈⠻⣮⣝⢦⣄⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡀⠄⠂⣡⡾⠟⠀⠀⠀⠀⠀⠄⠀⣠⣾⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⢷⣧⣈⠉⠑⠲⠒⠠⠤⠤⠤⠄⠂⠀⠒⠒⠀⠉⠀⠀⣐⡧⠡⠤⠤⡀⠀⠀⢀⣠⣴⣾⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠻⢿⣷⣶⣦⣤⣀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⠟⣁⠀⠀⠀⠀⢸⣴⡾⠿⠟⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠙⠛⠻⠿⣿⣶⣶⣴⣮⣿⣾⣿⣿⡴⠋⠀⠀⠀⢀⡾⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠉⣻⣿⠟⠀⠀⠀⠀⠀⠌⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⢄⡒⠶⠮⠸⠛⠀⠀⠀⠀⡠⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢈⠇⣠⠄⢀⠠⠤⠄⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠴⠔⠊⠹⡔⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
}, {
|
||||
" lニヽ ",
|
||||
" |= | ",
|
||||
" |_ | ",
|
||||
" /⌒|~ |⌒i-、",
|
||||
" /| | | | |",
|
||||
" |( ( ( ( |",
|
||||
" | |",
|
||||
" \ /",
|
||||
" \ |",
|
||||
}, {
|
||||
"░░░░░░░░░░▀▀▀██████▄▄▄░░░░░░░░░░",
|
||||
"░░░░░░░░░░░░░░░░░▀▀▀████▄░░░░░░░",
|
||||
"░░░░░░░░░░▄███████▀░░░▀███▄░░░░░",
|
||||
"░░░░░░░░▄███████▀░░░░░░░▀███▄░░░",
|
||||
"░░░░░░▄████████░░░░░░░░░░░███▄░░",
|
||||
"░░░░░██████████▄░░░░░░░░░░░███▌░",
|
||||
"░░░░░▀█████▀░▀███▄░░░░░░░░░▐███░",
|
||||
"░░░░░░░▀█▀░░░░░▀███▄░░░░░░░▐███░",
|
||||
"░░░░░░░░░░░░░░░░░▀███▄░░░░░███▌░",
|
||||
"░░░░▄██▄░░░░░░░░░░░▀███▄░░▐███░░",
|
||||
"░░▄██████▄░░░░░░░░░░░▀███▄███░░░",
|
||||
"░█████▀▀████▄▄░░░░░░░░▄█████░░░░",
|
||||
"░████▀░░░▀▀█████▄▄▄▄█████████▄░░",
|
||||
"░░▀▀░░░░░░░░░▀▀██████▀▀░░░▀▀██░░",
|
||||
}, {
|
||||
"⢀⡴⠑⡄⠀⠀⠀⠀⠀⠀⠀⣀⣀⣤⣤⣤⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ",
|
||||
"⠸⡇⠀⠿⡀⠀⠀⠀⣀⡴⢿⣿⣿⣿⣿⣿⣿⣿⣷⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ",
|
||||
"⠀⠀⠀⠀⠑⢄⣠⠾⠁⣀⣄⡈⠙⣿⣿⣿⣿⣿⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀ ",
|
||||
"⠀⠀⠀⠀⢀⡀⠁⠀⠀⠈⠙⠛⠂⠈⣿⣿⣿⣿⣿⠿⡿⢿⣆⠀⠀⠀⠀⠀⠀⠀ ",
|
||||
"⠀⠀⠀⢀⡾⣁⣀⠀⠴⠂⠙⣗⡀⠀⢻⣿⣿⠭⢤⣴⣦⣤⣹⠀⠀⠀⢀⢴⣶⣆ ",
|
||||
"⠀⠀⢀⣾⣿⣿⣿⣷⣮⣽⣾⣿⣥⣴⣿⣿⡿⢂⠔⢚⡿⢿⣿⣦⣴⣾⠁⠸⣼⡿ ",
|
||||
"⠀⢀⡞⠁⠙⠻⠿⠟⠉⠀⠛⢹⣿⣿⣿⣿⣿⣌⢤⣼⣿⣾⣿⡟⠉⠀⠀⠀⠀⠀ ",
|
||||
"⠀⣾⣷⣶⠇⠀⠀⣤⣄⣀⡀⠈⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀ ",
|
||||
"⠀⠉⠈⠉⠀⠀⢦⡈⢻⣿⣿⣿⣶⣶⣶⣶⣤⣽⡹⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀ ",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠉⠲⣽⡻⢿⣿⣿⣿⣿⣿⣿⣷⣜⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀ ",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣷⣶⣮⣭⣽⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀ ",
|
||||
"⠀⠀⠀⠀⠀⠀⣀⣀⣈⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⠀⠀⠀⠀⠀⠀⠀ ",
|
||||
"⠀⠀⠀⠀⠀⠀⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀ ",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀ ",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠻⠿⠿⠿⠿⠛⠉",
|
||||
}, {
|
||||
"⠀⠀⢀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⠀⠀⠀",
|
||||
"⢠⣾⡿⠿⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠀",
|
||||
"⢸⣿⢠⠞⣩⡄⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠛⠉⠉⠀⠀⠀⠀⠉⠛⢿⡆",
|
||||
"⢸⣿⣄⣈⣉⣴⣿⣿⣿⣿⣿⣿⣿⠟⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⢸⣿⣿⣿⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⢸⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⢸⣿⣿⣿⣿⡿⠃⠀⠀⠀⠀⠀⠀⣀⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⢸⣿⣿⣿⡟⠁⠀⠀⢀⣤⣶⣿⣿⣿⣿⣿⣿⣿⣷⣤⡀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⢸⣿⣿⡏⠀⠀⢀⣴⣿⣿⣿⣿⣿⠿⠿⠿⣿⣿⣿⣿⣷⡄⠀⠀⠀⠀⠀⠀",
|
||||
"⢸⣿⠏⠀⠀⢠⣿⣿⣿⣿⠟⠁⠀⠀⣠⣶⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀",
|
||||
"⢸⡟⠀⠀⢠⣿⣿⣿⡟⠁⠀⢀⣠⣾⣿⣿⣿⡿⠋⣿⣿⣿⡇⠀⠀⠀⠀⠀",
|
||||
"⠘⠀⠀⠀⢸⣿⣿⣿⠁⢀⣴⣿⣿⢿⣿⠿⠋⠀⢀⣿⣿⣿⠇⠀⠀⠀⣼⠀",
|
||||
"⠀⠀⠀⠀⢸⣿⣿⣿⣶⣿⣿⣿⣿⠟⠁⠀⠀⢠⣾⣿⣿⡿⠀⠀⠀⣼⣿⠀",
|
||||
"⠀⠀⠀⠀⠀⢿⣿⣿⣿⣿⣿⠟⠁⠀⣀⣠⣶⣿⣿⣿⡿⠁⠀⠀⣼⣿⣿⠀",
|
||||
"⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⠀⠀⢀⣾⣿⣿⣿⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠙⠻⠿⣿⣿⣿⣿⣿⠿⠟⠋⠀⠀⠀⣠⣾⣿⣿⣿⣿⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⣿⣿⣿⣿⣿⣿⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⣿⣿⣿⣿⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀",
|
||||
"⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣾⣿⣿⣿⣿⣿⣿⣿⠟⣋⠛⢿⣿⠀",
|
||||
"⢸⣷⣤⣀⡀⠀⠀⠀⣀⣠⣤⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠞⣡⡼⢸⣿⠀",
|
||||
"⠈⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣤⣥⣴⣿⠟⠀",
|
||||
}, {
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⣠⣶⡾⠏⠉⠙⠳⢦⡀⠀⠀⠀⢠⠞⠉⠙⠲⡀⠀",
|
||||
"⠀⠀⠀⣴⠿⠏⠀⠀⠀⠀⠀⠀⢳⡀⠀⡏⠀⠀⠀⠀⠀⢷ ",
|
||||
"⠀⠀⢠⣟⣋⡀⢀⣀⣀⡀⠀⣀⡀⣧⠀⢸⠀⠀⠀⠀⠀ ⡇",
|
||||
"⠀⠀⢸⣯⡭⠁⠸⣛⣟⠆⡴⣻⡲⣿⠀⣸⠀⠀OK⠀ ⡇",
|
||||
"⠀⠀⣟⣿⡭⠀⠀⠀⠀⠀⢱⠀⠀⣿⠀⢹⠀⠀⠀⠀⠀ ⡇",
|
||||
"⠀⠀⠙⢿⣯⠄⠀⠀⠀⢀⡀⠀⠀⡿⠀⠀⡇⠀⠀⠀⠀⡼ ",
|
||||
"⠀⠀⠀⠀⠹⣶⠆⠀⠀⠀⠀⠀⡴⠃⠀⠀⠘⠤⣄⣠⠞⠀ ",
|
||||
"⠀⠀⠀⠀⠀⢸⣷⡦⢤⡤⢤⣞⣁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⢀⣤⣴⣿⣏⠁⠀⠀⠸⣏⢯⣷⣖⣦⡀⠀⠀⠀⠀⠀⠀",
|
||||
"⢀⣾⣽⣿⣿⣿⣿⠛⢲⣶⣾⢉⡷⣿⣿⠵⣿⠀⠀⠀⠀⠀⠀",
|
||||
"⣼⣿⠍⠉⣿⡭⠉⠙⢺⣇⣼⡏⠀⠀⠀⣄⢸⠀⠀⠀⠀⠀⠀",
|
||||
"⣿⣿⣧⣀⣿.........⣀⣰⣏⣘⣆⣀⠀⠀ ",
|
||||
}, {
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⠀⠰⠛⠻⢿⣿⠿⠿⠟⡿⠿⢿⣿⠿⠿⣿⠃⠀⠟⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⣴⡄⠀⠘⡇⠀⣤⣤⡇⠀⣼⣿⠀⢠⡏⠀⢠⣦⠀⠀⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀⠀⠛⠃⠀⡼⠀⠀⣿⣿⠀⠀⠛⠃⠀⢸⠁⠀⣼⡏⠀⢠⡟⠉⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣶⣶⣶⣾⣷⣶⣾⣿⣿⣷⣶⣶⣶⣶⣿⣶⣶⣿⣷⣶⣾⣷⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
|
||||
}, {
|
||||
"⠄⠄⠄⠄⠄⠄⢀⣠⣤⣶⣶⣶⣤⣄⠄⠄⢀⣠⣤⣤⣤⣤⣀⠄⠄⠄⠄⠄⠄⠄",
|
||||
"⠄⠄⠄⠄⢠⣾⣿⣿⣿⣿⠿⠿⢿⣿⣿⡆⣿⣿⣿⣿⣿⣿⣿⣷⡄⠄⠄⠄⠄⠄",
|
||||
"⠄⠄⠄⣴⣿⣿⡟⣩⣵⣶⣾⣿⣷⣶⣮⣅⢛⣫⣭⣭⣭⣭⣭⣭⣛⣂⠄⠄⠄⠄",
|
||||
"⠄⠄⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣭⠛⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀⠄",
|
||||
"⣠⡄⣿⣿⣿⣿⣿⣿⣿⠿⢟⣛⣫⣭⠉⠍⠉⣛⠿⡘⣿⠿⢟⣛⡛⠉⠙⠻⢿⡄",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣶⣶⣶⣶⣶⣶⣶⣭⣍⠄⣡⣬⣭⣭⣅⣈⣀⣉⣁⠄",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣶⣭⣛⡻⠿⠿⢿⣿⡿⢛⣥⣾⣿⣿⣿⣿⣿⣿⣿⠿⠋⠄",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠿⣩⣵⣾⣿⣿⣯⣙⠟⣋⣉⣩⣍⡁⠄⠄⠄",
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣿⣿⣿⣿⣷⡄⠄⠄",
|
||||
"⣿⣿⣿⣿⣿⣿⡿⢟⣛⣛⣛⣛⠿⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠿⡀⠄",
|
||||
"⣿⣿⣿⣿⣿⡟⢼⣿⣯⣭⣛⣛⣛⡻⠷⠶⢶⣬⣭⣭⣭⡭⠭⢉⡄⠶⠾⠟⠁⠄",
|
||||
"⣿⣿⣿⣿⣟⠻⣦⣤⣭⣭⣭⣭⣛⣛⡻⠿⠷⠶⢶⣶⠞⣼⡟⡸⣸⡸⠿⠄⠄⠄",
|
||||
"⣛⠿⢿⣿⣿⣿⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠷⡆⣾⠟⡴⣱⢏⡜⠆⠄⠄⠄",
|
||||
"⣭⣙⡒⠦⠭⣭⣛⣛⣛⡻⠿⠿⠟⣛⣛⣛⣛⡋⣶⡜⣟⣸⣠⡿⣸⠇⣧⡀⠄⠄",
|
||||
"⣿⣿⣿⣿⣷⣶⣦⣭⣭⣭⣭⣭⣭⣥⣶⣶⣶⡆⣿⣾⣿⣿⣿⣷⣿⣸⠉⣷⠄⠄",
|
||||
},{
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣶⣶⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⢸⣄⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⠛⠀⠀⠹⣧⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⠀⠀⣿⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⢠⠀⡄⠀⣿⠀⢀⣤⣤⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⢰⡏⠚⠀⠃⠀⣿⣴⠞⠉⢹⠀⠀",
|
||||
"⠀⣀⡀⠀⠀⠀⠀⢀⣸⠇⠀⠀⠀⠀⠈⠀⠀⣀⡿⠀⠀",
|
||||
"⢸⣟⠛⢳⣤⣤⡶⠛⠃⠀⣠⠀⠀⠀⠚⣶⡾⠟⠀⠀⠀",
|
||||
"⠀⠉⢷⣤⣀⣀⣀⣀⣠⡾⠻⣧⡀⠀⠀⢘⣷⣄⣀⣤⣄",
|
||||
"⠀⠀⠀⠈⠉⠉⠉⠉⠉⠀⠀⠘⠻⣦⣤⣈⣁⣀⣠⣾⠋",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠉⠉⠉⠀⠀",
|
||||
} }
|
||||
|
173
data/nvim/lua/plugins/init.lua
Normal file
173
data/nvim/lua/plugins/init.lua
Normal file
|
@ -0,0 +1,173 @@
|
|||
local fn = vim.fn
|
||||
|
||||
-- clone package manager if not existant
|
||||
local intall_path = fn.stdpath("data").."/site/pack/packer/start/packer.nvim"
|
||||
if fn.empty(fn.glob(intall_path)) > 0 then
|
||||
fn.system({"git", "clone", "--depth", "1", "https://github.com/wbthomason/packer.nvim", intall_path})
|
||||
vim.cmd "packadd packer.nvim"
|
||||
end
|
||||
|
||||
local function conf(module)
|
||||
return "require('plugins.config." .. module .. "')"
|
||||
end
|
||||
|
||||
return require("packer").startup(function(use)
|
||||
--packer managing itself
|
||||
use "wbthomason/packer.nvim"
|
||||
|
||||
|
||||
-- Appereance ---------------------------------------------------
|
||||
-- Lelegs -------------------------------------------------------
|
||||
|
||||
|
||||
--statusline
|
||||
use { "nvim-lualine/lualine.nvim",
|
||||
requires = {"kyazdani42/nvim-web-devicons", opt = true},
|
||||
config = function() require("plugins.config.lualine") end
|
||||
}
|
||||
|
||||
--colorscheme
|
||||
use { "navarasu/onedark.nvim", config = function() require("plugins.config.onedark") end}
|
||||
|
||||
-- nice line before lines
|
||||
use { "lukas-reineke/indent-blankline.nvim", config = conf("indent-blankline")}
|
||||
-- make spaces red
|
||||
use { "ntpeters/vim-better-whitespace", config = conf("better-whitespace")}
|
||||
|
||||
-- signale für git
|
||||
use { "lewis6991/gitsigns.nvim",
|
||||
requires = {
|
||||
'nvim-lua/plenary.nvim'
|
||||
},
|
||||
config = function()
|
||||
require("gitsigns").setup {
|
||||
}
|
||||
end
|
||||
}
|
||||
|
||||
use { 'kosayoda/nvim-lightbulb', config = conf("lightbulb") }
|
||||
|
||||
-- dressing macht refactoring fenster schöner
|
||||
use { 'stevearc/dressing.nvim' }
|
||||
|
||||
-- Language Support ---------------------------------------------
|
||||
-- leligs -------------------------------------------------------
|
||||
|
||||
|
||||
--treesitter
|
||||
use {
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
event = "BufRead",
|
||||
config = conf("treesitter"),
|
||||
}
|
||||
|
||||
--sane(I hope) default configs for a number of lsps ------------
|
||||
use { "neovim/nvim-lspconfig" }
|
||||
|
||||
use { "ziglang/zig.vim" }
|
||||
|
||||
-- autocomplete wuhu -------------------------------------------
|
||||
use {
|
||||
"hrsh7th/nvim-cmp",
|
||||
requires = { { "hrsh7th/cmp-buffer" },
|
||||
{ "hrsh7th/cmp-path" },
|
||||
{ "hrsh7th/cmp-cmdline" },
|
||||
{ "petertriho/cmp-git" },
|
||||
{ "hrsh7th/cmp-calc" },
|
||||
{ "hrsh7th/cmp-nvim-lsp" },
|
||||
{ "hrsh7th/cmp-nvim-lua" },
|
||||
{ "hrsh7th/cmp-emoji" },
|
||||
},
|
||||
config = function() require("plugins.config.nvim-cmp") end
|
||||
}
|
||||
|
||||
--snippet engine required for nvim cmp
|
||||
use { "L3MON4D3/LuaSnip", after = "nvim-cmp" }
|
||||
|
||||
use { "saadparwaiz1/cmp_luasnip", after = "LuaSnip" }
|
||||
|
||||
--additional functionality for nvim cmp
|
||||
-- function signature on hover
|
||||
use { "ray-x/lsp_signature.nvim", after = "nvim-lspconfig",
|
||||
config = function() require("lsp_signature").setup() end }
|
||||
|
||||
--pictograms in lsp completion
|
||||
use { "onsails/lspkind-nvim" }
|
||||
|
||||
-- Addons ------------------------------------------------------
|
||||
-- Lelugs ------------------------------------------------------
|
||||
|
||||
|
||||
--file browser
|
||||
|
||||
use {
|
||||
"nvim-neo-tree/neo-tree.nvim",
|
||||
branch = "v2.x",
|
||||
requires = {
|
||||
"nvim-lua/plenary.nvim",
|
||||
"kyazdani42/nvim-web-devicons", -- not strictly required, but recommended
|
||||
"MunifTanjim/nui.nvim",
|
||||
},
|
||||
config = conf("neotree")
|
||||
}
|
||||
|
||||
-- window picker to use with neotree
|
||||
use {
|
||||
's1n7ax/nvim-window-picker',
|
||||
tag = 'v1.*',
|
||||
config = function()
|
||||
require'window-picker'.setup()
|
||||
end,
|
||||
}
|
||||
|
||||
--startup page
|
||||
use {
|
||||
"goolord/alpha-nvim",
|
||||
requires = "kyazdani42/nvim-web-devicons",
|
||||
config = function() require("plugins.config.alpha") end
|
||||
}
|
||||
|
||||
--finder lel
|
||||
use {
|
||||
'nvim-telescope/telescope.nvim',
|
||||
requires = { {"nvim-lua/plenary.nvim"},
|
||||
{"nvim-treesitter/nvim-treesitter", opt =true},
|
||||
{"kyazdani42/nvim-web-devicons", opt = true},
|
||||
{"sudormrfbin/cheatsheet.nvim"},
|
||||
{"nvim-telescope/telescope-fzf-native.nvim", run = 'make'} },
|
||||
cmd = "Telescope",
|
||||
config = conf("telescope")
|
||||
}
|
||||
|
||||
-- make notification
|
||||
use {
|
||||
"rcarriga/nvim-notify"
|
||||
}
|
||||
|
||||
-- undo tree weil badly needed
|
||||
use { "simnalamburt/vim-mundo", config = conf("mundo") }
|
||||
|
||||
-- vim multi cursor witl malze meint es wäre gut
|
||||
use { "mg979/vim-visual-multi", config = conf("vim-visual-multi") }
|
||||
-- git in vim für die die es brauchen
|
||||
use { "tpope/vim-fugitive" }
|
||||
|
||||
-- Plugins for editing wuhu
|
||||
|
||||
-- Surround shit pls
|
||||
use { "tpope/vim-surround" }
|
||||
|
||||
-- Commenting
|
||||
use { "numToStr/Comment.nvim", config = conf("comment") }
|
||||
|
||||
-- align thing according to shit
|
||||
use { "junegunn/vim-easy-align" }
|
||||
|
||||
|
||||
-- gpg edit in vim
|
||||
use { "jamessan/vim-gnupg"}
|
||||
|
||||
|
||||
end)
|
||||
|
||||
|
55
data/nvim/lua/plugins/utils/alpha.lua
Normal file
55
data/nvim/lua/plugins/utils/alpha.lua
Normal file
|
@ -0,0 +1,55 @@
|
|||
local M = {}
|
||||
local if_nil = vim.F.if_nil
|
||||
|
||||
M.button = function(shortcut, txt, keybind, keybind_opts)
|
||||
local opts = {
|
||||
position = "center",
|
||||
shortcut = shortcut,
|
||||
cursor = 5,
|
||||
width = 50,
|
||||
align_shortcut = "right",
|
||||
hl_shortcut = "Keyword",
|
||||
}
|
||||
|
||||
if keybind then
|
||||
keybind_opts = if_nil(keybind_opts, {noremap = true, silent = true})
|
||||
opts.keymap = { "n", shortcut, keybind, keybind_opts }
|
||||
end
|
||||
|
||||
local function on_press()
|
||||
local key = vim.api.nvim_replace_termcodes(shortcut .. '<Ignore>', true, false, true)
|
||||
vim.api.nvim_feedkeys(key, "normal", false)
|
||||
end
|
||||
|
||||
return {
|
||||
type = "button",
|
||||
val = txt,
|
||||
on_press = on_press,
|
||||
opts = opts,
|
||||
}
|
||||
end
|
||||
|
||||
M.buttons = function(xs, spacing)
|
||||
return {
|
||||
type = "group",
|
||||
val = xs,
|
||||
opts = { spacing = if_nil(spacing, 1) }
|
||||
}
|
||||
end
|
||||
|
||||
M.text = function(value, hl)
|
||||
return {
|
||||
type = "text",
|
||||
val = value,
|
||||
opts = {
|
||||
position = "center",
|
||||
hl = hl,
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
M.pad = function(lines)
|
||||
return { type = "padding", val = lines }
|
||||
end
|
||||
|
||||
return M
|
27
data/pubkey.gpg
Normal file
27
data/pubkey.gpg
Normal file
|
@ -0,0 +1,27 @@
|
|||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
mDMEYUOD7hYJKwYBBAHaRw8BAQdAZEmQrmzXN4nBaWWyVtI+xMbqPeX+XsPIkoHC
|
||||
DEi5oj20KVBhdHJpY2sgR3Jvc3NtYW5uIDxwYXRyaWNrZGdyb0BnbWFpbC5jb20+
|
||||
iJAEExYIADgWIQReTD10gMI1/i8L0j991qcuyJlhfQUCYUOD7gIbAQULCQgHAgYV
|
||||
CgkICwIEFgIDAQIeAQIXgAAKCRB91qcuyJlhfZRdAQDaKEvbf3/V5fOipZrrJwGz
|
||||
6uyFcweI3YL+GTMMTO5L1gD/fLJvcbll5hoGvMSLr/Be3dh+9jzap8Nvm8rwW+R8
|
||||
qQy0NlBhdHJpY2sgR3Jvc3NtYW5uIChUVU0gS0VZKSA8cGF0cmljay5ncm9zc21h
|
||||
bm5AdHVtLmRlPoiQBBMWCAA4FiEEXkw9dIDCNf4vC9I/fdanLsiZYX0FAmFDhYoC
|
||||
GwEFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQfdanLsiZYX2HBgD+N2qb6mfJ
|
||||
5yPuuDXxR2Khufrqxm/brRvOZA27lIJsxVsBAJrkgZ+9odKPXZNFkVqHPTJlhBz/
|
||||
eWLYpAdujOQveg4BuDMEYUOEUxYJKwYBBAHaRw8BAQdAZRvIGN45HGNjFPCJk8M3
|
||||
llPlTi3S8ke5SKD4dvYigcOI7wQYFggAIBYhBF5MPXSAwjX+LwvSP33Wpy7ImWF9
|
||||
BQJhQ4RTAhsCAIEJEH3Wpy7ImWF9diAEGRYIAB0WIQQmAxoloW2M95H4rTRFH5Xv
|
||||
uL7NDwUCYUOEUwAKCRBFH5XvuL7ND2RzAP9az8cD5ywv3Kcus/X3DYEC8b+bck8P
|
||||
T7gWhI+JZkDyewEAj9rS4vJy8Un7F1j80D+5eb5wfXvJNHjKABjNjLxdiw98nAEA
|
||||
kVABsZMvNdL8oEdKCiudFxGmVyPGvrhRQeOiuX5tnioA/j2hHplcNPYu1aTtaq/X
|
||||
slL6KnKtFgeGdgO6t6zkewMPuDMEYUOEtxYJKwYBBAHaRw8BAQdANmLGSLHQp8q6
|
||||
rtDX3CFLkVBCDnX8AkYHkGI0X/uH8syIeAQYFggAIBYhBF5MPXSAwjX+LwvSP33W
|
||||
py7ImWF9BQJhQ4S3AhsgAAoJEH3Wpy7ImWF9qx4BAIAdDCSY260Xw8setwJUxTpD
|
||||
4xu0pR8GQtb+svs4aDj7APsHhAJPrUpIN3SnCUD+e+N04OJwF5+aPCz2KhEEg343
|
||||
D7g4BGFDhOASCisGAQQBl1UBBQEBB0CZAILTjqhibKl57jUo6Iy2dIffYDfSmvcW
|
||||
yHA84y+IZgMBCAeIeAQYFggAIBYhBF5MPXSAwjX+LwvSP33Wpy7ImWF9BQJhQ4Tg
|
||||
AhsMAAoJEH3Wpy7ImWF9fwwBALZ9WQjp62H4IclkwiHyDig2h++dmf8xWRNF+C/v
|
||||
whwYAQCkvCIDKXpFMKP+dCNT8LbP/HQ4F1f8DFC48nHWIXCaAw==
|
||||
=l8kc
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
515
data/zshrc
Normal file
515
data/zshrc
Normal file
|
@ -0,0 +1,515 @@
|
|||
|
||||
|
||||
# REQUIRES (execute as root):
|
||||
# umask 022
|
||||
|
||||
source ${HOME}/.zsh/plugins//powerlevel10k/share/zsh-powerlevel10k/config/p10k-lean-8colors.zsh
|
||||
|
||||
# zsh histdb
|
||||
typeset -g HISTDB_FILE="$HOME/.zsh_history.db"
|
||||
|
||||
# Use emacs-like key bindings by default:
|
||||
bindkey -e
|
||||
|
||||
# Autoloading
|
||||
autoload colors && colors
|
||||
autoload add-zsh-hook
|
||||
autoload zmv
|
||||
autoload zed
|
||||
if autoload history-search-end; then
|
||||
zle -N history-beginning-search-backward-end history-search-end
|
||||
zle -N history-beginning-search-forward-end history-search-end
|
||||
fi
|
||||
|
||||
|
||||
function bind2maps() {
|
||||
local i sequence widget
|
||||
local -a maps
|
||||
|
||||
while [[ "$1" != "--" ]]; do
|
||||
maps+=( "$1" )
|
||||
shift
|
||||
done
|
||||
shift
|
||||
|
||||
if [[ "$1" == "-s" ]]; then
|
||||
shift
|
||||
sequence="$1"
|
||||
else
|
||||
sequence="${key[$1]}"
|
||||
fi
|
||||
widget="$2"
|
||||
|
||||
[[ -z "$sequence" ]] && return 1
|
||||
|
||||
for i in "${maps[@]}"; do
|
||||
bindkey -M "$i" "$sequence" "$widget"
|
||||
done
|
||||
}
|
||||
|
||||
if (( ${+terminfo[smkx]} )) && (( ${+terminfo[rmkx]} )); then
|
||||
function zle-smkx() {
|
||||
emulate -L zsh
|
||||
printf '%s' ${terminfo[smkx]}
|
||||
}
|
||||
function zle-rmkx() {
|
||||
emulate -L zsh
|
||||
printf '%s' ${terminfo[rmkx]}
|
||||
}
|
||||
function zle-line-init() {
|
||||
zle-smkx
|
||||
}
|
||||
function zle-line-finish() {
|
||||
zle-rmkx
|
||||
}
|
||||
zle -N zle-line-init
|
||||
zle -N zle-line-finish
|
||||
fi
|
||||
|
||||
typeset -A key
|
||||
key=(
|
||||
Home "${terminfo[khome]}"
|
||||
End "${terminfo[kend]}"
|
||||
Insert "${terminfo[kich1]}"
|
||||
Delete "${terminfo[kdch1]}"
|
||||
Up "${terminfo[kcuu1]}"
|
||||
Down "${terminfo[kcud1]}"
|
||||
Left "${terminfo[kcub1]}"
|
||||
Right "${terminfo[kcuf1]}"
|
||||
PageUp "${terminfo[kpp]}"
|
||||
PageDown "${terminfo[knp]}"
|
||||
BackTab "${terminfo[kcbt]}"
|
||||
)
|
||||
|
||||
bind2maps emacs -- Home beginning-of-line
|
||||
bind2maps emacs -- End end-of-line
|
||||
bind2maps viins vicmd -- Home vi-beginning-of-line
|
||||
bind2maps viins vicmd -- End vi-end-of-line
|
||||
bind2maps emacs viins -- Insert overwrite-mode
|
||||
bind2maps vicmd -- Insert vi-insert
|
||||
bind2maps emacs -- Delete delete-char
|
||||
bind2maps viins vicmd -- Delete vi-delete-char
|
||||
bind2maps emacs viins vicmd -- Up up-line-or-search
|
||||
bind2maps emacs viins vicmd -- Down down-line-or-search
|
||||
bind2maps emacs -- Left backward-char
|
||||
bind2maps viins vicmd -- Left vi-backward-char
|
||||
bind2maps emacs -- Right forward-char
|
||||
bind2maps viins vicmd -- Right vi-forward-char
|
||||
bind2maps emacs viins -- -s '^xp' history-beginning-search-backward-end
|
||||
bind2maps emacs viins -- -s '^xP' history-beginning-search-forward-end
|
||||
bind2maps emacs viins -- PageUp history-beginning-search-backward-end
|
||||
bind2maps emacs viins -- PageDown history-beginning-search-forward-end
|
||||
bind2maps emacs viins -- -s ' ' magic-space
|
||||
|
||||
# Use Ctrl-left-arrow and Ctrl-right-arrow for jumping to word-beginnings on
|
||||
# the command line.
|
||||
# kitty: Shift-Left/Right
|
||||
bind2maps emacs viins vicmd -- -s '\e[1;2C' forward-word
|
||||
bind2maps emacs viins vicmd -- -s '\e[1;2D' backward-word
|
||||
# kitty: Alt-Left/Right
|
||||
bind2maps emacs viins vicmd -- -s '\e[1;3C' forward-word
|
||||
bind2maps emacs viins vicmd -- -s '\e[1;3D' backward-word
|
||||
# kitty: Ctrl-Del
|
||||
bind2maps emacs viins vicmd -- -s '\e[3;5~' kill-line
|
||||
# Key bindings
|
||||
bind2maps emacs viins vicmd -- -s '^H' backward-kill-line
|
||||
bind2maps emacs viins vicmd -- -s '^P' expand-or-complete-prefix
|
||||
|
||||
# Enable partial search using up and down keys for completion
|
||||
bind2maps emacs viins vicmd -- -s '^[[A' history-beginning-search-backward-end
|
||||
bind2maps emacs viins vicmd -- -s '^[[B' history-beginning-search-forward-end
|
||||
bind2maps emacs viins vicmd -- -s '\eOA' history-beginning-search-backward-end
|
||||
bind2maps emacs viins vicmd -- -s '\eOB' history-beginning-search-forward-end
|
||||
|
||||
|
||||
typeset -g POWERLEVEL9K_PROMPT_ADD_NEWLINE=false
|
||||
typeset -g POWERLEVEL9K_DIR_ANCHOR_BOLD=true
|
||||
# The list of segments shown on the left. Fill it with the most important segments.
|
||||
typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(
|
||||
# os_icon # os identifier
|
||||
context # user@hostname
|
||||
dir # current directory
|
||||
vcs # git status
|
||||
prompt_char # prompt symbol
|
||||
)
|
||||
|
||||
# The list of segments shown on the right. Fill it with less important segments.
|
||||
# Right prompt on the last prompt line (where you are typing your commands) gets
|
||||
# automatically hidden when the input line reaches it. Right prompt above the
|
||||
# last prompt line gets hidden if it would overlap with left prompt.
|
||||
typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(
|
||||
status # exit code of the last command
|
||||
command_execution_time # duration of the last command
|
||||
background_jobs # presence of background jobs
|
||||
direnv # direnv status (https://direnv.net/)
|
||||
asdf # asdf version manager (https://github.com/asdf-vm/asdf)
|
||||
virtualenv # python virtual environment (https://docs.python.org/3/library/venv.html)
|
||||
anaconda # conda environment (https://conda.io/)
|
||||
pyenv # python environment (https://github.com/pyenv/pyenv)
|
||||
goenv # go environment (https://github.com/syndbg/goenv)
|
||||
nodenv # node.js version from nodenv (https://github.com/nodenv/nodenv)
|
||||
nvm # node.js version from nvm (https://github.com/nvm-sh/nvm)
|
||||
nodeenv # node.js environment (https://github.com/ekalinin/nodeenv)
|
||||
# node_version # node.js version
|
||||
# go_version # go version (https://golang.org)
|
||||
# rust_version # rustc version (https://www.rust-lang.org)
|
||||
# dotnet_version # .NET version (https://dotnet.microsoft.com)
|
||||
# php_version # php version (https://www.php.net/)
|
||||
# laravel_version # laravel php framework version (https://laravel.com/)
|
||||
# java_version # java version (https://www.java.com/)
|
||||
# package # name@version from package.json (https://docs.npmjs.com/files/package.json)
|
||||
rbenv # ruby version from rbenv (https://github.com/rbenv/rbenv)
|
||||
rvm # ruby version from rvm (https://rvm.io)
|
||||
fvm # flutter version management (https://github.com/leoafarias/fvm)
|
||||
luaenv # lua version from luaenv (https://github.com/cehoffman/luaenv)
|
||||
jenv # java version from jenv (https://github.com/jenv/jenv)
|
||||
plenv # perl version from plenv (https://github.com/tokuhirom/plenv)
|
||||
phpenv # php version from phpenv (https://github.com/phpenv/phpenv)
|
||||
scalaenv # scala version from scalaenv (https://github.com/scalaenv/scalaenv)
|
||||
haskell_stack # haskell version from stack (https://haskellstack.org/)
|
||||
kubecontext # current kubernetes context (https://kubernetes.io/)
|
||||
terraform # terraform workspace (https://www.terraform.io)
|
||||
aws # aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html)
|
||||
aws_eb_env # aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/)
|
||||
azure # azure account name (https://docs.microsoft.com/en-us/cli/azure)
|
||||
gcloud # google cloud cli account and project (https://cloud.google.com/)
|
||||
google_app_cred # google application credentials (https://cloud.google.com/docs/authentication/production)
|
||||
#context # user@hostname
|
||||
nordvpn # nordvpn connection status, linux only (https://nordvpn.com/)
|
||||
ranger # ranger shell (https://github.com/ranger/ranger)
|
||||
nnn # nnn shell (https://github.com/jarun/nnn)
|
||||
vim_shell # vim shell indicator (:sh)
|
||||
midnight_commander # midnight commander shell (https://midnight-commander.org/)
|
||||
nix_shell # nix shell (https://nixos.org/nixos/nix-pills/developing-with-nix-shell.html)
|
||||
# vpn_ip # virtual private network indicator
|
||||
# load # CPU load
|
||||
# disk_usage # disk usage
|
||||
# ram # free RAM
|
||||
# swap # used swap
|
||||
todo # todo items (https://github.com/todotxt/todo.txt-cli)
|
||||
timewarrior # timewarrior tracking status (https://timewarrior.net/)
|
||||
# taskwarrior # taskwarrior task count (https://taskwarrior.org/)
|
||||
time # current time
|
||||
# ip # ip address and bandwidth usage for a specified network interface
|
||||
# public_ip # public IP address
|
||||
# proxy # system-wide http/https/ftp proxy
|
||||
# battery # internal battery
|
||||
# wifi # wifi speed
|
||||
# example # example user-defined segment (see prompt_example function below)
|
||||
)
|
||||
|
||||
# No color prompt symbol
|
||||
typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=
|
||||
typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=
|
||||
# Default prompt symbol.
|
||||
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='$'
|
||||
# Prompt symbol in command vi mode.
|
||||
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION=':'
|
||||
# Prompt symbol in visual vi mode.
|
||||
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION='V'
|
||||
# Prompt symbol in overwrite vi mode.
|
||||
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIOWR_CONTENT_EXPANSION='▶'
|
||||
|
||||
# Default context color without privileges
|
||||
typeset -g POWERLEVEL9K_CONTEXT_FOREGROUND=6
|
||||
# Context color when running with privileges.
|
||||
typeset -g POWERLEVEL9K_CONTEXT_ROOT_FOREGROUND=1
|
||||
# Context color in SSH without privileges.
|
||||
typeset -g POWERLEVEL9K_CONTEXT_REMOTE_FOREGROUND=2
|
||||
# Context color in SSH with privileges.
|
||||
typeset -g POWERLEVEL9K_CONTEXT_REMOTE_SUDO_FOREGROUND=1
|
||||
|
||||
# Context format when running with privileges: user@(bold)hostname.
|
||||
typeset -g POWERLEVEL9K_CONTEXT_ROOT_TEMPLATE='%n%B@%m'
|
||||
# Context format when in SSH without privileges: user@hostname.
|
||||
typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_TEMPLATE='ssh://%n%B@%m'
|
||||
# Default context format (no privileges, no SSH): user@hostname.
|
||||
typeset -g POWERLEVEL9K_CONTEXT_TEMPLATE='%n%B@%m'
|
||||
|
||||
# No directory icons
|
||||
typeset -g POWERLEVEL9K_DIR_{,NOT_WRITABLE_}VISUAL_IDENTIFIER_EXPANSION=""
|
||||
# Disable instant prompt
|
||||
typeset -g POWERLEVEL9K_INSTANT_PROMPT=off
|
||||
|
||||
# Don't show context unless running with privileges or in SSH.
|
||||
# Tip: Remove the next line to always show context.
|
||||
unset POWERLEVEL9K_CONTEXT_{DEFAULT,SUDO}_{CONTENT,VISUAL_IDENTIFIER}_EXPANSION
|
||||
|
||||
# Completion
|
||||
autoload -Uz compinit
|
||||
compinit
|
||||
|
||||
# Make sure the completion system is initialised
|
||||
(( ${+_comps} )) || return 1
|
||||
|
||||
# Don't insert tabs when there is no completion (e.g. beginning of line)
|
||||
zstyle ':completion:*' insert-tab false
|
||||
|
||||
# allow one error for every three characters typed in approximate completer
|
||||
zstyle ':completion:*:approximate:' max-errors 'reply=( $((($#PREFIX+$#SUFFIX)/3 )) numeric )'
|
||||
|
||||
# don't complete backup files as executables
|
||||
zstyle ':completion:*:complete:-command-::commands' ignored-patterns '(aptitude-*|*\~)'
|
||||
|
||||
# start menu completion only if it could find no unambiguous initial string
|
||||
zstyle ':completion:*:correct:*' insert-unambiguous true
|
||||
zstyle ':completion:*:corrections' format $'%{\e[0;31m%}%d (errors: %e)%{\e[0m%}'
|
||||
zstyle ':completion:*:correct:*' original true
|
||||
|
||||
# activate color-completion
|
||||
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
|
||||
|
||||
# format on completion
|
||||
zstyle ':completion:*:descriptions' format $'\e[0;31mcompleting \e[1m%d\e[0m'
|
||||
|
||||
# insert all expansions for expand completer
|
||||
zstyle ':completion:*:expand:*' tag-order all-expansions
|
||||
zstyle ':completion:*:history-words' list false
|
||||
|
||||
# activate menu
|
||||
zstyle ':completion:*:history-words' menu yes
|
||||
|
||||
# ignore duplicate entries
|
||||
zstyle ':completion:*:history-words' remove-all-dups yes
|
||||
zstyle ':completion:*:history-words' stop yes
|
||||
|
||||
# match uppercase from lowercase
|
||||
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'
|
||||
|
||||
# separate matches into groups
|
||||
zstyle ':completion:*:matches' group 'yes'
|
||||
zstyle ':completion:*' group-name ''
|
||||
|
||||
if [[ "$NOMENU" -eq 0 ]] ; then
|
||||
# if there are more than 5 options allow selecting from a menu
|
||||
zstyle ':completion:*' menu select=5
|
||||
else
|
||||
# don't use any menus at all
|
||||
setopt no_auto_menu
|
||||
fi
|
||||
|
||||
zstyle ':completion:*:messages' format '%d'
|
||||
zstyle ':completion:*:options' auto-description '%d'
|
||||
|
||||
# describe options in full
|
||||
zstyle ':completion:*:options' description 'yes'
|
||||
|
||||
# on processes completion complete all user processes
|
||||
zstyle ':completion:*:processes' command 'ps -au$USER'
|
||||
|
||||
# offer indexes before parameters in subscripts
|
||||
zstyle ':completion:*:*:-subscript-:*' tag-order indexes parameters
|
||||
|
||||
# provide verbose completion information
|
||||
zstyle ':completion:*' verbose true
|
||||
|
||||
# recent (as of Dec 2007) zsh versions are able to provide descriptions
|
||||
# for commands (read: 1st word in the line) that it will list for the user
|
||||
# to choose from. The following disables that, because it's not exactly fast.
|
||||
zstyle ':completion:*:-command-:*:' verbose false
|
||||
|
||||
# set format for warnings
|
||||
zstyle ':completion:*:warnings' format $'%{\e[0;31m%}No matches for:%{\e[0m%} %d'
|
||||
|
||||
# define files to ignore for zcompile
|
||||
zstyle ':completion:*:*:zcompile:*' ignored-patterns '(*~|*.zwc)'
|
||||
zstyle ':completion:correct:' prompt 'correct to: %e'
|
||||
|
||||
# Ignore completion functions for commands you don't have:
|
||||
zstyle ':completion::(^approximate*):*:functions' ignored-patterns '_*'
|
||||
|
||||
# Provide more processes in completion of programs like killall:
|
||||
zstyle ':completion:*:processes-names' command 'ps c -u ${USER} -o command | uniq'
|
||||
|
||||
# complete manual by their section
|
||||
zstyle ':completion:*:manuals' separate-sections true
|
||||
zstyle ':completion:*:manuals.*' insert-sections true
|
||||
zstyle ':completion:*:man:*' menu yes select
|
||||
|
||||
# Search path for sudo completion
|
||||
zstyle ':completion:*:sudo:*' command-path \
|
||||
/usr/local/sbin \
|
||||
/usr/local/bin \
|
||||
/usr/sbin \
|
||||
/usr/bin \
|
||||
/sbin \
|
||||
/bin
|
||||
|
||||
# provide .. as a completion
|
||||
zstyle ':completion:*' special-dirs ..
|
||||
|
||||
# run rehash on completion so new installed program are found automatically:
|
||||
function _force_rehash() {
|
||||
(( CURRENT == 1 )) && rehash
|
||||
return 1
|
||||
}
|
||||
|
||||
# No correction
|
||||
zstyle ':completion:*' completer _oldlist _expand _force_rehash _complete _files _ignored
|
||||
|
||||
# use generic completion system for programs not yet defined; (_gnu_generic works
|
||||
# with commands that provide a --help option with "standard" gnu-like output.)
|
||||
for compcom in cp deborphan df feh fetchipac gpasswd head hnb ipacsum mv pal stow uname ; do
|
||||
[[ -z ${_comps[$compcom]} ]] && compdef _gnu_generic ${compcom}
|
||||
done; unset compcom
|
||||
|
||||
# see upgrade function in this file
|
||||
compdef _hosts upgrade
|
||||
|
||||
# History settings
|
||||
HISTFILE=~/.zsh_history
|
||||
HISTSIZE=1000000
|
||||
SAVEHIST=1005000
|
||||
|
||||
# Append history when zsh exits
|
||||
setopt append_history
|
||||
# Also save timestamp and duration
|
||||
setopt extended_history
|
||||
# Ignore commands beginning with a space
|
||||
setopt hist_ignore_space
|
||||
# Remove repeated duplicates
|
||||
setopt hist_ignore_dups
|
||||
# Remove trailing whitespace from history
|
||||
setopt hist_reduce_blanks
|
||||
# Save history after each command
|
||||
setopt inc_append_history
|
||||
# If history is full, delete oldest duplicate commands first
|
||||
setopt hist_expire_dups_first
|
||||
# When a history line is selected from expansion, don't execute but fill line buffer
|
||||
setopt hist_verify
|
||||
|
||||
# Emit an error when a glob has no match
|
||||
setopt nomatch
|
||||
# Allow extended globbing
|
||||
setopt extendedglob
|
||||
# * shouldn't match dotfiles. ever.
|
||||
setopt noglobdots
|
||||
# Whenever a command completion is attempted, make sure the entire
|
||||
# command path is hashed first.
|
||||
setopt hash_list_all
|
||||
|
||||
# Change directory by typing the directory name
|
||||
setopt auto_cd
|
||||
# Automatically pushd on cd to have a directory stack
|
||||
setopt auto_pushd
|
||||
# Don't push the same dir twice
|
||||
setopt pushd_ignore_dups
|
||||
# Display PID when suspending processes as well
|
||||
setopt longlistjobs
|
||||
# Don't send SIGHUP to background processes when the shell exits
|
||||
setopt nohup
|
||||
# Report the status of background jobs immediately
|
||||
setopt notify
|
||||
# Allow comments in interactive shells
|
||||
setopt interactive_comments
|
||||
# Don't beep
|
||||
setopt nobeep
|
||||
|
||||
# Don't try to correct inputs
|
||||
setopt nocorrect
|
||||
# Allow in-word completion
|
||||
setopt completeinword
|
||||
# Don't autocorrect commands
|
||||
setopt no_correct_all
|
||||
# Allow completion from within a word/phrase
|
||||
setopt complete_in_word
|
||||
# List choices on ambiguous completions
|
||||
setopt auto_list
|
||||
# Use menu completion if requested explicitly
|
||||
setopt auto_menu
|
||||
# Move cursor to end of word if there was only one match
|
||||
setopt always_to_end
|
||||
|
||||
# Ignore certain commands in history
|
||||
HISTORY_IGNORE_REGEX='^(.|. |..|.. |rm .*|rmd .*|git fixup.*|git unstash|git stash.*|git checkout -f.*|l .*|ll .*|ls .*)$'
|
||||
function zshaddhistory() {
|
||||
emulate -L zsh
|
||||
[[ ! $1 =~ "$HISTORY_IGNORE_REGEX" ]]
|
||||
}
|
||||
|
||||
# Start ssh-agent if not already running
|
||||
# if ! pgrep -c -u "$USER" ssh-agent &>/dev/null; then
|
||||
# ssh-agent -t 4h -s | grep -Fv 'echo' > ~/.ssh/ssh-agent-env \
|
||||
# && source ~/.ssh/ssh-agent-env
|
||||
# elif [[ -e ~/.ssh/ssh-agent-env ]]; then
|
||||
# source ~/.ssh/ssh-agent-env
|
||||
# else
|
||||
# echo "error: could not start 'ssh-agent'" >&2
|
||||
# fi
|
||||
|
||||
# Aliases
|
||||
alias l="ls -lahF --group-directories-first --show-control-chars --quoting-style=escape --color=auto"
|
||||
alias ll="ls -lahF --group-directories-first --show-control-chars --quoting-style=escape --color=auto"
|
||||
alias t="tree -F --dirsfirst -L 2"
|
||||
alias tt="tree -F --dirsfirst -L 3 --filelimit 16"
|
||||
alias ttt="tree -F --dirsfirst -L 6 --filelimit 16"
|
||||
|
||||
alias md="mkdir"
|
||||
alias rmd="rm -d"
|
||||
|
||||
#because 2 less keys is still only half the work
|
||||
alias ta="task"
|
||||
alias tat="taskwarrior-tui"
|
||||
|
||||
#what the fuck is going on here????
|
||||
alias cpr="rsync -axHAWXS --numeric-ids --info=progress2"
|
||||
|
||||
alias cp="cp -vi"
|
||||
alias mv="mv -vi"
|
||||
alias rm="rm -I"
|
||||
alias chmod="chmod -c --preserve-root"
|
||||
alias chown="chown -c --preserve-root"
|
||||
alias -s {md,txt,cpp,hpp,h,c}=vim
|
||||
|
||||
alias ip="ip --color"
|
||||
alias tmux="tmux -2"
|
||||
alias rg="rg -S"
|
||||
|
||||
#tar any number of given filen and compress them
|
||||
alias comptar="tar -c -f archive.tar.xz -v -I 'pixz -9'"
|
||||
|
||||
#random functions
|
||||
#compress all files in current directory excluding folders and already compressed files
|
||||
function compressAll() {
|
||||
for i in $(ls -p | grep -E -v "/|(.xz|.gz|.zip)")
|
||||
do
|
||||
echo "compressing: " $i
|
||||
pixz -9 $i
|
||||
done
|
||||
}
|
||||
|
||||
#extract random file
|
||||
function ex () {
|
||||
if [ -f $1 ] ; then
|
||||
case $1 in
|
||||
*.tar.bz2) tar xjf $1 ;;
|
||||
*.tar.gz) tar xzf $1 ;;
|
||||
*.tar.xz) tar xfJ $1 ;;
|
||||
*.bz2) bunzip2 $1 ;;
|
||||
*.rar) unrar x $1 ;;
|
||||
*.gz) gunzip $1 ;;
|
||||
*.tar) tar xf $1 ;;
|
||||
*.tbz2) tar xjf $1 ;;
|
||||
*.tgz) tar xzf $1 ;;
|
||||
*.zip) unzip $1 ;;
|
||||
*.Z) uncompress $1;;
|
||||
*.7z) 7z x $1 ;;
|
||||
*) echo "'$1' cannot be extracted via ex()" ;;
|
||||
esac
|
||||
else
|
||||
echo "'$1' is not a valid file"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
# Aliases when X is running
|
||||
if xset q &>/dev/null; then
|
||||
alias zf="zathura --fork" #pdf viewer
|
||||
fi
|
||||
alias vi="nvim"
|
||||
alias vim="nvim"
|
||||
|
||||
# Set umask
|
||||
umask 077
|
||||
|
||||
alias luamake=/home/patrick/.local/share/nvim/lua-language-server/3rd/luamake/luamake
|
45
hardware-configuration.nix
Normal file
45
hardware-configuration.nix
Normal file
|
@ -0,0 +1,45 @@
|
|||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||
# and may be overwritten by future invocations. Please make changes
|
||||
# to /etc/nixos/configuration.nix instead.
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
modulesPath,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
(modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
|
||||
boot.initrd.availableKernelModules = ["xhci_pci" "nvme" "usb_storage" "usbhid" "sd_mod" "rtsx_pci_sdmmc"];
|
||||
boot.initrd.kernelModules = [];
|
||||
boot.supportedFilesystems = ["ntfs"];
|
||||
boot.kernelModules = ["kvm-intel"];
|
||||
boot.extraModulePackages = [];
|
||||
|
||||
fileSystems."/" = {
|
||||
device = "rpool/ROOT/nixos";
|
||||
fsType = "zfs";
|
||||
};
|
||||
|
||||
fileSystems."/boot" = {
|
||||
device = "/dev/disk/by-uuid/BC47-8FB9";
|
||||
fsType = "vfat";
|
||||
};
|
||||
|
||||
swapDevices = [];
|
||||
|
||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||
# still possible to use this option, but it's recommended to use it in conjunction
|
||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||
networking.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.enp0s20f0u2u4.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.wlp0s20f3.useDHCP = lib.mkDefault true;
|
||||
|
||||
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
|
||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
# high-resolution display
|
||||
hardware.video.hidpi.enable = lib.mkDefault true;
|
||||
}
|
71
users/common/default.nix
Normal file
71
users/common/default.nix
Normal file
|
@ -0,0 +1,71 @@
|
|||
{ config, pkgs, ...} :
|
||||
{
|
||||
|
||||
programs.fzf.enable = true;
|
||||
|
||||
home.packages = with pkgs; [
|
||||
sqlite
|
||||
bat
|
||||
ripgrep
|
||||
];
|
||||
|
||||
programs.gpg = {
|
||||
enable = true;
|
||||
scdaemonSettings.disable-ccid = true;
|
||||
publicKeys = [
|
||||
{ source = ../../data/pubkey.gpg;
|
||||
trust = 5;
|
||||
}
|
||||
{ source = ../../data/newpubkey.gpg;
|
||||
trust = 5;
|
||||
}
|
||||
];
|
||||
};
|
||||
services.gpg-agent = {
|
||||
enable = true;
|
||||
enableSshSupport = true;
|
||||
};
|
||||
|
||||
programs.git.signing = {
|
||||
key = null;
|
||||
signByDefault = true;
|
||||
};
|
||||
|
||||
programs.zsh = {
|
||||
enable = true;
|
||||
initExtra = builtins.readFile ../../data/zshrc;
|
||||
plugins = [
|
||||
{ name = "powerlevel10k";
|
||||
file = "share/zsh-powerlevel10k/powerlevel10k.zsh-theme";
|
||||
src = pkgs.zsh-powerlevel10k;
|
||||
}
|
||||
{ name = "fzf-tab";
|
||||
file = "share/fzf-tab/fzf-tab.plugin.zsh";
|
||||
src = pkgs.zsh-fzf-tab;
|
||||
}
|
||||
{ name = "fast-syntax-highlighting";
|
||||
file = "share/zsh/site-functions/fast-syntax-highlighting.plugin.zsh";
|
||||
src = pkgs.zsh-fast-syntax-highlighting;
|
||||
}
|
||||
{ name = "zsh-histdb";
|
||||
file = "sqlite-history.zsh";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "larkery";
|
||||
repo = "zsh-histdb";
|
||||
rev = "30797f0";
|
||||
sha256 = "PQIFF8kz+baqmZWiSr+wc4EleZ/KD8Y+lxW2NT35/bg=";
|
||||
};
|
||||
}
|
||||
#{ name = "zsh-histdb-skim";
|
||||
# file = "zsh-histdb-skim.zsh";
|
||||
# src = pkgs.fetchFromGitHub {
|
||||
# owner = "m42e";
|
||||
# repo = "zsh-histdb-skim";
|
||||
# rev = "v0.8.1";
|
||||
# sha256 = "pcXSGjOKhN2nrRErggb8JAjw/3/bvTy1rvFhClta1Vs=";
|
||||
# };
|
||||
#}
|
||||
];
|
||||
|
||||
};
|
||||
}
|
11
users/common/desktop.nix
Normal file
11
users/common/desktop.nix
Normal file
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
...}:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
zathura
|
||||
pinentry
|
||||
arandr
|
||||
];
|
||||
}
|
85
users/common/herbstluftwm.nix
Normal file
85
users/common/herbstluftwm.nix
Normal file
|
@ -0,0 +1,85 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
# set the modifier key to WIN
|
||||
MOD = "Super";
|
||||
#set the default resize step for herbstluft
|
||||
RESIZE_STEP = 0.05;
|
||||
TAGS = map toString (lib.lists.range 1 9);
|
||||
in {
|
||||
home.file.".xinitrc".source = ../../data/herbstluftwm/xinitrc;
|
||||
xsession.windowManager.herbstluftwm = {
|
||||
enable = true;
|
||||
package = pkgs.herbstluftwm.overrideAttrs (finalAttrs: previousAttrs: {
|
||||
doCheck = false;
|
||||
});
|
||||
extraConfig = ''
|
||||
herbstclient set auto_detect_monitors 1
|
||||
autorandr -c
|
||||
herbstclient detect_monitors
|
||||
herbstclient merge_tag default
|
||||
|
||||
herbstclient attr theme.tiling.reset 1
|
||||
herbstclient attr theme.floating.reset 1
|
||||
herbstclient attr theme.active.color "#9fbc00"
|
||||
herbstclient attr theme.normal.color "#454545"
|
||||
herbstclient attr theme.urgent.color orange
|
||||
herbstclient attr theme.inner_width 1
|
||||
herbstclient attr theme.inner_color black
|
||||
herbstclient attr theme.border_width 3
|
||||
herbstclient attr theme.floating.border_width 4
|
||||
herbstclient attr theme.floating.outer_width 1
|
||||
herbstclient attr theme.floating.outer_color black
|
||||
herbstclient attr theme.active.inner_color "#3E4A00"
|
||||
herbstclient attr theme.active.outer_color "#3E4A00"
|
||||
herbstclient attr theme.background_color "#141414"
|
||||
'';
|
||||
|
||||
tags = TAGS;
|
||||
|
||||
mousebinds = {
|
||||
"${MOD}-Button1" = "move";
|
||||
"${MOD}-Button2" = "zoom";
|
||||
"${MOD}-Button3" = "resize";
|
||||
};
|
||||
|
||||
keybinds = import ../../data/herbstluftwm/keybinds.nix MOD TAGS;
|
||||
settings = {
|
||||
"default_frame_layout" = 3;
|
||||
|
||||
"frame_border_active_color" = "#222222";
|
||||
"frame_border_normal_color" = "#101010";
|
||||
"frame_bg_normal_color" = "#565656";
|
||||
"frame_bg_active_color" = "#345F0C";
|
||||
"frame_border_width" = 1;
|
||||
"always_show_frame" = 1;
|
||||
"frame_bg_transparent" = 1;
|
||||
"frame_transparent_width" = 5;
|
||||
"frame_gap" = 4;
|
||||
|
||||
"window_gap" = 0;
|
||||
"frame_padding" = 0;
|
||||
"smart_window_surroundings" = 0;
|
||||
"smart_frame_surroundings" = 1;
|
||||
"mouse_recenter_gap" = 0;
|
||||
|
||||
"tree_style" = "╾│ ├└╼─┐";
|
||||
};
|
||||
rules = [
|
||||
# Focus new clients by default
|
||||
"focus=on"
|
||||
|
||||
# Focus dialogs
|
||||
"windowtype='_NET_WM_WINDOW_TYPE_DIALOG' focus=on"
|
||||
|
||||
# Do not manage windows of type NOTIFICATION, DOCK, DESKTOP
|
||||
"windowtype~'_NET_WM_WINDOW_TYPE_(NOTIFICATION|DOCK|DESKTOP)' manage=off"
|
||||
|
||||
# Use pseudotiles for windows of type DIALOG, UTILITY, SPLASH
|
||||
"windowtype~'_NET_WM_WINDOW_TYPE_(DIALOG|UTILITY|SPLASH)' pseudotile=on"
|
||||
];
|
||||
};
|
||||
}
|
79
users/common/kitty.nix
Normal file
79
users/common/kitty.nix
Normal file
|
@ -0,0 +1,79 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
programs.kitty = {
|
||||
enable = true;
|
||||
package = pkgs.kitty.overrideAttrs (finalAttrs: prevAttrs: {
|
||||
doCheck = false;
|
||||
});
|
||||
font = {
|
||||
package = pkgs.nerdfonts;
|
||||
name = "FiraCode Nerd Font";
|
||||
size = 10;
|
||||
};
|
||||
settings = {
|
||||
# Use xterm-256color because copying terminfo-kitty is painful.
|
||||
term = "xterm-256color";
|
||||
|
||||
# Do not wait for inherited child processes.
|
||||
close_on_child_death = "yes";
|
||||
|
||||
# Disable ligatures.
|
||||
disable_ligatures = "always";
|
||||
|
||||
# Modified onehalfdark color scheme
|
||||
foreground = "#c9d3e5";
|
||||
background = "#090a0c";
|
||||
cursor = "#cccccc";
|
||||
|
||||
color0 = " #090a0c";
|
||||
color8 = " #393e48";
|
||||
color1 = " #b2555d";
|
||||
color9 = " #e06c75";
|
||||
color2 = " #81a566";
|
||||
color10 = "#98c379";
|
||||
color3 = " #ccab6e";
|
||||
color11 = "#e6c17c";
|
||||
color4 = " #5395cc";
|
||||
color12 = "#61afef";
|
||||
color5 = " #9378de";
|
||||
color13 = "#c678dd";
|
||||
color6 = " #cc9c66";
|
||||
color14 = "#e5ab69";
|
||||
color7 = " #979eab";
|
||||
color15 = "#abb2bf";
|
||||
|
||||
selection_foreground = "#282c34";
|
||||
selection_background = "#979eab";
|
||||
|
||||
# Disable cursor blinking
|
||||
cursor_blink_interval = "0";
|
||||
|
||||
# Big fat scrollback buffer
|
||||
scrollback_lines = "100000";
|
||||
# Set scrollback buffer for pager in MB
|
||||
scrollback_pager_history_size = "256";
|
||||
|
||||
# Don't copy on select
|
||||
copy_on_select = "no";
|
||||
|
||||
# Set program to open urls with
|
||||
open_url_with = "xdg-open";
|
||||
|
||||
# Fuck the bell
|
||||
enable_audio_bell = "no";
|
||||
};
|
||||
keybindings = {
|
||||
# Keyboard mappings
|
||||
"shift+page_up" = "scroll_page_up";
|
||||
"shift+page_down" = "scroll_page_down";
|
||||
"ctrl+shift+." = "change_font_size all -2.0";
|
||||
};
|
||||
extraConfig = ''
|
||||
# Use nvim as scrollback pager
|
||||
scrollback_pager nvim -u NONE -c "set nonumber nolist showtabline=0 foldcolumn=0 laststatus=0" -c "autocmd TermOpen * normal G" -c "silent write! /tmp/kitty_scrollback_buffer | te head -c-1 /tmp/kitty_scrollback_buffer; rm /tmp/kitty_scrollback_buffer; cat"
|
||||
'';
|
||||
};
|
||||
}
|
22
users/default.nix
Normal file
22
users/default.nix
Normal file
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
home-manager = builtins.fetchTarball "https://github.com/nix-community/home-manager/archive/master.tar.gz";
|
||||
in {
|
||||
imports = [
|
||||
(import "${home-manager}/nixos")
|
||||
];
|
||||
home-manager.users.patrick.imports = [./patrick.nix];
|
||||
home-manager.users.root = {
|
||||
imports = [ ./common ];
|
||||
programs.neovim.enable = true;
|
||||
programs.git.enable = true;
|
||||
xdg.configFile.nvim = {
|
||||
recursive = true;
|
||||
source = ../data/nvim;
|
||||
};
|
||||
home.stateVersion = "23.05";
|
||||
};
|
||||
}
|
36
users/patrick.nix
Normal file
36
users/patrick.nix
Normal file
|
@ -0,0 +1,36 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
home = {
|
||||
stateVersion = "23.05";
|
||||
packages = with pkgs; [
|
||||
firefox
|
||||
thunderbird
|
||||
discord
|
||||
];
|
||||
};
|
||||
imports = [
|
||||
common/kitty.nix
|
||||
common/herbstluftwm.nix
|
||||
common/desktop.nix
|
||||
./common ];
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
xsession.enable = true;
|
||||
programs.neovim = {
|
||||
enable = true;
|
||||
viAlias = true;
|
||||
vimAlias = true;
|
||||
vimdiffAlias = true;
|
||||
#withNodes = true;
|
||||
};
|
||||
programs.git.enable = true;
|
||||
|
||||
programs.zsh.enable = true;
|
||||
|
||||
xdg.configFile.nvim = {
|
||||
recursive = true;
|
||||
source = ../data/nvim;
|
||||
};
|
||||
}
|
Loading…
Reference in a new issue