Калькулятор стехиометрии реакции
Расчёт масс реагентов и продуктов по заданной массе одного из участников химической реакции.
Введите данные и нажмите «Рассчитать»
Как пользоваться
1
Выберите уравнение реакции из выпадающего списка. Доступны реакции горения, нейтрализации, разложения и замещения.
2
Укажите вещество, масса которого вам известна. Список обновляется автоматически при смене реакции.
3
Введите массу в граммах (например, 16.04 г для метана). Допускаются десятичные значения.
4
Нажмите «Рассчитать». Калькулятор определит количество вещества в молях и вычислит массы всех остальных участников реакции по стехиометрическим коэффициентам.
Примеры использования
Сжигание 16.04 г метана
Реакция CH₄ + 2O₂ → CO₂ + 2H₂O. Молярная масса CH₄ ≈ 16.04 г/моль. Из 16.04 г (1 моль) метана требуется 64.00 г O₂ (2 моль), образуется 44.01 г CO₂ и 36.03 г H₂O.
Нейтрализация 40.00 г NaOH
Реакция HCl + NaOH → NaCl + H₂O. Молярная масса NaOH ≈ 40.00 г/моль. На 40.00 г (1 моль) NaOH нужно 36.46 г HCl, образуется 58.44 г NaCl и 18.02 г воды.
Разложение 100.09 г карбоната кальция
Реакция CaCO₃ → CaO + CO₂. Молярная масса CaCO₃ ≈ 100.09 г/моль. Из 100.09 г (1 моль) получается 56.08 г CaO и 44.01 г CO₂.
Важные нюансы
- Расчёт ведётся в предположении 100% выхода реакции и отсутствия примесей. Реальный лабораторный выход может быть ниже.
- Молярные массы округлены до двух знаков после запятой на основе стандартных атомных масс (IUPAC).
- Калькулятор не проверяет, является ли реакция термодинамически возможной или кинетически осуществимой в заданных условиях.
- При работе с кислотами, щелочами, горючими газами и токсичными веществами строго соблюдайте правила техники безопасности: используйте вытяжной шкаф, защитные очки, перчатки и лабораторный халат.
- Для реакций с газообразными веществами при нормальных условиях можно дополнительно пересчитать результат через молярный объём (22.414 л/моль), но данный калькулятор показывает только массы.
⚠️ Техника безопасности: Некоторые реакции (например, взаимодействие алюминия с соляной кислотой) сопровождаются выделением горючего газа водорода. Проводите такие опыты только в хорошо проветриваемом помещении, вдали от источников открытого огня. Всегда оценивайте риски перед началом лабораторной работы.
Источники данных
- Атомные массы элементов — IUPAC Periodic Table of the Elements (2023), Pure and Applied Chemistry.
- Молярные массы соединений — рассчитаны на основе стандартных атомных масс IUPAC с округлением до сотых.
- Стехиометрические коэффициенты — классические уравнения реакций, проверенные по NIST Chemistry WebBook и PubChem.
- Общая методология расчёта — CRC Handbook of Chemistry and Physics (104th Edition), раздел «Stoichiometry and Chemical Equations».
Калькулятор стехиометрии реакции помогает быстро рассчитать массы всех реагентов и продуктов по известной массе одного из веществ. Инструмент использует стандартные молярные массы на основе данных IUPAC и классические уравнения химических реакций. Подходит для школьников, студентов, преподавателей и лаборантов для проверки стехиометрических расчётов. Онлайн-расчёт экономит время и минимизирует ошибки ручного счёта.
CihmdW5jdGlvbigpewogIHZhciByZWFjdGlvbnMgPSBbCiAgICB7CiAgICAgIGVxdWF0aW9uOiAnQ0jigoQgKyAyT+KCgiDihpIgQ0/igoIgKyAySOKCgk8nLAogICAgICBzdWJzdGFuY2VzOiBbCiAgICAgICAgeyBuYW1lOiAnQ0jigoQnLCBtb2xhck1hc3M6IDE2LjA0LCBjb2VmZmljaWVudDogMSB9LAogICAgICAgIHsgbmFtZTogJ0/igoInLCBtb2xhck1hc3M6IDMyLjAwLCBjb2VmZmljaWVudDogMiB9LAogICAgICAgIHsgbmFtZTogJ0NP4oKCJywgbW9sYXJNYXNzOiA0NC4wMSwgY29lZmZpY2llbnQ6IDEgfSwKICAgICAgICB7IG5hbWU6ICdI4oKCTycsIG1vbGFyTWFzczogMTguMDIsIGNvZWZmaWNpZW50OiAyIH0KICAgICAgXSwKICAgICAgd2FybmluZzogbnVsbAogICAgfSwKICAgIHsKICAgICAgZXF1YXRpb246ICcySOKCgiArIE/igoIg4oaSIDJI4oKCTycsCiAgICAgIHN1YnN0YW5jZXM6IFsKICAgICAgICB7IG5hbWU6ICdI4oKCJywgbW9sYXJNYXNzOiAyLjAyLCBjb2VmZmljaWVudDogMiB9LAogICAgICAgIHsgbmFtZTogJ0/igoInLCBtb2xhck1hc3M6IDMyLjAwLCBjb2VmZmljaWVudDogMSB9LAogICAgICAgIHsgbmFtZTogJ0jigoJPJywgbW9sYXJNYXNzOiAxOC4wMiwgY29lZmZpY2llbnQ6IDIgfQogICAgICBdLAogICAgICB3YXJuaW5nOiAn0JLQvtC00L7RgNC+0LQg4oCUINCz0L7RgNGO0YfQuNC5INCz0LDQty4g0KDQsNCx0L7RgtCw0LnRgtC1INCy0LTQsNC70Lgg0L7RgiDQvtGC0LrRgNGL0YLQvtCz0L4g0L7Qs9C90Y8g0Lgg0LjRgdGC0L7Rh9C90LjQutC+0LIg0LjRgdC60YAuJwogICAgfSwKICAgIHsKICAgICAgZXF1YXRpb246ICdDYUNP4oKDIOKGkiBDYU8gKyBDT+KCgicsCiAgICAgIHN1YnN0YW5jZXM6IFsKICAgICAgICB7IG5hbWU6ICdDYUNP4oKDJywgbW9sYXJNYXNzOiAxMDAuMDksIGNvZWZmaWNpZW50OiAxIH0sCiAgICAgICAgeyBuYW1lOiAnQ2FPJywgbW9sYXJNYXNzOiA1Ni4wOCwgY29lZmZpY2llbnQ6IDEgfSwKICAgICAgICB7IG5hbWU6ICdDT+KCgicsIG1vbGFyTWFzczogNDQuMDEsIGNvZWZmaWNpZW50OiAxIH0KICAgICAgXSwKICAgICAgd2FybmluZzogJ9Ci0LXRgNC80LjRh9C10YHQutC+0LUg0YDQsNC30LvQvtC20LXQvdC40LUg0YLRgNC10LHRg9C10YIg0L3QsNCz0YDQtdCy0LAg0LTQviB+OTAwwrBDLiDQmNGB0L/QvtC70YzQt9GD0LnRgtC1INGC0LXRgNC80L7RgdGC0L7QudC60YPRjiDQv9C+0YHRg9C00YMg0Lgg0LfQsNGJ0LjRgtC90YvQtSDQv9C10YDRh9Cw0YLQutC4LicKICAgIH0sCiAgICB7CiAgICAgIGVxdWF0aW9uOiAnSENsICsgTmFPSCDihpIgTmFDbCArIEjigoJPJywKICAgICAgc3Vic3RhbmNlczogWwogICAgICAgIHsgbmFtZTogJ0hDbCcsIG1vbGFyTWFzczogMzYuNDYsIGNvZWZmaWNpZW50OiAxIH0sCiAgICAgICAgeyBuYW1lOiAnTmFPSCcsIG1vbGFyTWFzczogNDAuMDAsIGNvZWZmaWNpZW50OiAxIH0sCiAgICAgICAgeyBuYW1lOiAnTmFDbCcsIG1vbGFyTWFzczogNTguNDQsIGNvZWZmaWNpZW50OiAxIH0sCiAgICAgICAgeyBuYW1lOiAnSOKCgk8nLCBtb2xhck1hc3M6IDE4LjAyLCBjb2VmZmljaWVudDogMSB9CiAgICAgIF0sCiAgICAgIHdhcm5pbmc6ICfQmtC40YHQu9C+0YLQsCDQuCDRidGR0LvQvtGH0Ywg4oCUINC10LTQutC40LUg0LLQtdGJ0LXRgdGC0LLQsC4g0JjRgdC/0L7Qu9GM0LfRg9C50YLQtSDQt9Cw0YnQuNGC0L3Ri9C1INC+0YfQutC4INC4INC/0LXRgNGH0LDRgtC60LguJwogICAgfSwKICAgIHsKICAgICAgZXF1YXRpb246ICcyQWwgKyA2SENsIOKGkiAyQWxDbOKCgyArIDNI4oKCJywKICAgICAgc3Vic3RhbmNlczogWwogICAgICAgIHsgbmFtZTogJ0FsJywgbW9sYXJNYXNzOiAyNi45OCwgY29lZmZpY2llbnQ6IDIgfSwKICAgICAgICB7IG5hbWU6ICdIQ2wnLCBtb2xhck1hc3M6IDM2LjQ2LCBjb2VmZmljaWVudDogNiB9LAogICAgICAgIHsgbmFtZTogJ0FsQ2zigoMnLCBtb2xhck1hc3M6IDEzMy4zNCwgY29lZmZpY2llbnQ6IDIgfSwKICAgICAgICB7IG5hbWU6ICdI4oKCJywgbW9sYXJNYXNzOiAyLjAyLCBjb2VmZmljaWVudDogMyB9CiAgICAgIF0sCiAgICAgIHdhcm5pbmc6ICfQktGL0LTQtdC70Y/QtdGC0YHRjyDQs9C+0YDRjtGH0LjQuSDQstC+0LTQvtGA0L7QtC4g0J/RgNC+0LLQvtC00LjRgtC1INGA0LXQsNC60YbQuNGOINCyINCy0YvRgtGP0LbQvdC+0Lwg0YjQutCw0YTRgywg0LLQtNCw0LvQuCDQvtGCINC+0LPQvdGPLicKICAgIH0KICBdOwoKICB2YXIgcmVhY3Rpb25TZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tZ2VuLWNhbC1yZWFjdGlvbi1zZWxlY3QnKTsKICB2YXIga25vd25TZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tZ2VuLWNhbC1rbm93bi1zdWJzdGFuY2UnKTsKICB2YXIgbWFzc0lucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25uLWdlbi1jYWwtbWFzcy1pbnB1dCcpOwogIHZhciBtYXNzRXJyb3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tZ2VuLWNhbC1tYXNzLWVycm9yJyk7CiAgdmFyIGNhbGN1bGF0ZUJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1nZW4tY2FsLWNhbGN1bGF0ZS1idG4nKTsKICB2YXIgcmVzZXRCdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tZ2VuLWNhbC1yZXNldC1idG4nKTsKICB2YXIgcmVzdWx0R3JpZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1nZW4tY2FsLXJlc3VsdC1ncmlkJyk7CiAgdmFyIHdhcm5pbmdEaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tZ2VuLWNhbC13YXJuaW5nJyk7CgogIGZ1bmN0aW9uIHBvcHVsYXRlS25vd25TdWJzdGFuY2VzKCkgewogICAgdmFyIGlkeCA9IHBhcnNlSW50KHJlYWN0aW9uU2VsZWN0LnZhbHVlLCAxMCk7CiAgICBpZiAoaXNOYU4oaWR4KSB8fCBpZHggPCAwIHx8IGlkeCA+PSByZWFjdGlvbnMubGVuZ3RoKSByZXR1cm47CiAgICB2YXIgc3VicyA9IHJlYWN0aW9uc1tpZHhdLnN1YnN0YW5jZXM7CiAgICBrbm93blNlbGVjdC5pbm5lckhUTUwgPSAnJzsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3Vicy5sZW5ndGg7IGkrKykgewogICAgICB2YXIgb3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnb3B0aW9uJyk7CiAgICAgIG9wdGlvbi52YWx1ZSA9IGk7CiAgICAgIG9wdGlvbi50ZXh0Q29udGVudCA9IHN1YnNbaV0ubmFtZSArICcgKE0gPSAnICsgc3Vic1tpXS5tb2xhck1hc3MudG9GaXhlZCgyKSArICcg0LMv0LzQvtC70YwpJzsKICAgICAga25vd25TZWxlY3QuYXBwZW5kQ2hpbGQob3B0aW9uKTsKICAgIH0KICAgIGhpZGVNYXNzRXJyb3IoKTsKICAgIGNsZWFyUmVzdWx0cygpOwogICAgaGlkZVdhcm5pbmcoKTsKICB9CgogIGZ1bmN0aW9uIGhpZGVNYXNzRXJyb3IoKSB7CiAgICBtYXNzRXJyb3Iuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgIG1hc3NFcnJvci50ZXh0Q29udGVudCA9ICcnOwogIH0KCiAgZnVuY3Rpb24gc2hvd01hc3NFcnJvcihtc2cpIHsKICAgIG1hc3NFcnJvci5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKICAgIG1hc3NFcnJvci50ZXh0Q29udGVudCA9IG1zZzsKICB9CgogIGZ1bmN0aW9uIGhpZGVXYXJuaW5nKCkgewogICAgd2FybmluZ0Rpdi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgd2FybmluZ0Rpdi50ZXh0Q29udGVudCA9ICcnOwogIH0KCiAgZnVuY3Rpb24gc2hvd1dhcm5pbmcobXNnKSB7CiAgICBpZiAoIW1zZykgewogICAgICBoaWRlV2FybmluZygpOwogICAgICByZXR1cm47CiAgICB9CiAgICB3YXJuaW5nRGl2LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwogICAgd2FybmluZ0Rpdi50ZXh0Q29udGVudCA9IG1zZzsKICB9CgogIGZ1bmN0aW9uIGNsZWFyUmVzdWx0cygpIHsKICAgIHJlc3VsdEdyaWQuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9Im5uLWdlbi1jYWwtcmVzdWx0LXBsYWNlaG9sZGVyIj7QktCy0LXQtNC40YLQtSDQtNCw0L3QvdGL0LUg0Lgg0L3QsNC20LzQuNGC0LUgwqvQoNCw0YHRgdGH0LjRgtCw0YLRjMK7PC9kaXY+JzsKICB9CgogIGZ1bmN0aW9uIGZvcm1hdE1hc3ModmFsdWUpIHsKICAgIGlmICh2YWx1ZSA+PSAxMDAwIHx8ICh2YWx1ZSA8IDAuMDAxICYmIHZhbHVlID4gMCkpIHsKICAgICAgcmV0dXJuIHZhbHVlLnRvRXhwb25lbnRpYWwoMyk7CiAgICB9CiAgICByZXR1cm4gdmFsdWUudG9GaXhlZCgzKTsKICB9CgogIGZ1bmN0aW9uIGNhbGN1bGF0ZSgpIHsKICAgIGhpZGVNYXNzRXJyb3IoKTsKICAgIGhpZGVXYXJuaW5nKCk7CgogICAgdmFyIGlkeCA9IHBhcnNlSW50KHJlYWN0aW9uU2VsZWN0LnZhbHVlLCAxMCk7CiAgICBpZiAoaXNOYU4oaWR4KSB8fCBpZHggPCAwIHx8IGlkeCA+PSByZWFjdGlvbnMubGVuZ3RoKSB7CiAgICAgIHNob3dNYXNzRXJyb3IoJ9CS0YvQsdC10YDQuNGC0LUg0LrQvtGA0YDQtdC60YLQvdGD0Y4g0YDQtdCw0LrRhtC40Y4uJyk7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB2YXIga25vd25JZHggPSBwYXJzZUludChrbm93blNlbGVjdC52YWx1ZSwgMTApOwogICAgaWYgKGlzTmFOKGtub3duSWR4KSB8fCBrbm93bklkeCA8IDAgfHwga25vd25JZHggPj0gcmVhY3Rpb25zW2lkeF0uc3Vic3RhbmNlcy5sZW5ndGgpIHsKICAgICAgc2hvd01hc3NFcnJvcign0JLRi9Cx0LXRgNC40YLQtSDQuNC30LLQtdGB0YLQvdC+0LUg0LLQtdGJ0LXRgdGC0LLQvi4nKTsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIHZhciBtYXNzU3RyID0gbWFzc0lucHV0LnZhbHVlLnRyaW0oKTsKICAgIGlmIChtYXNzU3RyID09PSAnJykgewogICAgICBzaG93TWFzc0Vycm9yKCfQktCy0LXQtNC40YLQtSDQvNCw0YHRgdGDINCy0LXRidC10YHRgtCy0LAuJyk7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB2YXIgbWFzcyA9IHBhcnNlRmxvYXQobWFzc1N0cik7CiAgICBpZiAoaXNOYU4obWFzcykpIHsKICAgICAgc2hvd01hc3NFcnJvcign0JLQstC10LTQuNGC0LUg0LrQvtGA0YDQtdC60YLQvdC+0LUg0YfQuNGB0LvQvtCy0L7QtSDQt9C90LDRh9C10L3QuNC1LicpOwogICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKG1hc3MgPD0gMCkgewogICAgICBzaG93TWFzc0Vycm9yKCfQnNCw0YHRgdCwINC00L7Qu9C20L3QsCDQsdGL0YLRjCDQv9C+0LvQvtC20LjRgtC10LvRjNC90YvQvCDRh9C40YHQu9C+0LwuJyk7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAobWFzcyA+IDFlMTIpIHsKICAgICAgc2hvd01hc3NFcnJvcign0KHQu9C40YjQutC+0Lwg0LHQvtC70YzRiNC+0LUg0LfQvdCw0YfQtdC90LjQtSDQvNCw0YHRgdGLLicpOwogICAgICByZXR1cm47CiAgICB9CgogICAgdmFyIHJlYWN0aW9uID0gcmVhY3Rpb25zW2lkeF07CiAgICB2YXIga25vd25TdWJzdGFuY2UgPSByZWFjdGlvbi5zdWJzdGFuY2VzW2tub3duSWR4XTsKICAgIHZhciBuS25vd24gPSBtYXNzIC8ga25vd25TdWJzdGFuY2UubW9sYXJNYXNzOwoKICAgIGlmICghaXNGaW5pdGUobktub3duKSB8fCBuS25vd24gPD0gMCkgewogICAgICBzaG93TWFzc0Vycm9yKCfQntGI0LjQsdC60LAg0LLRi9GH0LjRgdC70LXQvdC40Y8g0LrQvtC70LjRh9C10YHRgtCy0LAg0LLQtdGJ0LXRgdGC0LLQsC4nKTsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIHZhciByZXN1bHRzID0gW107CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlYWN0aW9uLnN1YnN0YW5jZXMubGVuZ3RoOyBpKyspIHsKICAgICAgdmFyIHN1YiA9IHJlYWN0aW9uLnN1YnN0YW5jZXNbaV07CiAgICAgIHZhciBuID0gbktub3duICogc3ViLmNvZWZmaWNpZW50IC8ga25vd25TdWJzdGFuY2UuY29lZmZpY2llbnQ7CiAgICAgIHZhciBtID0gbiAqIHN1Yi5tb2xhck1hc3M7CiAgICAgIHJlc3VsdHMucHVzaCh7CiAgICAgICAgbmFtZTogc3ViLm5hbWUsCiAgICAgICAgbW9sYXJNYXNzOiBzdWIubW9sYXJNYXNzLAogICAgICAgIGNvZWZmaWNpZW50OiBzdWIuY29lZmZpY2llbnQsCiAgICAgICAgbW9sZXM6IG4sCiAgICAgICAgbWFzczogbQogICAgICB9KTsKICAgIH0KCiAgICB2YXIgaHRtbCA9ICcnOwogICAgZm9yICh2YXIgaiA9IDA7IGogPCByZXN1bHRzLmxlbmd0aDsgaisrKSB7CiAgICAgIHZhciByID0gcmVzdWx0c1tqXTsKICAgICAgdmFyIGlzS25vd24gPSAoaiA9PT0ga25vd25JZHgpOwogICAgICB2YXIgbGFiZWxTdWZmaXggPSBpc0tub3duID8gJyAo0LjRgdGF0L7QtNC90L7QtSknIDogJyc7CiAgICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9Im5uLWdlbi1jYWwtcmVzdWx0LWl0ZW0iPic7CiAgICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9Im5uLWdlbi1jYWwtcmVzdWx0LXZhbHVlIj4nICsgZm9ybWF0TWFzcyhyLm1hc3MpICsgJzwvZGl2Pic7CiAgICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9Im5uLWdlbi1jYWwtcmVzdWx0LWxhYmVsIj4nICsgci5uYW1lICsgbGFiZWxTdWZmaXggKyAnPC9kaXY+JzsKICAgICAgaHRtbCArPSAnPGRpdiBjbGFzcz0ibm4tZ2VuLWNhbC1yZXN1bHQtdW5pdCI+JyArIHIubW9sZXMudG9GaXhlZCg0KSArICcg0LzQvtC70YwgfCBNID0gJyArIHIubW9sYXJNYXNzLnRvRml4ZWQoMikgKyAnINCzL9C80L7Qu9GMPC9kaXY+JzsKICAgICAgaHRtbCArPSAnPC9kaXY+JzsKICAgIH0KICAgIHJlc3VsdEdyaWQuaW5uZXJIVE1MID0gaHRtbDsKCiAgICBpZiAocmVhY3Rpb24ud2FybmluZykgewogICAgICBzaG93V2FybmluZyhyZWFjdGlvbi53YXJuaW5nKTsKICAgIH0gZWxzZSB7CiAgICAgIGhpZGVXYXJuaW5nKCk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiByZXNldEZvcm0oKSB7CiAgICByZWFjdGlvblNlbGVjdC52YWx1ZSA9ICcwJzsKICAgIHBvcHVsYXRlS25vd25TdWJzdGFuY2VzKCk7CiAgICBtYXNzSW5wdXQudmFsdWUgPSAnJzsKICAgIGhpZGVNYXNzRXJyb3IoKTsKICAgIGNsZWFyUmVzdWx0cygpOwogICAgaGlkZVdhcm5pbmcoKTsKICB9CgogIHJlYWN0aW9uU2VsZWN0LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZ1bmN0aW9uKCkgewogICAgcG9wdWxhdGVLbm93blN1YnN0YW5jZXMoKTsKICAgIGNsZWFyUmVzdWx0cygpOwogICAgaGlkZVdhcm5pbmcoKTsKICAgIGhpZGVNYXNzRXJyb3IoKTsKICAgIG1hc3NJbnB1dC52YWx1ZSA9ICcnOwogIH0pOwoKICBjYWxjdWxhdGVCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjYWxjdWxhdGUpOwoKICByZXNldEJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHJlc2V0Rm9ybSk7CgogIG1hc3NJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uKCkgewogICAgaGlkZU1hc3NFcnJvcigpOwogIH0pOwoKICBwb3B1bGF0ZUtub3duU3Vic3RhbmNlcygpOwp9KSgpOwo=