Калькулятор давления газа
Расчёт давления идеального газа по уравнению Менделеева — Клапейрона: через количество вещества или массу газа
Как пользоваться
1
Выберите метод расчёта: по количеству вещества (если знаете число молей) или по массе газа (если знаете массу и молярную массу).
2
Введите температуру в градусах Цельсия (автоматически пересчитается в Кельвины) и объём газа в литрах.
3
Введите либо количество вещества (моль), либо массу газа (г) и его молярную массу (г/моль). Например, для кислорода O₂ молярная масса = 32 г/моль.
4
Нажмите «Рассчитать». Результат покажет давление в трёх единицах: кПа, Па и атмосферах (атм). Под результатом отобразится итоговая формула с подставленными значениями.
Примеры использования
Баллон с кислородом при комнатной температуре
В баллоне объёмом 40 л находится 1,64 моль кислорода при 20 °C. Расчет: T = 293,15 K, V = 0,04 м³, n = 1,64 моль. Давление = 1,64 × 8,314 × 293,15 / 0,04 ≈ 100 кПа (≈ 0,99 атм) — почти атмосферное.
Сжатый воздух в акваланге
Баллон 12 л содержит 30 моль воздуха при 15 °C. T = 288,15 K, V = 0,012 м³. P = 30 × 8,314 × 288,15 / 0,012 ≈ 5 990 000 Па = 5990 кПа ≈ 59,1 атм — типичное давление для дайвинга.
Лабораторный опыт с углекислым газом
В колбе 2,5 л собрано 10 г CO₂ (молярная масса 44 г/моль) при 25 °C. n = 10 / 44 ≈ 0,227 моль. T = 298,15 K, V = 0,0025 м³. P = 0,227 × 8,314 × 298,15 / 0,0025 ≈ 225 000 Па = 225 кПа ≈ 2,22 атм.
Важные нюансы
- Калькулятор использует уравнение состояния идеального газа. Для реальных газов при высоких давлениях (>10 атм) или низких температурах результаты могут отличаться от экспериментальных данных. Рекомендуется использовать уравнение Ван-дер-Ваальса или диаграммы сжимаемости для точных инженерных расчётов.
- Газовая постоянная R = 8,314 Дж/(моль·К) — значение, рекомендованное CODATA и NIST. Температура автоматически переводится в Кельвины: T(K) = t(°C) + 273,15.
- Объём пересчитывается в кубические метры (1 л = 0,001 м³), так как единицы СИ для давления — Паскали (Па = Н/м² = Дж/м³). Результат в кПа получен делением на 1000.
- При работе с горючими, токсичными газами или газами под высоким давлением соблюдайте технику безопасности: работайте в вытяжном шкафу, используйте сертифицированные баллоны и редукторы, не превышайте допустимые давления.
- Поля ввода проверяются на корректность: температура не ниже абсолютного нуля (−273,15 °C), значения массы, объёма и количества вещества должны быть положительными. Ошибочный ввод подсвечивается сообщением.
Источники данных
- IUPAC. Compendium of Chemical Terminology (Gold Book). International Union of Pure and Applied Chemistry — стандартные определения, включая давление, моль, газовую постоянную.
- NIST Chemistry WebBook. National Institute of Standards and Technology — рекомендованное значение газовой постоянной R = 8,314462618 Дж/(моль·К) (округлено до 8,314).
- CRC Handbook of Chemistry and Physics. 104th Edition — справочные данные по молярным массам газов, константам и свойствам веществ.
- CODATA Internationally recommended values of the fundamental physical constants. 2018 — значение абсолютного нуля и температурной шкалы Кельвина.
Калькулятор давления газа позволяет быстро вычислить давление идеального газа по уравнению Менделеева — Клапейрона. Достаточно ввести температуру, объём и количество вещества (или массу с молярной массой) — результат в паскалях, килопаскалях и атмосферах появится мгновенно. Инструмент полезен для студентов, преподавателей, инженеров-химиков и всех, кто работает с газовыми смесями в лабораторных или промышленных условиях. Расчёт основан на стандартных справочных данных IUPAC, NIST и CODATA.
CihmdW5jdGlvbigpewogICAgdmFyIG1vbGVzSW5wdXRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vbGVzSW5wdXRzJyk7CiAgICB2YXIgbWFzc0lucHV0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYXNzSW5wdXRzJyk7CiAgICB2YXIgbWV0aG9kU3dpdGNoID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21ldGhvZFN3aXRjaCcpOwogICAgdmFyIGNhbGNCdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2FsY0J0bicpOwogICAgdmFyIHJlc2V0QnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc2V0QnRuJyk7CiAgICB2YXIgZXJyb3JNc2cgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXJyb3JNc2cnKTsKICAgIHZhciBmb3JtdWxhRGV0YWlsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Zvcm11bGFEZXRhaWwnKTsKCiAgICB2YXIgcHJlc3N1cmVLUGEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJlc3N1cmVLUGEnKTsKICAgIHZhciBwcmVzc3VyZVBhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ByZXNzdXJlUGEnKTsKICAgIHZhciBwcmVzc3VyZUF0bSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwcmVzc3VyZUF0bScpOwoKICAgIG1ldGhvZFN3aXRjaC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBmdW5jdGlvbihlKSB7CiAgICAgICAgaWYgKGUudGFyZ2V0Lm5hbWUgPT09ICdjYWxjTWV0aG9kJykgewogICAgICAgICAgICBpZiAoZS50YXJnZXQudmFsdWUgPT09ICdtb2xlcycpIHsKICAgICAgICAgICAgICAgIG1vbGVzSW5wdXRzLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwogICAgICAgICAgICAgICAgbWFzc0lucHV0cy5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgbW9sZXNJbnB1dHMuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICAgICAgICAgIG1hc3NJbnB1dHMuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2xlYXJSZXN1bHRzKCk7CiAgICAgICAgICAgIGVycm9yTXNnLnRleHRDb250ZW50ID0gJyc7CiAgICAgICAgICAgIGZvcm11bGFEZXRhaWwuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICB9CiAgICB9KTsKCiAgICBmdW5jdGlvbiBjbGVhclJlc3VsdHMoKSB7CiAgICAgICAgcHJlc3N1cmVLUGEudGV4dENvbnRlbnQgPSAn4oCUJzsKICAgICAgICBwcmVzc3VyZVBhLnRleHRDb250ZW50ID0gJ+KAlCc7CiAgICAgICAgcHJlc3N1cmVBdG0udGV4dENvbnRlbnQgPSAn4oCUJzsKICAgICAgICBmb3JtdWxhRGV0YWlsLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgZm9ybXVsYURldGFpbC5pbm5lckhUTUwgPSAnJzsKICAgIH0KCiAgICBmdW5jdGlvbiBzaG93RXJyb3IobXNnKSB7CiAgICAgICAgZXJyb3JNc2cudGV4dENvbnRlbnQgPSBtc2c7CiAgICB9CgogICAgZnVuY3Rpb24gY2xlYXJFcnJvcigpIHsKICAgICAgICBlcnJvck1zZy50ZXh0Q29udGVudCA9ICcnOwogICAgfQoKICAgIGZ1bmN0aW9uIHBhcnNlUG9zaXRpdmVOdW1iZXIodmFsdWVTdHIsIGZpZWxkTmFtZSkgewogICAgICAgIGlmICh2YWx1ZVN0ciA9PT0gJycgfHwgdmFsdWVTdHIgPT09IG51bGwgfHwgdmFsdWVTdHIgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICByZXR1cm4geyBlcnJvcjogJ9Cf0L7Qu9C1ICInICsgZmllbGROYW1lICsgJyIg0L3QtSDQt9Cw0L/QvtC70L3QtdC90L4uJyB9OwogICAgICAgIH0KICAgICAgICB2YXIgbnVtID0gcGFyc2VGbG9hdCh2YWx1ZVN0cik7CiAgICAgICAgaWYgKGlzTmFOKG51bSkpIHsKICAgICAgICAgICAgcmV0dXJuIHsgZXJyb3I6ICfQn9C+0LvQtSAiJyArIGZpZWxkTmFtZSArICciINGB0L7QtNC10YDQttC40YIg0L3QtdGH0LjRgdC70L7QstC+0LUg0LfQvdCw0YfQtdC90LjQtS4nIH07CiAgICAgICAgfQogICAgICAgIGlmICghaXNGaW5pdGUobnVtKSkgewogICAgICAgICAgICByZXR1cm4geyBlcnJvcjogJ9Cf0L7Qu9C1ICInICsgZmllbGROYW1lICsgJyIg0YHQvtC00LXRgNC20LjRgiDQvdC10LrQvtGA0YDQtdC60YLQvdC+0LUg0LfQvdCw0YfQtdC90LjQtS4nIH07CiAgICAgICAgfQogICAgICAgIHJldHVybiB7IHZhbHVlOiBudW0gfTsKICAgIH0KCiAgICBjYWxjQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgY2xlYXJFcnJvcigpOwogICAgICAgIGZvcm11bGFEZXRhaWwuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICB2YXIgbWV0aG9kID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXRbbmFtZT0iY2FsY01ldGhvZCJdOmNoZWNrZWQnKTsKICAgICAgICBpZiAoIW1ldGhvZCkgewogICAgICAgICAgICBzaG93RXJyb3IoJ9CS0YvQsdC10YDQuNGC0LUg0LzQtdGC0L7QtCDRgNCw0YHRh9GR0YLQsC4nKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgdmFyIFQsIFYsIG4sIG0sIE0sIGRldGFpbFRleHQgPSAnJzsKCiAgICAgICAgaWYgKG1ldGhvZC52YWx1ZSA9PT0gJ21vbGVzJykgewogICAgICAgICAgICB2YXIgdGVtcFJlcyA9IHBhcnNlUG9zaXRpdmVOdW1iZXIoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RlbXBlcmF0dXJlJykudmFsdWUsICfQotC10LzQv9C10YDQsNGC0YPRgNCwJyk7CiAgICAgICAgICAgIHZhciB2b2xSZXMgPSBwYXJzZVBvc2l0aXZlTnVtYmVyKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2b2x1bWUnKS52YWx1ZSwgJ9Ce0LHRitGR0LwnKTsKICAgICAgICAgICAgdmFyIG1vbGVzUmVzID0gcGFyc2VQb3NpdGl2ZU51bWJlcihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9sZXMnKS52YWx1ZSwgJ9Ca0L7Qu9C40YfQtdGB0YLQstC+INCy0LXRidC10YHRgtCy0LAnKTsKCiAgICAgICAgICAgIGlmICh0ZW1wUmVzLmVycm9yKSB7IHNob3dFcnJvcih0ZW1wUmVzLmVycm9yKTsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICh2b2xSZXMuZXJyb3IpIHsgc2hvd0Vycm9yKHZvbFJlcy5lcnJvcik7IHJldHVybjsgfQogICAgICAgICAgICBpZiAobW9sZXNSZXMuZXJyb3IpIHsgc2hvd0Vycm9yKG1vbGVzUmVzLmVycm9yKTsgcmV0dXJuOyB9CgogICAgICAgICAgICB2YXIgdENlbHNpdXMgPSB0ZW1wUmVzLnZhbHVlOwogICAgICAgICAgICBpZiAodENlbHNpdXMgPCAtMjczLjE1KSB7CiAgICAgICAgICAgICAgICBzaG93RXJyb3IoJ9Ci0LXQvNC/0LXRgNCw0YLRg9GA0LAg0L3QtSDQvNC+0LbQtdGCINCx0YvRgtGMINC90LjQttC1INCw0LHRgdC+0LvRjtGC0L3QvtCz0L4g0L3Rg9C70Y8gKC0yNzMuMTUgwrBDKS4nKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICBUID0gdENlbHNpdXMgKyAyNzMuMTU7CiAgICAgICAgICAgIFYgPSB2b2xSZXMudmFsdWUgLyAxMDAwOwogICAgICAgICAgICBuID0gbW9sZXNSZXMudmFsdWU7CgogICAgICAgICAgICBpZiAobiA8PSAwKSB7IHNob3dFcnJvcign0JrQvtC70LjRh9C10YHRgtCy0L4g0LLQtdGJ0LXRgdGC0LLQsCDQtNC+0LvQttC90L4g0LHRi9GC0Ywg0L/QvtC70L7QttC40YLQtdC70YzQvdGL0LwuJyk7IHJldHVybjsgfQogICAgICAgICAgICBpZiAodm9sUmVzLnZhbHVlIDw9IDApIHsgc2hvd0Vycm9yKCfQntCx0YrRkdC8INC00L7Qu9C20LXQvSDQsdGL0YLRjCDQv9C+0LvQvtC20LjRgtC10LvRjNC90YvQvC4nKTsgcmV0dXJuOyB9CgogICAgICAgICAgICB2YXIgUCA9IChuICogOC4zMTQgKiBUKSAvIFY7CiAgICAgICAgICAgIHZhciBrUGEgPSBQIC8gMTAwMDsKICAgICAgICAgICAgdmFyIGF0bSA9IFAgLyAxMDEzMjU7CgogICAgICAgICAgICBpZiAoIWlzRmluaXRlKFApIHx8IFAgPCAwKSB7CiAgICAgICAgICAgICAgICBzaG93RXJyb3IoJ9Cg0LXQt9GD0LvRjNGC0LDRgiDRgNCw0YHRh9GR0YLQsCDQvdC10LrQvtGA0YDQtdC60YLQtdC9LiDQn9GA0L7QstC10YDRjNGC0LUg0LLQstC10LTRkdC90L3Ri9C1INC00LDQvdC90YvQtS4nKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcHJlc3N1cmVQYS50ZXh0Q29udGVudCA9IFAudG9GaXhlZCgyKTsKICAgICAgICAgICAgcHJlc3N1cmVLUGEudGV4dENvbnRlbnQgPSBrUGEudG9GaXhlZCgzKTsKICAgICAgICAgICAgcHJlc3N1cmVBdG0udGV4dENvbnRlbnQgPSBhdG0udG9GaXhlZCg1KTsKCiAgICAgICAgICAgIGRldGFpbFRleHQgPSAnPHN0cm9uZz7QpdC+0LQg0YDQsNGB0YfRkdGC0LA6PC9zdHJvbmc+PGJyPicgKwogICAgICAgICAgICAgICAgJ1QgPSAnICsgdENlbHNpdXMudG9GaXhlZCgyKSArICcgwrBDICsgMjczLjE1ID0gJyArIFQudG9GaXhlZCgyKSArICcgSzxicj4nICsKICAgICAgICAgICAgICAgICdWID0gJyArIHZvbFJlcy52YWx1ZSArICcg0LsgLyAxMDAwID0gJyArIFYudG9GaXhlZCg2KSArICcg0LzCszxicj4nICsKICAgICAgICAgICAgICAgICdQID0gKCcgKyBuICsgJyDQvNC+0LvRjCDDlyA4LjMxNCDQlNC2LyjQvNC+0LvRjMK30JopIMOXICcgKyBULnRvRml4ZWQoMikgKyAnIEspIC8gJyArIFYudG9GaXhlZCg2KSArICcg0LzCszxicj4nICsKICAgICAgICAgICAgICAgICdQID0gJyArIFAudG9GaXhlZCgyKSArICcg0J/QsCA9ICcgKyBrUGEudG9GaXhlZCgzKSArICcg0LrQn9CwIOKJiCAnICsgYXRtLnRvRml4ZWQoNSkgKyAnINCw0YLQvCc7CgogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHZhciB0ZW1wUmVzID0gcGFyc2VQb3NpdGl2ZU51bWJlcihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVtcGVyYXR1cmVNYXNzJykudmFsdWUsICfQotC10LzQv9C10YDQsNGC0YPRgNCwJyk7CiAgICAgICAgICAgIHZhciB2b2xSZXMgPSBwYXJzZVBvc2l0aXZlTnVtYmVyKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2b2x1bWVNYXNzJykudmFsdWUsICfQntCx0YrRkdC8Jyk7CiAgICAgICAgICAgIHZhciBtYXNzUmVzID0gcGFyc2VQb3NpdGl2ZU51bWJlcihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFzc0dhcycpLnZhbHVlLCAn0JzQsNGB0YHQsCDQs9Cw0LfQsCcpOwogICAgICAgICAgICB2YXIgbW9sYXJSZXMgPSBwYXJzZVBvc2l0aXZlTnVtYmVyKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb2xhck1hc3MnKS52YWx1ZSwgJ9Cc0L7Qu9GP0YDQvdCw0Y8g0LzQsNGB0YHQsCcpOwoKICAgICAgICAgICAgaWYgKHRlbXBSZXMuZXJyb3IpIHsgc2hvd0Vycm9yKHRlbXBSZXMuZXJyb3IpOyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKHZvbFJlcy5lcnJvcikgeyBzaG93RXJyb3Iodm9sUmVzLmVycm9yKTsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmIChtYXNzUmVzLmVycm9yKSB7IHNob3dFcnJvcihtYXNzUmVzLmVycm9yKTsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmIChtb2xhclJlcy5lcnJvcikgeyBzaG93RXJyb3IobW9sYXJSZXMuZXJyb3IpOyByZXR1cm47IH0KCiAgICAgICAgICAgIHZhciB0Q2Vsc2l1cyA9IHRlbXBSZXMudmFsdWU7CiAgICAgICAgICAgIGlmICh0Q2Vsc2l1cyA8IC0yNzMuMTUpIHsKICAgICAgICAgICAgICAgIHNob3dFcnJvcign0KLQtdC80L/QtdGA0LDRgtGD0YDQsCDQvdC1INC80L7QttC10YIg0LHRi9GC0Ywg0L3QuNC20LUg0LDQsdGB0L7Qu9GO0YLQvdC+0LPQviDQvdGD0LvRjyAoLTI3My4xNSDCsEMpLicpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIFQgPSB0Q2Vsc2l1cyArIDI3My4xNTsKICAgICAgICAgICAgViA9IHZvbFJlcy52YWx1ZSAvIDEwMDA7CiAgICAgICAgICAgIG0gPSBtYXNzUmVzLnZhbHVlOwogICAgICAgICAgICBNID0gbW9sYXJSZXMudmFsdWU7CgogICAgICAgICAgICBpZiAobSA8PSAwKSB7IHNob3dFcnJvcign0JzQsNGB0YHQsCDQs9Cw0LfQsCDQtNC+0LvQttC90LAg0LHRi9GC0Ywg0L/QvtC70L7QttC40YLQtdC70YzQvdC+0LkuJyk7IHJldHVybjsgfQogICAgICAgICAgICBpZiAoTSA8PSAwKSB7IHNob3dFcnJvcign0JzQvtC70Y/RgNC90LDRjyDQvNCw0YHRgdCwINC00L7Qu9C20L3QsCDQsdGL0YLRjCDQv9C+0LvQvtC20LjRgtC10LvRjNC90L7QuS4nKTsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICh2b2xSZXMudmFsdWUgPD0gMCkgeyBzaG93RXJyb3IoJ9Ce0LHRitGR0Lwg0LTQvtC70LbQtdC9INCx0YvRgtGMINC/0L7Qu9C+0LbQuNGC0LXQu9GM0L3Ri9C8LicpOyByZXR1cm47IH0KCiAgICAgICAgICAgIG4gPSBtIC8gTTsKICAgICAgICAgICAgdmFyIFAgPSAobiAqIDguMzE0ICogVCkgLyBWOwogICAgICAgICAgICB2YXIga1BhID0gUCAvIDEwMDA7CiAgICAgICAgICAgIHZhciBhdG0gPSBQIC8gMTAxMzI1OwoKICAgICAgICAgICAgaWYgKCFpc0Zpbml0ZShQKSB8fCBQIDwgMCkgewogICAgICAgICAgICAgICAgc2hvd0Vycm9yKCfQoNC10LfRg9C70YzRgtCw0YIg0YDQsNGB0YfRkdGC0LAg0L3QtdC60L7RgNGA0LXQutGC0LXQvS4g0J/RgNC+0LLQtdGA0YzRgtC1INCy0LLQtdC00ZHQvdC90YvQtSDQtNCw0L3QvdGL0LUuJyk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHByZXNzdXJlUGEudGV4dENvbnRlbnQgPSBQLnRvRml4ZWQoMik7CiAgICAgICAgICAgIHByZXNzdXJlS1BhLnRleHRDb250ZW50ID0ga1BhLnRvRml4ZWQoMyk7CiAgICAgICAgICAgIHByZXNzdXJlQXRtLnRleHRDb250ZW50ID0gYXRtLnRvRml4ZWQoNSk7CgogICAgICAgICAgICBkZXRhaWxUZXh0ID0gJzxzdHJvbmc+0KXQvtC0INGA0LDRgdGH0ZHRgtCwOjwvc3Ryb25nPjxicj4nICsKICAgICAgICAgICAgICAgICduID0gbSAvIE0gPSAnICsgbSArICcg0LMgLyAnICsgTSArICcg0LMv0LzQvtC70YwgPSAnICsgbi50b0ZpeGVkKDYpICsgJyDQvNC+0LvRjDxicj4nICsKICAgICAgICAgICAgICAgICdUID0gJyArIHRDZWxzaXVzLnRvRml4ZWQoMikgKyAnIMKwQyArIDI3My4xNSA9ICcgKyBULnRvRml4ZWQoMikgKyAnIEs8YnI+JyArCiAgICAgICAgICAgICAgICAnViA9ICcgKyB2b2xSZXMudmFsdWUgKyAnINC7IC8gMTAwMCA9ICcgKyBWLnRvRml4ZWQoNikgKyAnINC8wrM8YnI+JyArCiAgICAgICAgICAgICAgICAnUCA9ICgnICsgbi50b0ZpeGVkKDYpICsgJyDQvNC+0LvRjCDDlyA4LjMxNCDDlyAnICsgVC50b0ZpeGVkKDIpICsgJyBLKSAvICcgKyBWLnRvRml4ZWQoNikgKyAnINC8wrM8YnI+JyArCiAgICAgICAgICAgICAgICAnUCA9ICcgKyBQLnRvRml4ZWQoMikgKyAnINCf0LAgPSAnICsga1BhLnRvRml4ZWQoMykgKyAnINC60J/QsCDiiYggJyArIGF0bS50b0ZpeGVkKDUpICsgJyDQsNGC0LwnOwogICAgICAgIH0KCiAgICAgICAgZm9ybXVsYURldGFpbC5pbm5lckhUTUwgPSBkZXRhaWxUZXh0OwogICAgICAgIGZvcm11bGFEZXRhaWwuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICB9KTsKCiAgICByZXNldEJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZW1wZXJhdHVyZScpLnZhbHVlID0gJyc7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ZvbHVtZScpLnZhbHVlID0gJyc7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vbGVzJykudmFsdWUgPSAnJzsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVtcGVyYXR1cmVNYXNzJykudmFsdWUgPSAnJzsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndm9sdW1lTWFzcycpLnZhbHVlID0gJyc7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21hc3NHYXMnKS52YWx1ZSA9ICcnOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb2xhck1hc3MnKS52YWx1ZSA9ICcnOwogICAgICAgIGNsZWFyUmVzdWx0cygpOwogICAgICAgIGNsZWFyRXJyb3IoKTsKICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dFtuYW1lPSJjYWxjTWV0aG9kIl1bdmFsdWU9Im1vbGVzIl0nKS5jaGVja2VkID0gdHJ1ZTsKICAgICAgICBtb2xlc0lucHV0cy5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKICAgICAgICBtYXNzSW5wdXRzLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICB9KTsKfSkoKTsK