mirror of
https://github.com/MuRuLOSE/limoka.git
synced 2026-06-19 15:34:18 +02:00
Compare commits
2 Commits
de110c3c8d
...
d203b114a8
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d203b114a8 | ||
|
|
0e4c07b5b5 |
241
SunnexGB/Heroku-Modules/SpotifyLyrics.py
Normal file
241
SunnexGB/Heroku-Modules/SpotifyLyrics.py
Normal file
@@ -0,0 +1,241 @@
|
|||||||
|
# meta developer: @SunnexGB
|
||||||
|
# meta pic: https://r2.fakecrime.bio/uploads/f49a9294-36ad-4fc4-801f-48cb049111d6.jpg
|
||||||
|
# meta banner: https://r2.fakecrime.bio/uploads/f49a9294-36ad-4fc4-801f-48cb049111d6.jpg
|
||||||
|
# meta fhsdesc: Spotify, music, музыка, спотифай,Lyrics, слова, текст, трек, песня
|
||||||
|
# все же я не знаю трек или сонг, так что пусть будет трек, а не сонг потому что интуитивнее поняттнее,наверное?
|
||||||
|
# крутой баннер да?
|
||||||
|
#current version
|
||||||
|
__version__ = (1, 1, 3)
|
||||||
|
|
||||||
|
from herokutl.types import Message
|
||||||
|
from .. import loader, utils
|
||||||
|
from ..types import InlineCall
|
||||||
|
import asyncio
|
||||||
|
|
||||||
|
@loader.tds
|
||||||
|
class SpotifyLyrics(loader.Module):
|
||||||
|
|
||||||
|
strings = {
|
||||||
|
"name": "migration",
|
||||||
|
"no_SpotifyLyrics": "u're not use SpotifyLyrics,install my new module.",
|
||||||
|
"inline_msg": "if u ready to migration pls click on the button.",
|
||||||
|
"already": "module already install, u're ready for migration ur db?",
|
||||||
|
"restartf": "u ready restart ur ub?",
|
||||||
|
"restartf_btn": "Ok",
|
||||||
|
"done": "migration is done.",
|
||||||
|
"confirm": "confirm",
|
||||||
|
"install": "install LiveLyrics",
|
||||||
|
"close": "close",
|
||||||
|
"migrate_db": "Yep"
|
||||||
|
}
|
||||||
|
|
||||||
|
strings_ru = {
|
||||||
|
"no_SpotifyLyrics": "ты не юзал SpotifyLyrics,установи новый модуль.",
|
||||||
|
"inline_msg": "если вы готовы к миграции нажмите на кнопку ниже.",
|
||||||
|
"already": "модуль уже стоиит,готовы к переносу данных?",
|
||||||
|
"restartf": "вы готовы к перезапуску юб?",
|
||||||
|
"restartf_btn": "Лан",
|
||||||
|
"done": "миграция завершена.",
|
||||||
|
"confirm": "подтвердить",
|
||||||
|
"install": "установить LiveLyrics",
|
||||||
|
"close": "закрыть",
|
||||||
|
"migrate_db": "Ага"
|
||||||
|
}
|
||||||
|
|
||||||
|
async def install_livelyrics(self, call: InlineCall):
|
||||||
|
m = self.lookup("Modules") or self.lookup("loader")
|
||||||
|
await m.download_and_install("https://raw.githubusercontent.com/SunnexGB/Heroku-Modules/refs/heads/main/LiveLyrics.py")
|
||||||
|
await call.delete()
|
||||||
|
|
||||||
|
async def confirm(self, call: InlineCall):
|
||||||
|
config = self.db.get("SpotifyLyrics", "__config__") or {}
|
||||||
|
self.db.set("LiveLyrics", "__config__", config)
|
||||||
|
await asyncio.sleep(1)
|
||||||
|
await self.invoke("unloadmod", "-f SpotifyLyrics", "me")
|
||||||
|
await call.edit(self.strings["done"])
|
||||||
|
await asyncio.sleep(2)
|
||||||
|
await call.edit(
|
||||||
|
self.strings["restartf"],
|
||||||
|
reply_markup=[
|
||||||
|
[{"text": self.strings["restartf_btn"], "callback": self.restartf}],
|
||||||
|
[{"text": self.strings["close"], "callback": self.close}],
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
async def migrate_db(self, call: InlineCall):
|
||||||
|
await call.edit(
|
||||||
|
self.strings["inline_msg"],
|
||||||
|
reply_markup=[
|
||||||
|
[{"text": self.strings["confirm"], "callback": self.confirm}],
|
||||||
|
[{"text": self.strings["close"], "callback": self.close}],
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
async def restartf(self, call: InlineCall):
|
||||||
|
await call.delete()
|
||||||
|
await self.invoke("restart", "-f", "me")
|
||||||
|
|
||||||
|
async def close(self, call: InlineCall):
|
||||||
|
await call.delete()
|
||||||
|
|
||||||
|
@loader.command()
|
||||||
|
async def snowl(self, message: Message):
|
||||||
|
SL_cfg = self.db.get("SpotifyLyrics", "__config__")
|
||||||
|
if SL_cfg is None:
|
||||||
|
return await utils.answer(
|
||||||
|
message,
|
||||||
|
self.strings["no_SpotifyLyrics"],
|
||||||
|
reply_markup=[
|
||||||
|
[{"text": self.strings["install"], "callback": self.install_livelyrics}],
|
||||||
|
[{"text": self.strings["close"], "callback": self.close}],
|
||||||
|
],
|
||||||
|
)
|
||||||
|
if self.lookup("LiveLyrics"):
|
||||||
|
return await utils.answer(
|
||||||
|
message,
|
||||||
|
"модуль уже стоиит,готовы к переносу данных",
|
||||||
|
reply_markup=[
|
||||||
|
[{"text": self.strings["migrate_db"], "callback": self.migrate_db}],
|
||||||
|
[{"text": self.strings["close"], "callback": self.close}],
|
||||||
|
],
|
||||||
|
)
|
||||||
|
await utils.answer(
|
||||||
|
message,
|
||||||
|
self.strings["inline_msg"],
|
||||||
|
reply_markup=[
|
||||||
|
[{"text": self.strings["confirm"], "callback": self.confirm}],
|
||||||
|
[{"text": self.strings["close"], "callback": self.close}],
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣠⠤⠤⣄⠠⠤⣤⠤⢤⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⠤⠒⠉⠁⠀⠀⠀⣠⠖⠉⣀⡀⣀⣤⠍⢩⣵⡢⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡠⠖⠋⠁⠀⠀⠀⠀⢀⣴⠊⠀⣠⠞⣠⠞⠉⢳⣦⠀⡈⠻⣦⠑⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡤⠖⠉⠀⠀⠀⠀⠀⠀⣠⣴⡿⠁⠀⡰⢁⡾⠁⠐⠃⢸⡇⠀⠸⡄⠀⠀⠈⠷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣆⠀⠀⠀⠀⣀⣠⡴⡿⠁⣼⡅⠀⣰⢣⢿⡇⡴⠀⠀⣾⡅⠀⠀⣧⠀⠀⠀⠀⢈⢂⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠛⠻⠿⠿⠷⠒⠒⠋⠁⡏⠸⠁⣸⣿⠇⢀⣧⠏⢸⡿⠁⠀⡼⠙⣧⠀⢀⣿⡄⢀⠠⠀⠘⡄⢡⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠁⣤⣠⣯⢿⠀⢸⣟⡴⡾⣳⣴⣾⡷⢠⠛⢆⣾⣿⡇⡀⠀⣦⠀⡇⠀⢣⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⢠⡄⠀⡄⠀⠀⠀⢀⣒⣒⣶⡀⠀⠀⠀⠀⠀⠀⠀⠀⢼⠀⣿⡿⣿⢸⠐⣿⣿⣿⣿⡿⣶⡿⢷⣯⣮⣾⢯⡟⣇⡇⣸⡏⢠⣠⠀⠀⢣⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⣿⣿⣿⣦⡄⣤⡾⢿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⢸⢠⣿⣿⣿⣼⣇⡿⣟⠛⠛⠃⠀⠀⠁⠉⣠⣶⣷⣄⣿⣼⣿⡆⣸⣧⡀⠀⠀⢆⠀⠀⠀⠀
|
||||||
|
# ⢸⣿⣿⡿⠛⠋⠉⢩⣍⣉⣻⡇⠀⠀⠀⠀⠀⠀⠀⠀⡇⣼⣿⢹⢿⡝⢿⣇⡈⠃⠀⠀⠀⠀⠀⠀⠛⢿⡏⣿⣿⢿⣿⡱⡸⠁⠈⠢⣀⠘⡆⠀⠀⠀
|
||||||
|
# ⠈⣿⡏⣤⠄⠘⠃⠸⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⢰⢱⠻⡇⢸⠸⣷⡀⣿⡁⠀⠀⠀⠀⡀⠀⠀⠀⢀⡼⣯⠁⣾⣿⠁⠀⠀⠀⠀⠈⠑⠃⠀⠀⠀
|
||||||
|
# ⢠⣬⣼⣧⡀⠀⠀⠀⢹⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⣾⣿⡦⠧⠬⣧⡸⣿⣧⠙⢠⡀⠀⠀⠀⠀⣀⡤⠊⠀⣿⣰⢿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⢸⣿⣿⣿⡀⢀⡀⠀⣸⣿⣿⡁⠀⠀⠀⠀⠀⠀⣰⣯⠟⠛⠛⠛⢿⣭⣿⣿⠷⣶⣟⣷⣶⣒⡉⠁⠀⠀⠜⢹⣿⡼⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠈⠛⠛⠛⠛⠛⠛⠓⠛⠛⠛⠃⠀⠀⠀⠀⢀⢼⣿⣏⣰⣿⣷⣴⣦⠙⣿⣿⡛⠛⠿⠥⢯⣀⣈⡇⢀⠀⠚⢙⡞⠑⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⢽⣿⣿⢻⣿⣿⣟⣿⣿⢿⣿⢦⣄⠀⣀⣀⠉⠩⠿⣷⣾⣭⠑⠒⠢⢄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⠏⠈⣿⣿⣿⣿⣿⣿⣿⣿⣾⣿⣧⢽⣯⣁⠀⠀⠀⠀⠒⠗⢺⣿⣭⣤⣄⠙⠢⣀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠏⠀⠀⣿⡟⠈⠻⣿⣿⣻⣿⣿⣟⣡⣴⣿⣿⣷⡞⠒⠒⠶⠶⠶⠤⣽⡿⠽⠦⣄⣀⠑⡄⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⠋⠀⢀⣴⣿⡇⠀⠀⠉⠻⣥⣽⠿⠋⠙⠻⣽⣿⣤⠃⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠈⠑⠳⣄⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠃⠀⣠⠊⣼⣿⡇⠀⠀⠐⢿⡿⠁⠀⠀⠀⢀⣀⣩⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢢⡀⠀⠀
|
||||||
|
# ⠀⠀⣠⠤⢤⣀⣀⡀⠀⠀⠀⠀⢠⠏⢀⡜⠁⢰⠇⣿⣿⠀⠀⠀⣈⡇⠀⠀⠀⠀⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢳⠀⠀
|
||||||
|
# ⠀⠀⠳⡀⠀⠀⠀⠉⠉⠙⠓⠒⠳⠤⠯⣄⡀⡞⠀⡿⣡⡴⠞⠋⢙⡇⠀⠀⠀⠀⢟⡛⠀⣿⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀
|
||||||
|
# ⠀⠀⠀⠹⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠁⠈⣯⣉⠀⠀⠀⢸⡇⠀⠀⠀⢰⡶⠀⢠⠟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡼⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⢹⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣧⠀⢰⠃⠟⢳⣄⠀⣾⡇⠀⠀⠀⠈⠀⣰⣯⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡜⠁⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠈⠓⠛⠙⣹⡟⠉⠉⡇⠀⠀⠀⣿⠀⠞⡸⠀⡜⢿⣷⡈⢿⡀⠀⠀⠀⣼⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣠⠤⢆⣴⠉⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⣴⠏⠀⠀⢠⡇⠀⠀⠀⣿⠀⠀⠁⢰⠁⢸⠻⣟⠾⡇⠀⢀⣾⣿⡇⣠⣴⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣰⣾⣿⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⣼⠋⠀⠀⠀⢸⡇⠀⠀⠀⠈⠙⠒⠒⠢⠭⣍⠀⢸⠓⢤⠴⠚⣿⡉⠀⠛⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣟⡏⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⡜⡽⠀⠀⠀⠀⢸⡇⠀⠀⠀⢀⣀⣀⣀⡀⠀⢸⠀⠺⠤⠼⢠⣾⡉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⠟⠻⣷⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⣸⢹⡇⠀⠀⠀⠀⢠⠏⠉⠉⠉⠉⠉⠉⠉⡝⢣⠘⡆⢰⣠⠞⠉⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⠘⡆⠀⢹⡄⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⢀⡇⣿⡇⠀⠀⠀⡰⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢆⠷⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠃⠀⠸⡄⠸⡇⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⢸⠀⡿⣇⠀⣠⠎⠀⠀⠀⠀⠀⠀⠀⣠⠎⠀⢀⠔⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡆⠈⣧⠀⠱⣸⣇⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⢾⠀⡇⢻⣾⠃⠀⠀⠀⠀⠀⠀⢠⢺⠃⠀⡴⢋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠇⠀⠘⡗⢆⠻⡏⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⢸⠀⡷⢁⠋⠓⠦⡴⠂⠀⠀⠀⣼⠃⢠⠎⠀⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡤⠀⠀⠀⢸⠀⡄⠀⠘⠞⢱⣧⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⣨⣇⢳⡎⢀⡴⠻⠇⠀⠀⠀⠀⠃⢠⠋⠀⠀⢹⠀⠀⠀⠀⠀⠀⠀⠀⠀⢦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡞⢦⠑⠀⠀⠀⢇⠸⣇⠀⠀⠀
|
||||||
|
# ⠀⢀⢸⠃⠈⣦⣷⣅⡀⢀⡄⠀⠀⠀⠀⢠⠇⠀⠀⠀⠀⣇⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⡀⠀⠀⠀⠀⠀⠀⠀⠀⢰⡃⠈⠃⠈⠐⠀⠈⢢⡓⢆⠀⠀
|
||||||
|
# ⢠⢃⡏⠀⣰⣿⠀⠉⠉⠉⡇⠀⠀⢀⠀⡞⠀⠀⠀⠀⠀⠸⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢦⡀⠀⠀⠀⠀⠀⠀⠀⢣⠀⠀⠀⣄⡀⠀⠀⢻⢸⠀⠀
|
||||||
|
# ⡇⢸⣾⢠⠇⢿⡀⠀⠀⠀⡧⠀⢰⡇⢸⠁⢰⠀⠀⠀⠀⠀⢳⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⢄⠀⠀⠀⠀⠋⠀⠀⢣⠀⠀⢱⠈⠒⢄⢸⠀⡇⠀
|
||||||
|
# ⠁⢸⢹⡼⠀⠀⠙⠒⢀⢜⡡⢠⠋⡇⡏⠀⢸⠀⠀⠀⠀⠀⠈⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠣⡀⠀⠀⡄⠀⠀⠀⢻⠀⠀⠀⠀⠀⢹⠀⡿⡄
|
||||||
|
# ⠀⠀⠈⠳⣤⢀⣠⠶⠓⢩⡡⠃⠀⢷⠀⠀⣼⠀⠀⠀⠀⠀⠀⠸⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢄⠀⡇⠀⠀⠀⠈⢧⠀⠀⠀⠀⡎⡀⡗⢵
|
||||||
|
# ⠀⠀⠀⠀⠋⠉⠀⢀⡠⠋⠀⠀⠀⡎⠀⠀⠇⠀⠀⠀⠀⠀⠀⠀⢳⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢢⡁⠀⠀⠀⠀⠈⢧⠀⢀⡼⠞⣧⠁⢸
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠈⠉⠀⠀⠀⠀⢰⠃⠀⠀⡃⠀⠀⠀⠀⠀⠀⠀⠈⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠱⡀⠀⠀⠀⠀⠈⣖⠉⠀⣰⠃⠀⠈
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡼⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠸⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠱⡀⠀⠀⠀⠀⠘⡄⠖⠁⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⢳⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣀⠱⡀⠀⠀⠀⠀⠹⡀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠁⠀⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⡀⡈⡇⠀⠀⠀⠀⠀⢀⡠⠔⠒⠋⠉⠀⠀⠀⢹⢳⠀⠀⠀⠀⠀⢳⡀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡾⠀⠀⠀⠀⣇⣠⡤⠒⠒⠛⠉⠉⠉⠹⡤⠋⠀⠀⠀⢀⡴⠋⠀⠀⠀⠀⠀⠀⠀⠀⢸⢸⠀⢀⡠⠖⠋⠉⣧⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠻⠷⢶⣶⠖⠚⠀⡇⠀⠀⠀⠀⠀⠀⠀⠈⠑⠒⠒⠊⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠈⠉⠉⠀⣀⡤⠞⠁⠀⠀⠀
|
||||||
|
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡤⠖⠚⠛⠲⣾⣷⣦⣤⠤⠤⠶⠦⠤⠤⣤⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠐⢁⡠⠖⠀⠉⠒⣬⣿⣿⣿⣡⠤⠴⠒⠲⠤⢄⠀⠈⠉⠓⠢⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠎⡴⠋⢀⠤⠒⣩⣿⣿⠟⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠓⠒⠽⣶⣾⣶⣤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠎⠎⠀⠐⠁⢠⣶⡿⠋⠁⠀⠀⠀⠀⠀⠀⣀⡴⠶⠖⠂⠀⠀⠀⣀⠀⠀⠈⠙⣿⣿⣿⠙⡄⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⢠⢞⠿⣯⢳⠀⠀⣼⢆⡀⠀⠀⠀⡸⠋⠀⠀⠀⠀⠀⠀⠀⡠⠞⠁⠀⠀⠀⠀⠀⠀⠀⢉⠻⣄⠀⠀⠈⢻⣿⣷⡸⡀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⠳⣵⡋⠀⣸⢯⠎⠀⠀⢀⡜⡡⠀⠀⠀⠀⠀⠀⢠⠞⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢣⠙⡆⠀⠀⠀⠹⣿⣏⡇⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠯⠼⣰⡿⠃⠀⠀⢠⣾⢾⠀⠀⠀⠀⠀⠀⡠⢁⡤⠊⠀⠀⠀⠀⠀⠀⢠⠀⠀⠀⠀⡇⠸⡄⠀⠀⠱⣹⡿⠇⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠏⠀⠀⠀⣠⡿⡵⠁⠀⠀⠀⡤⠀⡼⣡⠏⠀⠀⠀⢀⠀⠀⠀⠀⢸⠀⠀⠀⠀⢇⢁⢳⠀⠀⠀⢻⡅⡆⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡰⠁⠀⠀⢀⢞⡟⡼⠁⠀⠀⠀⣰⠁⣼⡿⠁⠀⡰⢡⣦⡏⠀⠀⠀⠀⡼⠀⠀⠀⠀⢼⢸⠸⡄⠀⠀⠀⣿⡇⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠞⠀⠀⢀⠔⠁⡞⣼⢃⡆⠀⠀⢠⠇⣰⡟⠤⢤⢾⣴⡵⣵⣧⠀⠀⠀⠀⡇⠀⠀⠀⡆⡬⠀⡇⡇⠀⠀⠀⢹⡇⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⡠⠘⢁⠔⠁⠀⣠⠂⣸⢰⣿⢸⠀⠀⠀⡜⢀⡟⣠⢔⣵⠿⠋⢀⣾⠆⠀⠀⠀⡼⠀⠀⣀⣸⢁⡇⠀⣿⡇⠀⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⢀⣀⡤⠴⠋⠀⡀⠋⢀⣴⠞⠁⡴⣇⣾⡇⢼⠀⠀⢀⣿⣸⣯⣶⣿⣧⣤⣄⣾⠋⠀⠀⢠⣴⡇⠀⠀⣬⡟⣾⣿⡀⢻⡇⠀⠀⠀⠸⡇⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⣭⢭⡴⢋⡴⠋⢀⠔⢀⣴⡿⠃⢠⢞⡵⣿⣏⣾⢸⣰⡀⠀⢻⢻⡏⣿⣿⣿⣿⠻⣷⠒⠦⠴⠿⣟⣁⣀⣼⣟⡴⠁⠘⡧⣿⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⡔⣡⣴⠎⠀⣠⢃⣴⡿⠋⢀⣴⠷⡏⢀⠙⣟⢼⡄⣿⣇⠀⢸⣾⡇⣽⣬⡽⠋⠀⠀⠀⠀⠀⠀⠀⢨⣿⣿⣿⣤⡀⠀⢳⡿⠀⠀⠀⢸⢠⡇⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⣼⣿⠃⠀⣰⢯⣾⠏⣠⡴⠛⠁⣸⢁⠆⠀⠘⣺⠳⣿⠻⣄⠀⣿⣧⠠⠅⠁⠀⠀⠀⠀⠀⠀⠀⠀⢻⠿⢿⡿⠙⢿⣧⣼⠃⡄⠀⢀⣾⢸⡇⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⣿⡇⠀⢀⣿⣿⣯⠞⠋⠀⠀⢠⢃⠎⠀⢰⢀⡏⢠⣿⣿⣿⡷⢼⣎⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠳⢯⣤⠤⢺⡿⣣⢾⠄⣰⣿⡇⣿⢿⡀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⣿⠀⢸⢸⣿⡿⠁⠀⠀⠀⢀⣯⠏⠀⣰⠃⡸⡀⣼⣿⣿⣿⣿⡄⠉⠀⠀⠀⠀⠀⠀⠀⠀⠂⠀⠀⠀⠀⠂⠀⣤⣿⣾⣿⣯⣾⣿⣿⡼⣿⢿⣿⣄⠀⠀⠀⠀⠀
|
||||||
|
# ⢿⡀⢸⠘⡿⠁⠀⠀⠀⢀⠞⠁⠀⣰⠇⡴⣱⢱⣿⣿⣿⣿⠁⠙⢆⠀⠀⠀⠀⠀⢀⢄⠀⠀⠀⠀⠀⠀⠀⣴⣿⣿⣿⣿⣿⢹⡿⠛⡇⢹⠘⣿⡷⢝⣲⡶⠞⠀
|
||||||
|
# ⠓⢷⠼⣧⢳⡀⠀⢀⡴⠋⠀⢀⡼⠃⡼⣵⢣⣿⣿⡿⢿⣿⣧⠀⠀⠑⣄⠀⠀⠀⠀⠈⠀⠀⠀⠀⢀⣤⣾⣿⣿⣿⣿⡿⣿⠀⡇⢸⡇⣸⠀⣿⣿⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠈⢢⡈⢷⣵⣔⡋⠀⠀⣠⠏⣠⢞⣽⣿⣿⣿⣿⢉⣹⣿⣿⣷⣤⠀⠀⠙⢦⡀⢀⣀⣤⣴⠒⠊⠉⠉⠉⠉⠙⠻⣿⣷⠹⣧⢣⣾⠃⡟⢀⣿⠟⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⣩⠦⣵⣯⣭⣵⠞⣡⡾⣣⣾⣿⠟⠛⠉⠸⣏⠀⠚⣿⣿⣿⣿⣷⣠⣤⣭⣿⣿⡟⢿⣦⠀⢀⠀⠀⠀⠀⠀⠀⠙⣷⣯⣯⢎⡼⣡⠞⠁⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⢀⡴⠊⢡⠞⢁⡰⢊⣵⡾⠟⠋⠉⢹⣹⠀⠀⠀⠀⠈⠒⣞⠁⣹⠿⡷⣮⣭⣭⣽⢿⢯⡗⠈⢻⣷⡋⠀⠀⠀⠀⠀⠀⠀⠘⣿⣿⡻⣍⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠉⠖⢠⠋⣴⡫⡾⠋⠁⠀⠀⠀⠢⣄⣏⡇⠀⠀⠀⠀⠀⠈⠋⠻⣤⢷⣃⣹⣏⣉⡦⠞⠁⢀⠞⠳⡳⡀⠀⠀⠀⠀⠀⠀⠀⢹⠑⠷⣌⠓⢤⡀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⡞⢠⣯⡿⠋⡜⠀⠀⠀⠀⠀⠀⠀⠀⢹⠻⡤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠁⠀⠀⠀⢀⡴⠀⠀⠀⠱⡑⡄⢀⡠⠤⠤⠤⠤⠬⠧⠤⠬⠷⣦⣈⡓⠦⣀⠀⠀⠀
|
||||||
|
# ⠀⣾⠋⢠⣾⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣇⢧⠀⠉⠓⠲⠤⣀⣀⠀⠀⠀⠀⠀⠀⡰⠋⠀⠀⠀⣀⠴⢛⣉⡠⠤⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⣿⣧⡈⠙⠢⣄
|
||||||
|
# ⢰⠃⡴⡇⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⢸⡀⠀⠀⠀⠀⠀⠈⠉⠙⠂⠀⠀⠀⠀⠀⢀⡠⣊⠥⠚⠁⣀⡤⠴⠒⠋⠁⠀⠀⠀⠀⠀⠀⠀⢠⣾⣿⡇⠀⠘⢦
|
||||||
|
# ⣿⢞⡾⢠⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣇⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣻⢚⣁⣤⠖⠋⣁⡤⣤⡴⠒⠒⠋⠁⢀⣀⣀⣀⡤⡼⣧⡟⢿⠀⠀⠈
|
||||||
|
# ⣏⣼⡇⣿⢧⠀⠀⠀⠀⠀⠀⠐⡄⠀⠀⠀⢸⢹⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢩⣿⣶⣶⣾⣇⠔⣉⣤⡖⠿⣍⣹⣿⣿⣯⣿⡿⠋⢹⡜⣾⡇⠀⠀
|
||||||
|
# ⣿⣿⢹⡇⢸⠀⠀⠀⠀⠀⠀⠀⠸⡄⠀⠀⠈⡏⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠀⣾⣿⣿⣿⣿⣿⡉⠉⣿⣿⢄⡀⠀⠈⠉⣳⠀⠀⠀⣾⣷⢸⡇⠀⠀
|
||||||
|
# ⢿⣿⣸⡇⣿⡇⠀⠀⠀⠀⠀⠀⠀⡗⠀⠀⢀⡵⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣸⣿⣿⣿⣿⣿⣿⣧⠀⣏⣋⠀⠀⠀⠀⠀⡇⠀⠀⠀⣿⣿⣿⡇⠀⢸
|
||||||
|
# ⠀⠻⡏⢧⣿⣿⡀⠀⠀⠀⠀⠀⠀⡆⢀⠔⠋⠀⠻⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⣿⣿⣿⣿⣿⣿⡿⠀⣿⡯⢹⣦⣀⣀⣠⠇⠀⠀⢸⣿⣿⣿⠁⢀⣿
|
||||||
|
# ⡀⠀⠙⢼⣿⣿⣧⠀⠀⠀⠀⠀⢠⠗⠁⠀⠀⠀⣰⠅⢺⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣿⣿⣿⣿⣿⣿⠁⢰⣷⢤⡀⠀⠀⠀⠉⡇⠀⠀⢸⣿⡿⠃⢀⣾⠟
|
||||||
|
# ⢽⣆⠙⢆⡙⢿⣿⡆⠀⠀⠀⠀⠈⡶⣄⠀⢠⠞⠁⠀⠀⠉⣵⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⣿⣿⣿⣿⠃⠀⡾⠿⡀⠁⠀⠀⠀⠸⡇⠀⠀⣾⠟⠁⢠⠟⠁⠀
|
||||||
|
# ⠀⠙⢧⠀⠙⣦⣝⢷⠀⠀⠀⠀⠀⣧⠟⡟⠁⠀⠀⠀⢀⣀⣼⠻⣥⣄⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⠏⠀⢸⣿⠀⠈⠳⣄⠀⠀⡔⣧⠀⠀⣯⡇⣰⠃⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⡄⠀⠸⣿⣧⣇⠀⠀⠀⠀⢿⠀⠻⣦⠀⠀⡾⣍⠀⠀⠀⠈⠻⣿⣦⡀⠀⠀⠀⠀⠘⣿⣿⡟⠀⢠⣧⡁⠀⠂⠤⢴⡓⠋⠀⡏⠀⠀⣿⠀⡇⠀⠀⠀⠀
|
||||||
|
# ⢧⠀⢠⣇⠀⠀⣿⣿⢻⡄⠀⠀⠀⢸⣄⡀⠈⠳⣦⠿⢛⡷⠀⠠⠖⠉⠀⠙⢿⢢⣀⠀⠀⠀⣿⡿⠀⢀⣞⠏⠈⢦⡀⠀⣴⠃⢀⣾⠃⠀⠀⣿⡀⣇⠀⠀⠀⠀
|
||||||
|
# ⢦⣠⢾⠏⢀⣼⡿⠇⢸⣧⠀⠀⠀⠘⡿⣿⣦⣄⡈⠉⠙⢷⣼⣷⡀⢀⡠⠖⠊⠉⠻⡗⢤⣰⡟⠁⣠⣿⠟⠤⣄⡈⠳⣰⡋⢠⡾⠃⠀⠀⢠⠿⣷⡈⠣⣄⣀⡴
|
||||||
|
# ⡯⠵⡷⠖⠋⣽⠀⠀⣾⣿⡀⠀⠀⠀⠹⣄⠈⠛⠻⠿⠶⣾⣷⣼⣇⢺⣹⣧⠀⠀⣠⠔⠛⠿⣿⣶⠿⠁⠀⠀⠀⣸⣶⣷⠾⠋⠀⠀⠀⢀⡞⠀⠈⠉⠙⠛⠉⠀
|
||||||
|
# ⠀⠀⡇⡀⠀⡏⠀⡸⣿⣿⡇⠀⠀⠀⠀⠙⣦⡀⠀⠀⠀⠀⠀⠀⢨⡉⠁⢸⣷⡎⠀⠀⠀⢠⠃⠈⢳⡀⠀⢀⣴⠛⠉⠁⠀⠀⠀⢀⣴⠙⡆⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⡸⣱⠃⠀⣷⢰⠃⣿⣹⡇⠀⠀⠀⠀⠀⠈⠛⢶⣤⣀⣀⣰⣶⣶⣿⣿⣿⡿⠟⠦⣄⢀⠏⠀⠀⠀⢙⣦⣾⣿⣇⠀⠀⠀⢀⣶⠉⢸⡇⢳⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⢰⠃⡏⠀⠀⢿⡏⠀⢻⡳⡇⠀⠀⠀⠀⠀⠀⠀⠀⢸⡉⠉⠛⠛⠛⠉⠉⠀⠀⠀⠀⠈⠉⠀⠀⠀⢠⣾⣿⣿⣿⣿⣿⠓⠚⣹⡇⠀⢸⡇⡜⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⢸⡈⣷⠀⠀⠘⣿⡀⠀⠙⢻⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠃⢻⣿⣿⣿⣿⠃⠀⢠⡟⠀⢠⡿⣱⠃⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣦⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣯⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣄⠀⠀⠀⠀⢀⣀⣀⣀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣻⣿⣿⣿⣿⠟⠙⣿⣿⣿⣶⣶⣶⡞⠉⠀⡉⠒⢤
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⠀⠀⠈⠻⠟⠋⠀⠀⠉⠒⠤⢥⣤⡬
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⣿⣿⣿⣿⠿⢿⣿⣿⠿⢿⣿⡿⢿⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⣿⣿⣿⠋⢻⣧⣾⣏⠙⣷⣿⣉⣷⣴⡿⢿⣿⣿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣼⣿⣿⣿⣧⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣾⣿⣿⣿⣷⣶⣶⣶⣤⣤⣀⣀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣴⣶⣿⣿⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠿⢿⣿⣶⣶
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⡀⣠⠴⠒⠒⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠿⠿⣛⣛⣯⣭⣭⣿⣿⣿⠿⠿⢿⣿⣿⣿⣿⣿⡿⠿⢻⣿⣿⣷⣶⣿⣿⣿⠿⠛⠋
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠈⠓⠮⣙⠢⠶⣿⣿⡿⢿⣻⣿⣿⣿⣶⣶⣶⣾⣿⣿⣿⣿⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣿⣿⣿⣿⣶⣿⣿⣿⣿⣿⡿⠟⠋⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠉⠉⠛⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣿⣿⠛⠉⠉⠉⠿⠟⢹⣿⣿⣿⣿⣿⣿⣿⣟⠉⠉⠁⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠉⠙⡟⣿⣿⣿⣿⣇⠙⠋⠀⠀⠀⠀⠀⢠⠿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠂⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠻⢸⣿⣿⣿⣿⣧⡀⠀⠀⠀⠀⠀⠀⢰⣿⣿⣿⣿⣿⣿⢿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⢿⣿⣿⣿⣿⣿⣷⣦⣤⡴⠚⢑⣿⣿⣿⣿⡿⠙⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⡸⠟⠛⢿⣿⣿⣿⣿⣷⣾⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠎⠀⠀⢀⣿⣿⡿⠁⠀⠈⠁⠉⠩⢐⣿⣿⣿⣧⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⢤⣤⡂⠀⢴⠞⣿⣿⠏⠀⠀⠀⠀⠀⠀⢀⣾⣿⣿⡿⠁⠀⠀⠉⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣋⠀⠀⠉⢳⣾⣾⣿⣿⣦⣀⡀⠀⠀⠀⠀⢸⡛⣿⣿⡇⠀⠀⠀⠀⢸⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⡤⠤⣤⣄⣀⠀⣠⣤⣴⣷⣾⣿⣿⣷⣦⣄⣚⣉⣙⣛⣛⣛⠛⢳⡀⢀⠴⢦⠤⢭⣙⣿⡛⠒⣠⠆⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⢠⡤⠄⠖⠒⠒⠚⠋⠛⢆⠘⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡀⠑⢋⣬⣥⣄⣀⠀⠰⠾⢿⣿⠟⠓⠒⣓⡄⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠘⢣⡀⢱⠖⢝⠻⡷⠾⠶⠾⡄⢀⡀⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣻⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣦⣤⣭⣧⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠹⣶⠂⠂⠁⠛⠂⠒⠤⢽⣿⠿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠛⠁⠀⢸⣿⣿⣿⣿⣿⣿⡻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⣟⠀⠀⠀⠀⠀⠀⠀⠀⠈⠑⠚⠛⠿⢿⣛⡻⢯⣁⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣤⡀⠀⣀⡠⠴
|
||||||
|
# ⠀⠀⠀⢹⡀⢐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠓⠀⠠⢼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⢿⣿⣿⣿⣿⣿⣿⣿⡿⣻⢟⡡⢎⡿
|
||||||
|
# ⠀⠀⠀⠘⡇⠘⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀⠀⢿⣿⣿⣿⣿⣿⣿⠶⠋⣭⠞⢴⣟
|
||||||
|
# ⠀⠀⠀⠀⠃⠀⠑⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡷⠶⠶⠶⠿⢻⡿⠟⠋⡁⠀⠃⠀⠀⢠⣿
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠣⠑⠂⠀⠀⠀⠀⡀⠋⡠⠅⠈⠀⠠⢨⣿
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⡴⠀⠀⠀⠀⠋⠀⠀⠀⠀⠀⠀⠁⣾⠋
|
||||||
|
# ⠀⠀⠀⠀⠀⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⠄⡀⠀⠄⠀⠔⠁⠀⠀⠀⠀⠀⢰⠃⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢄⠀⠀⠀⠀⠀⠀⠀⠀⢨⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡎⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠱⡀⠀⠀⠀⠀⠀⢀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡘⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠢⡀⠀⠀⠀⡾⠛⠛⠛⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠁⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⣸⣷⠿⣿⣿⣶⣤⣍⡻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⡎⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⡇⠀⠀⠈⠉⠛⠿⣿⣿⣦⣽⣛⣿⣿⣿⣯⣭⣥⣤⣶⣾⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⡰⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⠁⠀⠀⠀⠀⠀⠀⠀⠉⠙⣿⣿⣿⠟⠋⠉⠉⠉⠉⠉⠙⠛⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠃⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⢿⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠋⠁⠀⠀⠀⠀⠀⠀⠂⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⢰⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢣⠀⠀⠀⠀⠀⠀⠀⠀⢠⡏⢸⠁⠀⠀⠀⠀⠀⠀⠀⠀⢠⠇⠀⠀⠀⠀⠀⠀⠀⠀⢰⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡄⠀⠀⠀⠀⠀⠀⠀⠸⡇⡾⠀⠀⠀⠀⠀⠀⠀⠀⢀⡞⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢷⣄⣀⣀⣀⣀⣀⠤⢴⣧⣷⣦⣀⠀⠀⠀⠀⠀⢀⡞⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⠁⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⡈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⡀⠀⠀⢀⣀⣀⠘⣿⣿⣿⣿⣿⣷⣶⣶⣴⡞⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢣⢀⣐⡒⠒⣉⣥⠤⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⡼⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
241
SunnexGB/Heroku-Modules/YandexLyrics.py
Normal file
241
SunnexGB/Heroku-Modules/YandexLyrics.py
Normal file
@@ -0,0 +1,241 @@
|
|||||||
|
# meta developer: @SunnexGB
|
||||||
|
# meta pic: https://r2.fakecrime.bio/uploads/ab42b5e2-91f1-4ed1-8002-51b3184e3839.jpg
|
||||||
|
# meta banner: https://r2.fakecrime.bio/uploads/ab42b5e2-91f1-4ed1-8002-51b3184e3839.jpg
|
||||||
|
# meta fhsdesc: YaMusic, music, музыка, яндекс музыка,Lyrics, слова, текст, трек, песня
|
||||||
|
# все же я не знаю трек или сонг, так что пусть будет трек, а не сонг потому что интуитивнее поняттнее,наверное?
|
||||||
|
# крутой баннер да?
|
||||||
|
#current version
|
||||||
|
__version__ = (1, 1, 3)
|
||||||
|
|
||||||
|
from herokutl.types import Message
|
||||||
|
from .. import loader, utils
|
||||||
|
from ..types import InlineCall
|
||||||
|
import asyncio
|
||||||
|
|
||||||
|
@loader.tds
|
||||||
|
class YandexLyrics(loader.Module):
|
||||||
|
|
||||||
|
strings = {
|
||||||
|
"name": "migration",
|
||||||
|
"no_YaMusicMod": "u're not use YaMusicMod,install my new module.",
|
||||||
|
"inline_msg": "if u ready to migration pls click on the button.",
|
||||||
|
"already": "module already install, u're ready for migration ur db?",
|
||||||
|
"restartf": "u ready restart ur ub?",
|
||||||
|
"restartf_btn": "Ok",
|
||||||
|
"done": "migration is done.",
|
||||||
|
"confirm": "confirm",
|
||||||
|
"install": "install LiveLyrics",
|
||||||
|
"close": "close",
|
||||||
|
"migrate_db": "Yep"
|
||||||
|
}
|
||||||
|
|
||||||
|
strings_ru = {
|
||||||
|
"no_YaMusicMod": "ты не юзал YaMusicMod,установи новый модуль.",
|
||||||
|
"inline_msg": "если вы готовы к миграции нажмите на кнопку ниже.",
|
||||||
|
"already": "модуль уже стоиит,готовы к переносу данных?",
|
||||||
|
"restartf": "вы готовы к перезапуску юб?",
|
||||||
|
"restartf_btn": "Лан",
|
||||||
|
"done": "миграция завершена.",
|
||||||
|
"confirm": "подтвердить",
|
||||||
|
"install": "установить LiveLyrics",
|
||||||
|
"close": "закрыть",
|
||||||
|
"migrate_db": "Ага"
|
||||||
|
}
|
||||||
|
|
||||||
|
async def install_livelyrics(self, call: InlineCall):
|
||||||
|
m = self.lookup("Modules") or self.lookup("loader")
|
||||||
|
await m.download_and_install("https://raw.githubusercontent.com/SunnexGB/Heroku-Modules/refs/heads/main/LiveLyrics.py")
|
||||||
|
await call.delete()
|
||||||
|
|
||||||
|
async def confirm(self, call: InlineCall):
|
||||||
|
config = self.db.get("YaMusicMod", "__config__") or {}
|
||||||
|
self.db.set("LiveLyrics", "__config__", config)
|
||||||
|
await asyncio.sleep(1)
|
||||||
|
await self.invoke("unloadmod", "-f YaMusicMod", "me")
|
||||||
|
await call.edit(self.strings["done"])
|
||||||
|
await asyncio.sleep(2)
|
||||||
|
await call.edit(
|
||||||
|
self.strings["restartf"],
|
||||||
|
reply_markup=[
|
||||||
|
[{"text": self.strings["restartf_btn"], "callback": self.restartf}],
|
||||||
|
[{"text": self.strings["close"], "callback": self.close}],
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
async def migrate_db(self, call: InlineCall):
|
||||||
|
await call.edit(
|
||||||
|
self.strings["inline_msg"],
|
||||||
|
reply_markup=[
|
||||||
|
[{"text": self.strings["confirm"], "callback": self.confirm}],
|
||||||
|
[{"text": self.strings["close"], "callback": self.close}],
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
async def restartf(self, call: InlineCall):
|
||||||
|
await call.delete()
|
||||||
|
await self.invoke("restart", "-f", "me")
|
||||||
|
|
||||||
|
async def close(self, call: InlineCall):
|
||||||
|
await call.delete()
|
||||||
|
|
||||||
|
@loader.command()
|
||||||
|
async def ynowl(self, message: Message):
|
||||||
|
SL_cfg = self.db.get("YaMusicMod", "__config__")
|
||||||
|
if SL_cfg is None:
|
||||||
|
return await utils.answer(
|
||||||
|
message,
|
||||||
|
self.strings["no_YaMusicMod"],
|
||||||
|
reply_markup=[
|
||||||
|
[{"text": self.strings["install"], "callback": self.install_livelyrics}],
|
||||||
|
[{"text": self.strings["close"], "callback": self.close}],
|
||||||
|
],
|
||||||
|
)
|
||||||
|
if self.lookup("LiveLyrics"):
|
||||||
|
return await utils.answer(
|
||||||
|
message,
|
||||||
|
"модуль уже стоиит,готовы к переносу данных",
|
||||||
|
reply_markup=[
|
||||||
|
[{"text": self.strings["migrate_db"], "callback": self.migrate_db}],
|
||||||
|
[{"text": self.strings["close"], "callback": self.close}],
|
||||||
|
],
|
||||||
|
)
|
||||||
|
await utils.answer(
|
||||||
|
message,
|
||||||
|
self.strings["inline_msg"],
|
||||||
|
reply_markup=[
|
||||||
|
[{"text": self.strings["confirm"], "callback": self.confirm}],
|
||||||
|
[{"text": self.strings["close"], "callback": self.close}],
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣠⠤⠤⣄⠠⠤⣤⠤⢤⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⠤⠒⠉⠁⠀⠀⠀⣠⠖⠉⣀⡀⣀⣤⠍⢩⣵⡢⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡠⠖⠋⠁⠀⠀⠀⠀⢀⣴⠊⠀⣠⠞⣠⠞⠉⢳⣦⠀⡈⠻⣦⠑⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡤⠖⠉⠀⠀⠀⠀⠀⠀⣠⣴⡿⠁⠀⡰⢁⡾⠁⠐⠃⢸⡇⠀⠸⡄⠀⠀⠈⠷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣆⠀⠀⠀⠀⣀⣠⡴⡿⠁⣼⡅⠀⣰⢣⢿⡇⡴⠀⠀⣾⡅⠀⠀⣧⠀⠀⠀⠀⢈⢂⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠛⠻⠿⠿⠷⠒⠒⠋⠁⡏⠸⠁⣸⣿⠇⢀⣧⠏⢸⡿⠁⠀⡼⠙⣧⠀⢀⣿⡄⢀⠠⠀⠘⡄⢡⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠁⣤⣠⣯⢿⠀⢸⣟⡴⡾⣳⣴⣾⡷⢠⠛⢆⣾⣿⡇⡀⠀⣦⠀⡇⠀⢣⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⢠⡄⠀⡄⠀⠀⠀⢀⣒⣒⣶⡀⠀⠀⠀⠀⠀⠀⠀⠀⢼⠀⣿⡿⣿⢸⠐⣿⣿⣿⣿⡿⣶⡿⢷⣯⣮⣾⢯⡟⣇⡇⣸⡏⢠⣠⠀⠀⢣⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⣿⣿⣿⣦⡄⣤⡾⢿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⢸⢠⣿⣿⣿⣼⣇⡿⣟⠛⠛⠃⠀⠀⠁⠉⣠⣶⣷⣄⣿⣼⣿⡆⣸⣧⡀⠀⠀⢆⠀⠀⠀⠀
|
||||||
|
# ⢸⣿⣿⡿⠛⠋⠉⢩⣍⣉⣻⡇⠀⠀⠀⠀⠀⠀⠀⠀⡇⣼⣿⢹⢿⡝⢿⣇⡈⠃⠀⠀⠀⠀⠀⠀⠛⢿⡏⣿⣿⢿⣿⡱⡸⠁⠈⠢⣀⠘⡆⠀⠀⠀
|
||||||
|
# ⠈⣿⡏⣤⠄⠘⠃⠸⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⢰⢱⠻⡇⢸⠸⣷⡀⣿⡁⠀⠀⠀⠀⡀⠀⠀⠀⢀⡼⣯⠁⣾⣿⠁⠀⠀⠀⠀⠈⠑⠃⠀⠀⠀
|
||||||
|
# ⢠⣬⣼⣧⡀⠀⠀⠀⢹⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⣾⣿⡦⠧⠬⣧⡸⣿⣧⠙⢠⡀⠀⠀⠀⠀⣀⡤⠊⠀⣿⣰⢿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⢸⣿⣿⣿⡀⢀⡀⠀⣸⣿⣿⡁⠀⠀⠀⠀⠀⠀⣰⣯⠟⠛⠛⠛⢿⣭⣿⣿⠷⣶⣟⣷⣶⣒⡉⠁⠀⠀⠜⢹⣿⡼⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠈⠛⠛⠛⠛⠛⠛⠓⠛⠛⠛⠃⠀⠀⠀⠀⢀⢼⣿⣏⣰⣿⣷⣴⣦⠙⣿⣿⡛⠛⠿⠥⢯⣀⣈⡇⢀⠀⠚⢙⡞⠑⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⢽⣿⣿⢻⣿⣿⣟⣿⣿⢿⣿⢦⣄⠀⣀⣀⠉⠩⠿⣷⣾⣭⠑⠒⠢⢄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⠏⠈⣿⣿⣿⣿⣿⣿⣿⣿⣾⣿⣧⢽⣯⣁⠀⠀⠀⠀⠒⠗⢺⣿⣭⣤⣄⠙⠢⣀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠏⠀⠀⣿⡟⠈⠻⣿⣿⣻⣿⣿⣟⣡⣴⣿⣿⣷⡞⠒⠒⠶⠶⠶⠤⣽⡿⠽⠦⣄⣀⠑⡄⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⠋⠀⢀⣴⣿⡇⠀⠀⠉⠻⣥⣽⠿⠋⠙⠻⣽⣿⣤⠃⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠈⠑⠳⣄⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠃⠀⣠⠊⣼⣿⡇⠀⠀⠐⢿⡿⠁⠀⠀⠀⢀⣀⣩⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢢⡀⠀⠀
|
||||||
|
# ⠀⠀⣠⠤⢤⣀⣀⡀⠀⠀⠀⠀⢠⠏⢀⡜⠁⢰⠇⣿⣿⠀⠀⠀⣈⡇⠀⠀⠀⠀⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢳⠀⠀
|
||||||
|
# ⠀⠀⠳⡀⠀⠀⠀⠉⠉⠙⠓⠒⠳⠤⠯⣄⡀⡞⠀⡿⣡⡴⠞⠋⢙⡇⠀⠀⠀⠀⢟⡛⠀⣿⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀
|
||||||
|
# ⠀⠀⠀⠹⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠁⠈⣯⣉⠀⠀⠀⢸⡇⠀⠀⠀⢰⡶⠀⢠⠟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡼⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⢹⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣧⠀⢰⠃⠟⢳⣄⠀⣾⡇⠀⠀⠀⠈⠀⣰⣯⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡜⠁⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠈⠓⠛⠙⣹⡟⠉⠉⡇⠀⠀⠀⣿⠀⠞⡸⠀⡜⢿⣷⡈⢿⡀⠀⠀⠀⣼⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣠⠤⢆⣴⠉⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⣴⠏⠀⠀⢠⡇⠀⠀⠀⣿⠀⠀⠁⢰⠁⢸⠻⣟⠾⡇⠀⢀⣾⣿⡇⣠⣴⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣰⣾⣿⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⣼⠋⠀⠀⠀⢸⡇⠀⠀⠀⠈⠙⠒⠒⠢⠭⣍⠀⢸⠓⢤⠴⠚⣿⡉⠀⠛⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣟⡏⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⡜⡽⠀⠀⠀⠀⢸⡇⠀⠀⠀⢀⣀⣀⣀⡀⠀⢸⠀⠺⠤⠼⢠⣾⡉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⠟⠻⣷⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⣸⢹⡇⠀⠀⠀⠀⢠⠏⠉⠉⠉⠉⠉⠉⠉⡝⢣⠘⡆⢰⣠⠞⠉⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⠘⡆⠀⢹⡄⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⢀⡇⣿⡇⠀⠀⠀⡰⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢆⠷⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠃⠀⠸⡄⠸⡇⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⢸⠀⡿⣇⠀⣠⠎⠀⠀⠀⠀⠀⠀⠀⣠⠎⠀⢀⠔⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡆⠈⣧⠀⠱⣸⣇⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⢾⠀⡇⢻⣾⠃⠀⠀⠀⠀⠀⠀⢠⢺⠃⠀⡴⢋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠇⠀⠘⡗⢆⠻⡏⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⢸⠀⡷⢁⠋⠓⠦⡴⠂⠀⠀⠀⣼⠃⢠⠎⠀⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡤⠀⠀⠀⢸⠀⡄⠀⠘⠞⢱⣧⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⣨⣇⢳⡎⢀⡴⠻⠇⠀⠀⠀⠀⠃⢠⠋⠀⠀⢹⠀⠀⠀⠀⠀⠀⠀⠀⠀⢦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡞⢦⠑⠀⠀⠀⢇⠸⣇⠀⠀⠀
|
||||||
|
# ⠀⢀⢸⠃⠈⣦⣷⣅⡀⢀⡄⠀⠀⠀⠀⢠⠇⠀⠀⠀⠀⣇⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⡀⠀⠀⠀⠀⠀⠀⠀⠀⢰⡃⠈⠃⠈⠐⠀⠈⢢⡓⢆⠀⠀
|
||||||
|
# ⢠⢃⡏⠀⣰⣿⠀⠉⠉⠉⡇⠀⠀⢀⠀⡞⠀⠀⠀⠀⠀⠸⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢦⡀⠀⠀⠀⠀⠀⠀⠀⢣⠀⠀⠀⣄⡀⠀⠀⢻⢸⠀⠀
|
||||||
|
# ⡇⢸⣾⢠⠇⢿⡀⠀⠀⠀⡧⠀⢰⡇⢸⠁⢰⠀⠀⠀⠀⠀⢳⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⢄⠀⠀⠀⠀⠋⠀⠀⢣⠀⠀⢱⠈⠒⢄⢸⠀⡇⠀
|
||||||
|
# ⠁⢸⢹⡼⠀⠀⠙⠒⢀⢜⡡⢠⠋⡇⡏⠀⢸⠀⠀⠀⠀⠀⠈⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠣⡀⠀⠀⡄⠀⠀⠀⢻⠀⠀⠀⠀⠀⢹⠀⡿⡄
|
||||||
|
# ⠀⠀⠈⠳⣤⢀⣠⠶⠓⢩⡡⠃⠀⢷⠀⠀⣼⠀⠀⠀⠀⠀⠀⠸⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢄⠀⡇⠀⠀⠀⠈⢧⠀⠀⠀⠀⡎⡀⡗⢵
|
||||||
|
# ⠀⠀⠀⠀⠋⠉⠀⢀⡠⠋⠀⠀⠀⡎⠀⠀⠇⠀⠀⠀⠀⠀⠀⠀⢳⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢢⡁⠀⠀⠀⠀⠈⢧⠀⢀⡼⠞⣧⠁⢸
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠈⠉⠀⠀⠀⠀⢰⠃⠀⠀⡃⠀⠀⠀⠀⠀⠀⠀⠈⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠱⡀⠀⠀⠀⠀⠈⣖⠉⠀⣰⠃⠀⠈
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡼⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠸⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠱⡀⠀⠀⠀⠀⠘⡄⠖⠁⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⢳⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣀⠱⡀⠀⠀⠀⠀⠹⡀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠁⠀⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⡀⡈⡇⠀⠀⠀⠀⠀⢀⡠⠔⠒⠋⠉⠀⠀⠀⢹⢳⠀⠀⠀⠀⠀⢳⡀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡾⠀⠀⠀⠀⣇⣠⡤⠒⠒⠛⠉⠉⠉⠹⡤⠋⠀⠀⠀⢀⡴⠋⠀⠀⠀⠀⠀⠀⠀⠀⢸⢸⠀⢀⡠⠖⠋⠉⣧⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠻⠷⢶⣶⠖⠚⠀⡇⠀⠀⠀⠀⠀⠀⠀⠈⠑⠒⠒⠊⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠈⠉⠉⠀⣀⡤⠞⠁⠀⠀⠀
|
||||||
|
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡤⠖⠚⠛⠲⣾⣷⣦⣤⠤⠤⠶⠦⠤⠤⣤⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠐⢁⡠⠖⠀⠉⠒⣬⣿⣿⣿⣡⠤⠴⠒⠲⠤⢄⠀⠈⠉⠓⠢⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠎⡴⠋⢀⠤⠒⣩⣿⣿⠟⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠓⠒⠽⣶⣾⣶⣤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠎⠎⠀⠐⠁⢠⣶⡿⠋⠁⠀⠀⠀⠀⠀⠀⣀⡴⠶⠖⠂⠀⠀⠀⣀⠀⠀⠈⠙⣿⣿⣿⠙⡄⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⢠⢞⠿⣯⢳⠀⠀⣼⢆⡀⠀⠀⠀⡸⠋⠀⠀⠀⠀⠀⠀⠀⡠⠞⠁⠀⠀⠀⠀⠀⠀⠀⢉⠻⣄⠀⠀⠈⢻⣿⣷⡸⡀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⠳⣵⡋⠀⣸⢯⠎⠀⠀⢀⡜⡡⠀⠀⠀⠀⠀⠀⢠⠞⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢣⠙⡆⠀⠀⠀⠹⣿⣏⡇⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠯⠼⣰⡿⠃⠀⠀⢠⣾⢾⠀⠀⠀⠀⠀⠀⡠⢁⡤⠊⠀⠀⠀⠀⠀⠀⢠⠀⠀⠀⠀⡇⠸⡄⠀⠀⠱⣹⡿⠇⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠏⠀⠀⠀⣠⡿⡵⠁⠀⠀⠀⡤⠀⡼⣡⠏⠀⠀⠀⢀⠀⠀⠀⠀⢸⠀⠀⠀⠀⢇⢁⢳⠀⠀⠀⢻⡅⡆⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡰⠁⠀⠀⢀⢞⡟⡼⠁⠀⠀⠀⣰⠁⣼⡿⠁⠀⡰⢡⣦⡏⠀⠀⠀⠀⡼⠀⠀⠀⠀⢼⢸⠸⡄⠀⠀⠀⣿⡇⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠞⠀⠀⢀⠔⠁⡞⣼⢃⡆⠀⠀⢠⠇⣰⡟⠤⢤⢾⣴⡵⣵⣧⠀⠀⠀⠀⡇⠀⠀⠀⡆⡬⠀⡇⡇⠀⠀⠀⢹⡇⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⡠⠘⢁⠔⠁⠀⣠⠂⣸⢰⣿⢸⠀⠀⠀⡜⢀⡟⣠⢔⣵⠿⠋⢀⣾⠆⠀⠀⠀⡼⠀⠀⣀⣸⢁⡇⠀⣿⡇⠀⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⢀⣀⡤⠴⠋⠀⡀⠋⢀⣴⠞⠁⡴⣇⣾⡇⢼⠀⠀⢀⣿⣸⣯⣶⣿⣧⣤⣄⣾⠋⠀⠀⢠⣴⡇⠀⠀⣬⡟⣾⣿⡀⢻⡇⠀⠀⠀⠸⡇⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⣭⢭⡴⢋⡴⠋⢀⠔⢀⣴⡿⠃⢠⢞⡵⣿⣏⣾⢸⣰⡀⠀⢻⢻⡏⣿⣿⣿⣿⠻⣷⠒⠦⠴⠿⣟⣁⣀⣼⣟⡴⠁⠘⡧⣿⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⡔⣡⣴⠎⠀⣠⢃⣴⡿⠋⢀⣴⠷⡏⢀⠙⣟⢼⡄⣿⣇⠀⢸⣾⡇⣽⣬⡽⠋⠀⠀⠀⠀⠀⠀⠀⢨⣿⣿⣿⣤⡀⠀⢳⡿⠀⠀⠀⢸⢠⡇⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⣼⣿⠃⠀⣰⢯⣾⠏⣠⡴⠛⠁⣸⢁⠆⠀⠘⣺⠳⣿⠻⣄⠀⣿⣧⠠⠅⠁⠀⠀⠀⠀⠀⠀⠀⠀⢻⠿⢿⡿⠙⢿⣧⣼⠃⡄⠀⢀⣾⢸⡇⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⣿⡇⠀⢀⣿⣿⣯⠞⠋⠀⠀⢠⢃⠎⠀⢰⢀⡏⢠⣿⣿⣿⡷⢼⣎⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠳⢯⣤⠤⢺⡿⣣⢾⠄⣰⣿⡇⣿⢿⡀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⣿⠀⢸⢸⣿⡿⠁⠀⠀⠀⢀⣯⠏⠀⣰⠃⡸⡀⣼⣿⣿⣿⣿⡄⠉⠀⠀⠀⠀⠀⠀⠀⠀⠂⠀⠀⠀⠀⠂⠀⣤⣿⣾⣿⣯⣾⣿⣿⡼⣿⢿⣿⣄⠀⠀⠀⠀⠀
|
||||||
|
# ⢿⡀⢸⠘⡿⠁⠀⠀⠀⢀⠞⠁⠀⣰⠇⡴⣱⢱⣿⣿⣿⣿⠁⠙⢆⠀⠀⠀⠀⠀⢀⢄⠀⠀⠀⠀⠀⠀⠀⣴⣿⣿⣿⣿⣿⢹⡿⠛⡇⢹⠘⣿⡷⢝⣲⡶⠞⠀
|
||||||
|
# ⠓⢷⠼⣧⢳⡀⠀⢀⡴⠋⠀⢀⡼⠃⡼⣵⢣⣿⣿⡿⢿⣿⣧⠀⠀⠑⣄⠀⠀⠀⠀⠈⠀⠀⠀⠀⢀⣤⣾⣿⣿⣿⣿⡿⣿⠀⡇⢸⡇⣸⠀⣿⣿⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠈⢢⡈⢷⣵⣔⡋⠀⠀⣠⠏⣠⢞⣽⣿⣿⣿⣿⢉⣹⣿⣿⣷⣤⠀⠀⠙⢦⡀⢀⣀⣤⣴⠒⠊⠉⠉⠉⠉⠙⠻⣿⣷⠹⣧⢣⣾⠃⡟⢀⣿⠟⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⣩⠦⣵⣯⣭⣵⠞⣡⡾⣣⣾⣿⠟⠛⠉⠸⣏⠀⠚⣿⣿⣿⣿⣷⣠⣤⣭⣿⣿⡟⢿⣦⠀⢀⠀⠀⠀⠀⠀⠀⠙⣷⣯⣯⢎⡼⣡⠞⠁⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⢀⡴⠊⢡⠞⢁⡰⢊⣵⡾⠟⠋⠉⢹⣹⠀⠀⠀⠀⠈⠒⣞⠁⣹⠿⡷⣮⣭⣭⣽⢿⢯⡗⠈⢻⣷⡋⠀⠀⠀⠀⠀⠀⠀⠘⣿⣿⡻⣍⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠉⠖⢠⠋⣴⡫⡾⠋⠁⠀⠀⠀⠢⣄⣏⡇⠀⠀⠀⠀⠀⠈⠋⠻⣤⢷⣃⣹⣏⣉⡦⠞⠁⢀⠞⠳⡳⡀⠀⠀⠀⠀⠀⠀⠀⢹⠑⠷⣌⠓⢤⡀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⡞⢠⣯⡿⠋⡜⠀⠀⠀⠀⠀⠀⠀⠀⢹⠻⡤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠁⠀⠀⠀⢀⡴⠀⠀⠀⠱⡑⡄⢀⡠⠤⠤⠤⠤⠬⠧⠤⠬⠷⣦⣈⡓⠦⣀⠀⠀⠀
|
||||||
|
# ⠀⣾⠋⢠⣾⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣇⢧⠀⠉⠓⠲⠤⣀⣀⠀⠀⠀⠀⠀⠀⡰⠋⠀⠀⠀⣀⠴⢛⣉⡠⠤⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⣿⣧⡈⠙⠢⣄
|
||||||
|
# ⢰⠃⡴⡇⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⢸⡀⠀⠀⠀⠀⠀⠈⠉⠙⠂⠀⠀⠀⠀⠀⢀⡠⣊⠥⠚⠁⣀⡤⠴⠒⠋⠁⠀⠀⠀⠀⠀⠀⠀⢠⣾⣿⡇⠀⠘⢦
|
||||||
|
# ⣿⢞⡾⢠⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣇⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣻⢚⣁⣤⠖⠋⣁⡤⣤⡴⠒⠒⠋⠁⢀⣀⣀⣀⡤⡼⣧⡟⢿⠀⠀⠈
|
||||||
|
# ⣏⣼⡇⣿⢧⠀⠀⠀⠀⠀⠀⠐⡄⠀⠀⠀⢸⢹⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢩⣿⣶⣶⣾⣇⠔⣉⣤⡖⠿⣍⣹⣿⣿⣯⣿⡿⠋⢹⡜⣾⡇⠀⠀
|
||||||
|
# ⣿⣿⢹⡇⢸⠀⠀⠀⠀⠀⠀⠀⠸⡄⠀⠀⠈⡏⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠀⣾⣿⣿⣿⣿⣿⡉⠉⣿⣿⢄⡀⠀⠈⠉⣳⠀⠀⠀⣾⣷⢸⡇⠀⠀
|
||||||
|
# ⢿⣿⣸⡇⣿⡇⠀⠀⠀⠀⠀⠀⠀⡗⠀⠀⢀⡵⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣸⣿⣿⣿⣿⣿⣿⣧⠀⣏⣋⠀⠀⠀⠀⠀⡇⠀⠀⠀⣿⣿⣿⡇⠀⢸
|
||||||
|
# ⠀⠻⡏⢧⣿⣿⡀⠀⠀⠀⠀⠀⠀⡆⢀⠔⠋⠀⠻⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⣿⣿⣿⣿⣿⣿⡿⠀⣿⡯⢹⣦⣀⣀⣠⠇⠀⠀⢸⣿⣿⣿⠁⢀⣿
|
||||||
|
# ⡀⠀⠙⢼⣿⣿⣧⠀⠀⠀⠀⠀⢠⠗⠁⠀⠀⠀⣰⠅⢺⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣿⣿⣿⣿⣿⣿⠁⢰⣷⢤⡀⠀⠀⠀⠉⡇⠀⠀⢸⣿⡿⠃⢀⣾⠟
|
||||||
|
# ⢽⣆⠙⢆⡙⢿⣿⡆⠀⠀⠀⠀⠈⡶⣄⠀⢠⠞⠁⠀⠀⠉⣵⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⣿⣿⣿⣿⠃⠀⡾⠿⡀⠁⠀⠀⠀⠸⡇⠀⠀⣾⠟⠁⢠⠟⠁⠀
|
||||||
|
# ⠀⠙⢧⠀⠙⣦⣝⢷⠀⠀⠀⠀⠀⣧⠟⡟⠁⠀⠀⠀⢀⣀⣼⠻⣥⣄⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⠏⠀⢸⣿⠀⠈⠳⣄⠀⠀⡔⣧⠀⠀⣯⡇⣰⠃⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⡄⠀⠸⣿⣧⣇⠀⠀⠀⠀⢿⠀⠻⣦⠀⠀⡾⣍⠀⠀⠀⠈⠻⣿⣦⡀⠀⠀⠀⠀⠘⣿⣿⡟⠀⢠⣧⡁⠀⠂⠤⢴⡓⠋⠀⡏⠀⠀⣿⠀⡇⠀⠀⠀⠀
|
||||||
|
# ⢧⠀⢠⣇⠀⠀⣿⣿⢻⡄⠀⠀⠀⢸⣄⡀⠈⠳⣦⠿⢛⡷⠀⠠⠖⠉⠀⠙⢿⢢⣀⠀⠀⠀⣿⡿⠀⢀⣞⠏⠈⢦⡀⠀⣴⠃⢀⣾⠃⠀⠀⣿⡀⣇⠀⠀⠀⠀
|
||||||
|
# ⢦⣠⢾⠏⢀⣼⡿⠇⢸⣧⠀⠀⠀⠘⡿⣿⣦⣄⡈⠉⠙⢷⣼⣷⡀⢀⡠⠖⠊⠉⠻⡗⢤⣰⡟⠁⣠⣿⠟⠤⣄⡈⠳⣰⡋⢠⡾⠃⠀⠀⢠⠿⣷⡈⠣⣄⣀⡴
|
||||||
|
# ⡯⠵⡷⠖⠋⣽⠀⠀⣾⣿⡀⠀⠀⠀⠹⣄⠈⠛⠻⠿⠶⣾⣷⣼⣇⢺⣹⣧⠀⠀⣠⠔⠛⠿⣿⣶⠿⠁⠀⠀⠀⣸⣶⣷⠾⠋⠀⠀⠀⢀⡞⠀⠈⠉⠙⠛⠉⠀
|
||||||
|
# ⠀⠀⡇⡀⠀⡏⠀⡸⣿⣿⡇⠀⠀⠀⠀⠙⣦⡀⠀⠀⠀⠀⠀⠀⢨⡉⠁⢸⣷⡎⠀⠀⠀⢠⠃⠈⢳⡀⠀⢀⣴⠛⠉⠁⠀⠀⠀⢀⣴⠙⡆⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⡸⣱⠃⠀⣷⢰⠃⣿⣹⡇⠀⠀⠀⠀⠀⠈⠛⢶⣤⣀⣀⣰⣶⣶⣿⣿⣿⡿⠟⠦⣄⢀⠏⠀⠀⠀⢙⣦⣾⣿⣇⠀⠀⠀⢀⣶⠉⢸⡇⢳⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⢰⠃⡏⠀⠀⢿⡏⠀⢻⡳⡇⠀⠀⠀⠀⠀⠀⠀⠀⢸⡉⠉⠛⠛⠛⠉⠉⠀⠀⠀⠀⠈⠉⠀⠀⠀⢠⣾⣿⣿⣿⣿⣿⠓⠚⣹⡇⠀⢸⡇⡜⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⢸⡈⣷⠀⠀⠘⣿⡀⠀⠙⢻⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠃⢻⣿⣿⣿⣿⠃⠀⢠⡟⠀⢠⡿⣱⠃⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣦⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣯⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣄⠀⠀⠀⠀⢀⣀⣀⣀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣻⣿⣿⣿⣿⠟⠙⣿⣿⣿⣶⣶⣶⡞⠉⠀⡉⠒⢤
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⠀⠀⠈⠻⠟⠋⠀⠀⠉⠒⠤⢥⣤⡬
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⣿⣿⣿⣿⠿⢿⣿⣿⠿⢿⣿⡿⢿⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⣿⣿⣿⠋⢻⣧⣾⣏⠙⣷⣿⣉⣷⣴⡿⢿⣿⣿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣼⣿⣿⣿⣧⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣾⣿⣿⣿⣷⣶⣶⣶⣤⣤⣀⣀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣴⣶⣿⣿⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠿⢿⣿⣶⣶
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⡀⣠⠴⠒⠒⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠿⠿⣛⣛⣯⣭⣭⣿⣿⣿⠿⠿⢿⣿⣿⣿⣿⣿⡿⠿⢻⣿⣿⣷⣶⣿⣿⣿⠿⠛⠋
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠈⠓⠮⣙⠢⠶⣿⣿⡿⢿⣻⣿⣿⣿⣶⣶⣶⣾⣿⣿⣿⣿⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣿⣿⣿⣿⣶⣿⣿⣿⣿⣿⡿⠟⠋⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠉⠉⠛⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣿⣿⠛⠉⠉⠉⠿⠟⢹⣿⣿⣿⣿⣿⣿⣿⣟⠉⠉⠁⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠉⠙⡟⣿⣿⣿⣿⣇⠙⠋⠀⠀⠀⠀⠀⢠⠿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠂⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠻⢸⣿⣿⣿⣿⣧⡀⠀⠀⠀⠀⠀⠀⢰⣿⣿⣿⣿⣿⣿⢿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⢿⣿⣿⣿⣿⣿⣷⣦⣤⡴⠚⢑⣿⣿⣿⣿⡿⠙⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⡸⠟⠛⢿⣿⣿⣿⣿⣷⣾⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠎⠀⠀⢀⣿⣿⡿⠁⠀⠈⠁⠉⠩⢐⣿⣿⣿⣧⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⢤⣤⡂⠀⢴⠞⣿⣿⠏⠀⠀⠀⠀⠀⠀⢀⣾⣿⣿⡿⠁⠀⠀⠉⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣋⠀⠀⠉⢳⣾⣾⣿⣿⣦⣀⡀⠀⠀⠀⠀⢸⡛⣿⣿⡇⠀⠀⠀⠀⢸⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⡤⠤⣤⣄⣀⠀⣠⣤⣴⣷⣾⣿⣿⣷⣦⣄⣚⣉⣙⣛⣛⣛⠛⢳⡀⢀⠴⢦⠤⢭⣙⣿⡛⠒⣠⠆⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⢠⡤⠄⠖⠒⠒⠚⠋⠛⢆⠘⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡀⠑⢋⣬⣥⣄⣀⠀⠰⠾⢿⣿⠟⠓⠒⣓⡄⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠘⢣⡀⢱⠖⢝⠻⡷⠾⠶⠾⡄⢀⡀⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣻⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣦⣤⣭⣧⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠹⣶⠂⠂⠁⠛⠂⠒⠤⢽⣿⠿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠛⠁⠀⢸⣿⣿⣿⣿⣿⣿⡻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⣟⠀⠀⠀⠀⠀⠀⠀⠀⠈⠑⠚⠛⠿⢿⣛⡻⢯⣁⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣤⡀⠀⣀⡠⠴
|
||||||
|
# ⠀⠀⠀⢹⡀⢐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠓⠀⠠⢼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⢿⣿⣿⣿⣿⣿⣿⣿⡿⣻⢟⡡⢎⡿
|
||||||
|
# ⠀⠀⠀⠘⡇⠘⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀⠀⢿⣿⣿⣿⣿⣿⣿⠶⠋⣭⠞⢴⣟
|
||||||
|
# ⠀⠀⠀⠀⠃⠀⠑⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡷⠶⠶⠶⠿⢻⡿⠟⠋⡁⠀⠃⠀⠀⢠⣿
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠣⠑⠂⠀⠀⠀⠀⡀⠋⡠⠅⠈⠀⠠⢨⣿
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⡴⠀⠀⠀⠀⠋⠀⠀⠀⠀⠀⠀⠁⣾⠋
|
||||||
|
# ⠀⠀⠀⠀⠀⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⠄⡀⠀⠄⠀⠔⠁⠀⠀⠀⠀⠀⢰⠃⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢄⠀⠀⠀⠀⠀⠀⠀⠀⢨⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡎⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠱⡀⠀⠀⠀⠀⠀⢀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡘⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠢⡀⠀⠀⠀⡾⠛⠛⠛⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠁⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⣸⣷⠿⣿⣿⣶⣤⣍⡻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⡎⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⡇⠀⠀⠈⠉⠛⠿⣿⣿⣦⣽⣛⣿⣿⣿⣯⣭⣥⣤⣶⣾⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⡰⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⠁⠀⠀⠀⠀⠀⠀⠀⠉⠙⣿⣿⣿⠟⠋⠉⠉⠉⠉⠉⠙⠛⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠃⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⢿⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠋⠁⠀⠀⠀⠀⠀⠀⠂⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⢰⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢣⠀⠀⠀⠀⠀⠀⠀⠀⢠⡏⢸⠁⠀⠀⠀⠀⠀⠀⠀⠀⢠⠇⠀⠀⠀⠀⠀⠀⠀⠀⢰⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⠸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡄⠀⠀⠀⠀⠀⠀⠀⠸⡇⡾⠀⠀⠀⠀⠀⠀⠀⠀⢀⡞⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢷⣄⣀⣀⣀⣀⣀⠤⢴⣧⣷⣦⣀⠀⠀⠀⠀⠀⢀⡞⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⠁⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⡈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⡀⠀⠀⢀⣀⣀⠘⣿⣿⣿⣿⣿⣷⣶⣶⣴⡞⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
# ⠀⠀⠀⠀⠀⠀⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢣⢀⣐⡒⠒⣉⣥⠤⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⡼⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
120
modules.json
120
modules.json
@@ -469,6 +469,64 @@
|
|||||||
"has_on_unload": false,
|
"has_on_unload": false,
|
||||||
"class_cmd_names": {}
|
"class_cmd_names": {}
|
||||||
},
|
},
|
||||||
|
"SunnexGB/Heroku-Modules/SpotifyLyrics.py": {
|
||||||
|
"name": "SpotifyLyrics",
|
||||||
|
"description": "",
|
||||||
|
"cls_doc": {},
|
||||||
|
"meta": {
|
||||||
|
"pic": "https://r2.fakecrime.bio/uploads/f49a9294-36ad-4fc4-801f-48cb049111d6.jpg",
|
||||||
|
"banner": "https://r2.fakecrime.bio/uploads/f49a9294-36ad-4fc4-801f-48cb049111d6.jpg",
|
||||||
|
"developer": "@SunnexGB",
|
||||||
|
"fhsdesc": "Spotify, music, музыка, спотифай,Lyrics, слова, текст, трек, песня"
|
||||||
|
},
|
||||||
|
"commands": [
|
||||||
|
{
|
||||||
|
"snowl": ""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"new_commands": [
|
||||||
|
{
|
||||||
|
"name": "snowl",
|
||||||
|
"original_name": "snowl",
|
||||||
|
"description": {
|
||||||
|
"default": ""
|
||||||
|
},
|
||||||
|
"cmd_names": {},
|
||||||
|
"aliases": [],
|
||||||
|
"usage": null,
|
||||||
|
"inline": false,
|
||||||
|
"is_inline_handler": false,
|
||||||
|
"decorators": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"inline_handlers": [],
|
||||||
|
"strings": {
|
||||||
|
"name": "migration",
|
||||||
|
"no_SpotifyLyrics": "u're not use SpotifyLyrics,install my new module.",
|
||||||
|
"inline_msg": "if u ready to migration pls click on the button.",
|
||||||
|
"already": "module already install, u're ready for migration ur db?",
|
||||||
|
"restartf": "u ready restart ur ub?",
|
||||||
|
"restartf_btn": "Ok",
|
||||||
|
"done": "migration is done.",
|
||||||
|
"confirm": "confirm",
|
||||||
|
"install": "install LiveLyrics",
|
||||||
|
"close": "close",
|
||||||
|
"migrate_db": "Yep",
|
||||||
|
"no_SpotifyLyrics_ru": "ты не юзал SpotifyLyrics,установи новый модуль.",
|
||||||
|
"inline_msg_ru": "если вы готовы к миграции нажмите на кнопку ниже.",
|
||||||
|
"already_ru": "модуль уже стоиит,готовы к переносу данных?",
|
||||||
|
"restartf_ru": "вы готовы к перезапуску юб?",
|
||||||
|
"restartf_btn_ru": "Лан",
|
||||||
|
"done_ru": "миграция завершена.",
|
||||||
|
"confirm_ru": "подтвердить",
|
||||||
|
"install_ru": "установить LiveLyrics",
|
||||||
|
"close_ru": "закрыть",
|
||||||
|
"migrate_db_ru": "Ага"
|
||||||
|
},
|
||||||
|
"has_on_load": false,
|
||||||
|
"has_on_unload": false,
|
||||||
|
"class_cmd_names": {}
|
||||||
|
},
|
||||||
"SunnexGB/Heroku-Modules/Mikuru.py": {
|
"SunnexGB/Heroku-Modules/Mikuru.py": {
|
||||||
"name": "Mikuru",
|
"name": "Mikuru",
|
||||||
"description": "Censors words with phrase Mikuru Asahina",
|
"description": "Censors words with phrase Mikuru Asahina",
|
||||||
@@ -891,6 +949,64 @@
|
|||||||
"has_on_unload": true,
|
"has_on_unload": true,
|
||||||
"class_cmd_names": {}
|
"class_cmd_names": {}
|
||||||
},
|
},
|
||||||
|
"SunnexGB/Heroku-Modules/YandexLyrics.py": {
|
||||||
|
"name": "YandexLyrics",
|
||||||
|
"description": "",
|
||||||
|
"cls_doc": {},
|
||||||
|
"meta": {
|
||||||
|
"pic": "https://r2.fakecrime.bio/uploads/ab42b5e2-91f1-4ed1-8002-51b3184e3839.jpg",
|
||||||
|
"banner": "https://r2.fakecrime.bio/uploads/ab42b5e2-91f1-4ed1-8002-51b3184e3839.jpg",
|
||||||
|
"developer": "@SunnexGB",
|
||||||
|
"fhsdesc": "YaMusic, music, музыка, яндекс музыка,Lyrics, слова, текст, трек, песня"
|
||||||
|
},
|
||||||
|
"commands": [
|
||||||
|
{
|
||||||
|
"ynowl": ""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"new_commands": [
|
||||||
|
{
|
||||||
|
"name": "ynowl",
|
||||||
|
"original_name": "ynowl",
|
||||||
|
"description": {
|
||||||
|
"default": ""
|
||||||
|
},
|
||||||
|
"cmd_names": {},
|
||||||
|
"aliases": [],
|
||||||
|
"usage": null,
|
||||||
|
"inline": false,
|
||||||
|
"is_inline_handler": false,
|
||||||
|
"decorators": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"inline_handlers": [],
|
||||||
|
"strings": {
|
||||||
|
"name": "migration",
|
||||||
|
"no_YaMusicMod": "u're not use YaMusicMod,install my new module.",
|
||||||
|
"inline_msg": "if u ready to migration pls click on the button.",
|
||||||
|
"already": "module already install, u're ready for migration ur db?",
|
||||||
|
"restartf": "u ready restart ur ub?",
|
||||||
|
"restartf_btn": "Ok",
|
||||||
|
"done": "migration is done.",
|
||||||
|
"confirm": "confirm",
|
||||||
|
"install": "install LiveLyrics",
|
||||||
|
"close": "close",
|
||||||
|
"migrate_db": "Yep",
|
||||||
|
"no_YaMusicMod_ru": "ты не юзал YaMusicMod,установи новый модуль.",
|
||||||
|
"inline_msg_ru": "если вы готовы к миграции нажмите на кнопку ниже.",
|
||||||
|
"already_ru": "модуль уже стоиит,готовы к переносу данных?",
|
||||||
|
"restartf_ru": "вы готовы к перезапуску юб?",
|
||||||
|
"restartf_btn_ru": "Лан",
|
||||||
|
"done_ru": "миграция завершена.",
|
||||||
|
"confirm_ru": "подтвердить",
|
||||||
|
"install_ru": "установить LiveLyrics",
|
||||||
|
"close_ru": "закрыть",
|
||||||
|
"migrate_db_ru": "Ага"
|
||||||
|
},
|
||||||
|
"has_on_load": false,
|
||||||
|
"has_on_unload": false,
|
||||||
|
"class_cmd_names": {}
|
||||||
|
},
|
||||||
"SunnexGB/Heroku-Modules/Hangman.py": {
|
"SunnexGB/Heroku-Modules/Hangman.py": {
|
||||||
"name": "Hangman",
|
"name": "Hangman",
|
||||||
"description": "Висилица",
|
"description": "Висилица",
|
||||||
@@ -79994,7 +80110,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"meta": {
|
"meta": {
|
||||||
"total_modules": 1010,
|
"total_modules": 1012,
|
||||||
"generated_at": "2026-06-17T02:58:22.712075"
|
"generated_at": "2026-06-16T03:26:11.134799"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user