# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: ortools/sat/cp_model.proto
"""Generated protocol buffer code."""
from google.protobuf.internal import enum_type_wrapper
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
from google.protobuf import symbol_database as _symbol_database
# @@protoc_insertion_point(imports)

_sym_db = _symbol_database.Default()




DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1aortools/sat/cp_model.proto\x12\x17operations_research.sat\"4\n\x14IntegerVariableProto\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0e\n\x06\x64omain\x18\x02 \x03(\x03\"%\n\x11\x42oolArgumentProto\x12\x10\n\x08literals\x18\x01 \x03(\x05\"E\n\x15LinearExpressionProto\x12\x0c\n\x04vars\x18\x01 \x03(\x05\x12\x0e\n\x06\x63oeffs\x18\x02 \x03(\x03\x12\x0e\n\x06offset\x18\x03 \x01(\x03\"\x94\x01\n\x13LinearArgumentProto\x12>\n\x06target\x18\x01 \x01(\x0b\x32..operations_research.sat.LinearExpressionProto\x12=\n\x05\x65xprs\x18\x02 \x03(\x0b\x32..operations_research.sat.LinearExpressionProto\"\\\n\x1b\x41llDifferentConstraintProto\x12=\n\x05\x65xprs\x18\x01 \x03(\x0b\x32..operations_research.sat.LinearExpressionProto\"E\n\x15LinearConstraintProto\x12\x0c\n\x04vars\x18\x01 \x03(\x05\x12\x0e\n\x06\x63oeffs\x18\x02 \x03(\x03\x12\x0e\n\x06\x64omain\x18\x03 \x03(\x03\"E\n\x16\x45lementConstraintProto\x12\r\n\x05index\x18\x01 \x01(\x05\x12\x0e\n\x06target\x18\x02 \x01(\x05\x12\x0c\n\x04vars\x18\x03 \x03(\x05\"\xd3\x01\n\x17IntervalConstraintProto\x12=\n\x05start\x18\x04 \x01(\x0b\x32..operations_research.sat.LinearExpressionProto\x12;\n\x03\x65nd\x18\x05 \x01(\x0b\x32..operations_research.sat.LinearExpressionProto\x12<\n\x04size\x18\x06 \x01(\x0b\x32..operations_research.sat.LinearExpressionProto\"-\n\x18NoOverlapConstraintProto\x12\x11\n\tintervals\x18\x01 \x03(\x05\"p\n\x1aNoOverlap2DConstraintProto\x12\x13\n\x0bx_intervals\x18\x01 \x03(\x05\x12\x13\n\x0by_intervals\x18\x02 \x03(\x05\x12(\n boxes_with_null_area_can_overlap\x18\x03 \x01(\x08\"\xb1\x01\n\x19\x43umulativeConstraintProto\x12@\n\x08\x63\x61pacity\x18\x01 \x01(\x0b\x32..operations_research.sat.LinearExpressionProto\x12\x11\n\tintervals\x18\x02 \x03(\x05\x12?\n\x07\x64\x65mands\x18\x03 \x03(\x0b\x32..operations_research.sat.LinearExpressionProto\"\xb4\x01\n\x18ReservoirConstraintProto\x12\x11\n\tmin_level\x18\x01 \x01(\x03\x12\x11\n\tmax_level\x18\x02 \x01(\x03\x12\x42\n\ntime_exprs\x18\x03 \x03(\x0b\x32..operations_research.sat.LinearExpressionProto\x12\x15\n\rlevel_changes\x18\x04 \x03(\x03\x12\x17\n\x0f\x61\x63tive_literals\x18\x05 \x03(\x05\"H\n\x16\x43ircuitConstraintProto\x12\r\n\x05tails\x18\x03 \x03(\x05\x12\r\n\x05heads\x18\x04 \x03(\x05\x12\x10\n\x08literals\x18\x05 \x03(\x05\"j\n\x15RoutesConstraintProto\x12\r\n\x05tails\x18\x01 \x03(\x05\x12\r\n\x05heads\x18\x02 \x03(\x05\x12\x10\n\x08literals\x18\x03 \x03(\x05\x12\x0f\n\x07\x64\x65mands\x18\x04 \x03(\x05\x12\x10\n\x08\x63\x61pacity\x18\x05 \x01(\x03\"E\n\x14TableConstraintProto\x12\x0c\n\x04vars\x18\x01 \x03(\x05\x12\x0e\n\x06values\x18\x02 \x03(\x03\x12\x0f\n\x07negated\x18\x03 \x01(\x08\"=\n\x16InverseConstraintProto\x12\x10\n\x08\x66_direct\x18\x01 \x03(\x05\x12\x11\n\tf_inverse\x18\x02 \x03(\x05\"\xa2\x01\n\x18\x41utomatonConstraintProto\x12\x16\n\x0estarting_state\x18\x02 \x01(\x03\x12\x14\n\x0c\x66inal_states\x18\x03 \x03(\x03\x12\x17\n\x0ftransition_tail\x18\x04 \x03(\x03\x12\x17\n\x0ftransition_head\x18\x05 \x03(\x03\x12\x18\n\x10transition_label\x18\x06 \x03(\x03\x12\x0c\n\x04vars\x18\x07 \x03(\x05\"$\n\x14ListOfVariablesProto\x12\x0c\n\x04vars\x18\x01 \x03(\x05\"\xf0\x0c\n\x0f\x43onstraintProto\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x1b\n\x13\x65nforcement_literal\x18\x02 \x03(\x05\x12=\n\x07\x62ool_or\x18\x03 \x01(\x0b\x32*.operations_research.sat.BoolArgumentProtoH\x00\x12>\n\x08\x62ool_and\x18\x04 \x01(\x0b\x32*.operations_research.sat.BoolArgumentProtoH\x00\x12\x41\n\x0b\x61t_most_one\x18\x1a \x01(\x0b\x32*.operations_research.sat.BoolArgumentProtoH\x00\x12\x41\n\x0b\x65xactly_one\x18\x1d \x01(\x0b\x32*.operations_research.sat.BoolArgumentProtoH\x00\x12>\n\x08\x62ool_xor\x18\x05 \x01(\x0b\x32*.operations_research.sat.BoolArgumentProtoH\x00\x12?\n\x07int_div\x18\x07 \x01(\x0b\x32,.operations_research.sat.LinearArgumentProtoH\x00\x12?\n\x07int_mod\x18\x08 \x01(\x0b\x32,.operations_research.sat.LinearArgumentProtoH\x00\x12@\n\x08int_prod\x18\x0b \x01(\x0b\x32,.operations_research.sat.LinearArgumentProtoH\x00\x12?\n\x07lin_max\x18\x1b \x01(\x0b\x32,.operations_research.sat.LinearArgumentProtoH\x00\x12@\n\x06linear\x18\x0c \x01(\x0b\x32..operations_research.sat.LinearConstraintProtoH\x00\x12H\n\x08\x61ll_diff\x18\r \x01(\x0b\x32\x34.operations_research.sat.AllDifferentConstraintProtoH\x00\x12\x42\n\x07\x65lement\x18\x0e \x01(\x0b\x32/.operations_research.sat.ElementConstraintProtoH\x00\x12\x42\n\x07\x63ircuit\x18\x0f \x01(\x0b\x32/.operations_research.sat.CircuitConstraintProtoH\x00\x12@\n\x06routes\x18\x17 \x01(\x0b\x32..operations_research.sat.RoutesConstraintProtoH\x00\x12>\n\x05table\x18\x10 \x01(\x0b\x32-.operations_research.sat.TableConstraintProtoH\x00\x12\x46\n\tautomaton\x18\x11 \x01(\x0b\x32\x31.operations_research.sat.AutomatonConstraintProtoH\x00\x12\x42\n\x07inverse\x18\x12 \x01(\x0b\x32/.operations_research.sat.InverseConstraintProtoH\x00\x12\x46\n\treservoir\x18\x18 \x01(\x0b\x32\x31.operations_research.sat.ReservoirConstraintProtoH\x00\x12\x44\n\x08interval\x18\x13 \x01(\x0b\x32\x30.operations_research.sat.IntervalConstraintProtoH\x00\x12G\n\nno_overlap\x18\x14 \x01(\x0b\x32\x31.operations_research.sat.NoOverlapConstraintProtoH\x00\x12L\n\rno_overlap_2d\x18\x15 \x01(\x0b\x32\x33.operations_research.sat.NoOverlap2DConstraintProtoH\x00\x12H\n\ncumulative\x18\x16 \x01(\x0b\x32\x32.operations_research.sat.CumulativeConstraintProtoH\x00\x12I\n\x10\x64ummy_constraint\x18\x1e \x01(\x0b\x32-.operations_research.sat.ListOfVariablesProtoH\x00\x42\x0c\n\nconstraint\"\xbb\x01\n\x10\x43pObjectiveProto\x12\x0c\n\x04vars\x18\x01 \x03(\x05\x12\x0e\n\x06\x63oeffs\x18\x04 \x03(\x03\x12\x0e\n\x06offset\x18\x02 \x01(\x01\x12\x16\n\x0escaling_factor\x18\x03 \x01(\x01\x12\x0e\n\x06\x64omain\x18\x05 \x03(\x03\x12\x19\n\x11scaling_was_exact\x18\x06 \x01(\x08\x12\x16\n\x0einteger_offset\x18\x07 \x01(\x03\x12\x1e\n\x16integer_scaling_factor\x18\x08 \x01(\x03\"U\n\x13\x46loatObjectiveProto\x12\x0c\n\x04vars\x18\x01 \x03(\x05\x12\x0e\n\x06\x63oeffs\x18\x02 \x03(\x01\x12\x0e\n\x06offset\x18\x03 \x01(\x01\x12\x10\n\x08maximize\x18\x04 \x01(\x08\"\xd7\x05\n\x15\x44\x65\x63isionStrategyProto\x12\x11\n\tvariables\x18\x01 \x03(\x05\x12m\n\x1bvariable_selection_strategy\x18\x02 \x01(\x0e\x32H.operations_research.sat.DecisionStrategyProto.VariableSelectionStrategy\x12i\n\x19\x64omain_reduction_strategy\x18\x03 \x01(\x0e\x32\x46.operations_research.sat.DecisionStrategyProto.DomainReductionStrategy\x12\\\n\x0ftransformations\x18\x04 \x03(\x0b\x32\x43.operations_research.sat.DecisionStrategyProto.AffineTransformation\x1aM\n\x14\x41\x66\x66ineTransformation\x12\r\n\x05index\x18\x01 \x01(\x05\x12\x0e\n\x06offset\x18\x02 \x01(\x03\x12\x16\n\x0epositive_coeff\x18\x03 \x01(\x03\"\x94\x01\n\x19VariableSelectionStrategy\x12\x10\n\x0c\x43HOOSE_FIRST\x10\x00\x12\x15\n\x11\x43HOOSE_LOWEST_MIN\x10\x01\x12\x16\n\x12\x43HOOSE_HIGHEST_MAX\x10\x02\x12\x1a\n\x16\x43HOOSE_MIN_DOMAIN_SIZE\x10\x03\x12\x1a\n\x16\x43HOOSE_MAX_DOMAIN_SIZE\x10\x04\"\x8c\x01\n\x17\x44omainReductionStrategy\x12\x14\n\x10SELECT_MIN_VALUE\x10\x00\x12\x14\n\x10SELECT_MAX_VALUE\x10\x01\x12\x15\n\x11SELECT_LOWER_HALF\x10\x02\x12\x15\n\x11SELECT_UPPER_HALF\x10\x03\x12\x17\n\x13SELECT_MEDIAN_VALUE\x10\x04\"9\n\x19PartialVariableAssignment\x12\x0c\n\x04vars\x18\x01 \x03(\x05\x12\x0e\n\x06values\x18\x02 \x03(\x03\">\n\x16SparsePermutationProto\x12\x0f\n\x07support\x18\x01 \x03(\x05\x12\x13\n\x0b\x63ycle_sizes\x18\x02 \x03(\x05\"G\n\x10\x44\x65nseMatrixProto\x12\x10\n\x08num_rows\x18\x01 \x01(\x05\x12\x10\n\x08num_cols\x18\x02 \x01(\x05\x12\x0f\n\x07\x65ntries\x18\x03 \x03(\x05\"\x94\x01\n\rSymmetryProto\x12\x45\n\x0cpermutations\x18\x01 \x03(\x0b\x32/.operations_research.sat.SparsePermutationProto\x12<\n\torbitopes\x18\x02 \x03(\x0b\x32).operations_research.sat.DenseMatrixProto\"\x8e\x04\n\x0c\x43pModelProto\x12\x0c\n\x04name\x18\x01 \x01(\t\x12@\n\tvariables\x18\x02 \x03(\x0b\x32-.operations_research.sat.IntegerVariableProto\x12=\n\x0b\x63onstraints\x18\x03 \x03(\x0b\x32(.operations_research.sat.ConstraintProto\x12<\n\tobjective\x18\x04 \x01(\x0b\x32).operations_research.sat.CpObjectiveProto\x12N\n\x18\x66loating_point_objective\x18\t \x01(\x0b\x32,.operations_research.sat.FloatObjectiveProto\x12G\n\x0fsearch_strategy\x18\x05 \x03(\x0b\x32..operations_research.sat.DecisionStrategyProto\x12I\n\rsolution_hint\x18\x06 \x01(\x0b\x32\x32.operations_research.sat.PartialVariableAssignment\x12\x13\n\x0b\x61ssumptions\x18\x07 \x03(\x05\x12\x38\n\x08symmetry\x18\x08 \x01(\x0b\x32&.operations_research.sat.SymmetryProto\"\"\n\x10\x43pSolverSolution\x12\x0e\n\x06values\x18\x01 \x03(\x03\"\xff\x05\n\x10\x43pSolverResponse\x12\x37\n\x06status\x18\x01 \x01(\x0e\x32\'.operations_research.sat.CpSolverStatus\x12\x10\n\x08solution\x18\x02 \x03(\x03\x12\x17\n\x0fobjective_value\x18\x03 \x01(\x01\x12\x1c\n\x14\x62\x65st_objective_bound\x18\x04 \x01(\x01\x12G\n\x14\x61\x64\x64itional_solutions\x18\x1b \x03(\x0b\x32).operations_research.sat.CpSolverSolution\x12J\n\x13tightened_variables\x18\x15 \x03(\x0b\x32-.operations_research.sat.IntegerVariableProto\x12\x30\n(sufficient_assumptions_for_infeasibility\x18\x17 \x03(\x05\x12\x44\n\x11integer_objective\x18\x1c \x01(\x0b\x32).operations_research.sat.CpObjectiveProto\x12#\n\x1binner_objective_lower_bound\x18\x1d \x01(\x03\x12\x14\n\x0cnum_booleans\x18\n \x01(\x03\x12\x15\n\rnum_conflicts\x18\x0b \x01(\x03\x12\x14\n\x0cnum_branches\x18\x0c \x01(\x03\x12\x1f\n\x17num_binary_propagations\x18\r \x01(\x03\x12 \n\x18num_integer_propagations\x18\x0e \x01(\x03\x12\x14\n\x0cnum_restarts\x18\x18 \x01(\x03\x12\x19\n\x11num_lp_iterations\x18\x19 \x01(\x03\x12\x11\n\twall_time\x18\x0f \x01(\x01\x12\x11\n\tuser_time\x18\x10 \x01(\x01\x12\x1a\n\x12\x64\x65terministic_time\x18\x11 \x01(\x01\x12\x14\n\x0cgap_integral\x18\x16 \x01(\x01\x12\x15\n\rsolution_info\x18\x14 \x01(\t\x12\x11\n\tsolve_log\x18\x1a \x01(\t*[\n\x0e\x43pSolverStatus\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x11\n\rMODEL_INVALID\x10\x01\x12\x0c\n\x08\x46\x45\x41SIBLE\x10\x02\x12\x0e\n\nINFEASIBLE\x10\x03\x12\x0b\n\x07OPTIMAL\x10\x04\x42@\n\x16\x63om.google.ortools.satB\x0f\x43pModelProtobufP\x01\xaa\x02\x12Google.OrTools.Satb\x06proto3')

_CPSOLVERSTATUS = DESCRIPTOR.enum_types_by_name['CpSolverStatus']
CpSolverStatus = enum_type_wrapper.EnumTypeWrapper(_CPSOLVERSTATUS)
UNKNOWN = 0
MODEL_INVALID = 1
FEASIBLE = 2
INFEASIBLE = 3
OPTIMAL = 4


_INTEGERVARIABLEPROTO = DESCRIPTOR.message_types_by_name['IntegerVariableProto']
_BOOLARGUMENTPROTO = DESCRIPTOR.message_types_by_name['BoolArgumentProto']
_LINEAREXPRESSIONPROTO = DESCRIPTOR.message_types_by_name['LinearExpressionProto']
_LINEARARGUMENTPROTO = DESCRIPTOR.message_types_by_name['LinearArgumentProto']
_ALLDIFFERENTCONSTRAINTPROTO = DESCRIPTOR.message_types_by_name['AllDifferentConstraintProto']
_LINEARCONSTRAINTPROTO = DESCRIPTOR.message_types_by_name['LinearConstraintProto']
_ELEMENTCONSTRAINTPROTO = DESCRIPTOR.message_types_by_name['ElementConstraintProto']
_INTERVALCONSTRAINTPROTO = DESCRIPTOR.message_types_by_name['IntervalConstraintProto']
_NOOVERLAPCONSTRAINTPROTO = DESCRIPTOR.message_types_by_name['NoOverlapConstraintProto']
_NOOVERLAP2DCONSTRAINTPROTO = DESCRIPTOR.message_types_by_name['NoOverlap2DConstraintProto']
_CUMULATIVECONSTRAINTPROTO = DESCRIPTOR.message_types_by_name['CumulativeConstraintProto']
_RESERVOIRCONSTRAINTPROTO = DESCRIPTOR.message_types_by_name['ReservoirConstraintProto']
_CIRCUITCONSTRAINTPROTO = DESCRIPTOR.message_types_by_name['CircuitConstraintProto']
_ROUTESCONSTRAINTPROTO = DESCRIPTOR.message_types_by_name['RoutesConstraintProto']
_TABLECONSTRAINTPROTO = DESCRIPTOR.message_types_by_name['TableConstraintProto']
_INVERSECONSTRAINTPROTO = DESCRIPTOR.message_types_by_name['InverseConstraintProto']
_AUTOMATONCONSTRAINTPROTO = DESCRIPTOR.message_types_by_name['AutomatonConstraintProto']
_LISTOFVARIABLESPROTO = DESCRIPTOR.message_types_by_name['ListOfVariablesProto']
_CONSTRAINTPROTO = DESCRIPTOR.message_types_by_name['ConstraintProto']
_CPOBJECTIVEPROTO = DESCRIPTOR.message_types_by_name['CpObjectiveProto']
_FLOATOBJECTIVEPROTO = DESCRIPTOR.message_types_by_name['FloatObjectiveProto']
_DECISIONSTRATEGYPROTO = DESCRIPTOR.message_types_by_name['DecisionStrategyProto']
_DECISIONSTRATEGYPROTO_AFFINETRANSFORMATION = _DECISIONSTRATEGYPROTO.nested_types_by_name['AffineTransformation']
_PARTIALVARIABLEASSIGNMENT = DESCRIPTOR.message_types_by_name['PartialVariableAssignment']
_SPARSEPERMUTATIONPROTO = DESCRIPTOR.message_types_by_name['SparsePermutationProto']
_DENSEMATRIXPROTO = DESCRIPTOR.message_types_by_name['DenseMatrixProto']
_SYMMETRYPROTO = DESCRIPTOR.message_types_by_name['SymmetryProto']
_CPMODELPROTO = DESCRIPTOR.message_types_by_name['CpModelProto']
_CPSOLVERSOLUTION = DESCRIPTOR.message_types_by_name['CpSolverSolution']
_CPSOLVERRESPONSE = DESCRIPTOR.message_types_by_name['CpSolverResponse']
_DECISIONSTRATEGYPROTO_VARIABLESELECTIONSTRATEGY = _DECISIONSTRATEGYPROTO.enum_types_by_name['VariableSelectionStrategy']
_DECISIONSTRATEGYPROTO_DOMAINREDUCTIONSTRATEGY = _DECISIONSTRATEGYPROTO.enum_types_by_name['DomainReductionStrategy']
IntegerVariableProto = _reflection.GeneratedProtocolMessageType('IntegerVariableProto', (_message.Message,), {
  'DESCRIPTOR' : _INTEGERVARIABLEPROTO,
  '__module__' : 'ortools.sat.cp_model_pb2'
  # @@protoc_insertion_point(class_scope:operations_research.sat.IntegerVariableProto)
  })
_sym_db.RegisterMessage(IntegerVariableProto)

BoolArgumentProto = _reflection.GeneratedProtocolMessageType('BoolArgumentProto', (_message.Message,), {
  'DESCRIPTOR' : _BOOLARGUMENTPROTO,
  '__module__' : 'ortools.sat.cp_model_pb2'
  # @@protoc_insertion_point(class_scope:operations_research.sat.BoolArgumentProto)
  })
_sym_db.RegisterMessage(BoolArgumentProto)

LinearExpressionProto = _reflection.GeneratedProtocolMessageType('LinearExpressionProto', (_message.Message,), {
  'DESCRIPTOR' : _LINEAREXPRESSIONPROTO,
  '__module__' : 'ortools.sat.cp_model_pb2'
  # @@protoc_insertion_point(class_scope:operations_research.sat.LinearExpressionProto)
  })
_sym_db.RegisterMessage(LinearExpressionProto)

LinearArgumentProto = _reflection.GeneratedProtocolMessageType('LinearArgumentProto', (_message.Message,), {
  'DESCRIPTOR' : _LINEARARGUMENTPROTO,
  '__module__' : 'ortools.sat.cp_model_pb2'
  # @@protoc_insertion_point(class_scope:operations_research.sat.LinearArgumentProto)
  })
_sym_db.RegisterMessage(LinearArgumentProto)

AllDifferentConstraintProto = _reflection.GeneratedProtocolMessageType('AllDifferentConstraintProto', (_message.Message,), {
  'DESCRIPTOR' : _ALLDIFFERENTCONSTRAINTPROTO,
  '__module__' : 'ortools.sat.cp_model_pb2'
  # @@protoc_insertion_point(class_scope:operations_research.sat.AllDifferentConstraintProto)
  })
_sym_db.RegisterMessage(AllDifferentConstraintProto)

LinearConstraintProto = _reflection.GeneratedProtocolMessageType('LinearConstraintProto', (_message.Message,), {
  'DESCRIPTOR' : _LINEARCONSTRAINTPROTO,
  '__module__' : 'ortools.sat.cp_model_pb2'
  # @@protoc_insertion_point(class_scope:operations_research.sat.LinearConstraintProto)
  })
_sym_db.RegisterMessage(LinearConstraintProto)

ElementConstraintProto = _reflection.GeneratedProtocolMessageType('ElementConstraintProto', (_message.Message,), {
  'DESCRIPTOR' : _ELEMENTCONSTRAINTPROTO,
  '__module__' : 'ortools.sat.cp_model_pb2'
  # @@protoc_insertion_point(class_scope:operations_research.sat.ElementConstraintProto)
  })
_sym_db.RegisterMessage(ElementConstraintProto)

IntervalConstraintProto = _reflection.GeneratedProtocolMessageType('IntervalConstraintProto', (_message.Message,), {
  'DESCRIPTOR' : _INTERVALCONSTRAINTPROTO,
  '__module__' : 'ortools.sat.cp_model_pb2'
  # @@protoc_insertion_point(class_scope:operations_research.sat.IntervalConstraintProto)
  })
_sym_db.RegisterMessage(IntervalConstraintProto)

NoOverlapConstraintProto = _reflection.GeneratedProtocolMessageType('NoOverlapConstraintProto', (_message.Message,), {
  'DESCRIPTOR' : _NOOVERLAPCONSTRAINTPROTO,
  '__module__' : 'ortools.sat.cp_model_pb2'
  # @@protoc_insertion_point(class_scope:operations_research.sat.NoOverlapConstraintProto)
  })
_sym_db.RegisterMessage(NoOverlapConstraintProto)

NoOverlap2DConstraintProto = _reflection.GeneratedProtocolMessageType('NoOverlap2DConstraintProto', (_message.Message,), {
  'DESCRIPTOR' : _NOOVERLAP2DCONSTRAINTPROTO,
  '__module__' : 'ortools.sat.cp_model_pb2'
  # @@protoc_insertion_point(class_scope:operations_research.sat.NoOverlap2DConstraintProto)
  })
_sym_db.RegisterMessage(NoOverlap2DConstraintProto)

CumulativeConstraintProto = _reflection.GeneratedProtocolMessageType('CumulativeConstraintProto', (_message.Message,), {
  'DESCRIPTOR' : _CUMULATIVECONSTRAINTPROTO,
  '__module__' : 'ortools.sat.cp_model_pb2'
  # @@protoc_insertion_point(class_scope:operations_research.sat.CumulativeConstraintProto)
  })
_sym_db.RegisterMessage(CumulativeConstraintProto)

ReservoirConstraintProto = _reflection.GeneratedProtocolMessageType('ReservoirConstraintProto', (_message.Message,), {
  'DESCRIPTOR' : _RESERVOIRCONSTRAINTPROTO,
  '__module__' : 'ortools.sat.cp_model_pb2'
  # @@protoc_insertion_point(class_scope:operations_research.sat.ReservoirConstraintProto)
  })
_sym_db.RegisterMessage(ReservoirConstraintProto)

CircuitConstraintProto = _reflection.GeneratedProtocolMessageType('CircuitConstraintProto', (_message.Message,), {
  'DESCRIPTOR' : _CIRCUITCONSTRAINTPROTO,
  '__module__' : 'ortools.sat.cp_model_pb2'
  # @@protoc_insertion_point(class_scope:operations_research.sat.CircuitConstraintProto)
  })
_sym_db.RegisterMessage(CircuitConstraintProto)

RoutesConstraintProto = _reflection.GeneratedProtocolMessageType('RoutesConstraintProto', (_message.Message,), {
  'DESCRIPTOR' : _ROUTESCONSTRAINTPROTO,
  '__module__' : 'ortools.sat.cp_model_pb2'
  # @@protoc_insertion_point(class_scope:operations_research.sat.RoutesConstraintProto)
  })
_sym_db.RegisterMessage(RoutesConstraintProto)

TableConstraintProto = _reflection.GeneratedProtocolMessageType('TableConstraintProto', (_message.Message,), {
  'DESCRIPTOR' : _TABLECONSTRAINTPROTO,
  '__module__' : 'ortools.sat.cp_model_pb2'
  # @@protoc_insertion_point(class_scope:operations_research.sat.TableConstraintProto)
  })
_sym_db.RegisterMessage(TableConstraintProto)

InverseConstraintProto = _reflection.GeneratedProtocolMessageType('InverseConstraintProto', (_message.Message,), {
  'DESCRIPTOR' : _INVERSECONSTRAINTPROTO,
  '__module__' : 'ortools.sat.cp_model_pb2'
  # @@protoc_insertion_point(class_scope:operations_research.sat.InverseConstraintProto)
  })
_sym_db.RegisterMessage(InverseConstraintProto)

AutomatonConstraintProto = _reflection.GeneratedProtocolMessageType('AutomatonConstraintProto', (_message.Message,), {
  'DESCRIPTOR' : _AUTOMATONCONSTRAINTPROTO,
  '__module__' : 'ortools.sat.cp_model_pb2'
  # @@protoc_insertion_point(class_scope:operations_research.sat.AutomatonConstraintProto)
  })
_sym_db.RegisterMessage(AutomatonConstraintProto)

ListOfVariablesProto = _reflection.GeneratedProtocolMessageType('ListOfVariablesProto', (_message.Message,), {
  'DESCRIPTOR' : _LISTOFVARIABLESPROTO,
  '__module__' : 'ortools.sat.cp_model_pb2'
  # @@protoc_insertion_point(class_scope:operations_research.sat.ListOfVariablesProto)
  })
_sym_db.RegisterMessage(ListOfVariablesProto)

ConstraintProto = _reflection.GeneratedProtocolMessageType('ConstraintProto', (_message.Message,), {
  'DESCRIPTOR' : _CONSTRAINTPROTO,
  '__module__' : 'ortools.sat.cp_model_pb2'
  # @@protoc_insertion_point(class_scope:operations_research.sat.ConstraintProto)
  })
_sym_db.RegisterMessage(ConstraintProto)

CpObjectiveProto = _reflection.GeneratedProtocolMessageType('CpObjectiveProto', (_message.Message,), {
  'DESCRIPTOR' : _CPOBJECTIVEPROTO,
  '__module__' : 'ortools.sat.cp_model_pb2'
  # @@protoc_insertion_point(class_scope:operations_research.sat.CpObjectiveProto)
  })
_sym_db.RegisterMessage(CpObjectiveProto)

FloatObjectiveProto = _reflection.GeneratedProtocolMessageType('FloatObjectiveProto', (_message.Message,), {
  'DESCRIPTOR' : _FLOATOBJECTIVEPROTO,
  '__module__' : 'ortools.sat.cp_model_pb2'
  # @@protoc_insertion_point(class_scope:operations_research.sat.FloatObjectiveProto)
  })
_sym_db.RegisterMessage(FloatObjectiveProto)

DecisionStrategyProto = _reflection.GeneratedProtocolMessageType('DecisionStrategyProto', (_message.Message,), {

  'AffineTransformation' : _reflection.GeneratedProtocolMessageType('AffineTransformation', (_message.Message,), {
    'DESCRIPTOR' : _DECISIONSTRATEGYPROTO_AFFINETRANSFORMATION,
    '__module__' : 'ortools.sat.cp_model_pb2'
    # @@protoc_insertion_point(class_scope:operations_research.sat.DecisionStrategyProto.AffineTransformation)
    })
  ,
  'DESCRIPTOR' : _DECISIONSTRATEGYPROTO,
  '__module__' : 'ortools.sat.cp_model_pb2'
  # @@protoc_insertion_point(class_scope:operations_research.sat.DecisionStrategyProto)
  })
_sym_db.RegisterMessage(DecisionStrategyProto)
_sym_db.RegisterMessage(DecisionStrategyProto.AffineTransformation)

PartialVariableAssignment = _reflection.GeneratedProtocolMessageType('PartialVariableAssignment', (_message.Message,), {
  'DESCRIPTOR' : _PARTIALVARIABLEASSIGNMENT,
  '__module__' : 'ortools.sat.cp_model_pb2'
  # @@protoc_insertion_point(class_scope:operations_research.sat.PartialVariableAssignment)
  })
_sym_db.RegisterMessage(PartialVariableAssignment)

SparsePermutationProto = _reflection.GeneratedProtocolMessageType('SparsePermutationProto', (_message.Message,), {
  'DESCRIPTOR' : _SPARSEPERMUTATIONPROTO,
  '__module__' : 'ortools.sat.cp_model_pb2'
  # @@protoc_insertion_point(class_scope:operations_research.sat.SparsePermutationProto)
  })
_sym_db.RegisterMessage(SparsePermutationProto)

DenseMatrixProto = _reflection.GeneratedProtocolMessageType('DenseMatrixProto', (_message.Message,), {
  'DESCRIPTOR' : _DENSEMATRIXPROTO,
  '__module__' : 'ortools.sat.cp_model_pb2'
  # @@protoc_insertion_point(class_scope:operations_research.sat.DenseMatrixProto)
  })
_sym_db.RegisterMessage(DenseMatrixProto)

SymmetryProto = _reflection.GeneratedProtocolMessageType('SymmetryProto', (_message.Message,), {
  'DESCRIPTOR' : _SYMMETRYPROTO,
  '__module__' : 'ortools.sat.cp_model_pb2'
  # @@protoc_insertion_point(class_scope:operations_research.sat.SymmetryProto)
  })
_sym_db.RegisterMessage(SymmetryProto)

CpModelProto = _reflection.GeneratedProtocolMessageType('CpModelProto', (_message.Message,), {
  'DESCRIPTOR' : _CPMODELPROTO,
  '__module__' : 'ortools.sat.cp_model_pb2'
  # @@protoc_insertion_point(class_scope:operations_research.sat.CpModelProto)
  })
_sym_db.RegisterMessage(CpModelProto)

CpSolverSolution = _reflection.GeneratedProtocolMessageType('CpSolverSolution', (_message.Message,), {
  'DESCRIPTOR' : _CPSOLVERSOLUTION,
  '__module__' : 'ortools.sat.cp_model_pb2'
  # @@protoc_insertion_point(class_scope:operations_research.sat.CpSolverSolution)
  })
_sym_db.RegisterMessage(CpSolverSolution)

CpSolverResponse = _reflection.GeneratedProtocolMessageType('CpSolverResponse', (_message.Message,), {
  'DESCRIPTOR' : _CPSOLVERRESPONSE,
  '__module__' : 'ortools.sat.cp_model_pb2'
  # @@protoc_insertion_point(class_scope:operations_research.sat.CpSolverResponse)
  })
_sym_db.RegisterMessage(CpSolverResponse)

if _descriptor._USE_C_DESCRIPTORS == False:

  DESCRIPTOR._options = None
  DESCRIPTOR._serialized_options = b'\n\026com.google.ortools.satB\017CpModelProtobufP\001\252\002\022Google.OrTools.Sat'
  _CPSOLVERSTATUS._serialized_start=6203
  _CPSOLVERSTATUS._serialized_end=6294
  _INTEGERVARIABLEPROTO._serialized_start=55
  _INTEGERVARIABLEPROTO._serialized_end=107
  _BOOLARGUMENTPROTO._serialized_start=109
  _BOOLARGUMENTPROTO._serialized_end=146
  _LINEAREXPRESSIONPROTO._serialized_start=148
  _LINEAREXPRESSIONPROTO._serialized_end=217
  _LINEARARGUMENTPROTO._serialized_start=220
  _LINEARARGUMENTPROTO._serialized_end=368
  _ALLDIFFERENTCONSTRAINTPROTO._serialized_start=370
  _ALLDIFFERENTCONSTRAINTPROTO._serialized_end=462
  _LINEARCONSTRAINTPROTO._serialized_start=464
  _LINEARCONSTRAINTPROTO._serialized_end=533
  _ELEMENTCONSTRAINTPROTO._serialized_start=535
  _ELEMENTCONSTRAINTPROTO._serialized_end=604
  _INTERVALCONSTRAINTPROTO._serialized_start=607
  _INTERVALCONSTRAINTPROTO._serialized_end=818
  _NOOVERLAPCONSTRAINTPROTO._serialized_start=820
  _NOOVERLAPCONSTRAINTPROTO._serialized_end=865
  _NOOVERLAP2DCONSTRAINTPROTO._serialized_start=867
  _NOOVERLAP2DCONSTRAINTPROTO._serialized_end=979
  _CUMULATIVECONSTRAINTPROTO._serialized_start=982
  _CUMULATIVECONSTRAINTPROTO._serialized_end=1159
  _RESERVOIRCONSTRAINTPROTO._serialized_start=1162
  _RESERVOIRCONSTRAINTPROTO._serialized_end=1342
  _CIRCUITCONSTRAINTPROTO._serialized_start=1344
  _CIRCUITCONSTRAINTPROTO._serialized_end=1416
  _ROUTESCONSTRAINTPROTO._serialized_start=1418
  _ROUTESCONSTRAINTPROTO._serialized_end=1524
  _TABLECONSTRAINTPROTO._serialized_start=1526
  _TABLECONSTRAINTPROTO._serialized_end=1595
  _INVERSECONSTRAINTPROTO._serialized_start=1597
  _INVERSECONSTRAINTPROTO._serialized_end=1658
  _AUTOMATONCONSTRAINTPROTO._serialized_start=1661
  _AUTOMATONCONSTRAINTPROTO._serialized_end=1823
  _LISTOFVARIABLESPROTO._serialized_start=1825
  _LISTOFVARIABLESPROTO._serialized_end=1861
  _CONSTRAINTPROTO._serialized_start=1864
  _CONSTRAINTPROTO._serialized_end=3512
  _CPOBJECTIVEPROTO._serialized_start=3515
  _CPOBJECTIVEPROTO._serialized_end=3702
  _FLOATOBJECTIVEPROTO._serialized_start=3704
  _FLOATOBJECTIVEPROTO._serialized_end=3789
  _DECISIONSTRATEGYPROTO._serialized_start=3792
  _DECISIONSTRATEGYPROTO._serialized_end=4519
  _DECISIONSTRATEGYPROTO_AFFINETRANSFORMATION._serialized_start=4148
  _DECISIONSTRATEGYPROTO_AFFINETRANSFORMATION._serialized_end=4225
  _DECISIONSTRATEGYPROTO_VARIABLESELECTIONSTRATEGY._serialized_start=4228
  _DECISIONSTRATEGYPROTO_VARIABLESELECTIONSTRATEGY._serialized_end=4376
  _DECISIONSTRATEGYPROTO_DOMAINREDUCTIONSTRATEGY._serialized_start=4379
  _DECISIONSTRATEGYPROTO_DOMAINREDUCTIONSTRATEGY._serialized_end=4519
  _PARTIALVARIABLEASSIGNMENT._serialized_start=4521
  _PARTIALVARIABLEASSIGNMENT._serialized_end=4578
  _SPARSEPERMUTATIONPROTO._serialized_start=4580
  _SPARSEPERMUTATIONPROTO._serialized_end=4642
  _DENSEMATRIXPROTO._serialized_start=4644
  _DENSEMATRIXPROTO._serialized_end=4715
  _SYMMETRYPROTO._serialized_start=4718
  _SYMMETRYPROTO._serialized_end=4866
  _CPMODELPROTO._serialized_start=4869
  _CPMODELPROTO._serialized_end=5395
  _CPSOLVERSOLUTION._serialized_start=5397
  _CPSOLVERSOLUTION._serialized_end=5431
  _CPSOLVERRESPONSE._serialized_start=5434
  _CPSOLVERRESPONSE._serialized_end=6201
# @@protoc_insertion_point(module_scope)
