Калькулятор нейтрализации сточных вод
Расчёт необходимого количества реагента (кислоты или щёлочи) для доведения pH сточных вод до нормативного значения перед сбросом.
0
Масса реагента
кг (100% в-ва)
0
Количество вещества
моль
⚗️ Формулы расчёта
Используемые константы и справочные данные:
- Ионное произведение воды Kw = 1×10⁻¹⁴ (при 25°C)
- Молярные массы: HCl — 36.46 г/моль, H₂SO₄ — 98.08 г/моль, NaOH — 40.00 г/моль, Ca(OH)₂ — 74.09 г/моль
- Факторы эквивалентности учитывают основность/кислотность реагентов
📘 Как пользоваться
1
Введите объём сточных вод в кубических метрах (м³). Например, 10 м³ — это типичный суточный объём для небольшого производства.
2
Укажите начальный pH стоков. Если вода щелочная (pH > 7) — потребуется кислота, если кислая (pH < 7) — щёлочь. Пример: pH 11.5 для щелочных стоков гальваники.
3
Задайте целевой pH. Обычно 6.5–8.5 по нормативам СанПиН для сброса в водоёмы рыбохозяйственного назначения. По умолчанию рекомендуется 7.0.
4
Выберите реагент и его концентрацию. Калькулятор автоматически подставит молярную массу и фактор эквивалентности. Уточните плотность раствора по справочнику (зависит от температуры и концентрации).
🔬 Примеры использования
Нейтрализация щелочных стоков после гальванического цеха
Объём: 5 м³, начальный pH: 12.0, целевой pH: 7.0.
Реагент: серная кислота (H₂SO₄), концентрация 15%, плотность 1.10 кг/л.
Результат: ~ 3.27 кг чистой кислоты, ~ 21.8 кг раствора, ~ 19.8 л раствора.
Корректировка pH кислых стоков пищевого производства
Объём: 2 м³, начальный pH: 3.5, целевой pH: 7.0.
Реагент: гидроксид натрия (NaOH), концентрация 10%, плотность 1.11 кг/л.
Результат: ~ 0.25 кг чистого NaOH, ~ 2.53 кг раствора, ~ 2.28 л раствора.
Доведение pH технической воды до нейтрального
Объём: 20 м³, начальный pH: 9.2, целевой pH: 7.0.
Реагент: соляная кислота (HCl), концентрация 5%, плотность 1.02 кг/л.
Результат: ~ 0.115 кг чистого HCl, ~ 2.31 кг раствора, ~ 2.26 л раствора.
⚠️ Важные нюансы
- Техника безопасности: Нейтрализация сильных кислот и щелочей — экзотермическая реакция. Всегда добавляйте реагент в воду, а не наоборот. Используйте средства индивидуальной защиты: очки, перчатки, халат. Обеспечьте перемешивание и контроль температуры.
- Буферные растворы: Реальный расход реагента может быть выше расчётного из-за присутствия буферных систем (карбонаты, фосфаты, аммоний). Калькулятор даёт теоретический минимум; на практике рекомендуется запас 10–20%.
- Температурная зависимость: Ионное произведение воды Kw зависит от температуры. При 0°C Kw ≈ 0.11×10⁻¹⁴, при 50°C Kw ≈ 5.5×10⁻¹⁴. Расчёт ведётся для стандартных 25°C.
- Многоступенчатая нейтрализация: При больших перепадах pH (более 3–4 единиц) нейтрализацию рекомендуется проводить ступенчато, с промежуточным контролем pH, чтобы избежать локальных перегревов.
- Нормативы сброса: Целевой pH выбирайте в соответствии с местными нормативами. Для водоёмов рыбохозяйственного назначения — 6.5–8.5 СанПиН 1.2.3685-21; для городской канализации — 6.5–9.0 (Правила холодного водоснабжения и водоотведения, утв. ПП РФ №644).
📚 Источники данных
- Молярные массы элементов и соединений: IUPAC, Commission on Isotopic Abundances and Atomic Weights (CIAAW), 2021. Atomic weights of the elements. Pure and Applied Chemistry, 93(5), 629–654.
- Термодинамические константы: NIST Chemistry WebBook, SRD 69. Standard Reference Data. National Institute of Standards and Technology, Gaithersburg MD.
- Ионное произведение воды: CRC Handbook of Chemistry and Physics, 104th Edition. Rumble J.R. (Ed.), CRC Press, 2023. Section 8: Electrolyte Solutions.
- Свойства растворов электролитов: PubChem (National Library of Medicine). Compound Summary for HCl, H₂SO₄, NaOH, Ca(OH)₂. Density-concentration tables at 20°C.
- Методика расчёта: Расчёт основан на стандартных уравнениях кислотно-основного равновесия и законе эквивалентов, согласно общей и неорганической химии (Глинка Н.Л., 2014; Ахметов Н.С., 2017).
Калькулятор нейтрализации сточных вод позволяет быстро определить необходимое количество кислоты или щёлочи для приведения pH промышленных, хозяйственно-бытовых или ливневых стоков к нормативным значениям. Инструмент учитывает объём воды, начальный и целевой уровень pH, тип и концентрацию реагента, а также его плотность. Расчёт основан на фундаментальных химических уравнениях и справочных данных IUPAC и NIST. Он будет полезен инженерам-экологам, технологам очистных сооружений, лаборантам и проектировщикам систем водоотведения.
CihmdW5jdGlvbigpewogIHZhciBtb2xhck1hc3NlcyA9IHsKICAgIGhjbDogMzYuNDYsCiAgICBoMnNvNDogOTguMDgsCiAgICBuYW9oOiA0MC4wMCwKICAgIGNhb2gyOiA3NC4wOQogIH07CgogIHZhciBlcUZhY3RvcnMgPSB7CiAgICBoY2w6IDEsCiAgICBoMnNvNDogMC41LAogICAgbmFvaDogMSwKICAgIGNhb2gyOiAwLjUKICB9OwoKICBmdW5jdGlvbiBnZXRFbChpZCkgewogICAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsKICB9CgogIHZhciBjYWxjQnRuID0gZ2V0RWwoJ25uLWdlbi1jYWwtY2FsY3VsYXRlJyk7CiAgdmFyIHJlc2V0QnRuID0gZ2V0RWwoJ25uLWdlbi1jYWwtcmVzZXQnKTsKCiAgZnVuY3Rpb24gcGFyc2VGbG9hdFNhZmUodmFsKSB7CiAgICB2YXIgbnVtID0gcGFyc2VGbG9hdCh2YWwpOwogICAgcmV0dXJuIGlzTmFOKG51bSkgPyBudWxsIDogbnVtOwogIH0KCiAgZnVuY3Rpb24gY2xlYXJFcnJvcnMoKSB7CiAgICB2YXIgZXJyb3JzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm5uLWdlbi1jYWwtZXJyb3ItbXNnJyk7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVycm9ycy5sZW5ndGg7IGkrKykgewogICAgICBlcnJvcnNbaV0udGV4dENvbnRlbnQgPSAnJzsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHNldEVycm9yKGVsSWQsIG1zZykgewogICAgdmFyIGVsID0gZ2V0RWwoZWxJZCk7CiAgICBpZiAoZWwpIGVsLnRleHRDb250ZW50ID0gbXNnOwogIH0KCiAgZnVuY3Rpb24gcmVzZXRSZXN1bHRzKCkgewogICAgZ2V0RWwoJ25uLWdlbi1jYWwtcmVzdWx0LW1hc3MnKS50ZXh0Q29udGVudCA9ICcwJzsKICAgIGdldEVsKCdubi1nZW4tY2FsLXJlc3VsdC1zb2x1dGlvbicpLnRleHRDb250ZW50ID0gJzAnOwogICAgZ2V0RWwoJ25uLWdlbi1jYWwtcmVzdWx0LXZvbHVtZS1yZWFnZW50JykudGV4dENvbnRlbnQgPSAnMCc7CiAgICBnZXRFbCgnbm4tZ2VuLWNhbC1yZXN1bHQtbW9sZXMnKS50ZXh0Q29udGVudCA9ICcwJzsKICAgIGdldEVsKCdubi1nZW4tY2FsLXJlc3VsdC1zdW1tYXJ5JykudGV4dENvbnRlbnQgPSAnJzsKICB9CgogIGZ1bmN0aW9uIGZvcm1hdE51bWJlcihudW0sIGRlY2ltYWxzKSB7CiAgICBpZiAobnVtID09PSBudWxsIHx8IG51bSA9PT0gdW5kZWZpbmVkIHx8IGlzTmFOKG51bSkgfHwgIWlzRmluaXRlKG51bSkpIHJldHVybiAn4oCUJzsKICAgIHZhciBmaXhlZCA9IE51bWJlcihudW0udG9GaXhlZChkZWNpbWFscyB8fCA0KSk7CiAgICBpZiAoTWF0aC5hYnMoZml4ZWQpID49IDAuMDAwMSAmJiBNYXRoLmFicyhmaXhlZCkgPCAxZTYpIHsKICAgICAgdmFyIHN0ciA9IGZpeGVkLnRvU3RyaW5nKCk7CiAgICAgIGlmIChzdHIubGVuZ3RoID4gMTApIHsKICAgICAgICByZXR1cm4gTnVtYmVyKGZpeGVkLnRvUHJlY2lzaW9uKDYpKS50b1N0cmluZygpOwogICAgICB9CiAgICAgIHJldHVybiBzdHI7CiAgICB9CiAgICByZXR1cm4gTnVtYmVyKGZpeGVkLnRvUHJlY2lzaW9uKDYpKS50b1N0cmluZygpOwogIH0KCiAgZnVuY3Rpb24gY2FsY3VsYXRlKCkgewogICAgY2xlYXJFcnJvcnMoKTsKICAgIHJlc2V0UmVzdWx0cygpOwoKICAgIHZhciB2b2x1bWVJbnB1dCA9IGdldEVsKCdubi1nZW4tY2FsLXZvbHVtZScpOwogICAgdmFyIHBoSW5pdElucHV0ID0gZ2V0RWwoJ25uLWdlbi1jYWwtcGgtaW5pdGlhbCcpOwogICAgdmFyIHBoVGFyZ2V0SW5wdXQgPSBnZXRFbCgnbm4tZ2VuLWNhbC1waC10YXJnZXQnKTsKICAgIHZhciByZWFnZW50VHlwZSA9IGdldEVsKCdubi1nZW4tY2FsLXJlYWdlbnQtdHlwZScpLnZhbHVlOwogICAgdmFyIGNvbmNJbnB1dCA9IGdldEVsKCdubi1nZW4tY2FsLXJlYWdlbnQtY29uYycpOwogICAgdmFyIGRlbnNpdHlJbnB1dCA9IGdldEVsKCdubi1nZW4tY2FsLXJlYWdlbnQtZGVuc2l0eScpOwoKICAgIHZhciBWX20zID0gcGFyc2VGbG9hdFNhZmUodm9sdW1lSW5wdXQudmFsdWUpOwogICAgdmFyIHBIX2kgPSBwYXJzZUZsb2F0U2FmZShwaEluaXRJbnB1dC52YWx1ZSk7CiAgICB2YXIgcEhfdCA9IHBhcnNlRmxvYXRTYWZlKHBoVGFyZ2V0SW5wdXQudmFsdWUpOwogICAgdmFyIENfcGVyY2VudCA9IHBhcnNlRmxvYXRTYWZlKGNvbmNJbnB1dC52YWx1ZSk7CiAgICB2YXIgZGVuc2l0eSA9IHBhcnNlRmxvYXRTYWZlKGRlbnNpdHlJbnB1dC52YWx1ZSk7CgogICAgdmFyIGhhc0Vycm9yID0gZmFsc2U7CgogICAgaWYgKFZfbTMgPT09IG51bGwgfHwgVl9tMyA8PSAwKSB7CiAgICAgIHNldEVycm9yKCdubi1nZW4tY2FsLWVycm9yLXZvbHVtZScsICfQktCy0LXQtNC40YLQtSDQv9C+0LvQvtC20LjRgtC10LvRjNC90L7QtSDRh9C40YHQu9C+ICjQvMKzKScpOwogICAgICBoYXNFcnJvciA9IHRydWU7CiAgICB9CiAgICBpZiAocEhfaSA9PT0gbnVsbCB8fCBwSF9pIDwgMCB8fCBwSF9pID4gMTQpIHsKICAgICAgc2V0RXJyb3IoJ25uLWdlbi1jYWwtZXJyb3ItcGgtaW5pdCcsICfQktCy0LXQtNC40YLQtSBwSCDQvtGCIDAg0LTQviAxNCcpOwogICAgICBoYXNFcnJvciA9IHRydWU7CiAgICB9CiAgICBpZiAocEhfdCA9PT0gbnVsbCB8fCBwSF90IDwgMCB8fCBwSF90ID4gMTQpIHsKICAgICAgc2V0RXJyb3IoJ25uLWdlbi1jYWwtZXJyb3ItcGgtdGFyZ2V0JywgJ9CS0LLQtdC00LjRgtC1IHBIINC+0YIgMCDQtNC+IDE0Jyk7CiAgICAgIGhhc0Vycm9yID0gdHJ1ZTsKICAgIH0KICAgIGlmIChDX3BlcmNlbnQgPT09IG51bGwgfHwgQ19wZXJjZW50IDw9IDAgfHwgQ19wZXJjZW50ID4gMTAwKSB7CiAgICAgIHNldEVycm9yKCdubi1nZW4tY2FsLWVycm9yLWNvbmMnLCAn0JLQstC10LTQuNGC0LUg0LrQvtC90YbQtdC90YLRgNCw0YbQuNGOINC+0YIgMC4xINC00L4gMTAwJScpOwogICAgICBoYXNFcnJvciA9IHRydWU7CiAgICB9CiAgICBpZiAoZGVuc2l0eSA9PT0gbnVsbCB8fCBkZW5zaXR5IDw9IDAgfHwgZGVuc2l0eSA+IDUpIHsKICAgICAgc2V0RXJyb3IoJ25uLWdlbi1jYWwtZXJyb3ItZGVuc2l0eScsICfQktCy0LXQtNC40YLQtSDQv9C70L7RgtC90L7RgdGC0Ywg0L7RgiAwLjUg0LTQviA1INC60LMv0LsnKTsKICAgICAgaGFzRXJyb3IgPSB0cnVlOwogICAgfQoKICAgIGlmIChoYXNFcnJvcikgcmV0dXJuOwoKICAgIGlmIChNYXRoLmFicyhwSF9pIC0gcEhfdCkgPCAwLjAwMDEpIHsKICAgICAgZ2V0RWwoJ25uLWdlbi1jYWwtcmVzdWx0LXN1bW1hcnknKS50ZXh0Q29udGVudCA9ICfQndCw0YfQsNC70YzQvdGL0Lkg0Lgg0YbQtdC70LXQstC+0LkgcEgg0YHQvtCy0L/QsNC00LDRjtGCLiDQndC10LnRgtGA0LDQu9C40LfQsNGG0LjRjyDQvdC1INGC0YDQtdCx0YPQtdGC0YHRjy4nOwogICAgICByZXR1cm47CiAgICB9CgogICAgdmFyIEt3ID0gMWUtMTQ7CiAgICB2YXIgSF9pbml0ID0gTWF0aC5wb3coMTAsIC1wSF9pKTsKICAgIHZhciBPSF9pbml0ID0gS3cgLyBIX2luaXQ7CiAgICB2YXIgSF90YXJnZXQgPSBNYXRoLnBvdygxMCwgLXBIX3QpOwogICAgdmFyIE9IX3RhcmdldCA9IEt3IC8gSF90YXJnZXQ7CgogICAgdmFyIGV4Y2Vzc01vbGVzUGVyTGl0ZXI7CiAgICB2YXIgaXNBY2lkaWNXYXN0ZSA9IHBIX2kgPCA3OwoKICAgIGlmIChpc0FjaWRpY1dhc3RlICYmIHBIX3QgPiBwSF9pKSB7CiAgICAgIGV4Y2Vzc01vbGVzUGVyTGl0ZXIgPSBIX2luaXQgLSBIX3RhcmdldDsKICAgIH0gZWxzZSBpZiAoIWlzQWNpZGljV2FzdGUgJiYgcEhfdCA8IHBIX2kpIHsKICAgICAgZXhjZXNzTW9sZXNQZXJMaXRlciA9IE9IX2luaXQgLSBPSF90YXJnZXQ7CiAgICB9IGVsc2UgewogICAgICBpZiAocEhfaSA8IDcgJiYgcEhfdCA8IHBIX2kpIHsKICAgICAgICBleGNlc3NNb2xlc1BlckxpdGVyID0gMDsKICAgICAgICBnZXRFbCgnbm4tZ2VuLWNhbC1yZXN1bHQtc3VtbWFyeScpLnRleHRDb250ZW50ID0gJ9Cm0LXQu9C10LLQvtC5IHBIINC90LjQttC1INC90LDRh9Cw0LvRjNC90L7Qs9C+INC60LjRgdC70L7Qs9C+OiDRgtGA0LXQsdGD0LXRgtGB0Y8g0L/QvtC00LrQuNGB0LvQtdC90LjQtSwg0LLRi9Cx0LXRgNC40YLQtSDQutC40YHQu9C+0YLRgy4nOwogICAgICAgIHJldHVybjsKICAgICAgfSBlbHNlIGlmIChwSF9pID4gNyAmJiBwSF90ID4gcEhfaSkgewogICAgICAgIGV4Y2Vzc01vbGVzUGVyTGl0ZXIgPSAwOwogICAgICAgIGdldEVsKCdubi1nZW4tY2FsLXJlc3VsdC1zdW1tYXJ5JykudGV4dENvbnRlbnQgPSAn0KbQtdC70LXQstC+0LkgcEgg0LLRi9GI0LUg0L3QsNGH0LDQu9GM0L3QvtCz0L4g0YnQtdC70L7Rh9C90L7Qs9C+OiDRgtGA0LXQsdGD0LXRgtGB0Y8g0LTQvtCx0LDQstC70LXQvdC40LUg0YnRkdC70L7Rh9C4LCDQstGL0LHQtdGA0LjRgtC1INC+0YHQvdC+0LLQsNC90LjQtS4nOwogICAgICAgIHJldHVybjsKICAgICAgfSBlbHNlIHsKICAgICAgICBleGNlc3NNb2xlc1BlckxpdGVyID0gMDsKICAgICAgfQogICAgfQoKICAgIGlmIChleGNlc3NNb2xlc1BlckxpdGVyIDw9IDApIHsKICAgICAgZ2V0RWwoJ25uLWdlbi1jYWwtcmVzdWx0LXN1bW1hcnknKS50ZXh0Q29udGVudCA9ICfQoNCw0YHRh9GR0YLQvdC+0LUg0LrQvtC70LjRh9C10YHRgtCy0L4g0YDQtdCw0LPQtdC90YLQsCDQsdC70LjQt9C60L4g0Log0L3Rg9C70Y4uINCf0YDQvtCy0LXRgNGM0YLQtSDQstCy0LXQtNGR0L3QvdGL0LUg0LTQsNC90L3Ri9C1Lic7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB2YXIgdm9sdW1lTGl0ZXJzID0gVl9tMyAqIDEwMDA7CiAgICB2YXIgbW9sZXNUb05ldXRyYWxpemUgPSBleGNlc3NNb2xlc1BlckxpdGVyICogdm9sdW1lTGl0ZXJzOwogICAgdmFyIGYgPSBlcUZhY3RvcnNbcmVhZ2VudFR5cGVdIHx8IDE7CiAgICB2YXIgbW9sZXNSZWFnZW50ID0gbW9sZXNUb05ldXRyYWxpemUgKiBmOwogICAgdmFyIE0gPSBtb2xhck1hc3Nlc1tyZWFnZW50VHlwZV0gfHwgMDsKICAgIHZhciBtYXNzUHVyZUdyYW1zID0gbW9sZXNSZWFnZW50ICogTTsKICAgIHZhciBtYXNzUHVyZUtnID0gbWFzc1B1cmVHcmFtcyAvIDEwMDA7CgogICAgaWYgKG1hc3NQdXJlS2cgPCAwIHx8ICFpc0Zpbml0ZShtYXNzUHVyZUtnKSkgewogICAgICBnZXRFbCgnbm4tZ2VuLWNhbC1yZXN1bHQtc3VtbWFyeScpLnRleHRDb250ZW50ID0gJ9Ce0YjQuNCx0LrQsCDQstGL0YfQuNGB0LvQtdC90LjRjy4g0J/RgNC+0LLQtdGA0YzRgtC1INC60L7RgNGA0LXQutGC0L3QvtGB0YLRjCDQuNGB0YXQvtC00L3Ri9GFINC00LDQvdC90YvRhS4nOwogICAgICByZXR1cm47CiAgICB9CgogICAgdmFyIG1hc3NTb2x1dGlvbktnID0gbWFzc1B1cmVLZyAvIChDX3BlcmNlbnQgLyAxMDApOwogICAgdmFyIHZvbHVtZVNvbHV0aW9uTGl0ZXJzID0gbWFzc1NvbHV0aW9uS2cgLyBkZW5zaXR5OwoKICAgIGdldEVsKCdubi1nZW4tY2FsLXJlc3VsdC1tYXNzJykudGV4dENvbnRlbnQgPSBmb3JtYXROdW1iZXIobWFzc1B1cmVLZywgNCk7CiAgICBnZXRFbCgnbm4tZ2VuLWNhbC1yZXN1bHQtc29sdXRpb24nKS50ZXh0Q29udGVudCA9IGZvcm1hdE51bWJlcihtYXNzU29sdXRpb25LZywgMik7CiAgICBnZXRFbCgnbm4tZ2VuLWNhbC1yZXN1bHQtdm9sdW1lLXJlYWdlbnQnKS50ZXh0Q29udGVudCA9IGZvcm1hdE51bWJlcih2b2x1bWVTb2x1dGlvbkxpdGVycywgMik7CiAgICBnZXRFbCgnbm4tZ2VuLWNhbC1yZXN1bHQtbW9sZXMnKS50ZXh0Q29udGVudCA9IGZvcm1hdE51bWJlcihtb2xlc1JlYWdlbnQsIDQpOwoKICAgIHZhciByZWFnZW50TmFtZXMgPSB7CiAgICAgIGhjbDogJ9GB0L7Qu9GP0L3QvtC5INC60LjRgdC70L7RgtGLJywKICAgICAgaDJzbzQ6ICfRgdC10YDQvdC+0Lkg0LrQuNGB0LvQvtGC0YsnLAogICAgICBuYW9oOiAn0LPQuNC00YDQvtC60YHQuNC00LAg0L3QsNGC0YDQuNGPJywKICAgICAgY2FvaDI6ICfQs9C40LTRgNC+0LrRgdC40LTQsCDQutCw0LvRjNGG0LjRjycKICAgIH07CiAgICB2YXIgcmVhZ2VudE5hbWUgPSByZWFnZW50TmFtZXNbcmVhZ2VudFR5cGVdIHx8ICfRgNC10LDQs9C10L3RgtCwJzsKCiAgICB2YXIgc3VtbWFyeSA9ICfQlNC70Y8g0L3QtdC50YLRgNCw0LvQuNC30LDRhtC40LggJyArIGZvcm1hdE51bWJlcihWX20zLCAyKSArICcg0LzCsyDRgdGC0L7QutC+0LIg0YEgcEggJyArIGZvcm1hdE51bWJlcihwSF9pLCAxKSArICcg0LTQviBwSCAnICsgZm9ybWF0TnVtYmVyKHBIX3QsIDEpICsgJyDRgtGA0LXQsdGD0LXRgtGB0Y8gJzsKICAgIHN1bW1hcnkgKz0gZm9ybWF0TnVtYmVyKG1hc3NQdXJlS2csIDMpICsgJyDQutCzINGH0LjRgdGC0L7Qs9C+ICcgKyByZWFnZW50TmFtZSArICcgKDEwMCUpLiAnOwogICAgc3VtbWFyeSArPSAn0K3RgtC+INGB0L7QvtGC0LLQtdGC0YHRgtCy0YPQtdGCICcgKyBmb3JtYXROdW1iZXIobWFzc1NvbHV0aW9uS2csIDIpICsgJyDQutCzINGA0LDRgdGC0LLQvtGA0LAg0YEg0LrQvtC90YbQtdC90YLRgNCw0YbQuNC10LkgJyArIGZvcm1hdE51bWJlcihDX3BlcmNlbnQsIDEpICsgJyUgJzsKICAgIHN1bW1hcnkgKz0gJ9C40LvQuCAnICsgZm9ybWF0TnVtYmVyKHZvbHVtZVNvbHV0aW9uTGl0ZXJzLCAyKSArICcg0Lsg0L/RgNC4INC/0LvQvtGC0L3QvtGB0YLQuCAnICsgZm9ybWF0TnVtYmVyKGRlbnNpdHksIDMpICsgJyDQutCzL9C7Lic7CiAgICBnZXRFbCgnbm4tZ2VuLWNhbC1yZXN1bHQtc3VtbWFyeScpLnRleHRDb250ZW50ID0gc3VtbWFyeTsKICB9CgogIGZ1bmN0aW9uIHJlc2V0Rm9ybSgpIHsKICAgIGNsZWFyRXJyb3JzKCk7CiAgICByZXNldFJlc3VsdHMoKTsKICAgIGdldEVsKCdubi1nZW4tY2FsLXZvbHVtZScpLnZhbHVlID0gJyc7CiAgICBnZXRFbCgnbm4tZ2VuLWNhbC1waC1pbml0aWFsJykudmFsdWUgPSAnJzsKICAgIGdldEVsKCdubi1nZW4tY2FsLXBoLXRhcmdldCcpLnZhbHVlID0gJyc7CiAgICBnZXRFbCgnbm4tZ2VuLWNhbC1yZWFnZW50LXR5cGUnKS52YWx1ZSA9ICdoY2wnOwogICAgZ2V0RWwoJ25uLWdlbi1jYWwtcmVhZ2VudC1jb25jJykudmFsdWUgPSAnJzsKICAgIGdldEVsKCdubi1nZW4tY2FsLXJlYWdlbnQtZGVuc2l0eScpLnZhbHVlID0gJzEuMDUnOwogIH0KCiAgY2FsY0J0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGNhbGN1bGF0ZSk7CiAgcmVzZXRCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCByZXNldEZvcm0pOwp9KSgpOwo=