Задачі
base64
base64
Потрібно написати конвертор у формат \textbf{base64} та з формату \textbf{base64}.
Кодування в формат \textbf{base64} відбувається наступним чином:
1. Якщо довжина вхідного тексту в байтах не ділиться на \textbf{3}, то він доповнюється мінімальною кількістю нульових байтів так, щоб довжина ділилась на \textbf{3}, кількість доданих байтів запам'ятовується.
2. Текст розбивається на групи по \textbf{3} байти. Кожна група кодується окремо.
3. З трьох байтів отримується \textbf{24}-бітне число. Перший байт трійки є старшим, третій --- молодшим.
4. \textbf{24}-бітне число розбивається на чотири \textbf{6}-бітні групи. Старші \textbf{6} біт визначають перший символ кодуючої четвірки, молодші \textbf{6} біт --- останній і т.п.
5. Шестірки бітов кодуються символами наступного набору:
\textbf{ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/}
Номер \textbf{0} кодується буквою '\textbf{A}', номер \textbf{1} буквою '\textbf{B}', номер \textbf{63} символом '\textbf{/}'.
6. Отримані четвірки символів записуаються одна за одною у тому ж порядку, у якому йшли трійки, з яких вони були отримані.
7. Згадується, скільки нульових символів було додано в кінець вхідного тексту на кроці \textbf{1}, і стільки останніх символів закодованого тексту замінюється на '\textbf{=}'.
8. Текст розбивається на групи по \textbf{76} символів (в останній може бути менше) і кожна така група записується в окремому рядку. Кожен непустий рядок повинен закінчуватись переводенням рядка (символи \textbf{13} \textbf{10}).
\InputFile
У першому рядку міститься тип інформації у вхідному файлі, другий рядок пустий, далі йде інформація, яку потрібно закодувати чи розкодувати.
Якщо потрібно закодувати текст, то файл починається символами '\textbf{Content-Transfer-Encoding: 8bit}', за якими йде \textbf{4} символи \textbf{13} \textbf{10} \textbf{13} \textbf{10} --- і весь залишок файлу --- набір байтів, які підлягають кодуванню. Об'єм кодованого тексту ("текст" може бути двійковими даними) не перевищує \textbf{100 000} байт.
Якщо потрібно декодувати текст, то файл починається символами '\textbf{Content-Transfer-Encoding: base64}', за якими йде \textbf{4} символи \textbf{13} \textbf{10} \textbf{13} \textbf{10} --- і весь залишок файлу --- текст, закодований \textbf{base64}. Закодований текст, отриманий з заданого, не перевищує \textbf{100 000} байт.
\OutputFile
Виведіть рядок з протилежним типом інформації, потім пустий рядок, потім результат кодування або декодування.
Якщо потрібно було закодувати текст, то вихідні дані повинні починатись символами '\textbf{Content-Transfer-Encoding: base64}', за якими повинні йти \textbf{4} символи \textbf{13} \textbf{10} \textbf{13} \textbf{10} --- і далі до кінця файлу повинен міститись текст, закодований \textbf{base64}.
Якщо потрібно було розкодувати текст, то вихідні даніе повинні починатись символами '\textbf{Content-Transfer-Encoding: 8bit}', за якими повинні йти \textbf{4} символи \textbf{13} \textbf{10} \textbf{13} \textbf{10} --- і далі до кінця файлу повинен міститись розкодований текст.
Вхідні дані #1
Content-Transfer-Encoding: 8bit Vologda SPU
Вихідні дані #1
Content-Transfer-Encoding: base64 Vm9sb2dkYSBTUFU=