// Generated by the proto_extras plugin. DO NOT EDIT!
// source: components/optimization_guide/proto/features/common_quality_data.proto

#include "components/optimization_guide/proto/features/common_quality_data.equal.h"



#include "components/optimization_guide/proto/features/common_quality_data.pb.h"


namespace optimization_guide {
namespace proto {
bool operator==(const FloatArray& lhs, const FloatArray& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.values().size() != rhs.values().size()) return false;
  for (int i = 0; i < lhs.values().size(); ++i) {
    if (lhs.values()[i] != rhs.values()[i]) return false;
  }
  return true;
}

bool operator!=(const FloatArray& lhs, const FloatArray& rhs) {
  return !(lhs == rhs);
}
bool operator==(const Embedding& lhs, const Embedding& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_floats() != rhs.has_floats()) return false;
  if (lhs.has_floats() && lhs.floats() != rhs.floats()) return false;
  return true;
}

bool operator!=(const Embedding& lhs, const Embedding& rhs) {
  return !(lhs == rhs);
}
bool operator==(const AXTreeUpdate& lhs, const AXTreeUpdate& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_tree_data() != rhs.has_tree_data()) return false;
  if (lhs.has_tree_data() && lhs.tree_data() != rhs.tree_data()) return false;
  if (lhs.has_root_id() != rhs.has_root_id()) return false;
  if (lhs.has_root_id() && lhs.root_id() != rhs.root_id()) return false;
  if (lhs.nodes().size() != rhs.nodes().size()) return false;
  for (int i = 0; i < lhs.nodes().size(); ++i) {
    if (lhs.nodes()[i] != rhs.nodes()[i]) return false;
  }
  return true;
}

bool operator!=(const AXTreeUpdate& lhs, const AXTreeUpdate& rhs) {
  return !(lhs == rhs);
}
bool operator==(const AXTreeData& lhs, const AXTreeData& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_doctype() != rhs.has_doctype()) return false;
  if (lhs.has_doctype() && lhs.doctype() != rhs.doctype()) return false;
  if (lhs.has_loaded() != rhs.has_loaded()) return false;
  if (lhs.has_loaded() && lhs.loaded() != rhs.loaded()) return false;
  if (lhs.has_loading_progress() != rhs.has_loading_progress()) return false;
  if (lhs.has_loading_progress() && lhs.loading_progress() != rhs.loading_progress()) return false;
  if (lhs.has_mimetype() != rhs.has_mimetype()) return false;
  if (lhs.has_mimetype() && lhs.mimetype() != rhs.mimetype()) return false;
  if (lhs.has_title() != rhs.has_title()) return false;
  if (lhs.has_title() && lhs.title() != rhs.title()) return false;
  if (lhs.has_focus_id() != rhs.has_focus_id()) return false;
  if (lhs.has_focus_id() && lhs.focus_id() != rhs.focus_id()) return false;
  if (lhs.has_sel_is_backward() != rhs.has_sel_is_backward()) return false;
  if (lhs.has_sel_is_backward() && lhs.sel_is_backward() != rhs.sel_is_backward()) return false;
  if (lhs.has_sel_anchor_object_id() != rhs.has_sel_anchor_object_id()) return false;
  if (lhs.has_sel_anchor_object_id() && lhs.sel_anchor_object_id() != rhs.sel_anchor_object_id()) return false;
  if (lhs.has_sel_anchor_offset() != rhs.has_sel_anchor_offset()) return false;
  if (lhs.has_sel_anchor_offset() && lhs.sel_anchor_offset() != rhs.sel_anchor_offset()) return false;
  if (lhs.has_sel_anchor_affinity() != rhs.has_sel_anchor_affinity()) return false;
  if (lhs.has_sel_anchor_affinity() && lhs.sel_anchor_affinity() != rhs.sel_anchor_affinity()) return false;
  if (lhs.has_sel_focus_object_id() != rhs.has_sel_focus_object_id()) return false;
  if (lhs.has_sel_focus_object_id() && lhs.sel_focus_object_id() != rhs.sel_focus_object_id()) return false;
  if (lhs.has_sel_focus_offset() != rhs.has_sel_focus_offset()) return false;
  if (lhs.has_sel_focus_offset() && lhs.sel_focus_offset() != rhs.sel_focus_offset()) return false;
  if (lhs.has_sel_focus_affinity() != rhs.has_sel_focus_affinity()) return false;
  if (lhs.has_sel_focus_affinity() && lhs.sel_focus_affinity() != rhs.sel_focus_affinity()) return false;
  if (lhs.has_root_scroller_id() != rhs.has_root_scroller_id()) return false;
  if (lhs.has_root_scroller_id() && lhs.root_scroller_id() != rhs.root_scroller_id()) return false;
  if (lhs.metadata().size() != rhs.metadata().size()) return false;
  for (int i = 0; i < lhs.metadata().size(); ++i) {
    if (lhs.metadata()[i] != rhs.metadata()[i]) return false;
  }
  return true;
}

bool operator!=(const AXTreeData& lhs, const AXTreeData& rhs) {
  return !(lhs == rhs);
}
bool operator==(const AXNodeData& lhs, const AXNodeData& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_id() != rhs.has_id()) return false;
  if (lhs.has_id() && lhs.id() != rhs.id()) return false;
  if (lhs.has_role() != rhs.has_role()) return false;
  if (lhs.has_role() && lhs.role() != rhs.role()) return false;
  if (lhs.has_state() != rhs.has_state()) return false;
  if (lhs.has_state() && lhs.state() != rhs.state()) return false;
  if (lhs.has_actions() != rhs.has_actions()) return false;
  if (lhs.has_actions() && lhs.actions() != rhs.actions()) return false;
  if (lhs.attributes().size() != rhs.attributes().size()) return false;
  for (int i = 0; i < lhs.attributes().size(); ++i) {
    if (lhs.attributes()[i] != rhs.attributes()[i]) return false;
  }
  if (lhs.child_ids().size() != rhs.child_ids().size()) return false;
  for (int i = 0; i < lhs.child_ids().size(); ++i) {
    if (lhs.child_ids()[i] != rhs.child_ids()[i]) return false;
  }
  if (lhs.has_relative_bounds() != rhs.has_relative_bounds()) return false;
  if (lhs.has_relative_bounds() && lhs.relative_bounds() != rhs.relative_bounds()) return false;
  return true;
}

bool operator!=(const AXNodeData& lhs, const AXNodeData& rhs) {
  return !(lhs == rhs);
}
bool operator==(const AXAttribute& lhs, const AXAttribute& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.attribute_key_case() != rhs.attribute_key_case()) return false;
  switch (lhs.attribute_key_case()) {
    case AXAttribute::kStringType:
      if (lhs.string_type() != rhs.string_type()) return false;
      break;
    case AXAttribute::kIntType:
      if (lhs.int_type() != rhs.int_type()) return false;
      break;
    case AXAttribute::kFloatType:
      if (lhs.float_type() != rhs.float_type()) return false;
      break;
    case AXAttribute::kBoolType:
      if (lhs.bool_type() != rhs.bool_type()) return false;
      break;
    case AXAttribute::kIntlistType:
      if (lhs.intlist_type() != rhs.intlist_type()) return false;
      break;
    case AXAttribute::kStringlistType:
      if (lhs.stringlist_type() != rhs.stringlist_type()) return false;
      break;
    case AXAttribute::kHtmlAttributeName:
      if (lhs.html_attribute_name() != rhs.html_attribute_name()) return false;
      break;
    case AXAttribute::ATTRIBUTE_KEY_NOT_SET:
      break;
  }
  if (lhs.attribute_value_case() != rhs.attribute_value_case()) return false;
  switch (lhs.attribute_value_case()) {
    case AXAttribute::kStringValue:
      if (lhs.string_value() != rhs.string_value()) return false;
      break;
    case AXAttribute::kIntValue:
      if (lhs.int_value() != rhs.int_value()) return false;
      break;
    case AXAttribute::kFloatValue:
      if (lhs.float_value() != rhs.float_value()) return false;
      break;
    case AXAttribute::kBoolValue:
      if (lhs.bool_value() != rhs.bool_value()) return false;
      break;
    case AXAttribute::kIntListValue:
      if (lhs.int_list_value() != rhs.int_list_value()) return false;
      break;
    case AXAttribute::kStringListValue:
      if (lhs.string_list_value() != rhs.string_list_value()) return false;
      break;
    case AXAttribute::kHtmlAttributeValue:
      if (lhs.html_attribute_value() != rhs.html_attribute_value()) return false;
      break;
    case AXAttribute::ATTRIBUTE_VALUE_NOT_SET:
      break;
  }
  return true;
}

bool operator!=(const AXAttribute& lhs, const AXAttribute& rhs) {
  return !(lhs == rhs);
}
bool operator==(const AXIntList& lhs, const AXIntList& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.value().size() != rhs.value().size()) return false;
  for (int i = 0; i < lhs.value().size(); ++i) {
    if (lhs.value()[i] != rhs.value()[i]) return false;
  }
  return true;
}

bool operator!=(const AXIntList& lhs, const AXIntList& rhs) {
  return !(lhs == rhs);
}
bool operator==(const AXStringList& lhs, const AXStringList& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.value().size() != rhs.value().size()) return false;
  for (int i = 0; i < lhs.value().size(); ++i) {
    if (lhs.value()[i] != rhs.value()[i]) return false;
  }
  return true;
}

bool operator!=(const AXStringList& lhs, const AXStringList& rhs) {
  return !(lhs == rhs);
}
bool operator==(const AXRelativeBounds& lhs, const AXRelativeBounds& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_offset_container_id() != rhs.has_offset_container_id()) return false;
  if (lhs.has_offset_container_id() && lhs.offset_container_id() != rhs.offset_container_id()) return false;
  if (lhs.has_x() != rhs.has_x()) return false;
  if (lhs.has_x() && lhs.x() != rhs.x()) return false;
  if (lhs.has_y() != rhs.has_y()) return false;
  if (lhs.has_y() && lhs.y() != rhs.y()) return false;
  if (lhs.has_width() != rhs.has_width()) return false;
  if (lhs.has_width() && lhs.width() != rhs.width()) return false;
  if (lhs.has_height() != rhs.has_height()) return false;
  if (lhs.has_height() && lhs.height() != rhs.height()) return false;
  if (lhs.transform().size() != rhs.transform().size()) return false;
  for (int i = 0; i < lhs.transform().size(); ++i) {
    if (lhs.transform()[i] != rhs.transform()[i]) return false;
  }
  return true;
}

bool operator!=(const AXRelativeBounds& lhs, const AXRelativeBounds& rhs) {
  return !(lhs == rhs);
}
bool operator==(const PageContext& lhs, const PageContext& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_url() != rhs.has_url()) return false;
  if (lhs.has_url() && lhs.url() != rhs.url()) return false;
  if (lhs.has_title() != rhs.has_title()) return false;
  if (lhs.has_title() && lhs.title() != rhs.title()) return false;
  if (lhs.has_ax_tree_data() != rhs.has_ax_tree_data()) return false;
  if (lhs.has_ax_tree_data() && lhs.ax_tree_data() != rhs.ax_tree_data()) return false;
  if (lhs.has_inner_text() != rhs.has_inner_text()) return false;
  if (lhs.has_inner_text() && lhs.inner_text() != rhs.inner_text()) return false;
  if (lhs.has_inner_text_offset() != rhs.has_inner_text_offset()) return false;
  if (lhs.has_inner_text_offset() && lhs.inner_text_offset() != rhs.inner_text_offset()) return false;
  if (lhs.page_passages().size() != rhs.page_passages().size()) return false;
  for (int i = 0; i < lhs.page_passages().size(); ++i) {
    if (lhs.page_passages()[i] != rhs.page_passages()[i]) return false;
  }
  if (lhs.has_tab_screenshot() != rhs.has_tab_screenshot()) return false;
  if (lhs.has_tab_screenshot() && lhs.tab_screenshot() != rhs.tab_screenshot()) return false;
  if (lhs.has_pdf_data() != rhs.has_pdf_data()) return false;
  if (lhs.has_pdf_data() && lhs.pdf_data() != rhs.pdf_data()) return false;
  if (lhs.has_annotated_page_content() != rhs.has_annotated_page_content()) return false;
  if (lhs.has_annotated_page_content() && lhs.annotated_page_content() != rhs.annotated_page_content()) return false;
  return true;
}

bool operator!=(const PageContext& lhs, const PageContext& rhs) {
  return !(lhs == rhs);
}
bool operator==(const AnnotatedPageContent& lhs, const AnnotatedPageContent& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_version() != rhs.has_version()) return false;
  if (lhs.has_version() && lhs.version() != rhs.version()) return false;
  if (lhs.has_mode() != rhs.has_mode()) return false;
  if (lhs.has_mode() && lhs.mode() != rhs.mode()) return false;
  if (lhs.has_root_node() != rhs.has_root_node()) return false;
  if (lhs.has_root_node() && lhs.root_node() != rhs.root_node()) return false;
  if (lhs.has_main_frame_data() != rhs.has_main_frame_data()) return false;
  if (lhs.has_main_frame_data() && lhs.main_frame_data() != rhs.main_frame_data()) return false;
  if (lhs.has_page_interaction_info() != rhs.has_page_interaction_info()) return false;
  if (lhs.has_page_interaction_info() && lhs.page_interaction_info() != rhs.page_interaction_info()) return false;
  if (lhs.has_viewport_geometry() != rhs.has_viewport_geometry()) return false;
  if (lhs.has_viewport_geometry() && lhs.viewport_geometry() != rhs.viewport_geometry()) return false;
  if (lhs.has_tab_id() != rhs.has_tab_id()) return false;
  if (lhs.has_tab_id() && lhs.tab_id() != rhs.tab_id()) return false;
  if (lhs.has_popup_window() != rhs.has_popup_window()) return false;
  if (lhs.has_popup_window() && lhs.popup_window() != rhs.popup_window()) return false;
  if (lhs.has_profile_information() != rhs.has_profile_information()) return false;
  if (lhs.has_profile_information() && lhs.profile_information() != rhs.profile_information()) return false;
  if (lhs.has_gemini_in_chrome_page_metadata() != rhs.has_gemini_in_chrome_page_metadata()) return false;
  if (lhs.has_gemini_in_chrome_page_metadata() && lhs.gemini_in_chrome_page_metadata() != rhs.gemini_in_chrome_page_metadata()) return false;
  return true;
}

bool operator!=(const AnnotatedPageContent& lhs, const AnnotatedPageContent& rhs) {
  return !(lhs == rhs);
}
bool operator==(const ContentNode& lhs, const ContentNode& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.children_nodes().size() != rhs.children_nodes().size()) return false;
  for (int i = 0; i < lhs.children_nodes().size(); ++i) {
    if (lhs.children_nodes()[i] != rhs.children_nodes()[i]) return false;
  }
  if (lhs.has_content_attributes() != rhs.has_content_attributes()) return false;
  if (lhs.has_content_attributes() && lhs.content_attributes() != rhs.content_attributes()) return false;
  return true;
}

bool operator!=(const ContentNode& lhs, const ContentNode& rhs) {
  return !(lhs == rhs);
}
bool operator==(const ContentAttributes& lhs, const ContentAttributes& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.content_data_case() != rhs.content_data_case()) return false;
  switch (lhs.content_data_case()) {
    case ContentAttributes::kTextData:
      if (lhs.text_data() != rhs.text_data()) return false;
      break;
    case ContentAttributes::kImageData:
      if (lhs.image_data() != rhs.image_data()) return false;
      break;
    case ContentAttributes::kSvgRootData:
      if (lhs.svg_root_data() != rhs.svg_root_data()) return false;
      break;
    case ContentAttributes::kCanvasData:
      if (lhs.canvas_data() != rhs.canvas_data()) return false;
      break;
    case ContentAttributes::kVideoData:
      if (lhs.video_data() != rhs.video_data()) return false;
      break;
    case ContentAttributes::kAnchorData:
      if (lhs.anchor_data() != rhs.anchor_data()) return false;
      break;
    case ContentAttributes::kFormData:
      if (lhs.form_data() != rhs.form_data()) return false;
      break;
    case ContentAttributes::kFormControlData:
      if (lhs.form_control_data() != rhs.form_control_data()) return false;
      break;
    case ContentAttributes::kTableData:
      if (lhs.table_data() != rhs.table_data()) return false;
      break;
    case ContentAttributes::kIframeData:
      if (lhs.iframe_data() != rhs.iframe_data()) return false;
      break;
    case ContentAttributes::kTableRowData:
      if (lhs.table_row_data() != rhs.table_row_data()) return false;
      break;
    case ContentAttributes::CONTENT_DATA_NOT_SET:
      break;
  }
  if (lhs.has_common_ancestor_dom_node_id() != rhs.has_common_ancestor_dom_node_id()) return false;
  if (lhs.has_common_ancestor_dom_node_id() && lhs.common_ancestor_dom_node_id() != rhs.common_ancestor_dom_node_id()) return false;
  if (lhs.has_attribute_type() != rhs.has_attribute_type()) return false;
  if (lhs.has_attribute_type() && lhs.attribute_type() != rhs.attribute_type()) return false;
  if (lhs.has_geometry() != rhs.has_geometry()) return false;
  if (lhs.has_geometry() && lhs.geometry() != rhs.geometry()) return false;
  if (lhs.has_interaction_info() != rhs.has_interaction_info()) return false;
  if (lhs.has_interaction_info() && lhs.interaction_info() != rhs.interaction_info()) return false;
  if (lhs.annotated_roles().size() != rhs.annotated_roles().size()) return false;
  for (int i = 0; i < lhs.annotated_roles().size(); ++i) {
    if (lhs.annotated_roles()[i] != rhs.annotated_roles()[i]) return false;
  }
  if (lhs.has_label() != rhs.has_label()) return false;
  if (lhs.has_label() && lhs.label() != rhs.label()) return false;
  if (lhs.has_label_for_dom_node_id() != rhs.has_label_for_dom_node_id()) return false;
  if (lhs.has_label_for_dom_node_id() && lhs.label_for_dom_node_id() != rhs.label_for_dom_node_id()) return false;
  if (lhs.has_aria_role() != rhs.has_aria_role()) return false;
  if (lhs.has_aria_role() && lhs.aria_role() != rhs.aria_role()) return false;
  if (lhs.has_is_ad_related() != rhs.has_is_ad_related()) return false;
  if (lhs.has_is_ad_related() && lhs.is_ad_related() != rhs.is_ad_related()) return false;
  if (lhs.has_redaction_decision() != rhs.has_redaction_decision()) return false;
  if (lhs.has_redaction_decision() && lhs.redaction_decision() != rhs.redaction_decision()) return false;
  return true;
}

bool operator!=(const ContentAttributes& lhs, const ContentAttributes& rhs) {
  return !(lhs == rhs);
}
bool operator==(const Geometry& lhs, const Geometry& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_outer_bounding_box() != rhs.has_outer_bounding_box()) return false;
  if (lhs.has_outer_bounding_box() && lhs.outer_bounding_box() != rhs.outer_bounding_box()) return false;
  if (lhs.has_visible_bounding_box() != rhs.has_visible_bounding_box()) return false;
  if (lhs.has_visible_bounding_box() && lhs.visible_bounding_box() != rhs.visible_bounding_box()) return false;
  if (lhs.fragment_visible_bounding_boxes().size() != rhs.fragment_visible_bounding_boxes().size()) return false;
  for (int i = 0; i < lhs.fragment_visible_bounding_boxes().size(); ++i) {
    if (lhs.fragment_visible_bounding_boxes()[i] != rhs.fragment_visible_bounding_boxes()[i]) return false;
  }
  if (lhs.has_is_fixed_or_sticky_position() != rhs.has_is_fixed_or_sticky_position()) return false;
  if (lhs.has_is_fixed_or_sticky_position() && lhs.is_fixed_or_sticky_position() != rhs.is_fixed_or_sticky_position()) return false;
  if (lhs.has_css_position() != rhs.has_css_position()) return false;
  if (lhs.has_css_position() && lhs.css_position() != rhs.css_position()) return false;
  return true;
}

bool operator!=(const Geometry& lhs, const Geometry& rhs) {
  return !(lhs == rhs);
}
bool operator==(const BoundingRect& lhs, const BoundingRect& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_x() != rhs.has_x()) return false;
  if (lhs.has_x() && lhs.x() != rhs.x()) return false;
  if (lhs.has_y() != rhs.has_y()) return false;
  if (lhs.has_y() && lhs.y() != rhs.y()) return false;
  if (lhs.has_width() != rhs.has_width()) return false;
  if (lhs.has_width() && lhs.width() != rhs.width()) return false;
  if (lhs.has_height() != rhs.has_height()) return false;
  if (lhs.has_height() && lhs.height() != rhs.height()) return false;
  if (lhs.has_is_screenshot_relative() != rhs.has_is_screenshot_relative()) return false;
  if (lhs.has_is_screenshot_relative() && lhs.is_screenshot_relative() != rhs.is_screenshot_relative()) return false;
  return true;
}

bool operator!=(const BoundingRect& lhs, const BoundingRect& rhs) {
  return !(lhs == rhs);
}
bool operator==(const InteractionInfo& lhs, const InteractionInfo& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_scroller_info() != rhs.has_scroller_info()) return false;
  if (lhs.has_scroller_info() && lhs.scroller_info() != rhs.scroller_info()) return false;
  if (lhs.has_is_selectable() != rhs.has_is_selectable()) return false;
  if (lhs.has_is_selectable() && lhs.is_selectable() != rhs.is_selectable()) return false;
  if (lhs.has_is_editable() != rhs.has_is_editable()) return false;
  if (lhs.has_is_editable() && lhs.is_editable() != rhs.is_editable()) return false;
  if (lhs.has_can_resize_horizontal() != rhs.has_can_resize_horizontal()) return false;
  if (lhs.has_can_resize_horizontal() && lhs.can_resize_horizontal() != rhs.can_resize_horizontal()) return false;
  if (lhs.has_can_resize_vertical() != rhs.has_can_resize_vertical()) return false;
  if (lhs.has_can_resize_vertical() && lhs.can_resize_vertical() != rhs.can_resize_vertical()) return false;
  if (lhs.has_is_focusable() != rhs.has_is_focusable()) return false;
  if (lhs.has_is_focusable() && lhs.is_focusable() != rhs.is_focusable()) return false;
  if (lhs.has_is_draggable() != rhs.has_is_draggable()) return false;
  if (lhs.has_is_draggable() && lhs.is_draggable() != rhs.is_draggable()) return false;
  if (lhs.has_is_clickable() != rhs.has_is_clickable()) return false;
  if (lhs.has_is_clickable() && lhs.is_clickable() != rhs.is_clickable()) return false;
  if (lhs.has_document_scoped_z_order() != rhs.has_document_scoped_z_order()) return false;
  if (lhs.has_document_scoped_z_order() && lhs.document_scoped_z_order() != rhs.document_scoped_z_order()) return false;
  if (lhs.debug_clickability_reasons().size() != rhs.debug_clickability_reasons().size()) return false;
  for (int i = 0; i < lhs.debug_clickability_reasons().size(); ++i) {
    if (lhs.debug_clickability_reasons()[i] != rhs.debug_clickability_reasons()[i]) return false;
  }
  if (lhs.clickability_reasons().size() != rhs.clickability_reasons().size()) return false;
  for (int i = 0; i < lhs.clickability_reasons().size(); ++i) {
    if (lhs.clickability_reasons()[i] != rhs.clickability_reasons()[i]) return false;
  }
  if (lhs.has_is_disabled() != rhs.has_is_disabled()) return false;
  if (lhs.has_is_disabled() && lhs.is_disabled() != rhs.is_disabled()) return false;
  if (lhs.interaction_disabled_reasons().size() != rhs.interaction_disabled_reasons().size()) return false;
  for (int i = 0; i < lhs.interaction_disabled_reasons().size(); ++i) {
    if (lhs.interaction_disabled_reasons()[i] != rhs.interaction_disabled_reasons()[i]) return false;
  }
  if (lhs.has_is_tabbable() != rhs.has_is_tabbable()) return false;
  if (lhs.has_is_tabbable() && lhs.is_tabbable() != rhs.is_tabbable()) return false;
  if (lhs.has_has_aria_activedescendant() != rhs.has_has_aria_activedescendant()) return false;
  if (lhs.has_has_aria_activedescendant() && lhs.has_aria_activedescendant() != rhs.has_aria_activedescendant()) return false;
  if (lhs.aria_action_target_node_ids().size() != rhs.aria_action_target_node_ids().size()) return false;
  for (int i = 0; i < lhs.aria_action_target_node_ids().size(); ++i) {
    if (lhs.aria_action_target_node_ids()[i] != rhs.aria_action_target_node_ids()[i]) return false;
  }
  return true;
}

bool operator!=(const InteractionInfo& lhs, const InteractionInfo& rhs) {
  return !(lhs == rhs);
}
bool operator==(const ScrollerInfo& lhs, const ScrollerInfo& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_scrolling_bounds() != rhs.has_scrolling_bounds()) return false;
  if (lhs.has_scrolling_bounds() && lhs.scrolling_bounds() != rhs.scrolling_bounds()) return false;
  if (lhs.has_visible_area() != rhs.has_visible_area()) return false;
  if (lhs.has_visible_area() && lhs.visible_area() != rhs.visible_area()) return false;
  if (lhs.has_user_scrollable_horizontal() != rhs.has_user_scrollable_horizontal()) return false;
  if (lhs.has_user_scrollable_horizontal() && lhs.user_scrollable_horizontal() != rhs.user_scrollable_horizontal()) return false;
  if (lhs.has_user_scrollable_vertical() != rhs.has_user_scrollable_vertical()) return false;
  if (lhs.has_user_scrollable_vertical() && lhs.user_scrollable_vertical() != rhs.user_scrollable_vertical()) return false;
  return true;
}

bool operator!=(const ScrollerInfo& lhs, const ScrollerInfo& rhs) {
  return !(lhs == rhs);
}
bool operator==(const BoundingSize& lhs, const BoundingSize& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_width() != rhs.has_width()) return false;
  if (lhs.has_width() && lhs.width() != rhs.width()) return false;
  if (lhs.has_height() != rhs.has_height()) return false;
  if (lhs.has_height() && lhs.height() != rhs.height()) return false;
  return true;
}

bool operator!=(const BoundingSize& lhs, const BoundingSize& rhs) {
  return !(lhs == rhs);
}
bool operator==(const TextInfo& lhs, const TextInfo& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_text_content() != rhs.has_text_content()) return false;
  if (lhs.has_text_content() && lhs.text_content() != rhs.text_content()) return false;
  if (lhs.has_text_style() != rhs.has_text_style()) return false;
  if (lhs.has_text_style() && lhs.text_style() != rhs.text_style()) return false;
  return true;
}

bool operator!=(const TextInfo& lhs, const TextInfo& rhs) {
  return !(lhs == rhs);
}
bool operator==(const TextStyle& lhs, const TextStyle& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_text_size() != rhs.has_text_size()) return false;
  if (lhs.has_text_size() && lhs.text_size() != rhs.text_size()) return false;
  if (lhs.has_has_emphasis() != rhs.has_has_emphasis()) return false;
  if (lhs.has_has_emphasis() && lhs.has_emphasis() != rhs.has_emphasis()) return false;
  if (lhs.has_color() != rhs.has_color()) return false;
  if (lhs.has_color() && lhs.color() != rhs.color()) return false;
  return true;
}

bool operator!=(const TextStyle& lhs, const TextStyle& rhs) {
  return !(lhs == rhs);
}
bool operator==(const ImageInfo& lhs, const ImageInfo& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_image_caption() != rhs.has_image_caption()) return false;
  if (lhs.has_image_caption() && lhs.image_caption() != rhs.image_caption()) return false;
  if (lhs.has_security_origin() != rhs.has_security_origin()) return false;
  if (lhs.has_security_origin() && lhs.security_origin() != rhs.security_origin()) return false;
  if (lhs.has_url() != rhs.has_url()) return false;
  if (lhs.has_url() && lhs.url() != rhs.url()) return false;
  return true;
}

bool operator!=(const ImageInfo& lhs, const ImageInfo& rhs) {
  return !(lhs == rhs);
}
bool operator==(const SecurityOrigin& lhs, const SecurityOrigin& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_opaque() != rhs.has_opaque()) return false;
  if (lhs.has_opaque() && lhs.opaque() != rhs.opaque()) return false;
  if (lhs.has_value() != rhs.has_value()) return false;
  if (lhs.has_value() && lhs.value() != rhs.value()) return false;
  return true;
}

bool operator!=(const SecurityOrigin& lhs, const SecurityOrigin& rhs) {
  return !(lhs == rhs);
}
bool operator==(const SVGRootData& lhs, const SVGRootData& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_inner_text() != rhs.has_inner_text()) return false;
  if (lhs.has_inner_text() && lhs.inner_text() != rhs.inner_text()) return false;
  return true;
}

bool operator!=(const SVGRootData& lhs, const SVGRootData& rhs) {
  return !(lhs == rhs);
}
bool operator==(const CanvasData& lhs, const CanvasData& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_layout_width() != rhs.has_layout_width()) return false;
  if (lhs.has_layout_width() && lhs.layout_width() != rhs.layout_width()) return false;
  if (lhs.has_layout_height() != rhs.has_layout_height()) return false;
  if (lhs.has_layout_height() && lhs.layout_height() != rhs.layout_height()) return false;
  return true;
}

bool operator!=(const CanvasData& lhs, const CanvasData& rhs) {
  return !(lhs == rhs);
}
bool operator==(const VideoData& lhs, const VideoData& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_url() != rhs.has_url()) return false;
  if (lhs.has_url() && lhs.url() != rhs.url()) return false;
  if (lhs.has_security_origin() != rhs.has_security_origin()) return false;
  if (lhs.has_security_origin() && lhs.security_origin() != rhs.security_origin()) return false;
  return true;
}

bool operator!=(const VideoData& lhs, const VideoData& rhs) {
  return !(lhs == rhs);
}
bool operator==(const AnchorData& lhs, const AnchorData& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_url() != rhs.has_url()) return false;
  if (lhs.has_url() && lhs.url() != rhs.url()) return false;
  if (lhs.rel().size() != rhs.rel().size()) return false;
  for (int i = 0; i < lhs.rel().size(); ++i) {
    if (lhs.rel()[i] != rhs.rel()[i]) return false;
  }
  return true;
}

bool operator!=(const AnchorData& lhs, const AnchorData& rhs) {
  return !(lhs == rhs);
}
bool operator==(const FormInfo& lhs, const FormInfo& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_form_name() != rhs.has_form_name()) return false;
  if (lhs.has_form_name() && lhs.form_name() != rhs.form_name()) return false;
  if (lhs.has_action_url() != rhs.has_action_url()) return false;
  if (lhs.has_action_url() && lhs.action_url() != rhs.action_url()) return false;
  return true;
}

bool operator!=(const FormInfo& lhs, const FormInfo& rhs) {
  return !(lhs == rhs);
}
bool operator==(const FormControlData& lhs, const FormControlData& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_field_name() != rhs.has_field_name()) return false;
  if (lhs.has_field_name() && lhs.field_name() != rhs.field_name()) return false;
  if (lhs.has_field_value() != rhs.has_field_value()) return false;
  if (lhs.has_field_value() && lhs.field_value() != rhs.field_value()) return false;
  if (lhs.has_form_control_type() != rhs.has_form_control_type()) return false;
  if (lhs.has_form_control_type() && lhs.form_control_type() != rhs.form_control_type()) return false;
  if (lhs.select_options().size() != rhs.select_options().size()) return false;
  for (int i = 0; i < lhs.select_options().size(); ++i) {
    if (lhs.select_options()[i] != rhs.select_options()[i]) return false;
  }
  if (lhs.has_placeholder() != rhs.has_placeholder()) return false;
  if (lhs.has_placeholder() && lhs.placeholder() != rhs.placeholder()) return false;
  if (lhs.has_is_checked() != rhs.has_is_checked()) return false;
  if (lhs.has_is_checked() && lhs.is_checked() != rhs.is_checked()) return false;
  if (lhs.has_is_required() != rhs.has_is_required()) return false;
  if (lhs.has_is_required() && lhs.is_required() != rhs.is_required()) return false;
  if (lhs.has_redaction_decision() != rhs.has_redaction_decision()) return false;
  if (lhs.has_redaction_decision() && lhs.redaction_decision() != rhs.redaction_decision()) return false;
  if (lhs.coarse_autofill_field_type().size() != rhs.coarse_autofill_field_type().size()) return false;
  for (int i = 0; i < lhs.coarse_autofill_field_type().size(); ++i) {
    if (lhs.coarse_autofill_field_type()[i] != rhs.coarse_autofill_field_type()[i]) return false;
  }
  if (lhs.has_autofill_section_id() != rhs.has_autofill_section_id()) return false;
  if (lhs.has_autofill_section_id() && lhs.autofill_section_id() != rhs.autofill_section_id()) return false;
  if (lhs.has_is_readonly() != rhs.has_is_readonly()) return false;
  if (lhs.has_is_readonly() && lhs.is_readonly() != rhs.is_readonly()) return false;
  return true;
}

bool operator!=(const FormControlData& lhs, const FormControlData& rhs) {
  return !(lhs == rhs);
}
bool operator==(const SelectOption& lhs, const SelectOption& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_value() != rhs.has_value()) return false;
  if (lhs.has_value() && lhs.value() != rhs.value()) return false;
  if (lhs.has_text() != rhs.has_text()) return false;
  if (lhs.has_text() && lhs.text() != rhs.text()) return false;
  if (lhs.has_is_selected() != rhs.has_is_selected()) return false;
  if (lhs.has_is_selected() && lhs.is_selected() != rhs.is_selected()) return false;
  if (lhs.has_is_disabled() != rhs.has_is_disabled()) return false;
  if (lhs.has_is_disabled() && lhs.is_disabled() != rhs.is_disabled()) return false;
  return true;
}

bool operator!=(const SelectOption& lhs, const SelectOption& rhs) {
  return !(lhs == rhs);
}
bool operator==(const TableData& lhs, const TableData& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_table_name() != rhs.has_table_name()) return false;
  if (lhs.has_table_name() && lhs.table_name() != rhs.table_name()) return false;
  return true;
}

bool operator!=(const TableData& lhs, const TableData& rhs) {
  return !(lhs == rhs);
}
bool operator==(const IframeData& lhs, const IframeData& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.data_case() != rhs.data_case()) return false;
  switch (lhs.data_case()) {
    case IframeData::kFrameData:
      if (lhs.frame_data() != rhs.frame_data()) return false;
      break;
    case IframeData::kRedactedFrameMetadata:
      if (lhs.redacted_frame_metadata() != rhs.redacted_frame_metadata()) return false;
      break;
    case IframeData::DATA_NOT_SET:
      break;
  }
  return true;
}

bool operator!=(const IframeData& lhs, const IframeData& rhs) {
  return !(lhs == rhs);
}
bool operator==(const IframeData_RedactedFrameMetadata& lhs, const IframeData_RedactedFrameMetadata& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_reason() != rhs.has_reason()) return false;
  if (lhs.has_reason() && lhs.reason() != rhs.reason()) return false;
  return true;
}

bool operator!=(const IframeData_RedactedFrameMetadata& lhs, const IframeData_RedactedFrameMetadata& rhs) {
  return !(lhs == rhs);
}
bool operator==(const FrameData& lhs, const FrameData& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_security_origin() != rhs.has_security_origin()) return false;
  if (lhs.has_security_origin() && lhs.security_origin() != rhs.security_origin()) return false;
  if (lhs.has_frame_interaction_info() != rhs.has_frame_interaction_info()) return false;
  if (lhs.has_frame_interaction_info() && lhs.frame_interaction_info() != rhs.frame_interaction_info()) return false;
  if (lhs.has_document_identifier() != rhs.has_document_identifier()) return false;
  if (lhs.has_document_identifier() && lhs.document_identifier() != rhs.document_identifier()) return false;
  if (lhs.has_url() != rhs.has_url()) return false;
  if (lhs.has_url() && lhs.url() != rhs.url()) return false;
  if (lhs.has_title() != rhs.has_title()) return false;
  if (lhs.has_title() && lhs.title() != rhs.title()) return false;
  if (lhs.has_paid_content_metadata() != rhs.has_paid_content_metadata()) return false;
  if (lhs.has_paid_content_metadata() && lhs.paid_content_metadata() != rhs.paid_content_metadata()) return false;
  if (lhs.has_media_data() != rhs.has_media_data()) return false;
  if (lhs.has_media_data() && lhs.media_data() != rhs.media_data()) return false;
  if (lhs.script_tools().size() != rhs.script_tools().size()) return false;
  for (int i = 0; i < lhs.script_tools().size(); ++i) {
    if (lhs.script_tools()[i] != rhs.script_tools()[i]) return false;
  }
  if (lhs.script_tool_results().size() != rhs.script_tool_results().size()) return false;
  for (int i = 0; i < lhs.script_tool_results().size(); ++i) {
    if (lhs.script_tool_results()[i] != rhs.script_tool_results()[i]) return false;
  }
  if (lhs.has_default_line_height_px() != rhs.has_default_line_height_px()) return false;
  if (lhs.has_default_line_height_px() && lhs.default_line_height_px() != rhs.default_line_height_px()) return false;
  return true;
}

bool operator!=(const FrameData& lhs, const FrameData& rhs) {
  return !(lhs == rhs);
}
bool operator==(const FrameInteractionInfo& lhs, const FrameInteractionInfo& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_selection() != rhs.has_selection()) return false;
  if (lhs.has_selection() && lhs.selection() != rhs.selection()) return false;
  if (lhs.has_focused_node_id() != rhs.has_focused_node_id()) return false;
  if (lhs.has_focused_node_id() && lhs.focused_node_id() != rhs.focused_node_id()) return false;
  if (lhs.has_accessibility_focused_node_id() != rhs.has_accessibility_focused_node_id()) return false;
  if (lhs.has_accessibility_focused_node_id() && lhs.accessibility_focused_node_id() != rhs.accessibility_focused_node_id()) return false;
  return true;
}

bool operator!=(const FrameInteractionInfo& lhs, const FrameInteractionInfo& rhs) {
  return !(lhs == rhs);
}
bool operator==(const Selection& lhs, const Selection& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_start_node_id() != rhs.has_start_node_id()) return false;
  if (lhs.has_start_node_id() && lhs.start_node_id() != rhs.start_node_id()) return false;
  if (lhs.has_start_offset() != rhs.has_start_offset()) return false;
  if (lhs.has_start_offset() && lhs.start_offset() != rhs.start_offset()) return false;
  if (lhs.has_end_node_id() != rhs.has_end_node_id()) return false;
  if (lhs.has_end_node_id() && lhs.end_node_id() != rhs.end_node_id()) return false;
  if (lhs.has_end_offset() != rhs.has_end_offset()) return false;
  if (lhs.has_end_offset() && lhs.end_offset() != rhs.end_offset()) return false;
  if (lhs.has_selected_text() != rhs.has_selected_text()) return false;
  if (lhs.has_selected_text() && lhs.selected_text() != rhs.selected_text()) return false;
  return true;
}

bool operator!=(const Selection& lhs, const Selection& rhs) {
  return !(lhs == rhs);
}
bool operator==(const DocumentIdentifier& lhs, const DocumentIdentifier& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_serialized_token() != rhs.has_serialized_token()) return false;
  if (lhs.has_serialized_token() && lhs.serialized_token() != rhs.serialized_token()) return false;
  return true;
}

bool operator!=(const DocumentIdentifier& lhs, const DocumentIdentifier& rhs) {
  return !(lhs == rhs);
}
bool operator==(const PaidContentMetadata& lhs, const PaidContentMetadata& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_contains_paid_content() != rhs.has_contains_paid_content()) return false;
  if (lhs.has_contains_paid_content() && lhs.contains_paid_content() != rhs.contains_paid_content()) return false;
  return true;
}

bool operator!=(const PaidContentMetadata& lhs, const PaidContentMetadata& rhs) {
  return !(lhs == rhs);
}
bool operator==(const MediaData& lhs, const MediaData& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_media_data_type() != rhs.has_media_data_type()) return false;
  if (lhs.has_media_data_type() && lhs.media_data_type() != rhs.media_data_type()) return false;
  if (lhs.transcripts().size() != rhs.transcripts().size()) return false;
  for (int i = 0; i < lhs.transcripts().size(); ++i) {
    if (lhs.transcripts()[i] != rhs.transcripts()[i]) return false;
  }
  if (lhs.has_duration_milliseconds() != rhs.has_duration_milliseconds()) return false;
  if (lhs.has_duration_milliseconds() && lhs.duration_milliseconds() != rhs.duration_milliseconds()) return false;
  if (lhs.has_current_position_milliseconds() != rhs.has_current_position_milliseconds()) return false;
  if (lhs.has_current_position_milliseconds() && lhs.current_position_milliseconds() != rhs.current_position_milliseconds()) return false;
  if (lhs.has_is_playing() != rhs.has_is_playing()) return false;
  if (lhs.has_is_playing() && lhs.is_playing() != rhs.is_playing()) return false;
  if (lhs.has_title() != rhs.has_title()) return false;
  if (lhs.has_title() && lhs.title() != rhs.title()) return false;
  if (lhs.has_artist() != rhs.has_artist()) return false;
  if (lhs.has_artist() && lhs.artist() != rhs.artist()) return false;
  if (lhs.has_album() != rhs.has_album()) return false;
  if (lhs.has_album() && lhs.album() != rhs.album()) return false;
  return true;
}

bool operator!=(const MediaData& lhs, const MediaData& rhs) {
  return !(lhs == rhs);
}
bool operator==(const MediaTranscript& lhs, const MediaTranscript& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_text() != rhs.has_text()) return false;
  if (lhs.has_text() && lhs.text() != rhs.text()) return false;
  if (lhs.has_start_timestamp_milliseconds() != rhs.has_start_timestamp_milliseconds()) return false;
  if (lhs.has_start_timestamp_milliseconds() && lhs.start_timestamp_milliseconds() != rhs.start_timestamp_milliseconds()) return false;
  return true;
}

bool operator!=(const MediaTranscript& lhs, const MediaTranscript& rhs) {
  return !(lhs == rhs);
}
bool operator==(const ScriptTool& lhs, const ScriptTool& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_name() != rhs.has_name()) return false;
  if (lhs.has_name() && lhs.name() != rhs.name()) return false;
  if (lhs.has_description() != rhs.has_description()) return false;
  if (lhs.has_description() && lhs.description() != rhs.description()) return false;
  if (lhs.has_input_schema() != rhs.has_input_schema()) return false;
  if (lhs.has_input_schema() && lhs.input_schema() != rhs.input_schema()) return false;
  if (lhs.has_annotations() != rhs.has_annotations()) return false;
  if (lhs.has_annotations() && lhs.annotations() != rhs.annotations()) return false;
  return true;
}

bool operator!=(const ScriptTool& lhs, const ScriptTool& rhs) {
  return !(lhs == rhs);
}
bool operator==(const ScriptToolAnnotations& lhs, const ScriptToolAnnotations& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_read_only() != rhs.has_read_only()) return false;
  if (lhs.has_read_only() && lhs.read_only() != rhs.read_only()) return false;
  return true;
}

bool operator!=(const ScriptToolAnnotations& lhs, const ScriptToolAnnotations& rhs) {
  return !(lhs == rhs);
}
bool operator==(const ScriptToolResult& lhs, const ScriptToolResult& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_index_of_script_tool_action() != rhs.has_index_of_script_tool_action()) return false;
  if (lhs.has_index_of_script_tool_action() && lhs.index_of_script_tool_action() != rhs.index_of_script_tool_action()) return false;
  if (lhs.has_result() != rhs.has_result()) return false;
  if (lhs.has_result() && lhs.result() != rhs.result()) return false;
  if (lhs.has_tool_name() != rhs.has_tool_name()) return false;
  if (lhs.has_tool_name() && lhs.tool_name() != rhs.tool_name()) return false;
  if (lhs.has_input_arguments() != rhs.has_input_arguments()) return false;
  if (lhs.has_input_arguments() && lhs.input_arguments() != rhs.input_arguments()) return false;
  if (lhs.has_tool() != rhs.has_tool()) return false;
  if (lhs.has_tool() && lhs.tool() != rhs.tool()) return false;
  return true;
}

bool operator!=(const ScriptToolResult& lhs, const ScriptToolResult& rhs) {
  return !(lhs == rhs);
}
bool operator==(const TableRowData& lhs, const TableRowData& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_type() != rhs.has_type()) return false;
  if (lhs.has_type() && lhs.type() != rhs.type()) return false;
  return true;
}

bool operator!=(const TableRowData& lhs, const TableRowData& rhs) {
  return !(lhs == rhs);
}
bool operator==(const PageInteractionInfo& lhs, const PageInteractionInfo& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_focused_node_id() != rhs.has_focused_node_id()) return false;
  if (lhs.has_focused_node_id() && lhs.focused_node_id() != rhs.focused_node_id()) return false;
  if (lhs.has_accessibility_focused_node_id() != rhs.has_accessibility_focused_node_id()) return false;
  if (lhs.has_accessibility_focused_node_id() && lhs.accessibility_focused_node_id() != rhs.accessibility_focused_node_id()) return false;
  if (lhs.has_mouse_position() != rhs.has_mouse_position()) return false;
  if (lhs.has_mouse_position() && lhs.mouse_position() != rhs.mouse_position()) return false;
  if (lhs.has_focused_frame() != rhs.has_focused_frame()) return false;
  if (lhs.has_focused_frame() && lhs.focused_frame() != rhs.focused_frame()) return false;
  if (lhs.has_accessibility_focused_frame() != rhs.has_accessibility_focused_frame()) return false;
  if (lhs.has_accessibility_focused_frame() && lhs.accessibility_focused_frame() != rhs.accessibility_focused_frame()) return false;
  return true;
}

bool operator!=(const PageInteractionInfo& lhs, const PageInteractionInfo& rhs) {
  return !(lhs == rhs);
}
bool operator==(const Point& lhs, const Point& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_x() != rhs.has_x()) return false;
  if (lhs.has_x() && lhs.x() != rhs.x()) return false;
  if (lhs.has_y() != rhs.has_y()) return false;
  if (lhs.has_y() && lhs.y() != rhs.y()) return false;
  return true;
}

bool operator!=(const Point& lhs, const Point& rhs) {
  return !(lhs == rhs);
}
bool operator==(const PopupWindow& lhs, const PopupWindow& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_root_node() != rhs.has_root_node()) return false;
  if (lhs.has_root_node() && lhs.root_node() != rhs.root_node()) return false;
  if (lhs.has_visible_bounding_box() != rhs.has_visible_bounding_box()) return false;
  if (lhs.has_visible_bounding_box() && lhs.visible_bounding_box() != rhs.visible_bounding_box()) return false;
  if (lhs.has_opener_document_id() != rhs.has_opener_document_id()) return false;
  if (lhs.has_opener_document_id() && lhs.opener_document_id() != rhs.opener_document_id()) return false;
  if (lhs.has_opener_common_ancestor_dom_node_id() != rhs.has_opener_common_ancestor_dom_node_id()) return false;
  if (lhs.has_opener_common_ancestor_dom_node_id() && lhs.opener_common_ancestor_dom_node_id() != rhs.opener_common_ancestor_dom_node_id()) return false;
  return true;
}

bool operator!=(const PopupWindow& lhs, const PopupWindow& rhs) {
  return !(lhs == rhs);
}
bool operator==(const ProfileInformation& lhs, const ProfileInformation& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_autofill_information() != rhs.has_autofill_information()) return false;
  if (lhs.has_autofill_information() && lhs.autofill_information() != rhs.autofill_information()) return false;
  return true;
}

bool operator!=(const ProfileInformation& lhs, const ProfileInformation& rhs) {
  return !(lhs == rhs);
}
bool operator==(const AutofillInformation& lhs, const AutofillInformation& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.fillable_data().size() != rhs.fillable_data().size()) return false;
  for (int i = 0; i < lhs.fillable_data().size(); ++i) {
    if (lhs.fillable_data()[i] != rhs.fillable_data()[i]) return false;
  }
  return true;
}

bool operator!=(const AutofillInformation& lhs, const AutofillInformation& rhs) {
  return !(lhs == rhs);
}
bool operator==(const GeminiInChromePageMetadata& lhs, const GeminiInChromePageMetadata& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_screenshot_info() != rhs.has_screenshot_info()) return false;
  if (lhs.has_screenshot_info() && lhs.screenshot_info() != rhs.screenshot_info()) return false;
  return true;
}

bool operator!=(const GeminiInChromePageMetadata& lhs, const GeminiInChromePageMetadata& rhs) {
  return !(lhs == rhs);
}
bool operator==(const ScreenshotInfo& lhs, const ScreenshotInfo& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_has_selection_region_in_screenshot() != rhs.has_has_selection_region_in_screenshot()) return false;
  if (lhs.has_has_selection_region_in_screenshot() && lhs.has_selection_region_in_screenshot() != rhs.has_selection_region_in_screenshot()) return false;
  if (lhs.iframe_info().size() != rhs.iframe_info().size()) return false;
  for (int i = 0; i < lhs.iframe_info().size(); ++i) {
    if (lhs.iframe_info()[i] != rhs.iframe_info()[i]) return false;
  }
  if (lhs.has_screenshot_size() != rhs.has_screenshot_size()) return false;
  if (lhs.has_screenshot_size() && lhs.screenshot_size() != rhs.screenshot_size()) return false;
  return true;
}

bool operator!=(const ScreenshotInfo& lhs, const ScreenshotInfo& rhs) {
  return !(lhs == rhs);
}
bool operator==(const IframeInfo& lhs, const IframeInfo& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_security_origin() != rhs.has_security_origin()) return false;
  if (lhs.has_security_origin() && lhs.security_origin() != rhs.security_origin()) return false;
  if (lhs.has_url() != rhs.has_url()) return false;
  if (lhs.has_url() && lhs.url() != rhs.url()) return false;
  if (lhs.has_bounding_box() != rhs.has_bounding_box()) return false;
  if (lhs.has_bounding_box() && lhs.bounding_box() != rhs.bounding_box()) return false;
  return true;
}

bool operator!=(const IframeInfo& lhs, const IframeInfo& rhs) {
  return !(lhs == rhs);
}
bool operator==(const AutofillGlobalId& lhs, const AutofillGlobalId& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_frame_token() != rhs.has_frame_token()) return false;
  if (lhs.has_frame_token() && lhs.frame_token() != rhs.frame_token()) return false;
  if (lhs.has_renderer_id() != rhs.has_renderer_id()) return false;
  if (lhs.has_renderer_id() && lhs.renderer_id() != rhs.renderer_id()) return false;
  return true;
}

bool operator!=(const AutofillGlobalId& lhs, const AutofillGlobalId& rhs) {
  return !(lhs == rhs);
}
bool operator==(const FormData& lhs, const FormData& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_form_name() != rhs.has_form_name()) return false;
  if (lhs.has_form_name() && lhs.form_name() != rhs.form_name()) return false;
  if (lhs.fields().size() != rhs.fields().size()) return false;
  for (int i = 0; i < lhs.fields().size(); ++i) {
    if (lhs.fields()[i] != rhs.fields()[i]) return false;
  }
  if (lhs.has_global_id() != rhs.has_global_id()) return false;
  if (lhs.has_global_id() && lhs.global_id() != rhs.global_id()) return false;
  if (lhs.has_form_signature() != rhs.has_form_signature()) return false;
  if (lhs.has_form_signature() && lhs.form_signature() != rhs.form_signature()) return false;
  if (lhs.has_action_url() != rhs.has_action_url()) return false;
  if (lhs.has_action_url() && lhs.action_url() != rhs.action_url()) return false;
  return true;
}

bool operator!=(const FormData& lhs, const FormData& rhs) {
  return !(lhs == rhs);
}
bool operator==(const FormFieldData& lhs, const FormFieldData& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_field_name() != rhs.has_field_name()) return false;
  if (lhs.has_field_name() && lhs.field_name() != rhs.field_name()) return false;
  if (lhs.has_field_label() != rhs.has_field_label()) return false;
  if (lhs.has_field_label() && lhs.field_label() != rhs.field_label()) return false;
  if (lhs.has_field_value() != rhs.has_field_value()) return false;
  if (lhs.has_field_value() && lhs.field_value() != rhs.field_value()) return false;
  if (lhs.has_is_visible() != rhs.has_is_visible()) return false;
  if (lhs.has_is_visible() && lhs.is_visible() != rhs.is_visible()) return false;
  if (lhs.has_is_focusable() != rhs.has_is_focusable()) return false;
  if (lhs.has_is_focusable() && lhs.is_focusable() != rhs.is_focusable()) return false;
  if (lhs.has_form_control_type() != rhs.has_form_control_type()) return false;
  if (lhs.has_form_control_type() && lhs.form_control_type() != rhs.form_control_type()) return false;
  if (lhs.select_options().size() != rhs.select_options().size()) return false;
  for (int i = 0; i < lhs.select_options().size(); ++i) {
    if (lhs.select_options()[i] != rhs.select_options()[i]) return false;
  }
  if (lhs.has_placeholder() != rhs.has_placeholder()) return false;
  if (lhs.has_placeholder() && lhs.placeholder() != rhs.placeholder()) return false;
  if (lhs.has_form_control_ax_node_id() != rhs.has_form_control_ax_node_id()) return false;
  if (lhs.has_form_control_ax_node_id() && lhs.form_control_ax_node_id() != rhs.form_control_ax_node_id()) return false;
  if (lhs.has_is_eligible() != rhs.has_is_eligible()) return false;
  if (lhs.has_is_eligible() && lhs.is_eligible() != rhs.is_eligible()) return false;
  if (lhs.has_global_id() != rhs.has_global_id()) return false;
  if (lhs.has_global_id() && lhs.global_id() != rhs.global_id()) return false;
  if (lhs.has_field_signature() != rhs.has_field_signature()) return false;
  if (lhs.has_field_signature() && lhs.field_signature() != rhs.field_signature()) return false;
  if (lhs.has_aria_label() != rhs.has_aria_label()) return false;
  if (lhs.has_aria_label() && lhs.aria_label() != rhs.aria_label()) return false;
  if (lhs.has_aria_description() != rhs.has_aria_description()) return false;
  if (lhs.has_aria_description() && lhs.aria_description() != rhs.aria_description()) return false;
  return true;
}

bool operator!=(const FormFieldData& lhs, const FormFieldData& rhs) {
  return !(lhs == rhs);
}
bool operator==(const TableRow& lhs, const TableRow& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.cells().size() != rhs.cells().size()) return false;
  for (int i = 0; i < lhs.cells().size(); ++i) {
    if (lhs.cells()[i] != rhs.cells()[i]) return false;
  }
  return true;
}

bool operator!=(const TableRow& lhs, const TableRow& rhs) {
  return !(lhs == rhs);
}
bool operator==(const TabGroupMinimal& lhs, const TabGroupMinimal& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_label() != rhs.has_label()) return false;
  if (lhs.has_label() && lhs.label() != rhs.label()) return false;
  if (lhs.tab_ids().size() != rhs.tab_ids().size()) return false;
  for (int i = 0; i < lhs.tab_ids().size(); ++i) {
    if (lhs.tab_ids()[i] != rhs.tab_ids()[i]) return false;
  }
  if (lhs.has_group_id() != rhs.has_group_id()) return false;
  if (lhs.has_group_id() && lhs.group_id() != rhs.group_id()) return false;
  if (lhs.has_emoji() != rhs.has_emoji()) return false;
  if (lhs.has_emoji() && lhs.emoji() != rhs.emoji()) return false;
  return true;
}

bool operator!=(const TabGroupMinimal& lhs, const TabGroupMinimal& rhs) {
  return !(lhs == rhs);
}
bool operator==(const TabGroup& lhs, const TabGroup& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_label() != rhs.has_label()) return false;
  if (lhs.has_label() && lhs.label() != rhs.label()) return false;
  if (lhs.tabs().size() != rhs.tabs().size()) return false;
  for (int i = 0; i < lhs.tabs().size(); ++i) {
    if (lhs.tabs()[i] != rhs.tabs()[i]) return false;
  }
  if (lhs.has_group_id() != rhs.has_group_id()) return false;
  if (lhs.has_group_id() && lhs.group_id() != rhs.group_id()) return false;
  return true;
}

bool operator!=(const TabGroup& lhs, const TabGroup& rhs) {
  return !(lhs == rhs);
}
bool operator==(const Tab& lhs, const Tab& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_tab_id() != rhs.has_tab_id()) return false;
  if (lhs.has_tab_id() && lhs.tab_id() != rhs.tab_id()) return false;
  if (lhs.has_title() != rhs.has_title()) return false;
  if (lhs.has_title() && lhs.title() != rhs.title()) return false;
  if (lhs.has_url() != rhs.has_url()) return false;
  if (lhs.has_url() && lhs.url() != rhs.url()) return false;
  if (lhs.has_page_context() != rhs.has_page_context()) return false;
  if (lhs.has_page_context() && lhs.page_context() != rhs.page_context()) return false;
  if (lhs.has_last_active_timestamp_ms() != rhs.has_last_active_timestamp_ms()) return false;
  if (lhs.has_last_active_timestamp_ms() && lhs.last_active_timestamp_ms() != rhs.last_active_timestamp_ms()) return false;
  if (lhs.has_last_foreground_duration_ms() != rhs.has_last_foreground_duration_ms()) return false;
  if (lhs.has_last_foreground_duration_ms() && lhs.last_foreground_duration_ms() != rhs.last_foreground_duration_ms()) return false;
  return true;
}

bool operator!=(const Tab& lhs, const Tab& rhs) {
  return !(lhs == rhs);
}
bool operator==(const SiteEngagementEntry& lhs, const SiteEngagementEntry& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_url() != rhs.has_url()) return false;
  if (lhs.has_url() && lhs.url() != rhs.url()) return false;
  if (lhs.has_score() != rhs.has_score()) return false;
  if (lhs.has_score() && lhs.score() != rhs.score()) return false;
  return true;
}

bool operator!=(const SiteEngagementEntry& lhs, const SiteEngagementEntry& rhs) {
  return !(lhs == rhs);
}
bool operator==(const SiteEngagement& lhs, const SiteEngagement& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.entries().size() != rhs.entries().size()) return false;
  for (int i = 0; i < lhs.entries().size(); ++i) {
    if (lhs.entries()[i] != rhs.entries()[i]) return false;
  }
  return true;
}

bool operator!=(const SiteEngagement& lhs, const SiteEngagement& rhs) {
  return !(lhs == rhs);
}
bool operator==(const Coordinate& lhs, const Coordinate& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_x() != rhs.has_x()) return false;
  if (lhs.has_x() && lhs.x() != rhs.x()) return false;
  if (lhs.has_y() != rhs.has_y()) return false;
  if (lhs.has_y() && lhs.y() != rhs.y()) return false;
  if (lhs.has_pixel_type() != rhs.has_pixel_type()) return false;
  if (lhs.has_pixel_type() && lhs.pixel_type() != rhs.pixel_type()) return false;
  return true;
}

bool operator!=(const Coordinate& lhs, const Coordinate& rhs) {
  return !(lhs == rhs);
}
bool operator==(const TimeDuration& lhs, const TimeDuration& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_seconds() != rhs.has_seconds()) return false;
  if (lhs.has_seconds() && lhs.seconds() != rhs.seconds()) return false;
  if (lhs.has_nanos() != rhs.has_nanos()) return false;
  if (lhs.has_nanos() && lhs.nanos() != rhs.nanos()) return false;
  return true;
}

bool operator!=(const TimeDuration& lhs, const TimeDuration& rhs) {
  return !(lhs == rhs);
}
bool operator==(const TimeZone& lhs, const TimeZone& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_id() != rhs.has_id()) return false;
  if (lhs.has_id() && lhs.id() != rhs.id()) return false;
  if (lhs.has_version() != rhs.has_version()) return false;
  if (lhs.has_version() && lhs.version() != rhs.version()) return false;
  return true;
}

bool operator!=(const TimeZone& lhs, const TimeZone& rhs) {
  return !(lhs == rhs);
}
bool operator==(const DateTime& lhs, const DateTime& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.time_offset_case() != rhs.time_offset_case()) return false;
  switch (lhs.time_offset_case()) {
    case DateTime::kUtcOffset:
      if (lhs.utc_offset() != rhs.utc_offset()) return false;
      break;
    case DateTime::kTimeZone:
      if (lhs.time_zone() != rhs.time_zone()) return false;
      break;
    case DateTime::TIME_OFFSET_NOT_SET:
      break;
  }
  if (lhs.has_year() != rhs.has_year()) return false;
  if (lhs.has_year() && lhs.year() != rhs.year()) return false;
  if (lhs.has_month() != rhs.has_month()) return false;
  if (lhs.has_month() && lhs.month() != rhs.month()) return false;
  if (lhs.has_day() != rhs.has_day()) return false;
  if (lhs.has_day() && lhs.day() != rhs.day()) return false;
  if (lhs.has_hours() != rhs.has_hours()) return false;
  if (lhs.has_hours() && lhs.hours() != rhs.hours()) return false;
  if (lhs.has_minutes() != rhs.has_minutes()) return false;
  if (lhs.has_minutes() && lhs.minutes() != rhs.minutes()) return false;
  if (lhs.has_seconds() != rhs.has_seconds()) return false;
  if (lhs.has_seconds() && lhs.seconds() != rhs.seconds()) return false;
  if (lhs.has_nanos() != rhs.has_nanos()) return false;
  if (lhs.has_nanos() && lhs.nanos() != rhs.nanos()) return false;
  return true;
}

bool operator!=(const DateTime& lhs, const DateTime& rhs) {
  return !(lhs == rhs);
}
bool operator==(const MetaTag& lhs, const MetaTag& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_name() != rhs.has_name()) return false;
  if (lhs.has_name() && lhs.name() != rhs.name()) return false;
  if (lhs.has_content() != rhs.has_content()) return false;
  if (lhs.has_content() && lhs.content() != rhs.content()) return false;
  return true;
}

bool operator!=(const MetaTag& lhs, const MetaTag& rhs) {
  return !(lhs == rhs);
}
bool operator==(const FrameMetadata& lhs, const FrameMetadata& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_url() != rhs.has_url()) return false;
  if (lhs.has_url() && lhs.url() != rhs.url()) return false;
  if (lhs.meta_tags().size() != rhs.meta_tags().size()) return false;
  for (int i = 0; i < lhs.meta_tags().size(); ++i) {
    if (lhs.meta_tags()[i] != rhs.meta_tags()[i]) return false;
  }
  if (lhs.has_has_media_transcripts() != rhs.has_has_media_transcripts()) return false;
  if (lhs.has_has_media_transcripts() && lhs.has_media_transcripts() != rhs.has_media_transcripts()) return false;
  return true;
}

bool operator!=(const FrameMetadata& lhs, const FrameMetadata& rhs) {
  return !(lhs == rhs);
}
bool operator==(const PageMetadata& lhs, const PageMetadata& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.frame_metadata().size() != rhs.frame_metadata().size()) return false;
  for (int i = 0; i < lhs.frame_metadata().size(); ++i) {
    if (lhs.frame_metadata()[i] != rhs.frame_metadata()[i]) return false;
  }
  return true;
}

bool operator!=(const PageMetadata& lhs, const PageMetadata& rhs) {
  return !(lhs == rhs);
}
bool operator==(const DocumentSelection& lhs, const DocumentSelection& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_document_identifier() != rhs.has_document_identifier()) return false;
  if (lhs.has_document_identifier() && lhs.document_identifier() != rhs.document_identifier()) return false;
  if (lhs.has_selection() != rhs.has_selection()) return false;
  if (lhs.has_selection() && lhs.selection() != rhs.selection()) return false;
  return true;
}

bool operator!=(const DocumentSelection& lhs, const DocumentSelection& rhs) {
  return !(lhs == rhs);
}
bool operator==(const AgentContainerConfig& lhs, const AgentContainerConfig& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.location_rules().size() != rhs.location_rules().size()) return false;
  for (int i = 0; i < lhs.location_rules().size(); ++i) {
    if (lhs.location_rules()[i] != rhs.location_rules()[i]) return false;
  }
  return true;
}

bool operator!=(const AgentContainerConfig& lhs, const AgentContainerConfig& rhs) {
  return !(lhs == rhs);
}
bool operator==(const LocationRule& lhs, const LocationRule& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_location() != rhs.has_location()) return false;
  if (lhs.has_location() && lhs.location() != rhs.location()) return false;
  if (lhs.has_metadata() != rhs.has_metadata()) return false;
  if (lhs.has_metadata() && lhs.metadata() != rhs.metadata()) return false;
  if (lhs.navigation_sources().size() != rhs.navigation_sources().size()) return false;
  for (int i = 0; i < lhs.navigation_sources().size(); ++i) {
    if (lhs.navigation_sources()[i] != rhs.navigation_sources()[i]) return false;
  }
  return true;
}

bool operator!=(const LocationRule& lhs, const LocationRule& rhs) {
  return !(lhs == rhs);
}
bool operator==(const Location& lhs, const Location& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.identifier_oneof_case() != rhs.identifier_oneof_case()) return false;
  switch (lhs.identifier_oneof_case()) {
    case Location::kOrigin:
      if (lhs.origin() != rhs.origin()) return false;
      break;
    case Location::kSite:
      if (lhs.site() != rhs.site()) return false;
      break;
    case Location::kWildcard:
      if (lhs.wildcard() != rhs.wildcard()) return false;
      break;
    case Location::IDENTIFIER_ONEOF_NOT_SET:
      break;
  }
  return true;
}

bool operator!=(const Location& lhs, const Location& rhs) {
  return !(lhs == rhs);
}
bool operator==(const Origin& lhs, const Origin& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_protocol() != rhs.has_protocol()) return false;
  if (lhs.has_protocol() && lhs.protocol() != rhs.protocol()) return false;
  if (lhs.has_host() != rhs.has_host()) return false;
  if (lhs.has_host() && lhs.host() != rhs.host()) return false;
  if (lhs.has_port() != rhs.has_port()) return false;
  if (lhs.has_port() && lhs.port() != rhs.port()) return false;
  return true;
}

bool operator!=(const Origin& lhs, const Origin& rhs) {
  return !(lhs == rhs);
}
bool operator==(const Site& lhs, const Site& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_protocol() != rhs.has_protocol()) return false;
  if (lhs.has_protocol() && lhs.protocol() != rhs.protocol()) return false;
  if (lhs.has_domain() != rhs.has_domain()) return false;
  if (lhs.has_domain() && lhs.domain() != rhs.domain()) return false;
  return true;
}

bool operator!=(const Site& lhs, const Site& rhs) {
  return !(lhs == rhs);
}
bool operator==(const AnySite& lhs, const AnySite& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  return true;
}

bool operator!=(const AnySite& lhs, const AnySite& rhs) {
  return !(lhs == rhs);
}
bool operator==(const RuleMetadata& lhs, const RuleMetadata& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.accessible_resources().size() != rhs.accessible_resources().size()) return false;
  for (int i = 0; i < lhs.accessible_resources().size(); ++i) {
    if (lhs.accessible_resources()[i] != rhs.accessible_resources()[i]) return false;
  }
  if (lhs.capabilities().size() != rhs.capabilities().size()) return false;
  for (int i = 0; i < lhs.capabilities().size(); ++i) {
    if (lhs.capabilities()[i] != rhs.capabilities()[i]) return false;
  }
  return true;
}

bool operator!=(const RuleMetadata& lhs, const RuleMetadata& rhs) {
  return !(lhs == rhs);
}
bool operator==(const NavigationSource& lhs, const NavigationSource& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_source() != rhs.has_source()) return false;
  if (lhs.has_source() && lhs.source() != rhs.source()) return false;
  return true;
}

bool operator!=(const NavigationSource& lhs, const NavigationSource& rhs) {
  return !(lhs == rhs);
}
}  // namespace proto
}  // namespace optimization_guide

