#ifndef NESTED_TEMPLATES_H #define NESTED_TEMPLATES_H #include // One level nesting const char PROGMEM nested_one_level_outer[] = "Outer: %INNER%"; const char PROGMEM nested_one_level_inner[] = "Inner content"; // Two levels nesting const char PROGMEM nested_two_levels_outer[] = "Level1: %LEVEL2%"; const char PROGMEM nested_two_levels_mid[] = "Level2: %LEVEL3%"; const char PROGMEM nested_two_levels_inner[] = "Level3 content"; // Three levels nesting const char PROGMEM nested_three_levels_outer[] = "Outer: %MID%"; const char PROGMEM nested_three_levels_mid[] = "Mid: %INNER%"; const char PROGMEM nested_three_levels_inner[] = "Inner: %DEEP%"; const char PROGMEM nested_three_levels_deep[] = "Deep content"; // Four levels nesting const char PROGMEM nested_four_levels_outer[] = "L1: %L2%"; const char PROGMEM nested_four_levels_level2[] = "L2: %L3%"; const char PROGMEM nested_four_levels_level3[] = "L3: %L4%"; const char PROGMEM nested_four_levels_level4[] = "L4 content"; // Large web-style templates to simulate WebInterface-sized payloads (intentionally fuzzed) const char PROGMEM simulated_web_outer[] = R"rawliteral( %TITLE%
%HEADER%
%SIDEBAR%
%CONTENT%
%FOOTER%
)rawliteral"; const char PROGMEM simulated_web_header[] = R"rawliteral(

%TITLE%

Powering ambient devices

%NAV%
)rawliteral"; const char PROGMEM simulated_web_nav[] = R"rawliteral( )rawliteral"; const char PROGMEM simulated_web_sidebar[] = R"rawliteral( )rawliteral"; const char PROGMEM simulated_web_content[] = R"rawliteral(

Device Overview

Preparing device snapshot...

Telemetry

Network

SSID: pending

IP: pending

MQTT

Status: pending

Broker: pending

Sensors

Temperature: --

Humidity: --

Automation Actions

)rawliteral"; const char PROGMEM simulated_web_footer[] = R"rawliteral( )rawliteral"; const char PROGMEM simulated_web_scripts[] = R"rawliteral( function queueAction(action) { window.dispatchEvent(new CustomEvent('device-action', { detail: action })); } window.addEventListener('load', () => { document.body.dataset.ready = 'true'; }); )rawliteral"; // Nested template with placeholders const char PROGMEM nested_with_placeholder_outer[] = "Outer: %NESTED%"; const char PROGMEM nested_with_placeholder_inner[] = "Inner: %PLACEHOLDER%"; // Nested template with multiple placeholders const char PROGMEM nested_multi_outer[] = "%HEADER%\n%CONTENT%\n%FOOTER%"; const char PROGMEM nested_multi_header[] = "
%TITLE%
"; const char PROGMEM nested_multi_content[] = "
%BODY%
"; const char PROGMEM nested_multi_footer[] = ""; // Deep nesting for stack depth testing const char PROGMEM deep_nest_level1[] = "L1: %L2%"; const char PROGMEM deep_nest_level2[] = "L2: %L3%"; const char PROGMEM deep_nest_level3[] = "L3: %L4%"; const char PROGMEM deep_nest_level4[] = "L4: %L5%"; const char PROGMEM deep_nest_level5[] = "L5: %L6%"; const char PROGMEM deep_nest_level6[] = "L6: %L7%"; const char PROGMEM deep_nest_level7[] = "L7: %L8%"; const char PROGMEM deep_nest_level8[] = "L8: %L9%"; const char PROGMEM deep_nest_level9[] = "L9: %L10%"; const char PROGMEM deep_nest_level10[] = "L10: %L11%"; const char PROGMEM deep_nest_level11[] = "L11: %L12%"; const char PROGMEM deep_nest_level12[] = "L12: %L13%"; const char PROGMEM deep_nest_level13[] = "L13: %L14%"; const char PROGMEM deep_nest_level14[] = "L14: %L15%"; const char PROGMEM deep_nest_level15[] = "L15: %L16%"; const char PROGMEM deep_nest_level16[] = "L16: content"; #endif // NESTED_TEMPLATES_H