Калькулятор pH слабого основания
Расчёт водородного показателя pH, гидроксид-ионов [OH⁻], pOH и степени диссоциации α для слабых оснований по концентрации и константе диссоциации Kb (или pKb).
—
pH
водородный показатель
—
pOH
гидроксильный показатель
—
α
степень диссоциации, %
Как пользоваться
1
Введите молярную концентрацию слабого основания C (моль/л). Например, для 0.1 M раствора аммиака укажите 0.1. Допустимый диапазон: от 10⁻¹⁴ до 10 моль/л.
2
Выберите способ задания константы диссоциации: через Kb (например, 1.8·10⁻⁵ для аммиака) или через pKb (например, 4.74 для аммиака). Переключатель автоматически обновит активное поле ввода.
3
Нажмите кнопку «Рассчитать». Результаты — pH, pOH, равновесная концентрация [OH⁻] и степень диссоциации α — появятся в панели справа.
4
При необходимости измените исходные данные и повторите расчёт. Кнопка «Сбросить» очищает все поля и результаты. Для очень разбавленных растворов (C < 10⁻⁷ M) учитывается автопротолиз воды.
Примеры использования
Аммиак NH₃ (0.1 M, Kb = 1.8·10⁻⁵)
C = 0.1 моль/л, Kb = 1.8·10⁻⁵ → [OH⁻] = √(1.8·10⁻⁵ · 0.1) ≈ 1.34·10⁻³ моль/л, pOH ≈ 2.87, pH ≈ 11.13, α ≈ 1.34%. Типичное значение для бытового нашатырного раствора.
Метиламин CH₃NH₂ (0.05 M, pKb = 3.34)
C = 0.05 моль/л, pKb = 3.34 → Kb = 10⁻³·³⁴ ≈ 4.57·10⁻⁴, [OH⁻] = √(4.57·10⁻⁴ · 0.05) ≈ 4.78·10⁻³ моль/л, pOH ≈ 2.32, pH ≈ 11.68, α ≈ 9.56%. Метиламин — более сильное основание, чем аммиак.
Пиридин C₅H₅N (0.2 M, Kb = 1.7·10⁻⁹)
C = 0.2 моль/л, Kb = 1.7·10⁻⁹ → [OH⁻] = √(1.7·10⁻⁹ · 0.2) ≈ 5.83·10⁻⁵ моль/л, pOH ≈ 4.23, pH ≈ 9.77, α ≈ 0.029%. Очень слабое основание, степень диссоциации крайне мала.
Важные нюансы
- Формула [OH⁻] = √(Kb · C) справедлива только для слабых оснований при условии α < 5% (или C/Kb > 500). При нарушении условия необходимо решать квадратное уравнение, что калькулятор делает автоматически.
- Для концентраций ниже 10⁻⁷ моль/л необходимо учитывать вклад автопротолиза воды (собственная [OH⁻] воды = 10⁻⁷ моль/л). Калькулятор применяет уточнённый расчёт для разбавленных растворов.
- Температурная зависимость: константа Kb и ионное произведение воды Kw = 1.0·10⁻¹⁴ приведены для стандартных условий 25 °C. При других температурах pH смещается.
- Если рассчитанный pH превышает 14 или оказывается ниже 7 (для слабого основания), проверьте корректность введённых данных. Возможно, вы указали Kb сильного основания либо слишком высокую концентрацию.
- Техника безопасности: даже слабые основания (аммиак, амины) могут вызывать раздражение слизистых, ожоги при высоких концентрациях. Всегда работайте в перчатках, очках и под вытяжкой. Не вдыхайте пары летучих оснований.
Источники данных
- IUPAC Gold Book — Compendium of Chemical Terminology. Определения pH, pOH, константы диссоциации Kb, степени диссоциации. International Union of Pure and Applied Chemistry.
- NIST Chemistry WebBook — эталонные термодинамические данные, включая значения pKb для аммиака, алифатических и ароматических аминов. National Institute of Standards and Technology.
- CRC Handbook of Chemistry and Physics, 104th Edition — таблицы констант диссоциации слабых оснований и ионного произведения воды при различных температурах.
- Стандартные химические формулы и методики приближённого расчёта pH слабых электролитов — на основе учебных курсов общей и аналитической химии (школьно-вузовский уровень справочных значений при 25 °C).
Онлайн-калькулятор pH слабого основания позволяет быстро вычислить водородный показатель, концентрацию гидроксид-ионов и степень диссоциации по молярной концентрации и константе Kb. Расчёт учитывает приближение слабого электролита и автопротолиз воды для разбавленных растворов, что даёт высокую точность для учебных и лабораторных оценок. Инструмент полезен студентам-химикам, преподавателям и специалистам-аналитикам. Поддерживается ввод как Kb, так и pKb.
CiAgICAoZnVuY3Rpb24oKXsKICAgICAgICBjb25zdCBjSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tZ2VuLWNhbGMtYycpOwogICAgICAgIGNvbnN0IGtiSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tZ2VuLWNhbGMta2InKTsKICAgICAgICBjb25zdCBwa2JJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1nZW4tY2FsYy1wa2InKTsKICAgICAgICBjb25zdCBrYkdyb3VwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25uLWdlbi1jYWxjLWtiLWdyb3VwJyk7CiAgICAgICAgY29uc3QgcGtiR3JvdXAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tZ2VuLWNhbGMtcGtiLWdyb3VwJyk7CiAgICAgICAgY29uc3QgcmFkaW9LYiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W25hbWU9Im5uLWdlbi1jYWxjLWtiLW1vZGUiXVt2YWx1ZT0ia2IiXScpOwogICAgICAgIGNvbnN0IHJhZGlvUGtiID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXRbbmFtZT0ibm4tZ2VuLWNhbGMta2ItbW9kZSJdW3ZhbHVlPSJwa2IiXScpOwogICAgICAgIGNvbnN0IGNFcnJvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1nZW4tY2FsYy1jLWVycm9yJyk7CiAgICAgICAgY29uc3Qga2JFcnJvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1nZW4tY2FsYy1rYi1lcnJvcicpOwogICAgICAgIGNvbnN0IHBrYkVycm9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25uLWdlbi1jYWxjLXBrYi1lcnJvcicpOwogICAgICAgIGNvbnN0IGNhbGNCdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tZ2VuLWNhbGMtYnRuJyk7CiAgICAgICAgY29uc3QgcmVzZXRCdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tZ2VuLWNhbGMtcmVzZXQnKTsKICAgICAgICBjb25zdCByZXN1bHRQaCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1nZW4tY2FsYy1yZXN1bHQtcGgnKTsKICAgICAgICBjb25zdCByZXN1bHRQb2ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tZ2VuLWNhbGMtcmVzdWx0LXBvaCcpOwogICAgICAgIGNvbnN0IHJlc3VsdE9oID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25uLWdlbi1jYWxjLXJlc3VsdC1vaCcpOwogICAgICAgIGNvbnN0IHJlc3VsdEFscGhhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25uLWdlbi1jYWxjLXJlc3VsdC1hbHBoYScpOwoKICAgICAgICBmdW5jdGlvbiBjbGVhckVycm9ycygpIHsKICAgICAgICAgICAgY0Vycm9yLnRleHRDb250ZW50ID0gJyc7CiAgICAgICAgICAgIGtiRXJyb3IudGV4dENvbnRlbnQgPSAnJzsKICAgICAgICAgICAgcGtiRXJyb3IudGV4dENvbnRlbnQgPSAnJzsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHNob3dFcnJvcihlbCwgbXNnKSB7CiAgICAgICAgICAgIGlmIChlbCkgZWwudGV4dENvbnRlbnQgPSBtc2c7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiByZXNldFJlc3VsdHMoKSB7CiAgICAgICAgICAgIHJlc3VsdFBoLnRleHRDb250ZW50ID0gJ+KAlCc7CiAgICAgICAgICAgIHJlc3VsdFBvaC50ZXh0Q29udGVudCA9ICfigJQnOwogICAgICAgICAgICByZXN1bHRPaC50ZXh0Q29udGVudCA9ICfigJQnOwogICAgICAgICAgICByZXN1bHRBbHBoYS50ZXh0Q29udGVudCA9ICfigJQnOwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gdG9nZ2xlS2JNb2RlKCkgewogICAgICAgICAgICBjb25zdCBpc1BrYiA9IHJhZGlvUGtiLmNoZWNrZWQ7CiAgICAgICAgICAgIGlmIChpc1BrYikgewogICAgICAgICAgICAgICAga2JHcm91cC5jbGFzc0xpc3QuYWRkKCdubi1nZW4taGlkZGVuJyk7CiAgICAgICAgICAgICAgICBwa2JHcm91cC5jbGFzc0xpc3QucmVtb3ZlKCdubi1nZW4taGlkZGVuJyk7CiAgICAgICAgICAgICAgICBrYklucHV0LnJlbW92ZUF0dHJpYnV0ZSgncmVxdWlyZWQnKTsKICAgICAgICAgICAgICAgIHBrYklucHV0LnNldEF0dHJpYnV0ZSgncmVxdWlyZWQnLCAnJyk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBwa2JHcm91cC5jbGFzc0xpc3QuYWRkKCdubi1nZW4taGlkZGVuJyk7CiAgICAgICAgICAgICAgICBrYkdyb3VwLmNsYXNzTGlzdC5yZW1vdmUoJ25uLWdlbi1oaWRkZW4nKTsKICAgICAgICAgICAgICAgIHBrYklucHV0LnJlbW92ZUF0dHJpYnV0ZSgncmVxdWlyZWQnKTsKICAgICAgICAgICAgICAgIGtiSW5wdXQuc2V0QXR0cmlidXRlKCdyZXF1aXJlZCcsICcnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjbGVhckVycm9ycygpOwogICAgICAgICAgICByZXNldFJlc3VsdHMoKTsKICAgICAgICB9CgogICAgICAgIHJhZGlvS2IuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgdG9nZ2xlS2JNb2RlKTsKICAgICAgICByYWRpb1BrYi5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCB0b2dnbGVLYk1vZGUpOwoKICAgICAgICBmdW5jdGlvbiBnZXRLYlZhbHVlKCkgewogICAgICAgICAgICBjb25zdCBpc1BrYiA9IHJhZGlvUGtiLmNoZWNrZWQ7CiAgICAgICAgICAgIGlmIChpc1BrYikgewogICAgICAgICAgICAgICAgY29uc3QgcGtiVmFsID0gcGFyc2VGbG9hdChwa2JJbnB1dC52YWx1ZSk7CiAgICAgICAgICAgICAgICBpZiAoaXNOYU4ocGtiVmFsKSB8fCBwa2JJbnB1dC52YWx1ZS50cmltKCkgPT09ICcnKSB7CiAgICAgICAgICAgICAgICAgICAgc2hvd0Vycm9yKHBrYkVycm9yLCAn0JLQstC10LTQuNGC0LUg0LfQvdCw0YfQtdC90LjQtSBwS2IuJyk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAocGtiVmFsIDwgMCkgewogICAgICAgICAgICAgICAgICAgIHNob3dFcnJvcihwa2JFcnJvciwgJ3BLYiDQvdC1INC80L7QttC10YIg0LHRi9GC0Ywg0L7RgtGA0LjRhtCw0YLQtdC70YzQvdGL0LwuJyk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAocGtiVmFsID4gNjApIHsKICAgICAgICAgICAgICAgICAgICBzaG93RXJyb3IocGtiRXJyb3IsICdwS2Ig0YHQu9C40YjQutC+0Lwg0LLQtdC70LjQutC+IChLYiA8IDEw4oG74oG24oGwKS4nKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHBrYkVycm9yLnRleHRDb250ZW50ID0gJyc7CiAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5wb3coMTAsIC1wa2JWYWwpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgY29uc3Qga2JWYWwgPSBwYXJzZUZsb2F0KGtiSW5wdXQudmFsdWUpOwogICAgICAgICAgICAgICAgaWYgKGlzTmFOKGtiVmFsKSB8fCBrYklucHV0LnZhbHVlLnRyaW0oKSA9PT0gJycpIHsKICAgICAgICAgICAgICAgICAgICBzaG93RXJyb3Ioa2JFcnJvciwgJ9CS0LLQtdC00LjRgtC1INC30L3QsNGH0LXQvdC40LUgS2IuJyk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoa2JWYWwgPD0gMCkgewogICAgICAgICAgICAgICAgICAgIHNob3dFcnJvcihrYkVycm9yLCAnS2Ig0LTQvtC70LbQvdC+INCx0YvRgtGMINC/0L7Qu9C+0LbQuNGC0LXQu9GM0L3Ri9C8INGH0LjRgdC70L7QvC4nKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChrYlZhbCA+IDEpIHsKICAgICAgICAgICAgICAgICAgICBzaG93RXJyb3Ioa2JFcnJvciwgJ0tiINC90LUg0LzQvtC20LXRgiDQv9GA0LXQstGL0YjQsNGC0YwgMSAo0YXQsNGA0LDQutGC0LXRgNC90L4g0LTQu9GPINGB0LvQsNCx0L7Qs9C+INC+0YHQvdC+0LLQsNC90LjRjykuJyk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoa2JWYWwgPCAxZS02MCkgewogICAgICAgICAgICAgICAgICAgIHNob3dFcnJvcihrYkVycm9yLCAnS2Ig0YHQu9C40YjQutC+0Lwg0LzQsNC70L4gKNC80LXQvdC10LUgMTDigbvigbbigbApLicpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAga2JFcnJvci50ZXh0Q29udGVudCA9ICcnOwogICAgICAgICAgICAgICAgcmV0dXJuIGtiVmFsOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBjYWxjdWxhdGUoKSB7CiAgICAgICAgICAgIGNsZWFyRXJyb3JzKCk7CiAgICAgICAgICAgIGNvbnN0IGNSYXcgPSBjSW5wdXQudmFsdWUudHJpbSgpOwogICAgICAgICAgICBpZiAoY1JhdyA9PT0gJycpIHsKICAgICAgICAgICAgICAgIHNob3dFcnJvcihjRXJyb3IsICfQktCy0LXQtNC40YLQtSDQutC+0L3RhtC10L3RgtGA0LDRhtC40Y4uJyk7CiAgICAgICAgICAgICAgICByZXNldFJlc3VsdHMoKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBDID0gcGFyc2VGbG9hdChjUmF3KTsKICAgICAgICAgICAgaWYgKGlzTmFOKEMpKSB7CiAgICAgICAgICAgICAgICBzaG93RXJyb3IoY0Vycm9yLCAn0J3QtdC60L7RgNGA0LXQutGC0L3QvtC1INC30L3QsNGH0LXQvdC40LUg0LrQvtC90YbQtdC90YLRgNCw0YbQuNC4LicpOwogICAgICAgICAgICAgICAgcmVzZXRSZXN1bHRzKCk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKEMgPD0gMCkgewogICAgICAgICAgICAgICAgc2hvd0Vycm9yKGNFcnJvciwgJ9Ca0L7QvdGG0LXQvdGC0YDQsNGG0LjRjyDQtNC+0LvQttC90LAg0LHRi9GC0Ywg0L/QvtC70L7QttC40YLQtdC70YzQvdC+0LkuJyk7CiAgICAgICAgICAgICAgICByZXNldFJlc3VsdHMoKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoQyA+IDEwKSB7CiAgICAgICAgICAgICAgICBzaG93RXJyb3IoY0Vycm9yLCAn0JrQvtC90YbQtdC90YLRgNCw0YbQuNGPINC90LUg0LTQvtC70LbQvdCwINC/0YDQtdCy0YvRiNCw0YLRjCAxMCDQvNC+0LvRjC/Quy4nKTsKICAgICAgICAgICAgICAgIHJlc2V0UmVzdWx0cygpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChDIDwgMWUtMTQpIHsKICAgICAgICAgICAgICAgIHNob3dFcnJvcihjRXJyb3IsICfQmtC+0L3RhtC10L3RgtGA0LDRhtC40Y8g0YHQu9C40YjQutC+0Lwg0LzQsNC70LAgKNC80LXQvdC10LUgMTDigbvCueKBtCkuJyk7CiAgICAgICAgICAgICAgICByZXNldFJlc3VsdHMoKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICBjRXJyb3IudGV4dENvbnRlbnQgPSAnJzsKCiAgICAgICAgICAgIGNvbnN0IEtiID0gZ2V0S2JWYWx1ZSgpOwogICAgICAgICAgICBpZiAoS2IgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgIHJlc2V0UmVzdWx0cygpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZXQgT0hfZnJvbV9iYXNlOwogICAgICAgICAgICBpZiAoQyA+PSAxZS03KSB7CiAgICAgICAgICAgICAgICBjb25zdCBkaXNjcmltaW5hbnQgPSBLYiAqIEtiICsgNCAqIEtiICogQzsKICAgICAgICAgICAgICAgIE9IX2Zyb21fYmFzZSA9ICgtS2IgKyBNYXRoLnNxcnQoZGlzY3JpbWluYW50KSkgLyAyOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgY29uc3QgZGlzY3JpbWluYW50ID0gS2IgKiBLYiArIDQgKiBLYiAqIEM7CiAgICAgICAgICAgICAgICBPSF9mcm9tX2Jhc2UgPSAoLUtiICsgTWF0aC5zcXJ0KGRpc2NyaW1pbmFudCkpIC8gMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKE9IX2Zyb21fYmFzZSA8PSAwIHx8ICFpc0Zpbml0ZShPSF9mcm9tX2Jhc2UpKSB7CiAgICAgICAgICAgICAgICByZXNldFJlc3VsdHMoKTsKICAgICAgICAgICAgICAgIHJlc3VsdFBoLnRleHRDb250ZW50ID0gJ9Ce0YjQuNCx0LrQsCc7CiAgICAgICAgICAgICAgICByZXN1bHRQb2gudGV4dENvbnRlbnQgPSAn0J7RiNC40LHQutCwJzsKICAgICAgICAgICAgICAgIHJlc3VsdE9oLnRleHRDb250ZW50ID0gJ9Ce0YjQuNCx0LrQsCc7CiAgICAgICAgICAgICAgICByZXN1bHRBbHBoYS50ZXh0Q29udGVudCA9ICfQntGI0LjQsdC60LAnOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZXQgT0hfd2F0ZXJfY29udHJpYiA9IDFlLTc7CiAgICAgICAgICAgIGxldCBPSF90b3RhbDsKICAgICAgICAgICAgaWYgKEMgPj0gMWUtNikgewogICAgICAgICAgICAgICAgT0hfdG90YWwgPSBPSF9mcm9tX2Jhc2U7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBPSF90b3RhbCA9IE9IX2Zyb21fYmFzZSArIE9IX3dhdGVyX2NvbnRyaWI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGNvbnN0IHBPSCA9IC1NYXRoLmxvZzEwKE9IX3RvdGFsKTsKICAgICAgICAgICAgbGV0IHBIID0gMTQgLSBwT0g7CiAgICAgICAgICAgIGlmIChwSCA8IDApIHBIID0gMDsKICAgICAgICAgICAgaWYgKHBIID4gMTQpIHBIID0gMTQ7CiAgICAgICAgICAgIGNvbnN0IGFscGhhID0gKE9IX2Zyb21fYmFzZSAvIEMpICogMTAwOwoKICAgICAgICAgICAgcmVzdWx0UGgudGV4dENvbnRlbnQgPSBwSC50b0ZpeGVkKDIpOwogICAgICAgICAgICByZXN1bHRQb2gudGV4dENvbnRlbnQgPSBwT0gudG9GaXhlZCgyKTsKICAgICAgICAgICAgcmVzdWx0T2gudGV4dENvbnRlbnQgPSBPSF90b3RhbC50b0V4cG9uZW50aWFsKDMpOwogICAgICAgICAgICByZXN1bHRBbHBoYS50ZXh0Q29udGVudCA9IGFscGhhLnRvRml4ZWQoMyk7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiByZXNldEFsbCgpIHsKICAgICAgICAgICAgY0lucHV0LnZhbHVlID0gJyc7CiAgICAgICAgICAgIGtiSW5wdXQudmFsdWUgPSAnJzsKICAgICAgICAgICAgcGtiSW5wdXQudmFsdWUgPSAnJzsKICAgICAgICAgICAgY2xlYXJFcnJvcnMoKTsKICAgICAgICAgICAgcmVzZXRSZXN1bHRzKCk7CiAgICAgICAgICAgIGlmIChyYWRpb1BrYi5jaGVja2VkKSB7CiAgICAgICAgICAgICAgICByYWRpb0tiLmNoZWNrZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgdG9nZ2xlS2JNb2RlKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGNhbGNCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjYWxjdWxhdGUpOwogICAgICAgIHJlc2V0QnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgcmVzZXRBbGwpOwoKICAgICAgICBjSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnRW50ZXInKSBjYWxjdWxhdGUoKTsKICAgICAgICB9KTsKICAgICAgICBrYklucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0VudGVyJykgY2FsY3VsYXRlKCk7CiAgICAgICAgfSk7CiAgICAgICAgcGtiSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnRW50ZXInKSBjYWxjdWxhdGUoKTsKICAgICAgICB9KTsKCiAgICAgICAgdG9nZ2xlS2JNb2RlKCk7CiAgICB9KSgpOwo=