SYMBOL INDEX (845 symbols across 77 files) FILE: .github/skills/algorithmic-art/templates/generator_template.js function initializeSeed (line 43) | function initializeSeed(seed) { function setup (line 53) | function setup() { function draw (line 70) | function draw() { class Entity (line 92) | class Entity { method constructor (line 93) | constructor() { method update (line 98) | update() { method display (line 106) | display() { function hexToRgb (line 132) | function hexToRgb(hex) { function colorFromPalette (line 141) | function colorFromPalette(index) { function mapRange (line 146) | function mapRange(value, inMin, inMax, outMin, outMax) { function easeInOutCubic (line 150) | function easeInOutCubic(t) { function wrapAround (line 155) | function wrapAround(value, max) { function updateParameter (line 165) | function updateParameter(paramName, value) { function regenerate (line 171) | function regenerate() { function fadeBackground (line 183) | function fadeBackground(opacity) { function getNoiseValue (line 190) | function getNoiseValue(x, y, scale = 0.01) { function vectorFromAngle (line 195) | function vectorFromAngle(angle, magnitude = 1) { function exportImage (line 203) | function exportImage() { FILE: .github/skills/docx/scripts/accept_changes.py function accept_changes (line 36) | def accept_changes( function _setup_libreoffice_macro (line 91) | def _setup_libreoffice_macro() -> bool: FILE: .github/skills/docx/scripts/comment.py function _generate_hex_id (line 68) | def _generate_hex_id() -> str: function _encode_smart_quotes (line 80) | def _encode_smart_quotes(text: str) -> str: function _append_xml (line 86) | def _append_xml(xml_path: Path, root_tag: str, content: str) -> None: function _find_para_id (line 98) | def _find_para_id(comments_path: Path, comment_id: int) -> str | None: function _get_next_rid (line 108) | def _get_next_rid(rels_path: Path) -> int: function _has_relationship (line 121) | def _has_relationship(rels_path: Path, target: str) -> bool: function _has_content_type (line 129) | def _has_content_type(ct_path: Path, part_name: str) -> bool: function _ensure_comment_relationships (line 137) | def _ensure_comment_relationships(unpacked_dir: Path) -> None: function _ensure_comment_content_types (line 179) | def _ensure_comment_content_types(unpacked_dir: Path) -> None: function add_comment (line 218) | def add_comment( FILE: .github/skills/docx/scripts/office/helpers/merge_runs.py function merge_runs (line 16) | def merge_runs(input_dir: str) -> tuple[int, str]: function _find_elements (line 44) | def _find_elements(root, tag: str) -> list: function _get_child (line 59) | def _get_child(parent, tag: str): function _get_children (line 68) | def _get_children(parent, tag: str) -> list: function _is_adjacent (line 78) | def _is_adjacent(elem1, elem2) -> bool: function _remove_elements (line 93) | def _remove_elements(root, tag: str): function _strip_run_rsid_attrs (line 99) | def _strip_run_rsid_attrs(root): function _merge_runs_in (line 108) | def _merge_runs_in(container) -> int: function _first_child_run (line 128) | def _first_child_run(container): function _next_element_sibling (line 135) | def _next_element_sibling(node): function _next_sibling_run (line 144) | def _next_sibling_run(node): function _is_run (line 154) | def _is_run(node) -> bool: function _can_merge (line 159) | def _can_merge(run1, run2) -> bool: function _merge_run_content (line 170) | def _merge_run_content(target, source): function _consolidate_text (line 178) | def _consolidate_text(run): FILE: .github/skills/docx/scripts/office/helpers/simplify_redlines.py function simplify_redlines (line 22) | def simplify_redlines(input_dir: str) -> tuple[int, str]: function _merge_tracked_changes_in (line 47) | def _merge_tracked_changes_in(container, tag: str) -> int: function _is_element (line 75) | def _is_element(node, tag: str) -> bool: function _get_author (line 80) | def _get_author(elem) -> str: function _can_merge_tracked (line 89) | def _can_merge_tracked(elem1, elem2) -> bool: function _merge_tracked_content (line 104) | def _merge_tracked_content(target, source): function _find_elements (line 111) | def _find_elements(root, tag: str) -> list: function get_tracked_change_authors (line 126) | def get_tracked_change_authors(doc_xml_path: Path) -> dict[str, int]: function _get_authors_from_docx (line 149) | def _get_authors_from_docx(docx_path: Path) -> dict[str, int]: function infer_author (line 172) | def infer_author(modified_dir: Path, original_docx: Path, default: str =... FILE: .github/skills/docx/scripts/office/pack.py function pack (line 24) | def pack( function _run_validation (line 69) | def _run_validation( function _condense_xml (line 108) | def _condense_xml(xml_file: Path) -> None: FILE: .github/skills/docx/scripts/office/soffice.py function get_soffice_env (line 24) | def get_soffice_env() -> dict: function run_soffice (line 35) | def run_soffice(args: list[str], **kwargs) -> subprocess.CompletedProcess: function _needs_shim (line 44) | def _needs_shim() -> bool: function _ensure_shim (line 53) | def _ensure_shim() -> Path: FILE: .github/skills/docx/scripts/office/unpack.py function unpack (line 34) | def unpack( function _pretty_print_xml (line 82) | def _pretty_print_xml(xml_file: Path) -> None: function _escape_smart_quotes (line 91) | def _escape_smart_quotes(xml_file: Path) -> None: FILE: .github/skills/docx/scripts/office/validate.py function main (line 25) | def main(): FILE: .github/skills/docx/scripts/office/validators/base.py class BaseSchemaValidator (line 12) | class BaseSchemaValidator: method __init__ (line 94) | def __init__(self, unpacked_dir, original_file=None, verbose=False): method validate (line 109) | def validate(self): method repair (line 112) | def repair(self) -> int: method repair_whitespace_preservation (line 115) | def repair_whitespace_preservation(self) -> int: method validate_xml (line 143) | def validate_xml(self): method validate_namespaces (line 170) | def validate_namespaces(self): method validate_unique_ids (line 199) | def validate_unique_ids(self): method validate_file_references (line 289) | def validate_file_references(self): method validate_all_relationship_ids (line 385) | def validate_all_relationship_ids(self): method _get_expected_relationship_type (line 469) | def _get_expected_relationship_type(self, element_name): method validate_content_types (line 492) | def validate_content_types(self): method validate_file_against_xsd (line 598) | def validate_file_against_xsd(self, xml_file, verbose=False): method validate_against_xsd (line 636) | def validate_against_xsd(self): method _get_schema_path (line 685) | def _get_schema_path(self, xml_file): method _clean_ignorable_namespaces (line 703) | def _clean_ignorable_namespaces(self, xml_doc): method _remove_ignorable_elements (line 723) | def _remove_ignorable_elements(self, root): method _preprocess_for_mc_ignorable (line 742) | def _preprocess_for_mc_ignorable(self, xml_doc): method _validate_single_file_xsd (line 750) | def _validate_single_file_xsd(self, xml_file, base_path): method _get_original_file_errors (line 787) | def _get_original_file_errors(self, xml_file): method _remove_template_tags_from_text_nodes (line 814) | def _remove_template_tags_from_text_nodes(self, xml_doc): FILE: .github/skills/docx/scripts/office/validators/docx.py class DOCXSchemaValidator (line 16) | class DOCXSchemaValidator(BaseSchemaValidator): method validate (line 24) | def validate(self): method validate_whitespace_preservation (line 66) | def validate_whitespace_preservation(self): method validate_deletions (line 112) | def validate_deletions(self): method count_paragraphs_in_unpacked (line 163) | def count_paragraphs_in_unpacked(self): method count_paragraphs_in_original (line 179) | def count_paragraphs_in_original(self): method validate_insertions (line 202) | def validate_insertions(self): method compare_paragraph_counts (line 243) | def compare_paragraph_counts(self): method _parse_id_value (line 251) | def _parse_id_value(self, val: str, base: int = 16) -> int: method validate_id_constraints (line 254) | def validate_id_constraints(self): method validate_comment_markers (line 298) | def validate_comment_markers(self): method repair (line 386) | def repair(self) -> int: method repair_durableId (line 391) | def repair_durableId(self) -> int: FILE: .github/skills/docx/scripts/office/validators/pptx.py class PPTXSchemaValidator (line 10) | class PPTXSchemaValidator(BaseSchemaValidator): method validate (line 25) | def validate(self): method validate_uuid_ids (line 62) | def validate_uuid_ids(self): method _looks_like_uuid (line 100) | def _looks_like_uuid(self, value): method validate_slide_layout_ids (line 104) | def validate_slide_layout_ids(self): method validate_no_duplicate_slide_layouts (line 172) | def validate_no_duplicate_slide_layouts(self): method validate_notes_slide_references (line 210) | def validate_notes_slide_references(self): FILE: .github/skills/docx/scripts/office/validators/redlining.py class RedliningValidator (line 11) | class RedliningValidator: method __init__ (line 13) | def __init__(self, unpacked_dir, original_docx, verbose=False, author=... method repair (line 22) | def repair(self) -> int: method validate (line 25) | def validate(self): method _generate_detailed_diff (line 104) | def _generate_detailed_diff(self, original_text, modified_text): method _get_git_word_diff (line 127) | def _get_git_word_diff(self, original_text, modified_text): method _remove_author_tracked_changes (line 198) | def _remove_author_tracked_changes(self, root): method _extract_text_content (line 229) | def _extract_text_content(self, root): FILE: .github/skills/mcp-builder/scripts/connections.py class MCPConnection (line 13) | class MCPConnection(ABC): method __init__ (line 16) | def __init__(self): method _create_context (line 21) | def _create_context(self): method __aenter__ (line 24) | async def __aenter__(self): method __aexit__ (line 48) | async def __aexit__(self, exc_type, exc_val, exc_tb): method list_tools (line 55) | async def list_tools(self) -> list[dict[str, Any]]: method call_tool (line 67) | async def call_tool(self, tool_name: str, arguments: dict[str, Any]) -... class MCPConnectionStdio (line 73) | class MCPConnectionStdio(MCPConnection): method __init__ (line 76) | def __init__(self, command: str, args: list[str] = None, env: dict[str... method _create_context (line 82) | def _create_context(self): class MCPConnectionSSE (line 88) | class MCPConnectionSSE(MCPConnection): method __init__ (line 91) | def __init__(self, url: str, headers: dict[str, str] = None): method _create_context (line 96) | def _create_context(self): class MCPConnectionHTTP (line 100) | class MCPConnectionHTTP(MCPConnection): method __init__ (line 103) | def __init__(self, url: str, headers: dict[str, str] = None): method _create_context (line 108) | def _create_context(self): function create_connection (line 112) | def create_connection( FILE: .github/skills/mcp-builder/scripts/evaluation.py function parse_evaluation_file (line 56) | def parse_evaluation_file(file_path: Path) -> list[dict[str, Any]]: function extract_xml_content (line 79) | def extract_xml_content(text: str, tag: str) -> str | None: function agent_loop (line 86) | async def agent_loop( function evaluate_single_task (line 154) | async def evaluate_single_task( function run_evaluation (line 220) | async def run_evaluation( function parse_headers (line 275) | def parse_headers(header_list: list[str]) -> dict[str, str]: function parse_env_vars (line 290) | def parse_env_vars(env_list: list[str]) -> dict[str, str]: function main (line 305) | async def main(): FILE: .github/skills/pdf/scripts/check_bounding_boxes.py class RectAndField (line 9) | class RectAndField: function get_bounding_box_messages (line 15) | def get_bounding_box_messages(fields_json_stream) -> list[str]: FILE: .github/skills/pdf/scripts/convert_pdf_to_images.py function convert (line 9) | def convert(pdf_path, output_dir, max_dim=1000): FILE: .github/skills/pdf/scripts/create_validation_image.py function create_validation_image (line 9) | def create_validation_image(page_number, fields_json_path, input_path, o... FILE: .github/skills/pdf/scripts/extract_form_field_info.py function get_full_annotation_field_id (line 9) | def get_full_annotation_field_id(annotation): function make_field_dict (line 19) | def make_field_dict(field, field_id): function get_field_info (line 47) | def get_field_info(reader: PdfReader): function write_field_info (line 110) | def write_field_info(pdf_path: str, json_output_path: str): FILE: .github/skills/pdf/scripts/extract_form_structure.py function extract_form_structure (line 20) | def extract_form_structure(pdf_path): function main (line 91) | def main(): FILE: .github/skills/pdf/scripts/fill_fillable_fields.py function fill_pdf_fields (line 11) | def fill_pdf_fields(input_pdf_path: str, fields_json_path: str, output_p... function validation_error_for_field_value (line 55) | def validation_error_for_field_value(field_info, field_value): function monkeypatch_pydpf_method (line 74) | def monkeypatch_pydpf_method(): FILE: .github/skills/pdf/scripts/fill_pdf_form_with_annotations.py function transform_from_image_coords (line 10) | def transform_from_image_coords(bbox, image_width, image_height, pdf_wid... function transform_from_pdf_coords (line 23) | def transform_from_pdf_coords(bbox, pdf_height): function fill_pdf_form (line 33) | def fill_pdf_form(input_pdf_path, fields_json_path, output_pdf_path): FILE: .github/skills/pptx/scripts/add_slide.py function get_next_slide_number (line 27) | def get_next_slide_number(slides_dir: Path) -> int: function create_slide_from_layout (line 33) | def create_slide_from_layout(unpacked_dir: Path, layout_file: str) -> None: function duplicate_slide (line 90) | def duplicate_slide(unpacked_dir: Path, source: str) -> None: function _add_to_content_types (line 130) | def _add_to_content_types(unpacked_dir: Path, dest: str) -> None: function _add_to_presentation_rels (line 141) | def _add_to_presentation_rels(unpacked_dir: Path, dest: str) -> str: function _get_next_slide_id (line 158) | def _get_next_slide_id(unpacked_dir: Path) -> int: function parse_source (line 165) | def parse_source(source: str) -> tuple[str, str | None]: FILE: .github/skills/pptx/scripts/clean.py function get_slides_in_sldidlst (line 27) | def get_slides_in_sldidlst(unpacked_dir: Path) -> set[str]: function remove_orphaned_slides (line 49) | def remove_orphaned_slides(unpacked_dir: Path) -> list[str]: function remove_trash_directory (line 91) | def remove_trash_directory(unpacked_dir: Path) -> list[str]: function get_slide_referenced_files (line 106) | def get_slide_referenced_files(unpacked_dir: Path) -> set: function remove_orphaned_rels_files (line 128) | def remove_orphaned_rels_files(unpacked_dir: Path) -> list[str]: function get_referenced_files (line 153) | def get_referenced_files(unpacked_dir: Path) -> set: function remove_orphaned_files (line 171) | def remove_orphaned_files(unpacked_dir: Path, referenced: set) -> list[s... function update_content_types (line 221) | def update_content_types(unpacked_dir: Path, removed_files: list[str]) -... function clean_unused_files (line 241) | def clean_unused_files(unpacked_dir: Path) -> list[str]: FILE: .github/skills/pptx/scripts/office/helpers/merge_runs.py function merge_runs (line 16) | def merge_runs(input_dir: str) -> tuple[int, str]: function _find_elements (line 44) | def _find_elements(root, tag: str) -> list: function _get_child (line 59) | def _get_child(parent, tag: str): function _get_children (line 68) | def _get_children(parent, tag: str) -> list: function _is_adjacent (line 78) | def _is_adjacent(elem1, elem2) -> bool: function _remove_elements (line 93) | def _remove_elements(root, tag: str): function _strip_run_rsid_attrs (line 99) | def _strip_run_rsid_attrs(root): function _merge_runs_in (line 108) | def _merge_runs_in(container) -> int: function _first_child_run (line 128) | def _first_child_run(container): function _next_element_sibling (line 135) | def _next_element_sibling(node): function _next_sibling_run (line 144) | def _next_sibling_run(node): function _is_run (line 154) | def _is_run(node) -> bool: function _can_merge (line 159) | def _can_merge(run1, run2) -> bool: function _merge_run_content (line 170) | def _merge_run_content(target, source): function _consolidate_text (line 178) | def _consolidate_text(run): FILE: .github/skills/pptx/scripts/office/helpers/simplify_redlines.py function simplify_redlines (line 22) | def simplify_redlines(input_dir: str) -> tuple[int, str]: function _merge_tracked_changes_in (line 47) | def _merge_tracked_changes_in(container, tag: str) -> int: function _is_element (line 75) | def _is_element(node, tag: str) -> bool: function _get_author (line 80) | def _get_author(elem) -> str: function _can_merge_tracked (line 89) | def _can_merge_tracked(elem1, elem2) -> bool: function _merge_tracked_content (line 104) | def _merge_tracked_content(target, source): function _find_elements (line 111) | def _find_elements(root, tag: str) -> list: function get_tracked_change_authors (line 126) | def get_tracked_change_authors(doc_xml_path: Path) -> dict[str, int]: function _get_authors_from_docx (line 149) | def _get_authors_from_docx(docx_path: Path) -> dict[str, int]: function infer_author (line 172) | def infer_author(modified_dir: Path, original_docx: Path, default: str =... FILE: .github/skills/pptx/scripts/office/pack.py function pack (line 24) | def pack( function _run_validation (line 69) | def _run_validation( function _condense_xml (line 108) | def _condense_xml(xml_file: Path) -> None: FILE: .github/skills/pptx/scripts/office/soffice.py function get_soffice_env (line 24) | def get_soffice_env() -> dict: function run_soffice (line 35) | def run_soffice(args: list[str], **kwargs) -> subprocess.CompletedProcess: function _needs_shim (line 44) | def _needs_shim() -> bool: function _ensure_shim (line 53) | def _ensure_shim() -> Path: FILE: .github/skills/pptx/scripts/office/unpack.py function unpack (line 34) | def unpack( function _pretty_print_xml (line 82) | def _pretty_print_xml(xml_file: Path) -> None: function _escape_smart_quotes (line 91) | def _escape_smart_quotes(xml_file: Path) -> None: FILE: .github/skills/pptx/scripts/office/validate.py function main (line 25) | def main(): FILE: .github/skills/pptx/scripts/office/validators/base.py class BaseSchemaValidator (line 12) | class BaseSchemaValidator: method __init__ (line 94) | def __init__(self, unpacked_dir, original_file=None, verbose=False): method validate (line 109) | def validate(self): method repair (line 112) | def repair(self) -> int: method repair_whitespace_preservation (line 115) | def repair_whitespace_preservation(self) -> int: method validate_xml (line 143) | def validate_xml(self): method validate_namespaces (line 170) | def validate_namespaces(self): method validate_unique_ids (line 199) | def validate_unique_ids(self): method validate_file_references (line 289) | def validate_file_references(self): method validate_all_relationship_ids (line 385) | def validate_all_relationship_ids(self): method _get_expected_relationship_type (line 469) | def _get_expected_relationship_type(self, element_name): method validate_content_types (line 492) | def validate_content_types(self): method validate_file_against_xsd (line 598) | def validate_file_against_xsd(self, xml_file, verbose=False): method validate_against_xsd (line 636) | def validate_against_xsd(self): method _get_schema_path (line 685) | def _get_schema_path(self, xml_file): method _clean_ignorable_namespaces (line 703) | def _clean_ignorable_namespaces(self, xml_doc): method _remove_ignorable_elements (line 723) | def _remove_ignorable_elements(self, root): method _preprocess_for_mc_ignorable (line 742) | def _preprocess_for_mc_ignorable(self, xml_doc): method _validate_single_file_xsd (line 750) | def _validate_single_file_xsd(self, xml_file, base_path): method _get_original_file_errors (line 787) | def _get_original_file_errors(self, xml_file): method _remove_template_tags_from_text_nodes (line 814) | def _remove_template_tags_from_text_nodes(self, xml_doc): FILE: .github/skills/pptx/scripts/office/validators/docx.py class DOCXSchemaValidator (line 16) | class DOCXSchemaValidator(BaseSchemaValidator): method validate (line 24) | def validate(self): method validate_whitespace_preservation (line 66) | def validate_whitespace_preservation(self): method validate_deletions (line 112) | def validate_deletions(self): method count_paragraphs_in_unpacked (line 163) | def count_paragraphs_in_unpacked(self): method count_paragraphs_in_original (line 179) | def count_paragraphs_in_original(self): method validate_insertions (line 202) | def validate_insertions(self): method compare_paragraph_counts (line 243) | def compare_paragraph_counts(self): method _parse_id_value (line 251) | def _parse_id_value(self, val: str, base: int = 16) -> int: method validate_id_constraints (line 254) | def validate_id_constraints(self): method validate_comment_markers (line 298) | def validate_comment_markers(self): method repair (line 386) | def repair(self) -> int: method repair_durableId (line 391) | def repair_durableId(self) -> int: FILE: .github/skills/pptx/scripts/office/validators/pptx.py class PPTXSchemaValidator (line 10) | class PPTXSchemaValidator(BaseSchemaValidator): method validate (line 25) | def validate(self): method validate_uuid_ids (line 62) | def validate_uuid_ids(self): method _looks_like_uuid (line 100) | def _looks_like_uuid(self, value): method validate_slide_layout_ids (line 104) | def validate_slide_layout_ids(self): method validate_no_duplicate_slide_layouts (line 172) | def validate_no_duplicate_slide_layouts(self): method validate_notes_slide_references (line 210) | def validate_notes_slide_references(self): FILE: .github/skills/pptx/scripts/office/validators/redlining.py class RedliningValidator (line 11) | class RedliningValidator: method __init__ (line 13) | def __init__(self, unpacked_dir, original_docx, verbose=False, author=... method repair (line 22) | def repair(self) -> int: method validate (line 25) | def validate(self): method _generate_detailed_diff (line 104) | def _generate_detailed_diff(self, original_text, modified_text): method _get_git_word_diff (line 127) | def _get_git_word_diff(self, original_text, modified_text): method _remove_author_tracked_changes (line 198) | def _remove_author_tracked_changes(self, root): method _extract_text_content (line 229) | def _extract_text_content(self, root): FILE: .github/skills/pptx/scripts/thumbnail.py function main (line 40) | def main(): function get_slide_info (line 95) | def get_slide_info(pptx_path: Path) -> list[dict]: function build_slide_list (line 121) | def build_slide_list( function create_hidden_placeholder (line 149) | def create_hidden_placeholder(size: tuple[int, int]) -> Image.Image: function convert_to_images (line 158) | def convert_to_images(pptx_path: Path, temp_dir: Path) -> list[Path]: function create_grids (line 196) | def create_grids( function create_grid (line 225) | def create_grid( FILE: .github/skills/skill-creator/scripts/init_skill.py function title_case_skill_name (line 189) | def title_case_skill_name(skill_name): function init_skill (line 194) | def init_skill(skill_name, path): function main (line 273) | def main(): FILE: .github/skills/skill-creator/scripts/package_skill.py function package_skill (line 19) | def package_skill(skill_path, output_dir=None): function main (line 85) | def main(): FILE: .github/skills/skill-creator/scripts/quick_validate.py function validate_skill (line 12) | def validate_skill(skill_path): FILE: .github/skills/webapp-testing/examples/console_logging.py function handle_console_message (line 14) | def handle_console_message(msg): FILE: .github/skills/webapp-testing/scripts/with_server.py function is_server_ready (line 23) | def is_server_ready(port, timeout=30): function main (line 35) | def main(): FILE: .github/skills/xlsx/scripts/office/helpers/merge_runs.py function merge_runs (line 16) | def merge_runs(input_dir: str) -> tuple[int, str]: function _find_elements (line 44) | def _find_elements(root, tag: str) -> list: function _get_child (line 59) | def _get_child(parent, tag: str): function _get_children (line 68) | def _get_children(parent, tag: str) -> list: function _is_adjacent (line 78) | def _is_adjacent(elem1, elem2) -> bool: function _remove_elements (line 93) | def _remove_elements(root, tag: str): function _strip_run_rsid_attrs (line 99) | def _strip_run_rsid_attrs(root): function _merge_runs_in (line 108) | def _merge_runs_in(container) -> int: function _first_child_run (line 128) | def _first_child_run(container): function _next_element_sibling (line 135) | def _next_element_sibling(node): function _next_sibling_run (line 144) | def _next_sibling_run(node): function _is_run (line 154) | def _is_run(node) -> bool: function _can_merge (line 159) | def _can_merge(run1, run2) -> bool: function _merge_run_content (line 170) | def _merge_run_content(target, source): function _consolidate_text (line 178) | def _consolidate_text(run): FILE: .github/skills/xlsx/scripts/office/helpers/simplify_redlines.py function simplify_redlines (line 22) | def simplify_redlines(input_dir: str) -> tuple[int, str]: function _merge_tracked_changes_in (line 47) | def _merge_tracked_changes_in(container, tag: str) -> int: function _is_element (line 75) | def _is_element(node, tag: str) -> bool: function _get_author (line 80) | def _get_author(elem) -> str: function _can_merge_tracked (line 89) | def _can_merge_tracked(elem1, elem2) -> bool: function _merge_tracked_content (line 104) | def _merge_tracked_content(target, source): function _find_elements (line 111) | def _find_elements(root, tag: str) -> list: function get_tracked_change_authors (line 126) | def get_tracked_change_authors(doc_xml_path: Path) -> dict[str, int]: function _get_authors_from_docx (line 149) | def _get_authors_from_docx(docx_path: Path) -> dict[str, int]: function infer_author (line 172) | def infer_author(modified_dir: Path, original_docx: Path, default: str =... FILE: .github/skills/xlsx/scripts/office/pack.py function pack (line 24) | def pack( function _run_validation (line 69) | def _run_validation( function _condense_xml (line 108) | def _condense_xml(xml_file: Path) -> None: FILE: .github/skills/xlsx/scripts/office/soffice.py function get_soffice_env (line 24) | def get_soffice_env() -> dict: function run_soffice (line 35) | def run_soffice(args: list[str], **kwargs) -> subprocess.CompletedProcess: function _needs_shim (line 44) | def _needs_shim() -> bool: function _ensure_shim (line 53) | def _ensure_shim() -> Path: FILE: .github/skills/xlsx/scripts/office/unpack.py function unpack (line 34) | def unpack( function _pretty_print_xml (line 82) | def _pretty_print_xml(xml_file: Path) -> None: function _escape_smart_quotes (line 91) | def _escape_smart_quotes(xml_file: Path) -> None: FILE: .github/skills/xlsx/scripts/office/validate.py function main (line 25) | def main(): FILE: .github/skills/xlsx/scripts/office/validators/base.py class BaseSchemaValidator (line 12) | class BaseSchemaValidator: method __init__ (line 94) | def __init__(self, unpacked_dir, original_file=None, verbose=False): method validate (line 109) | def validate(self): method repair (line 112) | def repair(self) -> int: method repair_whitespace_preservation (line 115) | def repair_whitespace_preservation(self) -> int: method validate_xml (line 143) | def validate_xml(self): method validate_namespaces (line 170) | def validate_namespaces(self): method validate_unique_ids (line 199) | def validate_unique_ids(self): method validate_file_references (line 289) | def validate_file_references(self): method validate_all_relationship_ids (line 385) | def validate_all_relationship_ids(self): method _get_expected_relationship_type (line 469) | def _get_expected_relationship_type(self, element_name): method validate_content_types (line 492) | def validate_content_types(self): method validate_file_against_xsd (line 598) | def validate_file_against_xsd(self, xml_file, verbose=False): method validate_against_xsd (line 636) | def validate_against_xsd(self): method _get_schema_path (line 685) | def _get_schema_path(self, xml_file): method _clean_ignorable_namespaces (line 703) | def _clean_ignorable_namespaces(self, xml_doc): method _remove_ignorable_elements (line 723) | def _remove_ignorable_elements(self, root): method _preprocess_for_mc_ignorable (line 742) | def _preprocess_for_mc_ignorable(self, xml_doc): method _validate_single_file_xsd (line 750) | def _validate_single_file_xsd(self, xml_file, base_path): method _get_original_file_errors (line 787) | def _get_original_file_errors(self, xml_file): method _remove_template_tags_from_text_nodes (line 814) | def _remove_template_tags_from_text_nodes(self, xml_doc): FILE: .github/skills/xlsx/scripts/office/validators/docx.py class DOCXSchemaValidator (line 16) | class DOCXSchemaValidator(BaseSchemaValidator): method validate (line 24) | def validate(self): method validate_whitespace_preservation (line 66) | def validate_whitespace_preservation(self): method validate_deletions (line 112) | def validate_deletions(self): method count_paragraphs_in_unpacked (line 163) | def count_paragraphs_in_unpacked(self): method count_paragraphs_in_original (line 179) | def count_paragraphs_in_original(self): method validate_insertions (line 202) | def validate_insertions(self): method compare_paragraph_counts (line 243) | def compare_paragraph_counts(self): method _parse_id_value (line 251) | def _parse_id_value(self, val: str, base: int = 16) -> int: method validate_id_constraints (line 254) | def validate_id_constraints(self): method validate_comment_markers (line 298) | def validate_comment_markers(self): method repair (line 386) | def repair(self) -> int: method repair_durableId (line 391) | def repair_durableId(self) -> int: FILE: .github/skills/xlsx/scripts/office/validators/pptx.py class PPTXSchemaValidator (line 10) | class PPTXSchemaValidator(BaseSchemaValidator): method validate (line 25) | def validate(self): method validate_uuid_ids (line 62) | def validate_uuid_ids(self): method _looks_like_uuid (line 100) | def _looks_like_uuid(self, value): method validate_slide_layout_ids (line 104) | def validate_slide_layout_ids(self): method validate_no_duplicate_slide_layouts (line 172) | def validate_no_duplicate_slide_layouts(self): method validate_notes_slide_references (line 210) | def validate_notes_slide_references(self): FILE: .github/skills/xlsx/scripts/office/validators/redlining.py class RedliningValidator (line 11) | class RedliningValidator: method __init__ (line 13) | def __init__(self, unpacked_dir, original_docx, verbose=False, author=... method repair (line 22) | def repair(self) -> int: method validate (line 25) | def validate(self): method _generate_detailed_diff (line 104) | def _generate_detailed_diff(self, original_text, modified_text): method _get_git_word_diff (line 127) | def _get_git_word_diff(self, original_text, modified_text): method _remove_author_tracked_changes (line 198) | def _remove_author_tracked_changes(self, root): method _extract_text_content (line 229) | def _extract_text_content(self, root): FILE: .github/skills/xlsx/scripts/recalc.py function has_gtimeout (line 32) | def has_gtimeout(): function setup_libreoffice_macro (line 42) | def setup_libreoffice_macro(): function recalc (line 70) | def recalc(filename, timeout=30): function main (line 164) | def main(): FILE: build.py class Colors (line 48) | class Colors: method disable (line 62) | def disable(): function print_step (line 75) | def print_step(message): function print_success (line 82) | def print_success(message): function print_error (line 87) | def print_error(message): function print_warning (line 92) | def print_warning(message): function print_info (line 97) | def print_info(message): function run_command (line 102) | def run_command(cmd, cwd=None, env=None, check=True, capture_output=Fals... function get_system_info (line 148) | def get_system_info(): function check_python_version (line 156) | def check_python_version(): function setup_arduino_config (line 166) | def setup_arduino_config(project_dir): function install_dependencies (line 194) | def install_dependencies(project_dir, config_file): function install_arduino_cli (line 232) | def install_arduino_cli(system): function update_version (line 357) | def update_version(project_dir): function get_semver (line 390) | def get_semver(project_dir): function create_build_directory (line 409) | def create_build_directory(project_dir): function build_firmware (line 430) | def build_firmware(project_dir, config_file): function build_filesystem (line 458) | def build_filesystem(project_dir, config_file): function consolidate_build_artifacts (line 504) | def consolidate_build_artifacts(project_dir): function rename_build_artifacts (line 575) | def rename_build_artifacts(project_dir, semver): function list_build_artifacts (line 618) | def list_build_artifacts(project_dir): function create_merged_binary (line 641) | def create_merged_binary(project_dir, semver, compress=False): function check_esptool (line 756) | def check_esptool(): function cleanup_temp_directory (line 799) | def cleanup_temp_directory(project_dir): function clean_build (line 816) | def clean_build(project_dir): function main (line 836) | def main(): FILE: docs/archive/mqttha-generator/generate_mqttha_data.py function _mdi_to_enum (line 200) | def _mdi_to_enum(mdi_name: str) -> str: function load_icon_overrides (line 207) | def load_icon_overrides(path: str) -> dict: function c_escape (line 257) | def c_escape(s: str) -> str: function to_c_ident (line 269) | def to_c_ident(s: str) -> str: function compute_flags (line 277) | def compute_flags(topic: str, msg: str) -> int: function parse_config (line 290) | def parse_config(path: str): function get_entity_type (line 318) | def get_entity_type(topic: str) -> str: function extract_label (line 325) | def extract_label(msg_json: dict, topic: str) -> str: function extract_friendly_name (line 337) | def extract_friendly_name(msg_json: dict) -> str: function determine_sensor_icon (line 346) | def determine_sensor_icon(device_class: str, label: str, unit: str) -> str: function determine_binsensor_icon (line 452) | def determine_binsensor_icon(label: str) -> str: function determine_entity_cat (line 478) | def determine_entity_cat(ot_id: int, label: str) -> str: function determine_enabled_by_default (line 489) | def determine_enabled_by_default(ot_id: int, label: str) -> bool: class SensorEntry (line 502) | class SensorEntry: method __init__ (line 503) | def __init__(self, ot_id, flags, label, friendly_name, device_class, u... class BinSensorEntry (line 517) | class BinSensorEntry: method __init__ (line 518) | def __init__(self, ot_id, flags, label, friendly_name, icon, entity_ca... class SpecialEntry (line 528) | class SpecialEntry: method __init__ (line 530) | def __init__(self, ot_id, entity_type, topic, msg, flags): function process_entries (line 538) | def process_entries(raw_entries): function collect_progmem_strings (line 599) | def collect_progmem_strings(sensors, bin_sensors): function build_index (line 638) | def build_index(sorted_entries, count): function generate_cpp (line 649) | def generate_cpp(sensors, bin_sensors, specials, labels, names, output_p... function main (line 882) | def main(): FILE: docs/archive/mqttha-generator/generate_mqttha_progmem.py function c_escape (line 58) | def c_escape(s: str) -> str: function parse_config (line 71) | def parse_config(path: str): function build_index (line 98) | def build_index(entries): function compute_flags (line 108) | def compute_flags(topic: str, msg: str) -> int: function build_pools (line 118) | def build_pools(sorted_entries): function pool_to_c_string (line 137) | def pool_to_c_string(pool: bytes) -> str: function generate_header (line 161) | def generate_header(count, topic_pool_size, msg_pool_size, output_path, ... function generate_cpp (line 217) | def generate_cpp(sorted_entries, topic_pool, msg_pool, t_offsets, m_offs... function main (line 293) | def main(): FILE: docs/archive/mqttha-generator/generate_mqttha_readable.py function c_escape (line 50) | def c_escape(s: str) -> str: function compute_flags (line 62) | def compute_flags(topic: str, msg: str) -> int: function derive_short_name (line 73) | def derive_short_name(topic: str) -> str: function format_json_multiline (line 110) | def format_json_multiline(json_str: str, indent: str = " ") -> list[s... function parse_config (line 165) | def parse_config(path: str): function build_index (line 193) | def build_index(sorted_entries): function assign_names (line 204) | def assign_names(sorted_entries): function describe_entry (line 237) | def describe_entry(topic: str, msg: str) -> str: function generate_header (line 261) | def generate_header(count, output_path, timestamp): function generate_cpp (line 320) | def generate_cpp(sorted_entries, names, output_path, timestamp): function main (line 423) | def main(): FILE: evaluate.py class Colors (line 40) | class Colors: method disable (line 52) | def disable(): class EvaluationResult (line 58) | class EvaluationResult: method __init__ (line 60) | def __init__(self, category: str, name: str, status: str, message: str... method __repr__ (line 68) | def __repr__(self): class WorkspaceEvaluator (line 74) | class WorkspaceEvaluator: method __init__ (line 77) | def __init__(self, project_dir: Path, verbose: bool = False): method add_result (line 83) | def add_result(self, result: EvaluationResult): method run_command (line 90) | def run_command(self, cmd: List[str], capture: bool = True) -> Tuple[i... method check_code_structure (line 108) | def check_code_structure(self): method check_time_boundary_single_caller (line 159) | def check_time_boundary_single_caller(self): method _extract_function_body (line 224) | def _extract_function_body(source: str, signature_start: int) -> Tuple... method check_discovery_counter_instrumented (line 286) | def check_discovery_counter_instrumented(self): method check_publishedtopic_counter_reset (line 360) | def check_publishedtopic_counter_reset(self): method check_ha_sensor_index_consistency (line 431) | def check_ha_sensor_index_consistency(self): method check_json_buffer_arithmetic (line 561) | def check_json_buffer_arithmetic(self): method check_status_burst_cooldown_bound (line 767) | def check_status_burst_cooldown_bound(self): method check_status_publishers_wrap_burst (line 831) | def check_status_publishers_wrap_burst(self): method check_ps_summary_master_topic_gate (line 902) | def check_ps_summary_master_topic_gate(self): method check_adr_references_resolve (line 1007) | def check_adr_references_resolve(self): method check_coding_standards (line 1077) | def check_coding_standards(self): method check_memory_usage (line 1129) | def check_memory_usage(self): method check_build_system (line 1158) | def check_build_system(self): method check_dependencies (line 1204) | def check_dependencies(self): method check_documentation (line 1239) | def check_documentation(self): method check_security (line 1312) | def check_security(self): method check_git_repository (line 1367) | def check_git_repository(self): method check_filesystem_data (line 1420) | def check_filesystem_data(self): method check_version_info (line 1454) | def check_version_info(self): method evaluate_all (line 1487) | def evaluate_all(self, quick: bool = False): method print_summary (line 1519) | def print_summary(self): method generate_report (line 1550) | def generate_report(self, output_file: Path): function main (line 1581) | def main(): FILE: flash_esp.py class Colors (line 40) | class Colors: method disable (line 53) | def disable(): function print_header (line 66) | def print_header(text): function print_success (line 73) | def print_success(text): function print_error (line 78) | def print_error(text): function print_warning (line 83) | def print_warning(text): function print_info (line 88) | def print_info(text): function get_latest_release_info (line 93) | def get_latest_release_info(): function download_release_assets (line 122) | def download_release_assets(release_info, download_dir): function build_firmware (line 177) | def build_firmware(): function check_python_version (line 251) | def check_python_version(): function check_esptool (line 258) | def check_esptool(): function detect_serial_ports (line 317) | def detect_serial_ports(): function select_port (line 359) | def select_port(ports, default_port=None): function find_firmware_files (line 402) | def find_firmware_files(): function check_build_artifacts (line 434) | def check_build_artifacts(): function interactive_mode_selection (line 467) | def interactive_mode_selection(): function select_file (line 536) | def select_file(files, file_type): function flash_esp8266 (line 574) | def flash_esp8266(port, firmware_file=None, filesystem_file=None, baud=D... function main (line 687) | def main(): FILE: scripts/autoinc-semver.py function normalize_token (line 18) | def normalize_token(value): function parse_int (line 29) | def parse_int(value, key): function parse_version_file (line 37) | def parse_version_file(path): function resolve_githash (line 81) | def resolve_githash(override, length): function prerelease_suffix (line 97) | def prerelease_suffix(prerelease): function update_version_header (line 106) | def update_version_header(path, version_info, githash, date_str, time_st... function extract_version_from_file (line 179) | def extract_version_from_file(filepath): function update_version_in_file (line 204) | def update_version_in_file(filepath, version_info): function should_skip_path (line 242) | def should_skip_path(path, base_dir): function update_files (line 265) | def update_files(directory, version_info, ext_list, check_only=False): function update_version_hash (line 334) | def update_version_hash(path, githash): function git_commit_changes (line 340) | def git_commit_changes(directory, version): function main (line 351) | def main(directory, filename, git_enabled, increment, githash_override, ... FILE: scripts/webui_launcher.py function handle_client (line 12) | def handle_client(client_socket, target_host, target_port): function forward (line 35) | def forward(source, destination): function start_proxy (line 52) | def start_proxy(target_ip, target_port=80): FILE: src/OTGW-firmware/Debug.h function _debugPrintf_P (line 60) | void _debugPrintf_P(PGM_P fmt, ...) { function _debugBOL (line 69) | void _debugBOL(const char *fn, int line) FILE: src/OTGW-firmware/MQTTstuff.h function pgm_strncmp_PP (line 25) | inline int pgm_strncmp_PP(PGM_P s1, const char *s2, size_t n) function pgm_read_char (line 36) | inline char pgm_read_char(PGM_P p) type class (line 51) | enum class type class (line 64) | enum class function HaStateClass (line 85) | enum class HaStateClass : uint8_t { FILE: src/OTGW-firmware/OTGW-Core.h type OTdataStruct (line 26) | typedef struct { type OTValueType (line 178) | enum OTValueType { type OpenThermMessageType (line 192) | enum OpenThermMessageType { type OpenThermMessageID (line 205) | enum OpenThermMessageID { type OTtype_t (line 323) | enum OTtype_t { ot_f88, ot_s16, ot_s8s8, ot_u16, ot_u8u8, ot_flag8, ot_f... type OTmsgcmd_t (line 324) | enum OTmsgcmd_t { OT_READ, OT_WRITE, OT_RW, OT_UNDEF } type OTlookup_t (line 326) | struct OTlookup_t function OTPublishGate (line 499) | struct OTPublishGate { type OT_cmd_t (line 507) | struct OT_cmd_t { // see all possible commands for PIC here: https://otg... type OT_cmd_t (line 515) | struct OT_cmd_t type OTGW_response_type (line 527) | enum OTGW_response_type { type OpenthermData_t (line 538) | struct OpenthermData_t { FILE: src/OTGW-firmware/OTGW-ModUpdateServer-impl.h function namespace (line 53) | namespace esp8266httpupdateserver { FILE: src/OTGW-firmware/OTGW-ModUpdateServer.h function namespace (line 26) | namespace esp8266httpupdateserver { function namespace (line 95) | namespace BearSSL { FILE: src/OTGW-firmware/OTGW-firmware.h function strlcpy_P (line 22) | inline size_t strlcpy_P(char *dst, PGM_P src, size_t size) { type HeapHealthLevel (line 98) | enum HeapHealthLevel { type class (line 176) | enum class type class (line 182) | enum class type PICSection (line 241) | struct PICSection { // state.pic — PIC microcontroller identi... type OTGWProtocol (line 248) | struct OTGWProtocol { // state.otgw — OpenTherm protocol & bus ... type MQTTRuntimeSection (line 257) | struct MQTTRuntimeSection { // state.mqtt — MQTT broker connection state type FlashSection (line 262) | struct FlashSection { // state.flash — Firmware upgrade operations type DebugSection (line 270) | struct DebugSection { // state.debug — Runtime diagnostic outpu... type UptimeSection (line 286) | struct UptimeSection { // state.uptime — System longevity counters type class (line 296) | enum class type DiscoverySection (line 304) | struct DiscoverySection { // state.discovery — MQTT a... type HeapDiagSection (line 325) | struct HeapDiagSection { // state.heapdiag — cumulative ... type PicSettingsSection (line 336) | struct PicSettingsSection { // state.picSettings — settings polled fr... type SATHeatingSystem (line 365) | enum SATHeatingSystem : uint8_t { type SATControlMode (line 371) | enum SATControlMode : uint8_t { SAT_MODE_OFF = 0, SAT_MODE_CONTINUOUS, S... type SATCalibPhase (line 372) | enum SATCalibPhase : uint8_t { type SATPreset (line 376) | enum SATPreset : uint8_t { type SATFallbackReason (line 381) | enum SATFallbackReason : uint8_t { type SATCycleClass (line 384) | enum SATCycleClass : uint8_t { type SATCycleKind (line 388) | enum SATCycleKind : uint8_t { type SATCyclePhase (line 391) | enum SATCyclePhase : uint8_t { type SATCurveRecommendation (line 394) | enum SATCurveRecommendation : uint8_t { type SATManufacturer (line 397) | enum SATManufacturer : uint8_t { type SATFlameStatus (line 411) | enum SATFlameStatus : uint8_t { type SATBoilerStatus (line 415) | enum SATBoilerStatus : uint8_t { type SATWindowRecord (line 426) | struct SATWindowRecord { type SATZoneState (line 435) | struct SATZoneState { type SATRuntimeSection (line 446) | struct SATRuntimeSection { // state.sat — SAT thermostat control... type OTGWState (line 578) | struct OTGWState { function isPICEnabled (line 600) | inline bool isPICEnabled() { return state.pic.bAvailable; } function isGatewayFirmware (line 601) | inline bool isGatewayFirmware() { return strcmp_P(state.pic.sType, PSTR(... function hasOTCommandInterface (line 604) | inline bool hasOTCommandInterface() { return isPICEnabled(); } type MQTTSettingsSection (line 611) | struct MQTTSettingsSection { type NTPSection (line 629) | struct NTPSection { type SensorsSection (line 636) | struct SensorsSection { // Dallas DS18B20 external sensors type S0Section (line 643) | struct S0Section { type OutputsSection (line 651) | struct OutputsSection { // GPIO relay outputs type WebhookSection (line 657) | struct WebhookSection { type UISection (line 666) | struct UISection { type OTGWBootSection (line 676) | struct OTGWBootSection { // PIC boot-time command injection type SATSection (line 683) | struct SATSection { type DeviceSection (line 767) | struct DeviceSection { type OTGWSettings (line 772) | struct OTGWSettings { function isFlashing (line 812) | inline bool isFlashing() { FILE: src/OTGW-firmware/data/graph.js constant UPDATE_INTERVAL_MS (line 13) | const UPDATE_INTERVAL_MS = 2000; function isDallasAddress (line 17) | function isDallasAddress(entry) { FILE: src/OTGW-firmware/data/index.js constant APIGW (line 12) | const APIGW = window.location.protocol + '//' + window.location.host + '... constant MOBILE_BREAKPOINT_PX (line 13) | const MOBILE_BREAKPOINT_PX = 768; constant PS_MODE_NOTICE_TEXT (line 14) | const PS_MODE_NOTICE_TEXT = 'PS=1 mode active: showing decoded field sum... constant WEBKIT_SCROLLBAR_STYLE_ID (line 15) | const WEBKIT_SCROLLBAR_STYLE_ID = 'otgw-webkit-scrollbar-style'; function safeJSONParse (line 27) | function safeJSONParse(text) { function safeGetElementById (line 54) | function safeGetElementById(id, warnIfMissing = false) { function ensureWebkitScrollbarStyles (line 62) | function ensureWebkitScrollbarStyles() { function isDallasAddress (line 84) | function isDallasAddress(entry) { function fetchDallasLabels (line 100) | function fetchDallasLabels() { constant PIC_SETTINGS_REFRESH_INTERVAL_MS (line 147) | const PIC_SETTINGS_REFRESH_INTERVAL_MS = 3000; constant PIC_SETTINGS_CACHE_MAX_AGE_MS (line 148) | const PIC_SETTINGS_CACHE_MAX_AGE_MS = 7 * 24 * 60 * 60 * 1000; function isPageVisible (line 150) | function isPageVisible() { function isMainPageActive (line 154) | function isMainPageActive() { function getPICSettingsStorageKey (line 159) | function getPICSettingsStorageKey() { function getPICSettingsCache (line 163) | function getPICSettingsCache() { function savePICSettingToCache (line 186) | function savePICSettingToCache(key, value, timestampMs) { function getPICSettingFromCache (line 204) | function getPICSettingFromCache(key) { function isPICSettingDiscovered (line 222) | function isPICSettingDiscovered(value) { function startPICsettingsRefreshTimer (line 226) | function startPICsettingsRefreshTimer() { function stopPICsettingsRefreshTimer (line 257) | function stopPICsettingsRefreshTimer() { function startOTmonitorPolling (line 264) | function startOTmonitorPolling() { function stopOTmonitorPolling (line 273) | function stopOTmonitorPolling() { function startTimeUpdates (line 280) | function startTimeUpdates() { function stopTimeUpdates (line 286) | function stopTimeUpdates() { function setActivePageSection (line 293) | function setActivePageSection(activeId) { constant GATEWAY_MODE_REFRESH_INTERVAL (line 336) | const GATEWAY_MODE_REFRESH_INTERVAL = 60; function updateGatewayModeIndicator (line 338) | function updateGatewayModeIndicator(value) { function parseGatewayModeValue (line 358) | function parseGatewayModeValue(modeValue) { function formatGatewayModeDisplayValue (line 378) | function formatGatewayModeDisplayValue(modeValue) { function formatDeviceInfoLabel (line 387) | function formatDeviceInfoLabel(key) { function formatDeviceInfoValue (line 395) | function formatDeviceInfoValue(key, value) { function applyParsedGatewayMode (line 410) | function applyParsedGatewayMode(parsedMode) { function refreshGatewayMode (line 423) | function refreshGatewayMode(force) { function enterFlashMode (line 465) | function enterFlashMode() { function exitFlashMode (line 479) | function exitFlashMode() { constant RENDER_LIMIT (line 837) | const RENDER_LIMIT = 2000; constant TARGET_MEMORY_MB (line 840) | const TARGET_MEMORY_MB = 100; constant STORAGE_SAFETY_MARGIN (line 841) | const STORAGE_SAFETY_MARGIN = 0.8; constant WEBSOCKET_PORT (line 903) | const WEBSOCKET_PORT = 81; constant WS_WATCHDOG_TIMEOUT (line 907) | const WS_WATCHDOG_TIMEOUT = 45000; constant DEBUG_WS (line 913) | let DEBUG_WS = false; constant PERSISTENCE_INTERVAL_MS (line 926) | const PERSISTENCE_INTERVAL_MS = 30000; constant DEBOUNCE_SAVE_MS (line 927) | const DEBOUNCE_SAVE_MS = 2000; constant PERSISTENCE_KEY_LOGS (line 928) | const PERSISTENCE_KEY_LOGS = 'otgw_log_buffer'; constant PERSISTENCE_KEY_PREFS (line 929) | const PERSISTENCE_KEY_PREFS = 'otgw_log_prefs'; function detectStorageQuota (line 936) | function detectStorageQuota() { function estimateMemoryUsage (line 959) | function estimateMemoryUsage() { function getActualMemoryUsage (line 983) | function getActualMemoryUsage() { function calculateOptimalMaxLines (line 1007) | function calculateOptimalMaxLines() { function updateDynamicLimits (line 1038) | function updateDynamicLimits() { function updateMemoryDisplay (line 1055) | function updateMemoryDisplay() { function saveDataToLocalStorage (line 1085) | function saveDataToLocalStorage() { function restoreDataFromLocalStorage (line 1156) | function restoreDataFromLocalStorage() { function clearStoredData (line 1217) | function clearStoredData() { function debouncedSave (line 1228) | function debouncedSave() { function startPersistenceTimer (line 1245) | function startPersistenceTimer() { function stopPersistenceTimer (line 1263) | function stopPersistenceTimer() { function stopScheduledOTLogWebSocketInit (line 1271) | function stopScheduledOTLogWebSocketInit() { function scheduleOTLogWebSocketInit (line 1278) | function scheduleOTLogWebSocketInit(force, delayMs) { function shutdownPageNetworking (line 1292) | function shutdownPageNetworking(reason) { function persistOTLogBufferForUnload (line 1301) | function persistOTLogBufferForUnload() { function resetWSWatchdog (line 1368) | function resetWSWatchdog() { function getOTLogDisplayState (line 1392) | function getOTLogDisplayState() { function updateOTLogModeNotice (line 1417) | function updateOTLogModeNotice(displayState) { function setOTLogCommandsOnly (line 1434) | function setOTLogCommandsOnly(enabled) { function updateOTLogResponsiveState (line 1462) | function updateOTLogResponsiveState() { function handleOTLogResize (line 1496) | function handleOTLogResize() { function initOTLogWebSocket (line 1506) | function initOTLogWebSocket(force) { function disconnectOTLogWebSocket (line 1708) | function disconnectOTLogWebSocket() { function updateWSStatus (line 1753) | function updateWSStatus(connected) { function parseSimulationValue (line 1771) | function parseSimulationValue(rawValue) { function applyPICAvailability (line 1783) | function applyPICAvailability(available) { function applyOTGWSimulationState (line 1810) | function applyOTGWSimulationState(rawValue) { function updateSimulationBadge (line 1817) | function updateSimulationBadge() { function formatLogLine (line 1840) | function formatLogLine(logLine) { function parseLogLine (line 1899) | function parseLogLine(line) { function addLogLine (line 1996) | function addLogLine(logLine) { function scheduleDisplayUpdate (line 2050) | function scheduleDisplayUpdate() { function updateFilteredBuffer (line 2064) | function updateFilteredBuffer() { function getMainPageContainer (line 2079) | function getMainPageContainer() { function getOTLogContentElement (line 2123) | function getOTLogContentElement() { function renderLogDisplay (line 2164) | function renderLogDisplay() { function updateLogDisplay (line 2215) | function updateLogDisplay() { function updateLogCounters (line 2229) | function updateLogCounters() { function clearLogBuffer (line 2251) | function clearLogBuffer() { function setupOTLogControls (line 2260) | function setupOTLogControls() { function normalizeOTGWcommand (line 2438) | function normalizeOTGWcommand(cmd) { function sendOTGWcommand (line 2456) | function sendOTGWcommand(cmd) { function startFileStreaming (line 2528) | async function startFileStreaming() { function getTodayDateString (line 2575) | function getTodayDateString() { function rotateLogFile (line 2583) | async function rotateLogFile() { function checkFileRotation (line 2617) | async function checkFileRotation() { function stopFileStreaming (line 2640) | function stopFileStreaming() { function enqueueLogLine (line 2661) | function enqueueLogLine(text) { function processLogQueue (line 2667) | async function processLogQueue() { function writeToStream (line 2714) | async function writeToStream(entry) { function downloadLog (line 2727) | function downloadLog(isAuto = false) { function forceDownloadBlob (line 2761) | function forceDownloadBlob(blob, filename) { function toggleAutoDownloadLog (line 2774) | function toggleAutoDownloadLog(enabled) { function loadUISettings (line 2808) | function loadUISettings() { function saveUISetting (line 2814) | function saveUISetting(field, value) { function renderSharedPageNavShell (line 2820) | function renderSharedPageNavShell() { function updateThemeToggle (line 2843) | function updateThemeToggle() { function initMainPage (line 2854) | function initMainPage() { function checkFSMismatch (line 3034) | function checkFSMismatch() { function showMainPage (line 3061) | function showMainPage() { function firmwarePage (line 3084) | function firmwarePage() { function deviceinfoPage (line 3092) | function deviceinfoPage() { function settingsPage (line 3102) | function settingsPage() { function webhookPage (line 3113) | function webhookPage() { function toggleHidden (line 3126) | function toggleHidden(className, hideOnly) { function setVisible (line 3138) | function setVisible(className, visible) { function renderBottomMessage (line 3150) | function renderBottomMessage() { function updateHeapDisplay (line 3181) | function updateHeapDisplay() { function refreshDevTime (line 3188) | function refreshDevTime() { function applyPSmodeState (line 3238) | function applyPSmodeState() { function refreshFirmware (line 3261) | function refreshFirmware() { function mapPICCode (line 3528) | function mapPICCode(code, table, fallbackPrefix) { function formatPICSetpointOverride (line 3538) | function formatPICSetpointOverride(value) { function formatPICDhwOverride (line 3555) | function formatPICDhwOverride(value) { function formatPICGpioFunctions (line 3564) | function formatPICGpioFunctions(value) { function formatPICGpioStates (line 3588) | function formatPICGpioStates(value) { function formatPICLedFunctions (line 3601) | function formatPICLedFunctions(value) { function formatPICTweaks (line 3628) | function formatPICTweaks(value) { function formatPICTempSensor (line 3643) | function formatPICTempSensor(value) { function formatPICSmartPower (line 3650) | function formatPICSmartPower(value) { function formatPICThermostatDetect (line 3659) | function formatPICThermostatDetect(value) { function formatPICResetCause (line 3669) | function formatPICResetCause(value) { function formatPICVoltageRef (line 3683) | function formatPICVoltageRef(value) { function formatPICSettingValue (line 3698) | function formatPICSettingValue(key, value) { function setPICValueWithBreaks (line 3727) | function setPICValueWithBreaks(el, text, unit) { function refreshPICsettings (line 3737) | function refreshPICsettings() { function refreshDevInfo (line 3891) | function refreshDevInfo() { function refreshOTmonitor (line 3932) | function refreshOTmonitor() { function refreshDeviceInfo (line 4138) | function refreshDeviceInfo() { function renderCrashLogInfo (line 4197) | function renderCrashLogInfo(crashlog) { function refreshCrashLogInfo (line 4244) | function refreshCrashLogInfo() { function isHttpPasswordPlaceholder (line 4283) | function isHttpPasswordPlaceholder(value) { function getHttpPasswordPlaceholderLength (line 4287) | function getHttpPasswordPlaceholderLength(value) { function isPasswordPlaceholderField (line 4308) | function isPasswordPlaceholderField(field) { function getOriginalPasswordPrefill (line 4312) | function getOriginalPasswordPrefill(field) { function refreshSettings (line 4326) | function refreshSettings() { function testWebhookUI (line 4493) | function testWebhookUI(stateOn) { function refreshWebhookPage (line 4515) | function refreshWebhookPage() { function saveWebhookSettings (line 4628) | function saveWebhookSettings() { function saveSettings (line 4658) | function saveSettings() { function sendPostSetting (line 4706) | function sendPostSetting(field, value) { function translateToHuman (line 4742) | function translateToHuman(longName) { function translateTooltip (line 4770) | function translateTooltip(longName) { function setBackGround (line 4797) | function setBackGround(field, newColor) { function getBackGround (line 4808) | function getBackGround(field) { function round (line 4816) | function round(value, precision) { function printAllVals (line 4823) | function printAllVals(obj) { function strToBool (line 4834) | function strToBool(s) { function applyTheme (line 5042) | function applyTheme() { function toggleInteraction (line 5075) | function toggleInteraction(enabled) { function startFlash (line 5083) | function startFlash(filename) { function parseFirmwareInfo (line 5088) | function parseFirmwareInfo(filename) { function startFlashPolling (line 5114) | function startFlashPolling() { function stopFlashPolling (line 5122) | function stopFlashPolling() { function pollFlashStatus (line 5130) | function pollFlashStatus() { function handleFlashCompletion (line 5175) | function handleFlashCompletion(filename, error) { function handleFlashError (line 5216) | function handleFlashError(filename, error) { function performFlash (line 5235) | function performFlash(filename) { function handleFlashMessage (line 5317) | function handleFlashMessage(data) { function otmGetTypeNibbleChar (line 5445) | function otmGetTypeNibbleChar(raw) { function otmGetTypeFromRaw (line 5468) | function otmGetTypeFromRaw(raw) { function otmTypeFromDirString (line 5476) | function otmTypeFromDirString(dir) { function otmDirectionLabel (line 5491) | function otmDirectionLabel(typeCode, fallbackDir) { function openLogTab (line 5508) | function openLogTab(evt, tabName) { function processStatsLine (line 5529) | function processStatsLine(line) { function scheduleStatsUpdate (line 5617) | function scheduleStatsUpdate() { function updateStatisticsDisplay (line 5627) | function updateStatisticsDisplay() { function sortStats (line 5680) | function sortStats(col) { function saveUISetting (line 5691) | function saveUISetting(field, value) { function setupPersistentUIListeners (line 5696) | function setupPersistentUIListeners() { function loadPersistentUI (line 5722) | function loadPersistentUI() { function openInlineSensorLabelEditor (line 5824) | function openInlineSensorLabelEditor(address, targetNode, evt) { function closeInlineSensorLabelEditor (line 5890) | function closeInlineSensorLabelEditor(cancelOnly) { function saveInlineSensorLabel (line 5910) | function saveInlineSensorLabel() { function resetWiFiSettingsUI (line 5989) | function resetWiFiSettingsUI() { FILE: src/OTGW-firmware/mqtt_configuratie.cpp function PGM_P (line 1691) | PGM_P haDeviceClassStr(HaDeviceClass dc) { function PGM_P (line 1705) | PGM_P haUnitStr(HaUnit u) { function PGM_P (line 1726) | PGM_P haStateClassStr(HaStateClass sc) { function PGM_P (line 1735) | PGM_P haIconStr(HaIcon ic) { function PGM_P (line 1785) | PGM_P haEntityCatStr(HaEntityCat ec) { function strlcpy_P (line 1823) | inline size_t strlcpy_P(char *dst, PGM_P src, size_t size) { function writeJsonKV (line 1843) | static bool writeJsonKV(MqttJsonWriter &w, PGM_P key, const char *value) { function writeJsonKV_P (line 1848) | static bool writeJsonKV_P(MqttJsonWriter &w, PGM_P key, PGM_P value) { function writeJsonKVBool (line 1853) | static bool writeJsonKVBool(MqttJsonWriter &w, PGM_P key, bool value) { function writeJsonOpen (line 1858) | static bool writeJsonOpen(MqttJsonWriter &w) { return w.writeChar('{'); } function writeJsonClose (line 1859) | static bool writeJsonClose(MqttJsonWriter &w) { return w.writeChar('}'); } function writeJsonComma (line 1860) | static bool writeJsonComma(MqttJsonWriter &w) { return w.writeChar(','); } function writeFriendlyName (line 1876) | static bool writeFriendlyName(MqttJsonWriter &w, const char *s) { function writeDeviceBlock (line 1920) | static bool writeDeviceBlock(MqttJsonWriter &w, const HaDiscoveryContext... function writeOriginBlock (line 1947) | static bool writeOriginBlock(MqttJsonWriter &w, const HaDiscoveryContext... function sanitizeHaObjectId (line 1962) | static void sanitizeHaObjectId(char *s) { function composeSensorPayload (line 1975) | static bool composeSensorPayload(MqttJsonWriter &w, function composeBinSensorPayload (line 2083) | static bool composeBinSensorPayload(MqttJsonWriter &w, function buildSensorDiscoveryTopic (line 2163) | static bool buildSensorDiscoveryTopic(char *dest, size_t destSize, function buildBinSensorDiscoveryTopic (line 2181) | static bool buildBinSensorDiscoveryTopic(char *dest, size_t destSize, function streamSensorDiscovery (line 2201) | bool streamSensorDiscovery(PubSubClient &client, function streamBinarySensorDiscovery (line 2240) | bool streamBinarySensorDiscovery(PubSubClient &client, function streamDallasSensorDiscovery (line 2276) | bool streamDallasSensorDiscovery(PubSubClient &client, function expandAndStreamSensorSources (line 2424) | bool expandAndStreamSensorSources(PubSubClient &client, function streamClimateDiscovery (line 2476) | bool streamClimateDiscovery(PubSubClient &client, function streamNumberDiscovery (line 2661) | bool streamNumberDiscovery(PubSubClient &client, FILE: src/OTGW-firmware/mqtt_discovery_verify.cpp function startDiscoveryVerification (line 98) | bool startDiscoveryVerification() { function endDiscoveryVerification (line 172) | static void endDiscoveryVerification() { function tickDiscoveryVerification (line 221) | void tickDiscoveryVerification() { function isDiscoveryVerificationActive (line 264) | bool isDiscoveryVerificationActive() { return verifyActive; } function handleDiscoveryVerifyMessage (line 278) | bool handleDiscoveryVerifyMessage(const char *topic, unsigned int /*leng... FILE: src/OTGW-firmware/networkStuff.h type timespec (line 63) | struct timespec type NtpStatus_t (line 67) | enum NtpStatus_t { FILE: src/OTGW-firmware/safeTimers.h function __Due__ (line 160) | uint32_t __Due__(uint32_t &timer_due, uint32_t timer_interval, byte time... function __TimeLeft__ (line 211) | uint32_t __TimeLeft__(uint32_t timer_due) function __Once__ (line 221) | uint32_t __Once__(uint32_t timer_due) function getParam (line 229) | uint32_t getParam(uint32_t i, ...) FILE: src/OTGW-firmware/updateServerHtml.h function catch (line 20) | catch (e) { console.error(e); } function function (line 125) | function restoreDallasLabelsFromStorage(onStatus) { function catch (line 159) | catch (e) { function function (line 181) | function redirectToHome(delayMs) { function function (line 187) | function pollUntilHealthy(options) { function function (line 229) | function showProgressPage() { function function (line 247) | function downloadBackup(url, prefix) { function function (line 274) | function doBackups() { function function (line 295) | function waitForDeviceReboot(onReady) { function function (line 327) | function formatBytes(bytes) { function function (line 334) | function initUploadForm(formId, targetName) { function catch (line 471) | catch (e) {} function function (line 488) | function tryRestoreLabels() { function setTimeout (line 522) | setTimeout(function() { window.location.href = '/'; } FILE: src/libraries/OTGWSerial/OTGWSerial.cpp type PicInfo (line 84) | struct PicInfo function p16f88recover (line 102) | unsigned short p16f88recover(unsigned short addr, unsigned short *code) { function p16f1847recover (line 111) | unsigned short p16f1847recover(unsigned short addr, unsigned short *code) { function OTGWError (line 128) | OTGWError OTGWUpgrade::start(const char *hexfile) { function OTGWError (line 167) | OTGWError OTGWUpgrade::readHexRecord() { function OTGWError (line 215) | OTGWError OTGWUpgrade::readHexFile(const char *hexfile) { function OTGWError (line 769) | OTGWError OTGWUpgrade::finishUpgrade(OTGWError result) { function OTGWFirmware (line 903) | OTGWFirmware OTGWSerial::firmwareType() { function String (line 907) | String OTGWSerial::firmwareToString(OTGWFirmware fw) { function String (line 920) | String OTGWSerial::firmwareToString() { function OTGWProcessor (line 924) | OTGWProcessor OTGWSerial::processor() { function String (line 935) | String OTGWSerial::processorToString(OTGWProcessor pic) { function String (line 946) | String OTGWSerial::processorToString() { function OTGWError (line 1009) | OTGWError OTGWSerial::startUpgrade(const char *hexfile) { function OTGWError (line 1023) | OTGWError OTGWSerial::finishUpgrade(OTGWError result, short errors, shor... FILE: src/libraries/OTGWSerial/OTGWSerial.h type OTGWProcessor (line 31) | typedef enum { type OTGWFirmware (line 39) | typedef enum { type OTGWError (line 47) | typedef enum { type PicInfo (line 62) | struct PicInfo { type OTGWTransferData (line 75) | typedef struct { function class (line 87) | class OTGWUpgrade { function class (line 139) | class OTGWSerial: public HardwareSerial { FILE: test_flash_automation.py function run_command (line 11) | def run_command(cmd, description, timeout=300): function main (line 77) | def main(): FILE: tests/test_dallas_address.cpp function check (line 56) | static void check(const char* name, const char* expected, const char* got) function main (line 64) | int main() FILE: tools/opentherm_v42_spec_audit.py function _read_text (line 84) | def _read_text(path: Path) -> str: function _norm_cell (line 88) | def _norm_cell(cell: str) -> str: function _norm_unit (line 95) | def _norm_unit(unit: str) -> str: function _spec_type_key (line 107) | def _spec_type_key(spec_row: Dict[str, Any]) -> str: function parse_spec_ids (line 140) | def parse_spec_ids(spec_text: str) -> Dict[int, Dict[str, Any]]: function parse_enum_map (line 168) | def parse_enum_map(header_text: str) -> Dict[str, Dict[str, Any]]: function parse_otmap (line 201) | def parse_otmap(header_text: str) -> Dict[int, Dict[str, Any]]: function parse_decode_cases (line 222) | def parse_decode_cases(source_text: str, enum_map: Dict[str, Dict[str, A... function parse_mqttha_entries (line 251) | def parse_mqttha_entries(mqttha_text: str) -> List[Dict[str, Any]]: function detect_legacy_reserved_guard (line 277) | def detect_legacy_reserved_guard(source_text: str) -> Dict[str, bool]: function build_audit (line 287) | def build_audit( function write_csv (line 569) | def write_csv(path: Path, rows: List[Dict[str, Any]]) -> None: function write_json (line 580) | def write_json(path: Path, data: Dict[str, Any]) -> None: function summarize_failures (line 585) | def summarize_failures(findings: Dict[str, List[Dict[str, Any]]]) -> Tup... function _print_counts (line 591) | def _print_counts(counts: Dict[str, int], title: str) -> None: function parse_args (line 597) | def parse_args() -> argparse.Namespace: function main (line 611) | def main() -> int: