# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: dtm.proto

require 'google/protobuf'

Google::Protobuf::DescriptorPool.generated_pool.build do
  add_file("dtm.proto", :syntax => :proto3) do
    add_message "contrast.api.dtm.Message" do
      optional :client_id, :string, 1
      optional :client_number, :int32, 2
      optional :client_total, :int32, 3
      optional :pid, :int64, 8
      optional :ppid, :int64, 9
      optional :message_count, :int32, 4
      optional :timestamp_ms, :int64, 5
      optional :app_name, :string, 6
      optional :app_language, :string, 7
      optional :app_path, :string, 28
      oneof :event do
        optional :agent_startup, :message, 11, "contrast.api.dtm.AgentStartup"
        optional :application_create, :message, 12, "contrast.api.dtm.ApplicationCreate"
        optional :server_activity, :message, 10, "contrast.api.dtm.ServerActivity"
        optional :application_update, :message, 13, "contrast.api.dtm.ApplicationUpdate"
        optional :activity, :message, 14, "contrast.api.dtm.Activity"
        optional :observed_route, :message, 26, "contrast.api.dtm.ObservedRoute"
        optional :request, :message, 19, "contrast.api.dtm.RawRequest"
        optional :prefilter, :message, 20, "contrast.api.dtm.HttpRequest"
        optional :postfilter, :message, 22, "contrast.api.dtm.HttpResponse"
        optional :response, :message, 23, "contrast.api.dtm.RawResponse"
        optional :sqli_sink, :message, 25, "contrast.api.dtm.SqliSinkRequest"
        optional :poll, :message, 27, "contrast.api.dtm.Poll"
        optional :noop, :message, 24, "contrast.api.dtm.Noop"
      end
    end
    add_message "contrast.api.dtm.Poll" do
    end
    add_message "contrast.api.dtm.Noop" do
      optional :flag, :int32, 1
    end
    add_message "contrast.api.dtm.ServerActivity" do
      map :log_enhancers, :string, :int32, 16
      map :ip_blacklists, :string, :int32, 17
      map :ip_denylists, :string, :int32, 18
    end
    add_message "contrast.api.dtm.AgentStartup" do
      optional :version, :string, 2
      optional :environment, :string, 3
      optional :tags, :string, 4
      optional :server_name, :string, 5
      optional :server_path, :string, 6
      optional :server_type, :string, 7
      optional :server_version, :string, 8
      optional :heartbeat_ms, :int32, 9
    end
    add_message "contrast.api.dtm.ApplicationCreate" do
      optional :group, :string, 1
      optional :app_version, :string, 2
      optional :tags, :string, 3
      optional :code, :string, 4
      optional :metadata, :string, 5
      optional :session_id, :string, 6
      optional :session_metadata, :string, 7
    end
    add_message "contrast.api.dtm.ApplicationUpdate" do
      optional :coverage_loc, :int32, 2
      optional :platform, :message, 4, "contrast.api.dtm.Platform"
      optional :view, :message, 5, "contrast.api.dtm.View"
      map :technologies, :string, :bool, 6
      repeated :components, :message, 7, "contrast.api.dtm.ArchitectureComponent"
      map :libraries, :string, :message, 8, "contrast.api.dtm.Library"
      repeated :routes, :message, 9, "contrast.api.dtm.RouteCoverage"
    end
    add_message "contrast.api.dtm.Activity" do
      optional :http_request, :message, 1, "contrast.api.dtm.HttpRequest"
      optional :http_response, :message, 2, "contrast.api.dtm.HttpResponse"
      optional :duration_ms, :int64, 3
      optional :query_count, :int32, 5
      map :technologies, :string, :bool, 7
      map :library_usages, :string, :message, 8, "contrast.api.dtm.LibraryUsageUpdate"
      repeated :architectures, :message, 9, "contrast.api.dtm.ArchitectureComponent"
      repeated :routes, :message, 19, "contrast.api.dtm.RouteCoverage"
      repeated :results, :message, 12, "contrast.api.dtm.AttackResult"
      repeated :findings, :message, 15, "contrast.api.dtm.Finding"
      repeated :controls, :message, 16, "contrast.api.dtm.PossibleSecurityControl"
      optional :finding_tags, :string, 17
      map :dynamic_sources, :string, :message, 18, "contrast.api.dtm.DynamicSource"
    end
    add_message "contrast.api.dtm.Finding" do
      optional :hash_code, :string, 1
      optional :platform, :string, 2
      optional :rule_id, :string, 3
      optional :evidence, :string, 4
      map :properties, :string, :string, 6
      repeated :events, :message, 7, "contrast.api.dtm.TraceEvent"
      optional :preflight, :string, 8
      optional :tags, :string, 9
      optional :version, :int64, 10
      repeated :routes, :message, 11, "contrast.api.dtm.RouteCoverage"
      optional :session_id, :string, 12
    end
    add_message "contrast.api.dtm.DynamicSource" do
      optional :class_name, :string, 1
      optional :method_name, :string, 2
      optional :instance_method, :bool, 3
      optional :target, :string, 4
      repeated :events, :message, 5, "contrast.api.dtm.TraceEvent"
      map :properties, :string, :string, 6
    end
    add_message "contrast.api.dtm.PossibleSecurityControl" do
      optional :api, :string, 1
      optional :type, :string, 2
      optional :traits, :int64, 3
    end
    add_message "contrast.api.dtm.View" do
      optional :accessible, :int32, 1
      optional :total_view_fields, :int32, 2
      optional :line_count, :int32, 3
    end
    add_message "contrast.api.dtm.Platform" do
      optional :major, :string, 1
      optional :minor, :string, 2
      optional :build, :string, 3
      optional :service_pack, :string, 4
      repeated :updates, :string, 5
    end
    add_message "contrast.api.dtm.ArchitectureComponent" do
      optional :type, :string, 1
      optional :vendor, :string, 2
      optional :url, :string, 3
      optional :remote_host, :string, 4
      optional :remote_port, :int32, 5
    end
    add_message "contrast.api.dtm.Library" do
      optional :hash_code, :string, 1
      optional :file_path, :string, 2
      optional :url, :string, 3
      optional :version, :string, 4
      optional :tloc, :int32, 5
      optional :class_count, :int32, 6
      optional :used_class_count, :int32, 7
      optional :internal_ms, :int64, 8
      optional :external_ms, :int64, 9
      optional :manifest, :string, 10
      optional :tags, :string, 11
    end
    add_message "contrast.api.dtm.LibraryUsageUpdate" do
      optional :count, :int32, 1
      optional :hash_code, :string, 2
      map :class_names, :string, :bool, 3
    end
    add_message "contrast.api.dtm.Address" do
      optional :ip, :string, 1
      optional :host, :string, 2
      optional :port, :int32, 3
    end
    add_message "contrast.api.dtm.RawRequest" do
      optional :uuid, :string, 1
      optional :timestamp_ms, :int64, 2
      optional :request_line, :string, 4
      optional :normalized_uri, :string, 5
      optional :client_ip, :string, 6
      optional :client_ip_version, :int32, 7
      optional :client_port, :int32, 8
      optional :server_ip, :string, 10
      optional :server_ip_version, :int32, 11
      optional :server_port, :int32, 12
      repeated :request_headers, :message, 14, "contrast.api.dtm.SimplePair"
      repeated :multipart_headers, :message, 17, "contrast.api.dtm.SimplePair"
      optional :request_body, :bytes, 16
    end
    add_message "contrast.api.dtm.RawResponse" do
      optional :uuid, :string, 1
      optional :timestamp_ms, :int64, 2
      optional :response_code, :int32, 3
      repeated :response_headers, :message, 14, "contrast.api.dtm.SimplePair"
      optional :response_body, :bytes, 16
    end
    add_message "contrast.api.dtm.HttpRequest" do
      optional :uuid, :string, 1
      optional :timestamp_ms, :int64, 2
      optional :sender, :message, 3, "contrast.api.dtm.Address"
      optional :receiver, :message, 4, "contrast.api.dtm.Address"
      optional :protocol, :string, 5
      optional :version, :string, 6
      optional :method, :string, 7
      optional :raw, :string, 8
      optional :parsed_connection, :bool, 9
      optional :uri, :string, 10
      optional :normalized_uri, :string, 11
      optional :context, :string, 12
      optional :path, :string, 13
      optional :query_string, :string, 14
      map :normalized_request_params, :string, :message, 16, "contrast.api.dtm.Pair"
      repeated :multipart_headers, :message, 51, "contrast.api.dtm.SimplePair"
      map :request_headers, :string, :string, 20
      optional :parsed_request_headers, :bool, 21
      map :normalized_request_headers, :string, :message, 22, "contrast.api.dtm.Pair"
      map :normalized_cookies, :string, :message, 23, "contrast.api.dtm.Pair"
      optional :request_body, :string, 30
      optional :parsed_request_body, :bool, 31
      optional :document_type, :enum, 32, "contrast.api.dtm.HttpRequest.DocumentType"
      optional :request_body_binary, :bytes, 33
      optional :authentication, :enum, 40, "contrast.api.dtm.HttpRequest.Authentication"
      optional :principal, :string, 41
      optional :server_info, :string, 50
    end
    add_enum "contrast.api.dtm.HttpRequest.Authentication" do
      value :UNAUTHENTICATED, 0
      value :AUTHENTICATED, 1
      value :LOGIN_FAIL, 2
      value :LOGIN_SUCCESS, 3
      value :LOGIN_UNKNOWN, 4
    end
    add_enum "contrast.api.dtm.HttpRequest.DocumentType" do
      value :NORMAL, 0
      value :JSON, 1
      value :XML, 2
    end
    add_message "contrast.api.dtm.RpcStatus" do
      optional :code, :enum, 1, "contrast.api.dtm.RpcStatus.Code"
      optional :msg, :string, 2
    end
    add_enum "contrast.api.dtm.RpcStatus.Code" do
      value :OK, 0
      value :UNKNOWN, 1
    end
    add_message "contrast.api.dtm.SqliSinkRequest" do
      optional :uuid, :string, 1
      optional :dialect, :enum, 2, "contrast.api.dtm.SqliSinkRequest.Dialect"
      optional :query, :string, 3
    end
    add_enum "contrast.api.dtm.SqliSinkRequest.Dialect" do
      value :MYSQL, 0
      value :POSTGRESQL, 1
      value :UNKNOWN, 99
    end
    add_message "contrast.api.dtm.SqliSinkResponse" do
      optional :status, :message, 1, "contrast.api.dtm.RpcStatus"
      optional :user_input, :message, 3, "contrast.api.dtm.UserInput"
      oneof :finding do
        optional :sqli, :message, 10, "contrast.api.dtm.SqlInjectionDetails"
        optional :sqli_semantic, :message, 11, "contrast.api.dtm.SqlInjectionSemanticAnalysisDetails"
      end
    end
    add_message "contrast.api.dtm.HttpResponse" do
      optional :uuid, :string, 1
      optional :timestamp_ms, :int64, 2
      optional :response_code, :int32, 3
      map :response_headers, :string, :string, 4
      optional :parsed_response_headers, :bool, 5
      map :normalized_response_headers, :string, :message, 6, "contrast.api.dtm.Pair"
      optional :response_body, :string, 10
      optional :parsed_response_body, :bool, 11
      optional :document_type, :enum, 12, "contrast.api.dtm.HttpRequest.DocumentType"
      optional :response_body_binary, :bytes, 13
    end
    add_message "contrast.api.dtm.SimplePair" do
      optional :key, :string, 1
      optional :value, :string, 2
    end
    add_message "contrast.api.dtm.Pair" do
      optional :key, :string, 1
      repeated :values, :string, 2
    end
    add_message "contrast.api.dtm.AttackResult" do
      optional :response, :enum, 1, "contrast.api.dtm.AttackResult.ResponseType"
      optional :rule_id, :string, 2
      repeated :samples, :message, 6, "contrast.api.dtm.RaspRuleSample"
      optional :tags, :string, 7
      optional :acc_updated_ms, :int64, 16
      optional :acc_limit, :int32, 17
      optional :acc_window_ms, :int64, 18
      optional :acc_count, :int32, 19
      optional :acc_mode, :string, 21
      optional :acc_msg, :string, 22
    end
    add_enum "contrast.api.dtm.AttackResult.ResponseType" do
      value :NO_ACTION, 0
      value :BLOCKED, 1
      value :MONITORED, 2
      value :PROBED, 3
      value :BLOCKED_AT_PERIMETER, 4
      value :AGGREGATED, 5
    end
    add_message "contrast.api.dtm.RaspRuleSample" do
      optional :timestamp_ms, :int64, 2
      repeated :stack_trace_elements, :message, 4, "contrast.api.dtm.StackTraceElement"
      optional :user_input, :message, 5, "contrast.api.dtm.UserInput"
      oneof :details do
        optional :brute_force, :message, 16, "contrast.api.dtm.BruteForceDetails"
        optional :bot_blocker, :message, 17, "contrast.api.dtm.BotBlockerDetails"
        optional :cmdi, :message, 18, "contrast.api.dtm.CmdInjectionDetails"
        optional :csrf, :message, 19, "contrast.api.dtm.CsrfDetails"
        optional :cve, :message, 20, "contrast.api.dtm.CveDetails"
        optional :untrusted_deserialization, :message, 21, "contrast.api.dtm.UntrustedDeserializationDetails"
        optional :el_injection, :message, 22, "contrast.api.dtm.ElInjectionDetails"
        optional :ip_blacklist, :message, 23, "contrast.api.dtm.IpBlacklistDetails"
        optional :ip_denylist, :message, 45, "contrast.api.dtm.IpDenylistDetails"
        optional :mark_of_the_beast, :message, 24, "contrast.api.dtm.MarkOfTheBeastDetails"
        optional :padding_oracle, :message, 25, "contrast.api.dtm.PaddingOracleDetails"
        optional :path_traversal, :message, 26, "contrast.api.dtm.PathTraversalDetails"
        optional :re_dos, :message, 27, "contrast.api.dtm.ReDosDetails"
        optional :sqli, :message, 28, "contrast.api.dtm.SqlInjectionDetails"
        optional :ssrf, :message, 29, "contrast.api.dtm.SsrfDetails"
        optional :virtual_patch, :message, 30, "contrast.api.dtm.VirtualPatchDetails"
        optional :xss, :message, 31, "contrast.api.dtm.XssDetails"
        optional :xxe, :message, 32, "contrast.api.dtm.XxeDetails"
        optional :no_sqli, :message, 33, "contrast.api.dtm.NoSqlInjectionDetails"
        optional :method_tampering, :message, 34, "contrast.api.dtm.HttpMethodTamperingDetails"
        optional :cve_2017_0898, :message, 35, "contrast.api.dtm.Cve20170898Details"
        optional :cve_2017_14033, :message, 36, "contrast.api.dtm.Cve201714033Details"
        optional :cve_2017_14064, :message, 37, "contrast.api.dtm.Cve201714064Details"
        optional :cve_2017_17405, :message, 38, "contrast.api.dtm.Cve201717405Details"
        optional :mod_security, :message, 39, "contrast.api.dtm.ModSecurityDetails"
        optional :endpoint, :message, 40, "contrast.api.dtm.EndpointBanDetails"
        optional :sqli_semantic, :message, 41, "contrast.api.dtm.SqlInjectionSemanticAnalysisDetails"
        optional :cmdi_semantic, :message, 42, "contrast.api.dtm.CmdInjectionSemanticAnalysisDetails"
        optional :path_traversal_semantic, :message, 43, "contrast.api.dtm.PathTraversalSemanticAnalysisDetails"
        optional :ssjs, :message, 44, "contrast.api.dtm.SsjsInjectionDetails"
      end
    end
    add_message "contrast.api.dtm.EndpointBanDetails" do
      optional :ip, :string, 1
      optional :request_uri, :string, 2
      optional :response_code, :int32, 3
    end
    add_message "contrast.api.dtm.ModSecurityDetails" do
      optional :transaction_id, :string, 1
      optional :status, :int32, 2
      repeated :logs, :message, 3, "contrast.api.dtm.ModSecurityLog"
    end
    add_message "contrast.api.dtm.ModSecurityLog" do
      optional :message, :string, 2
      map :params, :string, :string, 3
    end
    add_message "contrast.api.dtm.BruteForceDetails" do
      optional :count, :int32, 1
    end
    add_message "contrast.api.dtm.BotBlockerDetails" do
      optional :bot, :string, 1
      optional :user_agent, :string, 2
    end
    add_message "contrast.api.dtm.CmdInjectionDetails" do
      optional :command, :string, 1
      optional :start_idx, :int32, 2
      optional :end_idx, :int32, 3
    end
    add_message "contrast.api.dtm.CmdInjectionSemanticAnalysisDetails" do
      optional :command, :string, 1
      repeated :findings, :enum, 2, "contrast.api.dtm.CmdInjectionSemanticAnalysisDetails.Finding"
    end
    add_enum "contrast.api.dtm.CmdInjectionSemanticAnalysisDetails.Finding" do
      value :CHAINING, 0
      value :BACKDOOR, 1
      value :DANGEROUS_PATH, 2
    end
    add_message "contrast.api.dtm.CsrfDetails" do
      optional :name, :string, 1
      optional :expected, :string, 2
      optional :presented, :string, 3
    end
    add_message "contrast.api.dtm.CveDetails" do
      optional :name, :string, 1
      optional :value, :string, 2
      optional :cve, :string, 3
      optional :library, :string, 4
    end
    add_message "contrast.api.dtm.Cve20170898Details" do
      optional :format_string, :string, 1
      optional :malicious_format_group, :string, 2
      optional :precision_argument, :string, 3
      optional :value_argument, :string, 4
      optional :arguments, :string, 5
      optional :ruby_version, :string, 6
    end
    add_message "contrast.api.dtm.Cve201714033Details" do
      optional :asn1, :string, 1
      optional :ruby_version, :string, 2
    end
    add_message "contrast.api.dtm.Cve201714064Details" do
      optional :space, :string, 1
      optional :ruby_version, :string, 2
      optional :json_version, :string, 3
    end
    add_message "contrast.api.dtm.Cve201717405Details" do
      optional :method, :string, 1
      optional :file_name, :string, 2
      optional :ruby_version, :string, 3
    end
    add_message "contrast.api.dtm.HttpMethodTamperingDetails" do
      optional :method, :string, 1
      optional :response_code, :int32, 2
    end
    add_message "contrast.api.dtm.UntrustedDeserializationDetails" do
      optional :command, :bool, 1
      optional :deserializer, :string, 2
    end
    add_message "contrast.api.dtm.ElInjectionDetails" do
      optional :attr_value, :string, 1
      optional :version, :string, 2
      optional :library_filename, :string, 3
    end
    add_message "contrast.api.dtm.IpBlacklistDetails" do
      optional :ip, :string, 1
      optional :uuid, :string, 2
    end
    add_message "contrast.api.dtm.IpDenylistDetails" do
      optional :ip, :string, 1
      optional :uuid, :string, 2
    end
    add_message "contrast.api.dtm.MarkOfTheBeastDetails" do
      optional :number, :string, 1
      optional :vendor, :string, 2
      optional :version, :string, 3
    end
    add_message "contrast.api.dtm.PaddingOracleDetails" do
      optional :message, :string, 1
      optional :period, :int32, 2
      optional :hits, :int32, 3
    end
    add_message "contrast.api.dtm.PathTraversalDetails" do
      optional :path, :string, 1
    end
    add_message "contrast.api.dtm.PathTraversalSemanticAnalysisDetails" do
      optional :path, :string, 1
      repeated :findings, :enum, 2, "contrast.api.dtm.PathTraversalSemanticAnalysisDetails.Finding"
    end
    add_enum "contrast.api.dtm.PathTraversalSemanticAnalysisDetails.Finding" do
      value :CUSTOM_CODE_ACCESSING_SYSTEM_FILES, 0
      value :COMMON_FILE_EXPLOITS, 1
    end
    add_message "contrast.api.dtm.ReDosDetails" do
      optional :times_accessed, :int32, 1
      optional :execution_time_ms, :int64, 2
      optional :pattern, :string, 3
      optional :offending_string, :string, 4
    end
    add_message "contrast.api.dtm.SsjsInjectionDetails" do
      optional :code_string, :string, 1
      optional :start_idx, :int32, 2
      optional :end_idx, :int32, 3
      optional :boundary_overrun_idx, :int32, 4
    end
    add_message "contrast.api.dtm.SqlInjectionDetails" do
      optional :start_idx, :int32, 1
      optional :end_idx, :int32, 2
      optional :boundary_overrun_idx, :int32, 3
      optional :input_boundary_idx, :int32, 4
      optional :query, :string, 5
    end
    add_message "contrast.api.dtm.SqlInjectionSemanticAnalysisDetails" do
      optional :query, :string, 1
      optional :finding, :enum, 2, "contrast.api.dtm.SqlInjectionSemanticAnalysisDetails.Finding"
    end
    add_enum "contrast.api.dtm.SqlInjectionSemanticAnalysisDetails.Finding" do
      value :CHAINING, 0
      value :SUSPICIOUS_UNION, 1
      value :DANGEROUS_FUNCTION, 2
      value :TAUTOLOGY, 3
    end
    add_message "contrast.api.dtm.NoSqlInjectionDetails" do
      optional :start_idx, :int32, 1
      optional :end_idx, :int32, 2
      optional :boundary_overrun_idx, :int32, 3
      optional :input_boundary_idx, :int32, 4
      optional :query, :string, 5
    end
    add_message "contrast.api.dtm.SsrfDetails" do
      optional :url, :string, 1
    end
    add_message "contrast.api.dtm.VirtualPatchDetails" do
      optional :uuid, :string, 1
    end
    add_message "contrast.api.dtm.XssDetails" do
      optional :input, :string, 1
      repeated :matches, :message, 2, "contrast.api.dtm.XssMatch"
    end
    add_message "contrast.api.dtm.XssMatch" do
      optional :evidence_start_ms, :int64, 1
      optional :evidence, :string, 2
      optional :offset, :int32, 3
    end
    add_message "contrast.api.dtm.XxeDetails" do
      optional :xml, :string, 1
      repeated :declared_entities, :message, 2, "contrast.api.dtm.XxeMatch"
      repeated :entities_resolved, :message, 3, "contrast.api.dtm.XxeWrapper"
    end
    add_message "contrast.api.dtm.XxeMatch" do
      optional :start_idx, :int32, 1
      optional :end_idx, :int32, 2
    end
    add_message "contrast.api.dtm.XxeWrapper" do
      optional :system_id, :string, 1
      optional :public_id, :string, 2
    end
    add_message "contrast.api.dtm.UserInput" do
      optional :path, :string, 2
      optional :key, :string, 3
      optional :value, :string, 4
      optional :input_type, :enum, 5, "contrast.api.dtm.UserInput.InputType"
      optional :document_type, :enum, 6, "contrast.api.dtm.HttpRequest.DocumentType"
      repeated :matcher_ids, :string, 7
    end
    add_enum "contrast.api.dtm.UserInput.InputType" do
      value :UNDEFINED_TYPE, 0
      value :BODY, 1
      value :COOKIE_NAME, 2
      value :COOKIE_VALUE, 3
      value :HEADER, 4
      value :PARAMETER_NAME, 5
      value :PARAMETER_VALUE, 6
      value :QUERYSTRING, 7
      value :URI, 8
      value :SOCKET, 9
      value :JSON_VALUE, 10
      value :JSON_ARRAYED_VALUE, 11
      value :MULTIPART_CONTENT_TYPE, 16
      value :MULTIPART_VALUE, 17
      value :MULTIPART_FIELD_NAME, 18
      value :MULTIPART_NAME, 19
      value :XML_VALUE, 20
      value :DWR_VALUE, 21
      value :METHOD, 22
      value :REQUEST, 23
      value :URL_PARAMETER, 24
      value :UNKNOWN, 99
    end
    add_message "contrast.api.dtm.StackTraceElement" do
      optional :declaring_class, :string, 1
      optional :method_name, :string, 2
      optional :file_name, :string, 3
      optional :line_number, :int32, 4
    end
    add_message "contrast.api.dtm.TraceEvent" do
      optional :action, :enum, 1, "contrast.api.dtm.TraceEvent.Action"
      optional :type, :enum, 2, "contrast.api.dtm.TraceEvent.EventType"
      optional :timestamp_ms, :int64, 3
      optional :thread, :string, 4
      optional :signature, :message, 6, "contrast.api.dtm.TraceEventSignature"
      optional :field_name, :string, 7
      optional :context, :string, 8
      optional :code, :string, 9
      optional :object, :message, 16, "contrast.api.dtm.TraceEventObject"
      optional :ret, :message, 17, "contrast.api.dtm.TraceEventObject"
      repeated :args, :message, 18, "contrast.api.dtm.TraceEventObject"
      repeated :stack, :message, 19, "contrast.api.dtm.TraceStack"
      repeated :event_sources, :message, 20, "contrast.api.dtm.TraceEventSource"
      optional :source, :string, 21
      optional :target, :string, 22
      repeated :taint_ranges, :message, 23, "contrast.api.dtm.TraceTaintRange"
      optional :object_id, :int64, 24
      repeated :parent_object_ids, :message, 25, "contrast.api.dtm.ParentObjectId"
    end
    add_enum "contrast.api.dtm.TraceEvent.Action" do
      value :CREATION, 0
      value :PROPAGATION, 1
      value :TRIGGER, 2
      value :TAG, 3
      value :A2A, 4
      value :A2P, 5
      value :A2O, 6
      value :A2R, 7
      value :O2A, 8
      value :O2P, 9
      value :O2O, 10
      value :O2R, 11
      value :P2A, 12
      value :P2P, 13
      value :P2O, 14
      value :P2R, 15
    end
    add_enum "contrast.api.dtm.TraceEvent.EventType" do
      value :TYPE_METHOD, 0
      value :TYPE_PROPAGATION, 1
      value :TYPE_TAG, 2
    end
    add_message "contrast.api.dtm.TraceEventSignature" do
      optional :return_type, :string, 1
      optional :class_name, :string, 2
      optional :method_name, :string, 3
      repeated :arg_types, :string, 4
      optional :constructor, :bool, 5
      optional :void_method, :bool, 6
      optional :flags, :int32, 7
    end
    add_message "contrast.api.dtm.TraceEventSource" do
      optional :type, :string, 1
      optional :name, :string, 2
    end
    add_message "contrast.api.dtm.TraceEventObject" do
      optional :tracked, :bool, 1
      optional :value, :string, 2
      repeated :ranges, :message, 3, "contrast.api.dtm.TraceTaintRange"
    end
    add_message "contrast.api.dtm.TraceTaintRange" do
      optional :tag, :string, 1
      optional :range, :string, 2
    end
    add_message "contrast.api.dtm.ParentObjectId" do
      optional :id, :int64, 1
    end
    add_message "contrast.api.dtm.TraceStack" do
      optional :signature, :string, 1
      optional :declaring_class, :string, 2
      optional :method_name, :string, 3
      optional :file_name, :string, 4
      optional :line_number, :int32, 5
      optional :type, :string, 6
      optional :eval, :string, 7
    end
    add_message "contrast.api.dtm.RouteCoverage" do
      optional :verb, :string, 1
      optional :url, :string, 2
      optional :route, :string, 3
      optional :count, :int32, 4
    end
    add_message "contrast.api.dtm.ObservedRoute" do
      optional :signature, :string, 1
      optional :url, :string, 2
      optional :verb, :string, 3
      optional :session_id, :string, 4
      repeated :sources, :message, 5, "contrast.api.dtm.TraceEventSource"
    end
    add_message "contrast.api.dtm.CmdiSinkRequest" do
    end
    add_message "contrast.api.dtm.CmdiSinkResponse" do
    end
    add_message "contrast.api.dtm.PtSinkRequest" do
    end
    add_message "contrast.api.dtm.PtSinkResponse" do
    end
  end
end

module Contrast
  module Api
    module Dtm
      Message = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.Message").msgclass
      Poll = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.Poll").msgclass
      Noop = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.Noop").msgclass
      ServerActivity = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.ServerActivity").msgclass
      AgentStartup = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.AgentStartup").msgclass
      ApplicationCreate = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.ApplicationCreate").msgclass
      ApplicationUpdate = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.ApplicationUpdate").msgclass
      Activity = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.Activity").msgclass
      Finding = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.Finding").msgclass
      DynamicSource = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.DynamicSource").msgclass
      PossibleSecurityControl = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.PossibleSecurityControl").msgclass
      View = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.View").msgclass
      Platform = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.Platform").msgclass
      ArchitectureComponent = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.ArchitectureComponent").msgclass
      Library = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.Library").msgclass
      LibraryUsageUpdate = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.LibraryUsageUpdate").msgclass
      Address = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.Address").msgclass
      RawRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.RawRequest").msgclass
      RawResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.RawResponse").msgclass
      HttpRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.HttpRequest").msgclass
      HttpRequest::Authentication = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.HttpRequest.Authentication").enummodule
      HttpRequest::DocumentType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.HttpRequest.DocumentType").enummodule
      RpcStatus = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.RpcStatus").msgclass
      RpcStatus::Code = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.RpcStatus.Code").enummodule
      SqliSinkRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.SqliSinkRequest").msgclass
      SqliSinkRequest::Dialect = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.SqliSinkRequest.Dialect").enummodule
      SqliSinkResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.SqliSinkResponse").msgclass
      HttpResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.HttpResponse").msgclass
      SimplePair = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.SimplePair").msgclass
      Pair = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.Pair").msgclass
      AttackResult = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.AttackResult").msgclass
      AttackResult::ResponseType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.AttackResult.ResponseType").enummodule
      RaspRuleSample = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.RaspRuleSample").msgclass
      EndpointBanDetails = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.EndpointBanDetails").msgclass
      ModSecurityDetails = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.ModSecurityDetails").msgclass
      ModSecurityLog = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.ModSecurityLog").msgclass
      BruteForceDetails = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.BruteForceDetails").msgclass
      BotBlockerDetails = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.BotBlockerDetails").msgclass
      CmdInjectionDetails = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.CmdInjectionDetails").msgclass
      CmdInjectionSemanticAnalysisDetails = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.CmdInjectionSemanticAnalysisDetails").msgclass
      CmdInjectionSemanticAnalysisDetails::Finding = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.CmdInjectionSemanticAnalysisDetails.Finding").enummodule
      CsrfDetails = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.CsrfDetails").msgclass
      CveDetails = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.CveDetails").msgclass
      Cve20170898Details = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.Cve20170898Details").msgclass
      Cve201714033Details = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.Cve201714033Details").msgclass
      Cve201714064Details = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.Cve201714064Details").msgclass
      Cve201717405Details = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.Cve201717405Details").msgclass
      HttpMethodTamperingDetails = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.HttpMethodTamperingDetails").msgclass
      UntrustedDeserializationDetails = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.UntrustedDeserializationDetails").msgclass
      ElInjectionDetails = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.ElInjectionDetails").msgclass
      IpBlacklistDetails = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.IpBlacklistDetails").msgclass
      IpDenylistDetails = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.IpDenylistDetails").msgclass
      MarkOfTheBeastDetails = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.MarkOfTheBeastDetails").msgclass
      PaddingOracleDetails = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.PaddingOracleDetails").msgclass
      PathTraversalDetails = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.PathTraversalDetails").msgclass
      PathTraversalSemanticAnalysisDetails = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.PathTraversalSemanticAnalysisDetails").msgclass
      PathTraversalSemanticAnalysisDetails::Finding = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.PathTraversalSemanticAnalysisDetails.Finding").enummodule
      ReDosDetails = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.ReDosDetails").msgclass
      SsjsInjectionDetails = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.SsjsInjectionDetails").msgclass
      SqlInjectionDetails = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.SqlInjectionDetails").msgclass
      SqlInjectionSemanticAnalysisDetails = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.SqlInjectionSemanticAnalysisDetails").msgclass
      SqlInjectionSemanticAnalysisDetails::Finding = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.SqlInjectionSemanticAnalysisDetails.Finding").enummodule
      NoSqlInjectionDetails = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.NoSqlInjectionDetails").msgclass
      SsrfDetails = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.SsrfDetails").msgclass
      VirtualPatchDetails = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.VirtualPatchDetails").msgclass
      XssDetails = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.XssDetails").msgclass
      XssMatch = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.XssMatch").msgclass
      XxeDetails = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.XxeDetails").msgclass
      XxeMatch = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.XxeMatch").msgclass
      XxeWrapper = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.XxeWrapper").msgclass
      UserInput = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.UserInput").msgclass
      UserInput::InputType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.UserInput.InputType").enummodule
      StackTraceElement = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.StackTraceElement").msgclass
      TraceEvent = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.TraceEvent").msgclass
      TraceEvent::Action = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.TraceEvent.Action").enummodule
      TraceEvent::EventType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.TraceEvent.EventType").enummodule
      TraceEventSignature = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.TraceEventSignature").msgclass
      TraceEventSource = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.TraceEventSource").msgclass
      TraceEventObject = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.TraceEventObject").msgclass
      TraceTaintRange = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.TraceTaintRange").msgclass
      ParentObjectId = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.ParentObjectId").msgclass
      TraceStack = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.TraceStack").msgclass
      RouteCoverage = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.RouteCoverage").msgclass
      ObservedRoute = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.ObservedRoute").msgclass
      CmdiSinkRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.CmdiSinkRequest").msgclass
      CmdiSinkResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.CmdiSinkResponse").msgclass
      PtSinkRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.PtSinkRequest").msgclass
      PtSinkResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("contrast.api.dtm.PtSinkResponse").msgclass
    end
  end
end