Калькулятор подкормки растений по фазам роста
Рассчитайте точное количество удобрений для каждой фазы развития растения — от рассады до сбора урожая, с учётом площади посадки, культуры и рекомендуемых норм расхода.
0
Общий расход удобрения
г
0
Количество упаковок
шт.
Как пользоваться калькулятором
1
Выберите культуру из списка — от этого зависят нормы расхода. Например: томаты, огурцы, капуста или плодовые деревья.
2
Укажите фазу роста растения. На каждой фазе потребности в питании разные: рассаде нужно одно, а плодоносящему кусту — совсем другое. Норма расхода обновится автоматически.
3
Выберите тип расчёта — по площади (м²) или по количеству растений (шт.). Введите площадь грядки, теплицы или точное число кустов. Укажите вес упаковки удобрения и количество подкормок за эту фазу.
4
Нажмите «Рассчитать». Вы получите общий расход удобрения в граммах, необходимое количество упаковок (округлённое вверх), расход за всю фазу и запас с надбавкой 10%.
Примеры расчёта
Теплица с томатами, 18 м², фаза плодоношения
Площадь — 18 м², норма на плодоношение — 35 г/м², упаковка — 1000 г, подкормок — 3. Общий расход: 18 × 35 = 630 г (1 упаковка). На всю фазу: 630 × 3 = 1890 г (2 упаковки по 1 кг). С запасом 10% — 693 г на одну подкормку.
Огурцы в открытом грунте, 40 кустов, вегетативный рост
Количество растений — 40 шт., норма на вегетацию — 5 г/растение, упаковка — 500 г, подкормок — 2. Общий расход: 40 × 5 = 200 г (1 упаковка 500 г). На фазу: 200 × 2 = 400 г. С запасом: 220 г.
Садовая клубника, 60 м², фаза цветения
Площадь — 60 м², норма — 20 г/м², упаковка — 3000 г (3 кг), подкормок — 1. Общий расход: 60 × 20 = 1200 г (1 упаковка 3 кг). С запасом: 1320 г.
Формулы расчёта
Все вычисления выполняются автоматически при нажатии кнопки «Рассчитать». Ниже — основные формулы, заложенные в калькулятор:
Общий расход (г) = Норма расхода × Площадь (или × Количество растений)
Количество упаковок = округление вверх (Общий расход / Вес упаковки)
Расход на фазу (г) = Общий расход × Количество подкормок в фазе
С запасом 10% (г) = Общий расход × 1,1
Округление количества упаковок всегда идёт в большую сторону: если вам нужно 630 г, а упаковка 500 г — потребуется 2 упаковки. Остаток уйдёт на следующую подкормку или в запас.
Нормы и ориентиры
Нормы расхода удобрений зависят от культуры, фазы роста, типа почвы и формы выпуска препарата. Ниже приведены ориентировочные диапазоны для распространённых культур при использовании комплексных водорастворимых удобрений:
- Томаты, перцы, баклажаны: рассада — 10–20 г/м², вегетация — 20–30 г/м², цветение — 25–35 г/м², плодоношение — 30–45 г/м².
- Огурцы, кабачки: укоренение — 8–15 г/м², рост плетей — 15–25 г/м², цветение — 20–30 г/м², плодоношение — 25–40 г/м².
- Капуста: рассада — 10–15 г/м², формирование кочана — 25–35 г/м², налив кочана — 30–40 г/м².
- Корнеплоды: начальный рост — 8–12 г/м², формирование корнеплода — 15–25 г/м², налив — 10–15 г/м² (калийный акцент).
- Клубника: весеннее пробуждение — 15–20 г/м², цветение — 18–25 г/м², после сбора ягод — 25–35 г/м².
- Плодовые деревья: на одно взрослое дерево — 50–150 г на подкормку в зависимости от возраста и размера кроны.
- Ягодные кустарники: на куст — 20–60 г, норма растёт с возрастом растения.
Важно: все указанные нормы — справочные. Окончательную дозировку всегда сверяйте с инструкцией производителя конкретного удобрения. На лёгких песчаных почвах норму обычно снижают на 15–20%, на тяжёлых глинистых — можно работать по средним значениям.
Что влияет на результат
- Тип почвы. Песчаные почвы быстрее теряют питательные вещества — подкормки дробят на большее число внесений с меньшей разовой дозой. Глинистые держат питание дольше, норму можно чуть увеличить, но реже вносить.
- Погода и климат. В жаркую сухую погоду корни усваивают меньше питания — имеет смысл снизить дозировку и увеличить полив. В прохладную влажную погоду усвоение замедляется, но вымывание меньше.
- Возраст растения. Молодые саженцы и рассада чувствительны к высоким концентрациям — для них норму снижают на 30–50% от взрослой. Взрослые плодоносящие кусты потребляют максимальное количество питания.
- Сорт и гибрид. Интенсивные гибриды (F1) обычно требуют больше питания, чем сортовые растения. Уточняйте рекомендации по конкретному сорту в описании производителя семян.
- Форма удобрения. Жидкие концентраты, водорастворимые порошки и гранулированные удобрения имеют разную концентрацию действующих веществ. Нормы из калькулятора ориентированы на сухие водорастворимые смеси. Для жидких форм пересчитывайте по содержанию NPK.
- Способ внесения. Корневая подкормка позволяет использовать более высокие дозировки, чем опрыскивание по листу. Для листовых подкормок норму снижают в 3–5 раз.
Важные нюансы
- Всегда читайте инструкцию. Окончательную дозировку и способ применения берите из официальной инструкции конкретного препарата. Данные калькулятора — справочный ориентир, а не агрономическое предписание.
- Не превышайте дозировку. Избыток удобрений опаснее недостатка: возможен ожог корней, накопление нитратов в плодах, угнетение роста и гибель растения. Лучше чуть недокормить, чем перекормить.
- Разделяйте подкормки. Если по расчёту вышло 600 г на одну подкормку, а фаза длится месяц — имеет смысл разбить на 2–3 внесения по 200–300 г для равномерного питания.
- Поливайте до и после. Любую корневую подкормку проводите по влажной почве. Сначала обычный полив, через 30–60 минут — удобрительный раствор, затем снова полив, чтобы питание ушло к корням, а не осталось в верхнем слое.
- Учитывайте совместимость. Не все удобрения можно смешивать в одном баке. Кальцийсодержащие составы не смешивайте с сульфатами и фосфатами — выпадет осадок. Делайте перерыв 5–7 дней между разными типами подкормок.
- Защита при работе. При работе с минеральными удобрениями используйте перчатки, избегайте вдыхания пыли, не допускайте попадания в глаза. Храните удобрения в недоступном для детей и животных месте.
Частые ошибки
- Подкормка «на глаз». Самая распространённая ошибка — сыпать удобрение без замера, полагаясь на опыт. Разные партии удобрений могут иметь разную насыпную плотность — мерный стакан или весы надёжнее.
- Одинаковая норма на всех фазах. Нельзя кормить рассаду, цветущее и плодоносящее растение одним и тем же составом в одной дозе. Потребности в азоте, фосфоре и калии радикально меняются по фазам роста.
- Игнорирование погоды. Подкормка в жару по сухой почве — прямой путь к ожогу корней. В дождливую погоду часть удобрения вымывается в глубокие слои, недоступные корням — норму корректируют.
- Смешивание несовместимых препаратов. Попытка сэкономить время и смешать всё в одной лейке часто приводит к химической реакции и выпадению осадка. Результат — забитые форсунки опрыскивателя и нулевой эффект.
- Расчёт без запаса. Покупать удобрение «впритык» по расчёту рискованно: часть просыплется, часть останется на стенках ёмкости, может потребоваться внеплановая подкормка. Запас 10–15% — разумная практика.
- Поздние подкормки. Внесение азотных удобрений в конце сезона (август–сентябрь) провоцирует рост зелени, которая не успеет вызреть до холодов. Для многолетних культур это снижает зимостойкость.
Ответы на частые вопросы
- Можно ли использовать калькулятор для органических удобрений? Да, но с оговоркой. Калькулятор считает по сухому весу. Для компоста, перегноя, биогумуса нормы совсем другие — обычно 2–5 кг на м². Уточняйте нормы органики отдельно, они не входят в справочник калькулятора.
- Почему норма расхода меняется при смене культуры? Разные культуры потребляют питательные вещества с разной интенсивностью. Огурцы — «обжоры», им нужно больше азота. Корнеплоды умеренны в аппетитах, но требовательны к калию. Калькулятор подбирает ориентир под культуру.
- Нужно ли учитывать NPK удобрения? Калькулятор ориентирован на комплексные удобрения со сбалансированным составом под фазу роста (например, 18:18:18 для вегетации или 10:30:20 для цветения). Если у вас моноудобрение (только азотное или только калийное) — норму нужно пересчитывать отдельно.
- Что делать, если площадь меньше 1 м²? Вводите дробное значение, например 0,5 для балконного ящика или 0,3 для горшка. Калькулятор корректно считает малые площади.
- Почему количество упаковок округляется вверх? Потому что вы не можете купить половину упаковки в магазине. Если расчёт показал 1,2 упаковки — покупайте 2. Остаток пригодится для следующей подкормки.
- Обязательно ли придерживаться нормы с запасом 10%? Не обязательно, но настоятельно рекомендуется. Потери при просыпании, неточность весов, неравномерность внесения — 10% компенсируют эти погрешности без риска передозировки.
Источники и справочные данные
Расчётные нормы в калькуляторе основаны на следующих источниках:
- Агрономические справочные нормы внесения минеральных удобрений для овощных, плодовых и декоративных культур открытого и защищённого грунта.
- Инструкции производителей удобрений и средств защиты растений — усреднённые значения для комплексных водорастворимых смесей.
- Рекомендации по выращиванию овощных, плодовых и декоративных культур, опубликованные в отраслевых изданиях и учебных пособиях по агрономии.
- Практические нормы расхода воды, грунта, мульчи и посадочного материала, обобщённые из опыта садоводов и огородников.
Точные нормы применения всегда берите из официальной инструкции конкретного препарата. Данные калькулятора носят справочно-ориентировочный характер и не могут заменить профессиональную агрономическую консультацию.
Калькулятор подкормки растений по фазам роста помогает садоводам и огородникам точно рассчитать необходимое количество удобрений для каждой стадии развития культуры — от высадки рассады до сбора урожая. Инструмент учитывает тип растения, фазу роста, площадь грядки или количество кустов, а также вес упаковки и число запланированных подкормок. Расчёт позволяет избежать типичных ошибок: недокорма, снижающего урожайность, и перекорма, ведущего к ожогам корней и накоплению нитратов. Встроенный справочник норм расхода охватывает томаты, огурцы, капусту, корнеплоды, клубнику, плодовые деревья, ягодные кустарники и цветочные культуры. Калькулятор будет полезен как владельцам небольших дачных участков, так и тем, кто выращивает овощи и зелень в теплицах или на продажу.
CihmdW5jdGlvbigpewp2YXIgY3VsdHVyZVNlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1jdWx0dXJlJyk7CnZhciBwaGFzZVNlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1waGFzZScpOwp2YXIgY2FsY1R5cGVSYWRpb3MgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgnbm4tY2FsYy10eXBlJyk7CnZhciBhcmVhR3JvdXAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tYXJlYS1ncm91cCcpOwp2YXIgcGxhbnRzR3JvdXAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tcGxhbnRzLWdyb3VwJyk7CnZhciBhcmVhSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tYXJlYScpOwp2YXIgcGxhbnRzSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tcGxhbnRzJyk7CnZhciBub3JtSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tbm9ybScpOwp2YXIgbm9ybUhpbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tbm9ybS1oaW50Jyk7CnZhciBwYWNrYWdlSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tcGFja2FnZScpOwp2YXIgYXBwc0lucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25uLWFwcHMnKTsKdmFyIGVycm9yTXNnID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25uLWVycm9yJyk7CnZhciBjYWxjQnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25uLWNhbGN1bGF0ZScpOwp2YXIgcmVzZXRCdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tcmVzZXQnKTsKCnZhciByZXN1bHRUb3RhbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1yZXN1bHQtdG90YWwnKTsKdmFyIHJlc3VsdFBhY2thZ2VzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25uLXJlc3VsdC1wYWNrYWdlcycpOwp2YXIgcmVzdWx0U2Vhc29uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25uLXJlc3VsdC1zZWFzb24nKTsKdmFyIHJlc3VsdFJlc2VydmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tcmVzdWx0LXJlc2VydmUnKTsKCnZhciBub3Jtc0RCID0gewp0b21hdG86IHsKc2VlZGxpbmc6IHsgbm9ybV9hcmVhOiAxNSwgbm9ybV9wbGFudDogMywgYXBwc19kZWZhdWx0OiAxLCBsYWJlbDogJ9Cg0LDRgdGB0LDQtNCwIC8g0YPQutC+0YDQtdC90LXQvdC40LUnIH0sCnZlZ2V0YXRpdmU6IHsgbm9ybV9hcmVhOiAyNSwgbm9ybV9wbGFudDogNSwgYXBwc19kZWZhdWx0OiAyLCBsYWJlbDogJ9CS0LXQs9C10YLQsNGC0LjQstC90YvQuSDRgNC+0YHRgicgfSwKZmxvd2VyaW5nOiB7IG5vcm1fYXJlYTogMzAsIG5vcm1fcGxhbnQ6IDcsIGFwcHNfZGVmYXVsdDogMiwgbGFiZWw6ICfQkdGD0YLQvtC90LjQt9Cw0YbQuNGPIC8g0YbQstC10YLQtdC90LjQtScgfSwKZnJ1aXRpbmc6IHsgbm9ybV9hcmVhOiAzNSwgbm9ybV9wbGFudDogMTAsIGFwcHNfZGVmYXVsdDogMywgbGFiZWw6ICfQn9C70L7QtNC+0L3QvtGI0LXQvdC40LUnIH0sCnJpcGVuaW5nOiB7IG5vcm1fYXJlYTogMjAsIG5vcm1fcGxhbnQ6IDUsIGFwcHNfZGVmYXVsdDogMSwgbGFiZWw6ICfQodC+0LfRgNC10LLQsNC90LjQtSAvINC30LDQstC10YDRiNC10L3QuNC1INGG0LjQutC70LAnIH0KfSwKY3VjdW1iZXI6IHsKc2VlZGxpbmc6IHsgbm9ybV9hcmVhOiAxMiwgbm9ybV9wbGFudDogMiwgYXBwc19kZWZhdWx0OiAxLCBsYWJlbDogJ9Cg0LDRgdGB0LDQtNCwIC8g0YPQutC+0YDQtdC90LXQvdC40LUnIH0sCnZlZ2V0YXRpdmU6IHsgbm9ybV9hcmVhOiAyMCwgbm9ybV9wbGFudDogNSwgYXBwc19kZWZhdWx0OiAyLCBsYWJlbDogJ9CS0LXQs9C10YLQsNGC0LjQstC90YvQuSDRgNC+0YHRgiAvINC/0LvQtdGC0LgnIH0sCmZsb3dlcmluZzogeyBub3JtX2FyZWE6IDI1LCBub3JtX3BsYW50OiA2LCBhcHBzX2RlZmF1bHQ6IDIsIGxhYmVsOiAn0KbQstC10YLQtdC90LjQtScgfSwKZnJ1aXRpbmc6IHsgbm9ybV9hcmVhOiAzMCwgbm9ybV9wbGFudDogOCwgYXBwc19kZWZhdWx0OiA0LCBsYWJlbDogJ9Cf0LvQvtC00L7QvdC+0YjQtdC90LjQtScgfSwKcmlwZW5pbmc6IHsgbm9ybV9hcmVhOiAxNSwgbm9ybV9wbGFudDogMywgYXBwc19kZWZhdWx0OiAxLCBsYWJlbDogJ9CX0LDQstC10YDRiNC10L3QuNC1INC/0LvQvtC00L7QvdC+0YjQtdC90LjRjycgfQp9LApjYWJiYWdlOiB7CnNlZWRsaW5nOiB7IG5vcm1fYXJlYTogMTIsIG5vcm1fcGxhbnQ6IDMsIGFwcHNfZGVmYXVsdDogMSwgbGFiZWw6ICfQoNCw0YHRgdCw0LTQsCAvINGD0LrQvtGA0LXQvdC10L3QuNC1JyB9LAp2ZWdldGF0aXZlOiB7IG5vcm1fYXJlYTogMjUsIG5vcm1fcGxhbnQ6IDYsIGFwcHNfZGVmYXVsdDogMiwgbGFiZWw6ICfQoNC+0YHRgiDRgNC+0LfQtdGC0LrQuCcgfSwKZmxvd2VyaW5nOiB7IG5vcm1fYXJlYTogMzAsIG5vcm1fcGxhbnQ6IDgsIGFwcHNfZGVmYXVsdDogMiwgbGFiZWw6ICfQpNC+0YDQvNC40YDQvtCy0LDQvdC40LUg0LrQvtGH0LDQvdCwJyB9LApmcnVpdGluZzogeyBub3JtX2FyZWE6IDM1LCBub3JtX3BsYW50OiAxMCwgYXBwc19kZWZhdWx0OiAyLCBsYWJlbDogJ9Cd0LDQu9C40LIg0LrQvtGH0LDQvdCwJyB9LApyaXBlbmluZzogeyBub3JtX2FyZWE6IDE1LCBub3JtX3BsYW50OiA0LCBhcHBzX2RlZmF1bHQ6IDEsIGxhYmVsOiAn0KHQvtC30YDQtdCy0LDQvdC40LUgLyDRg9Cx0L7RgNC60LAnIH0KfSwKcm9vdDogewpzZWVkbGluZzogeyBub3JtX2FyZWE6IDgsIG5vcm1fcGxhbnQ6IDEuNSwgYXBwc19kZWZhdWx0OiAxLCBsYWJlbDogJ9CS0YHRhdC+0LTRiyAvINGD0LrQvtGA0LXQvdC10L3QuNC1JyB9LAp2ZWdldGF0aXZlOiB7IG5vcm1fYXJlYTogMTUsIG5vcm1fcGxhbnQ6IDMsIGFwcHNfZGVmYXVsdDogMiwgbGFiZWw6ICfQoNC+0YHRgiDQsdC+0YLQstGLJyB9LApmbG93ZXJpbmc6IHsgbm9ybV9hcmVhOiAyMCwgbm9ybV9wbGFudDogNSwgYXBwc19kZWZhdWx0OiAxLCBsYWJlbDogJ9Ck0L7RgNC80LjRgNC+0LLQsNC90LjQtSDQutC+0YDQvdC10L/Qu9C+0LTQsCcgfSwKZnJ1aXRpbmc6IHsgbm9ybV9hcmVhOiAxMiwgbm9ybV9wbGFudDogMywgYXBwc19kZWZhdWx0OiAxLCBsYWJlbDogJ9Cd0LDQu9C40LIg0LrQvtGA0L3QtdC/0LvQvtC00LAnIH0sCnJpcGVuaW5nOiB7IG5vcm1fYXJlYTogMCwgbm9ybV9wbGFudDogMCwgYXBwc19kZWZhdWx0OiAwLCBsYWJlbDogJ9Ch0L7Qt9GA0LXQstCw0L3QuNC1ICjQsdC10Lcg0L/QvtC00LrQvtGA0LzQvtC6KScgfQp9LApncmVlbnM6IHsKc2VlZGxpbmc6IHsgbm9ybV9hcmVhOiA1LCBub3JtX3BsYW50OiAwLjUsIGFwcHNfZGVmYXVsdDogMSwgbGFiZWw6ICfQktGB0YXQvtC00YsnIH0sCnZlZ2V0YXRpdmU6IHsgbm9ybV9hcmVhOiAxMCwgbm9ybV9wbGFudDogMSwgYXBwc19kZWZhdWx0OiAyLCBsYWJlbDogJ9Cd0LDRgNCw0YnQuNCy0LDQvdC40LUg0LfQtdC70LXQvdC4JyB9LApmbG93ZXJpbmc6IHsgbm9ybV9hcmVhOiA4LCBub3JtX3BsYW50OiAwLjgsIGFwcHNfZGVmYXVsdDogMSwgbGFiZWw6ICfQn9C10YDQtdC0INGB0YDQtdC30LrQvtC5JyB9LApmcnVpdGluZzogeyBub3JtX2FyZWE6IDAsIG5vcm1fcGxhbnQ6IDAsIGFwcHNfZGVmYXVsdDogMCwgbGFiZWw6ICfQndC1INC/0L7QtNC60LDRgNC80LvQuNCy0LDRjtGCJyB9LApyaXBlbmluZzogeyBub3JtX2FyZWE6IDAsIG5vcm1fcGxhbnQ6IDAsIGFwcHNfZGVmYXVsdDogMCwgbGFiZWw6ICfQl9Cw0LLQtdGA0YjQtdC90LjQtSAo0LHQtdC3INC/0L7QtNC60L7RgNC80L7QuiknIH0KfSwKc3RyYXdiZXJyeTogewpzZWVkbGluZzogeyBub3JtX2FyZWE6IDEyLCBub3JtX3BsYW50OiA0LCBhcHBzX2RlZmF1bHQ6IDEsIGxhYmVsOiAn0JLQtdGB0LXQvdC90LXQtSDQv9GA0L7QsdGD0LbQtNC10L3QuNC1JyB9LAp2ZWdldGF0aXZlOiB7IG5vcm1fYXJlYTogMTgsIG5vcm1fcGxhbnQ6IDYsIGFwcHNfZGVmYXVsdDogMiwgbGFiZWw6ICfQoNC+0YHRgiDQu9C40YHRgtGM0LXQsiDQuCDRg9GB0L7QsicgfSwKZmxvd2VyaW5nOiB7IG5vcm1fYXJlYTogMjIsIG5vcm1fcGxhbnQ6IDcsIGFwcHNfZGVmYXVsdDogMiwgbGFiZWw6ICfQptCy0LXRgtC10L3QuNC1JyB9LApmcnVpdGluZzogeyBub3JtX2FyZWE6IDI4LCBub3JtX3BsYW50OiA5LCBhcHBzX2RlZmF1bHQ6IDMsIGxhYmVsOiAn0J/Qu9C+0LTQvtC90L7RiNC10L3QuNC1JyB9LApyaXBlbmluZzogeyBub3JtX2FyZWE6IDIwLCBub3JtX3BsYW50OiA2LCBhcHBzX2RlZmF1bHQ6IDEsIGxhYmVsOiAn0J/QvtGB0LvQtSDRgdCx0L7RgNCwINGD0YDQvtC20LDRjycgfQp9LApmcnVpdF90cmVlOiB7CnNlZWRsaW5nOiB7IG5vcm1fYXJlYTogMzAsIG5vcm1fcGxhbnQ6IDQwLCBhcHBzX2RlZmF1bHQ6IDEsIGxhYmVsOiAn0J/RgNC+0LHRg9C20LTQtdC90LjQtSDQv9C+0YfQtdC6JyB9LAp2ZWdldGF0aXZlOiB7IG5vcm1fYXJlYTogNTAsIG5vcm1fcGxhbnQ6IDcwLCBhcHBzX2RlZmF1bHQ6IDIsIGxhYmVsOiAn0KDQvtGB0YIg0L/QvtCx0LXQs9C+0LInIH0sCmZsb3dlcmluZzogeyBub3JtX2FyZWE6IDU1LCBub3JtX3BsYW50OiA4MCwgYXBwc19kZWZhdWx0OiAyLCBsYWJlbDogJ9Cm0LLQtdGC0LXQvdC40LUnIH0sCmZydWl0aW5nOiB7IG5vcm1fYXJlYTogNjAsIG5vcm1fcGxhbnQ6IDEwMCwgYXBwc19kZWZhdWx0OiAzLCBsYWJlbDogJ9Cd0LDQu9C40LIg0L/Qu9C+0LTQvtCyJyB9LApyaXBlbmluZzogeyBub3JtX2FyZWE6IDMwLCBub3JtX3BsYW50OiA1MCwgYXBwc19kZWZhdWx0OiAxLCBsYWJlbDogJ9Cf0L7RgdC70LUg0YHQsdC+0YDQsCDRg9GA0L7QttCw0Y8nIH0KfSwKYmVycnlfYnVzaDogewpzZWVkbGluZzogeyBub3JtX2FyZWE6IDE1LCBub3JtX3BsYW50OiAyMCwgYXBwc19kZWZhdWx0OiAxLCBsYWJlbDogJ9CS0LXRgdC10L3QvdC10LUg0L/RgNC+0LHRg9C20LTQtdC90LjQtScgfSwKdmVnZXRhdGl2ZTogeyBub3JtX2FyZWE6IDI1LCBub3JtX3BsYW50OiAzNSwgYXBwc19kZWZhdWx0OiAyLCBsYWJlbDogJ9Cg0L7RgdGCINC/0L7QsdC10LPQvtCyJyB9LApmbG93ZXJpbmc6IHsgbm9ybV9hcmVhOiAzMCwgbm9ybV9wbGFudDogNDUsIGFwcHNfZGVmYXVsdDogMiwgbGFiZWw6ICfQptCy0LXRgtC10L3QuNC1JyB9LApmcnVpdGluZzogeyBub3JtX2FyZWE6IDM1LCBub3JtX3BsYW50OiA1NSwgYXBwc19kZWZhdWx0OiAzLCBsYWJlbDogJ9Cf0LvQvtC00L7QvdC+0YjQtdC90LjQtScgfSwKcmlwZW5pbmc6IHsgbm9ybV9hcmVhOiAyMCwgbm9ybV9wbGFudDogMzAsIGFwcHNfZGVmYXVsdDogMSwgbGFiZWw6ICfQn9C+0YHQu9C1INGB0LHQvtGA0LAg0YPRgNC+0LbQsNGPJyB9Cn0sCmFubnVhbF9mbG93ZXJzOiB7CnNlZWRsaW5nOiB7IG5vcm1fYXJlYTogMTAsIG5vcm1fcGxhbnQ6IDIsIGFwcHNfZGVmYXVsdDogMSwgbGFiZWw6ICfQoNCw0YHRgdCw0LTQsCAvINGD0LrQvtGA0LXQvdC10L3QuNC1JyB9LAp2ZWdldGF0aXZlOiB7IG5vcm1fYXJlYTogMTgsIG5vcm1fcGxhbnQ6IDQsIGFwcHNfZGVmYXVsdDogMiwgbGFiZWw6ICfQoNC+0YHRgiDQt9C10LvRkdC90L7QuSDQvNCw0YHRgdGLJyB9LApmbG93ZXJpbmc6IHsgbm9ybV9hcmVhOiAyNSwgbm9ybV9wbGFudDogNiwgYXBwc19kZWZhdWx0OiAzLCBsYWJlbDogJ9CR0YPRgtC+0L3QuNC30LDRhtC40Y8gLyDRhtCy0LXRgtC10L3QuNC1JyB9LApmcnVpdGluZzogeyBub3JtX2FyZWE6IDE1LCBub3JtX3BsYW50OiAzLCBhcHBzX2RlZmF1bHQ6IDEsIGxhYmVsOiAn0J/QvtC00LTQtdGA0LbQutCwINGG0LLQtdGC0LXQvdC40Y8nIH0sCnJpcGVuaW5nOiB7IG5vcm1fYXJlYTogNSwgbm9ybV9wbGFudDogMSwgYXBwc19kZWZhdWx0OiAxLCBsYWJlbDogJ9CX0LDQstC10YDRiNC10L3QuNC1INGB0LXQt9C+0L3QsCcgfQp9LApwZXJlbm5pYWxfZmxvd2VyczogewpzZWVkbGluZzogeyBub3JtX2FyZWE6IDEyLCBub3JtX3BsYW50OiAzLCBhcHBzX2RlZmF1bHQ6IDEsIGxhYmVsOiAn0JLQtdGB0LXQvdC90LXQtSDQv9GA0L7QsdGD0LbQtNC10L3QuNC1JyB9LAp2ZWdldGF0aXZlOiB7IG5vcm1fYXJlYTogMjAsIG5vcm1fcGxhbnQ6IDUsIGFwcHNfZGVmYXVsdDogMiwgbGFiZWw6ICfQoNC+0YHRgiDQv9C+0LHQtdCz0L7QsicgfSwKZmxvd2VyaW5nOiB7IG5vcm1fYXJlYTogMjgsIG5vcm1fcGxhbnQ6IDcsIGFwcHNfZGVmYXVsdDogMywgbGFiZWw6ICfQkdGD0YLQvtC90LjQt9Cw0YbQuNGPIC8g0YbQstC10YLQtdC90LjQtScgfSwKZnJ1aXRpbmc6IHsgbm9ybV9hcmVhOiAxOCwgbm9ybV9wbGFudDogNCwgYXBwc19kZWZhdWx0OiAxLCBsYWJlbDogJ9Cf0L7QtNC00LXRgNC20LrQsCDRhtCy0LXRgtC10L3QuNGPJyB9LApyaXBlbmluZzogeyBub3JtX2FyZWE6IDEwLCBub3JtX3BsYW50OiAyLCBhcHBzX2RlZmF1bHQ6IDEsIGxhYmVsOiAn0J/QvtC00LPQvtGC0L7QstC60LAg0Log0LfQuNC80LUnIH0KfQp9OwoKdmFyIHBoYXNlTGFiZWxzID0gewpzZWVkbGluZzogJ9Cg0LDRgdGB0LDQtNCwIC8g0YPQutC+0YDQtdC90LXQvdC40LUnLAp2ZWdldGF0aXZlOiAn0JLQtdCz0LXRgtCw0YLQuNCy0L3Ri9C5INGA0L7RgdGCJywKZmxvd2VyaW5nOiAn0JHRg9GC0L7QvdC40LfQsNGG0LjRjyAvINGG0LLQtdGC0LXQvdC40LUnLApmcnVpdGluZzogJ9Cf0LvQvtC00L7QvdC+0YjQtdC90LjQtScsCnJpcGVuaW5nOiAn0KHQvtC30YDQtdCy0LDQvdC40LUgLyDQt9Cw0LLQtdGA0YjQtdC90LjQtSDRhtC40LrQu9CwJwp9OwoKZnVuY3Rpb24gZ2V0Q3VycmVudENhbGNUeXBlKCkgewpmb3IgKHZhciBpID0gMDsgaSA8IGNhbGNUeXBlUmFkaW9zLmxlbmd0aDsgaSsrKSB7CmlmIChjYWxjVHlwZVJhZGlvc1tpXS5jaGVja2VkKSByZXR1cm4gY2FsY1R5cGVSYWRpb3NbaV0udmFsdWU7Cn0KcmV0dXJuICdhcmVhJzsKfQoKZnVuY3Rpb24gdXBkYXRlTm9ybUZpZWxkKCkgewp2YXIgY3VsdHVyZSA9IGN1bHR1cmVTZWxlY3QudmFsdWU7CnZhciBwaGFzZSA9IHBoYXNlU2VsZWN0LnZhbHVlOwp2YXIgY2FsY1R5cGUgPSBnZXRDdXJyZW50Q2FsY1R5cGUoKTsKaWYgKG5vcm1zREJbY3VsdHVyZV0gJiYgbm9ybXNEQltjdWx0dXJlXVtwaGFzZV0pIHsKdmFyIGRhdGEgPSBub3Jtc0RCW2N1bHR1cmVdW3BoYXNlXTsKdmFyIG5vcm1WYWwgPSBjYWxjVHlwZSA9PT0gJ2FyZWEnID8gZGF0YS5ub3JtX2FyZWEgOiBkYXRhLm5vcm1fcGxhbnQ7CmlmIChub3JtVmFsID09PSAwKSB7Cm5vcm1JbnB1dC52YWx1ZSA9IDA7Cm5vcm1IaW50LnRleHRDb250ZW50ID0gJ9CSINGN0YLQvtC5INGE0LDQt9C1INC/0L7QtNC60L7RgNC80LrQuCDQvdC1INGA0LXQutC+0LzQtdC90LTRg9GO0YLRgdGPLic7Cn0gZWxzZSB7Cm5vcm1JbnB1dC52YWx1ZSA9IG5vcm1WYWw7Cm5vcm1IaW50LnRleHRDb250ZW50ID0gJ9Ce0YDQuNC10L3RgtC40YDQvtCy0L7Rh9C90LDRjyDQvdC+0YDQvNCwLiDQodCy0LXRgNGM0YLQtdGB0Ywg0YEg0LjQvdGB0YLRgNGD0LrRhtC40LXQuSDQv9GA0L7QuNC30LLQvtC00LjRgtC10LvRjy4nOwp9CmFwcHNJbnB1dC52YWx1ZSA9IGRhdGEuYXBwc19kZWZhdWx0Owp9Cn0KCmZ1bmN0aW9uIHVwZGF0ZVBoYXNlTGFiZWxzKCkgewp2YXIgY3VsdHVyZSA9IGN1bHR1cmVTZWxlY3QudmFsdWU7CnZhciBvcHRpb25zID0gcGhhc2VTZWxlY3Qub3B0aW9uczsKZm9yICh2YXIgaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSsrKSB7CnZhciBwaCA9IG9wdGlvbnNbaV0udmFsdWU7CmlmIChub3Jtc0RCW2N1bHR1cmVdICYmIG5vcm1zREJbY3VsdHVyZV1bcGhdKSB7Cm9wdGlvbnNbaV0udGV4dENvbnRlbnQgPSBub3Jtc0RCW2N1bHR1cmVdW3BoXS5sYWJlbDsKfSBlbHNlIGlmIChwaGFzZUxhYmVsc1twaF0pIHsKb3B0aW9uc1tpXS50ZXh0Q29udGVudCA9IHBoYXNlTGFiZWxzW3BoXTsKfQp9Cn0KCmZ1bmN0aW9uIHRvZ2dsZUNhbGNUeXBlRmllbGRzKCkgewp2YXIgY2FsY1R5cGUgPSBnZXRDdXJyZW50Q2FsY1R5cGUoKTsKaWYgKGNhbGNUeXBlID09PSAnYXJlYScpIHsKYXJlYUdyb3VwLmNsYXNzTGlzdC5yZW1vdmUoJ25uLWdlbi1jYWwtaGlkZGVuJyk7CnBsYW50c0dyb3VwLmNsYXNzTGlzdC5hZGQoJ25uLWdlbi1jYWwtaGlkZGVuJyk7Cn0gZWxzZSB7CmFyZWFHcm91cC5jbGFzc0xpc3QuYWRkKCdubi1nZW4tY2FsLWhpZGRlbicpOwpwbGFudHNHcm91cC5jbGFzc0xpc3QucmVtb3ZlKCdubi1nZW4tY2FsLWhpZGRlbicpOwp9CnVwZGF0ZU5vcm1GaWVsZCgpOwp9CgpmdW5jdGlvbiBzaG93RXJyb3IobXNnKSB7CmVycm9yTXNnLnRleHRDb250ZW50ID0gbXNnOwplcnJvck1zZy5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKfQoKZnVuY3Rpb24gaGlkZUVycm9yKCkgewplcnJvck1zZy50ZXh0Q29udGVudCA9ICcnOwplcnJvck1zZy5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwp9CgpmdW5jdGlvbiByZXNldFJlc3VsdHMoKSB7CnJlc3VsdFRvdGFsLnRleHRDb250ZW50ID0gJzAnOwpyZXN1bHRQYWNrYWdlcy50ZXh0Q29udGVudCA9ICcwJzsKcmVzdWx0U2Vhc29uLnRleHRDb250ZW50ID0gJzAnOwpyZXN1bHRSZXNlcnZlLnRleHRDb250ZW50ID0gJzAnOwp9CgpmdW5jdGlvbiBjYWxjdWxhdGUoKSB7CmhpZGVFcnJvcigpOwp2YXIgY3VsdHVyZSA9IGN1bHR1cmVTZWxlY3QudmFsdWU7CnZhciBwaGFzZSA9IHBoYXNlU2VsZWN0LnZhbHVlOwp2YXIgY2FsY1R5cGUgPSBnZXRDdXJyZW50Q2FsY1R5cGUoKTsKdmFyIG5vcm1WYWwgPSBwYXJzZUZsb2F0KG5vcm1JbnB1dC52YWx1ZSk7CnZhciBwYWNrYWdlV2VpZ2h0ID0gcGFyc2VGbG9hdChwYWNrYWdlSW5wdXQudmFsdWUpOwp2YXIgYXBwc0NvdW50ID0gcGFyc2VJbnQoYXBwc0lucHV0LnZhbHVlLCAxMCk7CnZhciBzY2FsZSA9IDA7CgppZiAoY2FsY1R5cGUgPT09ICdhcmVhJykgewpzY2FsZSA9IHBhcnNlRmxvYXQoYXJlYUlucHV0LnZhbHVlKTsKaWYgKGlzTmFOKHNjYWxlKSB8fCBzY2FsZSA8PSAwKSB7CnNob3dFcnJvcign0JLQstC10LTQuNGC0LUg0LrQvtGA0YDQtdC60YLQvdGD0Y4g0L/Qu9C+0YnQsNC00Ywg0L/QvtGB0LDQtNC60LggKNCx0L7Qu9GM0YjQtSDQvdGD0LvRjykuJyk7CnJlc2V0UmVzdWx0cygpOwpyZXR1cm47Cn0KfSBlbHNlIHsKc2NhbGUgPSBwYXJzZUZsb2F0KHBsYW50c0lucHV0LnZhbHVlKTsKaWYgKGlzTmFOKHNjYWxlKSB8fCBzY2FsZSA8PSAwIHx8ICFOdW1iZXIuaXNJbnRlZ2VyKHNjYWxlKSkgewpzaG93RXJyb3IoJ9CS0LLQtdC00LjRgtC1INC60L7RgNGA0LXQutGC0L3QvtC1INC60L7Qu9C40YfQtdGB0YLQstC+INGA0LDRgdGC0LXQvdC40LkgKNGG0LXQu9C+0LUg0YfQuNGB0LvQviDQsdC+0LvRjNGI0LUg0L3Rg9C70Y8pLicpOwpyZXNldFJlc3VsdHMoKTsKcmV0dXJuOwp9Cn0KCmlmIChpc05hTihub3JtVmFsKSB8fCBub3JtVmFsIDwgMCkgewpzaG93RXJyb3IoJ9CS0LLQtdC00LjRgtC1INC60L7RgNGA0LXQutGC0L3Rg9GOINC90L7RgNC80YMg0YDQsNGB0YXQvtC00LAgKNC90L7Qu9GMINC40LvQuCDQv9C+0LvQvtC20LjRgtC10LvRjNC90L7QtSDRh9C40YHQu9C+KS4nKTsKcmVzZXRSZXN1bHRzKCk7CnJldHVybjsKfQoKaWYgKG5vcm1WYWwgPT09IDAgJiYgc2NhbGUgPiAwKSB7CnJlc3VsdFRvdGFsLnRleHRDb250ZW50ID0gJzAnOwpyZXN1bHRQYWNrYWdlcy50ZXh0Q29udGVudCA9ICcwJzsKcmVzdWx0U2Vhc29uLnRleHRDb250ZW50ID0gJzAnOwpyZXN1bHRSZXNlcnZlLnRleHRDb250ZW50ID0gJzAnOwpub3JtSGludC50ZXh0Q29udGVudCA9ICfQkiDRjdGC0L7QuSDRhNCw0LfQtSDQv9C+0LTQutC+0YDQvNC60Lgg0L3QtSDRgNC10LrQvtC80LXQvdC00YPRjtGC0YHRjy4nOwpyZXR1cm47Cn0KCmlmIChpc05hTihwYWNrYWdlV2VpZ2h0KSB8fCBwYWNrYWdlV2VpZ2h0IDw9IDApIHsKc2hvd0Vycm9yKCfQktCy0LXQtNC40YLQtSDQutC+0YDRgNC10LrRgtC90YvQuSDQstC10YEg0YPQv9Cw0LrQvtCy0LrQuCAo0LHQvtC70YzRiNC1INC90YPQu9GPKS4nKTsKcmVzZXRSZXN1bHRzKCk7CnJldHVybjsKfQoKaWYgKGlzTmFOKGFwcHNDb3VudCkgfHwgYXBwc0NvdW50IDwgMSB8fCAhTnVtYmVyLmlzSW50ZWdlcihhcHBzQ291bnQpKSB7CnNob3dFcnJvcign0JLQstC10LTQuNGC0LUg0LrQvtGA0YDQtdC60YLQvdC+0LUg0LrQvtC70LjRh9C10YHRgtCy0L4g0L/QvtC00LrQvtGA0LzQvtC6ICjRhtC10LvQvtC1INGH0LjRgdC70L4g0L7RgiAxINC4INCy0YvRiNC1KS4nKTsKcmVzZXRSZXN1bHRzKCk7CnJldHVybjsKfQoKdmFyIHRvdGFsRmVydGlsaXplciA9IG5vcm1WYWwgKiBzY2FsZTsKdmFyIHBhY2thZ2VzQ291bnQgPSBNYXRoLmNlaWwodG90YWxGZXJ0aWxpemVyIC8gcGFja2FnZVdlaWdodCk7CmlmICghaXNGaW5pdGUocGFja2FnZXNDb3VudCkpIHBhY2thZ2VzQ291bnQgPSAwOwp2YXIgc2Vhc29uYWxUb3RhbCA9IHRvdGFsRmVydGlsaXplciAqIGFwcHNDb3VudDsKdmFyIHJlc2VydmVUb3RhbCA9IHRvdGFsRmVydGlsaXplciAqIDEuMTsKCnJlc3VsdFRvdGFsLnRleHRDb250ZW50ID0gcGFyc2VGbG9hdCh0b3RhbEZlcnRpbGl6ZXIudG9GaXhlZCgxKSk7CnJlc3VsdFBhY2thZ2VzLnRleHRDb250ZW50ID0gcGFja2FnZXNDb3VudDsKcmVzdWx0U2Vhc29uLnRleHRDb250ZW50ID0gcGFyc2VGbG9hdChzZWFzb25hbFRvdGFsLnRvRml4ZWQoMSkpOwpyZXN1bHRSZXNlcnZlLnRleHRDb250ZW50ID0gcGFyc2VGbG9hdChyZXNlcnZlVG90YWwudG9GaXhlZCgxKSk7Cm5vcm1IaW50LnRleHRDb250ZW50ID0gJ9Ce0YDQuNC10L3RgtC40YDQvtCy0L7Rh9C90LDRjyDQvdC+0YDQvNCwLiDQodCy0LXRgNGM0YLQtdGB0Ywg0YEg0LjQvdGB0YLRgNGD0LrRhtC40LXQuSDQv9GA0L7QuNC30LLQvtC00LjRgtC10LvRjy4nOwp9CgpmdW5jdGlvbiByZXNldEFsbCgpIHsKaGlkZUVycm9yKCk7CmN1bHR1cmVTZWxlY3QudmFsdWUgPSAndG9tYXRvJzsKcGhhc2VTZWxlY3QudmFsdWUgPSAndmVnZXRhdGl2ZSc7CmNhbGNUeXBlUmFkaW9zWzBdLmNoZWNrZWQgPSB0cnVlOwphcmVhSW5wdXQudmFsdWUgPSAnMTAnOwpwbGFudHNJbnB1dC52YWx1ZSA9ICczMCc7CnBhY2thZ2VJbnB1dC52YWx1ZSA9ICcxMDAwJzsKdG9nZ2xlQ2FsY1R5cGVGaWVsZHMoKTsKdXBkYXRlUGhhc2VMYWJlbHMoKTsKdXBkYXRlTm9ybUZpZWxkKCk7CnJlc2V0UmVzdWx0cygpOwpub3JtSGludC50ZXh0Q29udGVudCA9ICfQntGA0LjQtdC90YLQuNGA0L7QstC+0YfQvdCw0Y8g0L3QvtGA0LzQsC4g0KHQstC10YDRjNGC0LXRgdGMINGBINC40L3RgdGC0YDRg9C60YbQuNC10Lkg0L/RgNC+0LjQt9Cy0L7QtNC40YLQtdC70Y8uJzsKfQoKY3VsdHVyZVNlbGVjdC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBmdW5jdGlvbigpIHsKdXBkYXRlUGhhc2VMYWJlbHMoKTsKdXBkYXRlTm9ybUZpZWxkKCk7CnJlc2V0UmVzdWx0cygpOwpoaWRlRXJyb3IoKTsKfSk7CgpwaGFzZVNlbGVjdC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBmdW5jdGlvbigpIHsKdXBkYXRlTm9ybUZpZWxkKCk7CnJlc2V0UmVzdWx0cygpOwpoaWRlRXJyb3IoKTsKfSk7Cgpmb3IgKHZhciBpID0gMDsgaSA8IGNhbGNUeXBlUmFkaW9zLmxlbmd0aDsgaSsrKSB7CmNhbGNUeXBlUmFkaW9zW2ldLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZ1bmN0aW9uKCkgewp0b2dnbGVDYWxjVHlwZUZpZWxkcygpOwpyZXNldFJlc3VsdHMoKTsKaGlkZUVycm9yKCk7Cn0pOwp9Cgpub3JtSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBmdW5jdGlvbigpIHsKcmVzZXRSZXN1bHRzKCk7CmhpZGVFcnJvcigpOwp9KTsKCmNhbGNCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjYWxjdWxhdGUpOwpyZXNldEJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHJlc2V0QWxsKTsKCnVwZGF0ZVBoYXNlTGFiZWxzKCk7CnVwZGF0ZU5vcm1GaWVsZCgpOwp0b2dnbGVDYWxjVHlwZUZpZWxkcygpOwp9KSgpOwo=