From fdebf6911233e02149b1e02f95af14098ba4b7d8 Mon Sep 17 00:00:00 2001 From: Marc Tuduri Date: Tue, 28 May 2024 17:41:33 +0200 Subject: [PATCH 01/16] Add Kafka parsing method and span creation --- .../ebpf/common/tcp_detect_transform.go | 40 ++++ .../ebpf/common/tcp_detect_transform_test.go | 19 ++ pkg/internal/kafka/kafka.go | 206 ++++++++++++++++++ pkg/internal/kafka/kafka_test.go | 143 ++++++++++++ pkg/internal/request/span.go | 1 + 5 files changed, 409 insertions(+) create mode 100644 pkg/internal/kafka/kafka.go create mode 100644 pkg/internal/kafka/kafka_test.go diff --git a/pkg/internal/ebpf/common/tcp_detect_transform.go b/pkg/internal/ebpf/common/tcp_detect_transform.go index cd849576e..92b900932 100644 --- a/pkg/internal/ebpf/common/tcp_detect_transform.go +++ b/pkg/internal/ebpf/common/tcp_detect_transform.go @@ -10,6 +10,7 @@ import ( trace2 "go.opentelemetry.io/otel/trace" "golang.org/x/net/http2" + "github.com/grafana/beyla/pkg/internal/kafka" "github.com/grafana/beyla/pkg/internal/request" "github.com/grafana/beyla/pkg/internal/sqlprune" ) @@ -49,6 +50,11 @@ func ReadTCPRequestIntoSpan(record *ringbuf.Record) (request.Span, bool, error) return TCPToRedisToSpan(&event, op, text, status), false, nil } + default: + k, err := kafka.ProcessKafkaData(b) + if err == nil { + return TCPToKafkaToSpan(&event, k), false, nil + } } return request.Span{}, true, nil // ignore if we couldn't parse it @@ -147,3 +153,37 @@ func isHTTP2(data []uint8, event *TCPRequestInfo) bool { return false } + +func TCPToKafkaToSpan(trace *TCPRequestInfo, data *kafka.KafkaData) request.Span { + peer := "" + hostname := "" + hostPort := 0 + + if trace.ConnInfo.S_port != 0 || trace.ConnInfo.D_port != 0 { + peer, hostname = trace.reqHostInfo() + hostPort = int(trace.ConnInfo.D_port) + } + return request.Span{ + Type: request.EventTypeKafkaClient, + Method: data.KafkaOperation.String(), + OtherNamespace: data.ClientID, + Path: data.Topic, + Peer: peer, + Host: hostname, + HostPort: hostPort, + ContentLength: 0, + RequestStart: int64(trace.StartMonotimeNs), + Start: int64(trace.StartMonotimeNs), + End: int64(trace.EndMonotimeNs), + Status: 0, + TraceID: trace2.TraceID(trace.Tp.TraceId), + SpanID: trace2.SpanID(trace.Tp.SpanId), + ParentSpanID: trace2.SpanID(trace.Tp.ParentId), + Flags: trace.Tp.Flags, + Pid: request.PidInfo{ + HostPID: trace.Pid.HostPid, + UserPID: trace.Pid.UserPid, + Namespace: trace.Pid.Ns, + }, + } +} diff --git a/pkg/internal/ebpf/common/tcp_detect_transform_test.go b/pkg/internal/ebpf/common/tcp_detect_transform_test.go index fad09b66e..fed93179d 100644 --- a/pkg/internal/ebpf/common/tcp_detect_transform_test.go +++ b/pkg/internal/ebpf/common/tcp_detect_transform_test.go @@ -12,6 +12,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "github.com/grafana/beyla/pkg/internal/kafka" "github.com/grafana/beyla/pkg/internal/request" ) @@ -147,6 +148,24 @@ func TestRedisParsing(t *testing.T) { assert.Equal(t, "", text) } +func TestTCPReqKafkaParsing(t *testing.T) { + // kafka message + b := []byte{0, 0, 0, 94, 0, 1, 0, 11, 0, 0, 0, 224, 0, 6, 115, 97, 114, 97, 109, 97, 255, 255, 255, 255, 0, 0, 1, 244, 0, 0, 0, 1, 6, 64, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 1, 0, 9, 105, 109, 112, 111, 114, 116, 97, 110, 116, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0} + r := makeTCPReq(string(b), tcpSend, 343534, 8080, 2000) + k, err := kafka.ProcessKafkaData(b) + assert.NoError(t, err) + s := TCPToKafkaToSpan(&r, k) + assert.NotNil(t, s) + assert.NotEmpty(t, s.Host) + assert.NotEmpty(t, s.Peer) + assert.Equal(t, s.HostPort, 8080) + assert.Greater(t, s.End, s.Start) + assert.Equal(t, "receive", s.Method) + assert.Equal(t, "important", s.Path) + assert.Equal(t, "sarama", s.OtherNamespace) + assert.Equal(t, request.EventTypeKafkaClient, s.Type) +} + const charset = "\\0\\1\\2abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" func randomString(length int) string { diff --git a/pkg/internal/kafka/kafka.go b/pkg/internal/kafka/kafka.go new file mode 100644 index 000000000..532c21ca6 --- /dev/null +++ b/pkg/internal/kafka/kafka.go @@ -0,0 +1,206 @@ +package kafka + +import ( + "encoding/binary" + "errors" +) + +type KafkaOperation int8 + +const ( + KAFKA_PRODUCE KafkaOperation = 0 + KAFKA_FETCH KafkaOperation = 1 +) + +type KafkaHeader struct { + MessageSize int32 + ApiKey int16 + ApiVersion int16 + CorrelationID int32 + ClientIDSize int16 +} + +type KafkaData struct { + KafkaOperation KafkaOperation + Topic string + ClientID string + TopicOffset int +} + +func (k KafkaOperation) String() string { + switch k { + case KAFKA_PRODUCE: + return "process" + case KAFKA_FETCH: + return "receive" + default: + return "unknown" + } +} + +const KAFKA_MIN_LENGTH = 14 + +// ProcessKafkaData processes a TCP packet and returns error if the packet is not a valid Kafka request. +// Otherwise, return KafkaData with the processed data. +func ProcessKafkaData(pkt []byte) (*KafkaData, error) { + k := &KafkaData{} + if len(pkt) < KAFKA_MIN_LENGTH { + return k, errors.New("packet too short") + } + + header := &KafkaHeader{ + MessageSize: int32(binary.BigEndian.Uint32(pkt[0:4])), + ApiKey: int16(binary.BigEndian.Uint16(pkt[4:6])), + ApiVersion: int16(binary.BigEndian.Uint16(pkt[6:8])), + CorrelationID: int32(binary.BigEndian.Uint32(pkt[8:12])), + ClientIDSize: int16(binary.BigEndian.Uint16(pkt[12:14])), + } + + if !isValidKafkaHeader(header) { + return k, errors.New("invalid Kafka request header") + } + + offset := KAFKA_MIN_LENGTH + if header.ClientIDSize > 0 { + clientID := pkt[offset : offset+int(header.ClientIDSize)] + if !isValidClientID(clientID, int(header.ClientIDSize)) { + return k, errors.New("invalid client ID") + } + offset += int(header.ClientIDSize) + k.ClientID = string(clientID) + } else if header.ClientIDSize < -1 { + return k, errors.New("invalid client ID size") + } + + switch KafkaOperation(header.ApiKey) { + case KAFKA_PRODUCE: + ok, err := getTopicOffsetFromProduceOperation(header, pkt, &offset) + if !ok || err != nil { + return k, err + } + k.KafkaOperation = KAFKA_PRODUCE + k.TopicOffset = offset + case KAFKA_FETCH: + offset += getTopicOffsetFromFetchOperation(header) + k.KafkaOperation = KAFKA_FETCH + k.TopicOffset = offset + default: + return k, errors.New("invalid Kafka operation") + } + topic, err := getTopicName(pkt, offset) + if err != nil { + return k, err + } + k.Topic = topic + return k, nil +} + +func isValidKafkaHeader(header *KafkaHeader) bool { + if header.MessageSize < int32(KAFKA_MIN_LENGTH) || header.ApiVersion < 0 { + return false + } + switch KafkaOperation(header.ApiKey) { + case KAFKA_FETCH: + if header.ApiVersion > 11 { + return false + } + case KAFKA_PRODUCE: + if header.ApiVersion == 0 || header.ApiVersion > 8 { + return false + } + default: + return false + } + if header.CorrelationID < 0 { + return false + } + return header.ClientIDSize >= -1 +} + +func isValidString(buffer []byte, maxBufferSize, realSize int, printableOk bool) bool { + for j := 0; j < maxBufferSize; j++ { + if j >= realSize { + break + } + ch := buffer[j] + if ('a' <= ch && ch <= 'z') || ('A' <= ch && ch <= 'Z') || ('0' <= ch && ch <= '9') || ch == '.' || ch == '_' || ch == '-' { + continue + } + if printableOk && (ch >= ' ' && ch <= '~') { + continue + } + return false + } + return true +} + +func isValidClientID(buffer []byte, realClientIDSize int) bool { + return isValidString(buffer, len(buffer), realClientIDSize, true) +} + +func getTopicName(pkt []byte, offset int) (string, error) { + offset += 4 + topicNameSize := int16(binary.BigEndian.Uint16(pkt[offset:])) + if topicNameSize <= 0 || topicNameSize > 255 { + return "", errors.New("invalid topic name size") + } + offset += 2 + + if len(pkt) < offset+int(topicNameSize) { + return "", errors.New("packet too short") + } + topicName := pkt[offset : offset+int(topicNameSize)] + if isValidString(topicName, len(topicName), int(topicNameSize), false) { + return string(topicName), nil + } + return "", errors.New("invalid topic name") +} + +func getTopicOffsetFromProduceOperation(header *KafkaHeader, pkt []byte, offset *int) (bool, error) { + if header.ApiVersion >= 3 { + if len(pkt) < *offset+2 { + return false, errors.New("packet too short") + } + transactionalIDSize := int16(binary.BigEndian.Uint16(pkt[*offset:])) + *offset += 2 + if transactionalIDSize > 0 { + *offset += int(transactionalIDSize) + } + } + + if len(pkt) < *offset+2 { + return false, errors.New("packet too short") + } + acks := int16(binary.BigEndian.Uint16(pkt[*offset:])) + if acks < -1 || acks > 1 { + return false, nil + } + *offset += 2 + + if len(pkt) < *offset+4 { + return false, errors.New("packet too short") + } + timeoutMS := int32(binary.BigEndian.Uint32(pkt[*offset:])) + if timeoutMS < 0 { + return false, nil + } + *offset += 4 + + return true, nil +} + +func getTopicOffsetFromFetchOperation(header *KafkaHeader) int { + offset := 3 * 4 // 3 * sizeof(int32) + + if header.ApiVersion >= 3 { + offset += 4 // max_bytes + if header.ApiVersion >= 4 { + offset += 1 // isolation_level + if header.ApiVersion >= 7 { + offset += 2 * 4 // session_id + session_epoch + } + } + } + + return offset +} diff --git a/pkg/internal/kafka/kafka_test.go b/pkg/internal/kafka/kafka_test.go new file mode 100644 index 000000000..8a84b2a02 --- /dev/null +++ b/pkg/internal/kafka/kafka_test.go @@ -0,0 +1,143 @@ +package kafka + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestIsKafkaRequest(t *testing.T) { + tests := []struct { + name string + input []byte + expected *KafkaData + }{ + { + name: "Fetch request", + input: []byte{0, 0, 0, 94, 0, 1, 0, 11, 0, 0, 0, 224, 0, 6, 115, 97, 114, 97, 109, 97, 255, 255, 255, 255, 0, 0, 1, 244, 0, 0, 0, 1, 6, 64, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 1, 0, 9, 105, 109, 112, 111, 114, 116, 97, 110, 116, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0}, + expected: &KafkaData{ + ClientID: "sarama", + KafkaOperation: KAFKA_FETCH, + Topic: "important", + TopicOffset: 45, + }, + }, + { + name: "Produce request", + input: []byte{0, 0, 0, 123, 0, 0, 0, 7, 0, 0, 0, 2, 0, 6, 115, 97, 114, 97, 109, 97, 255, 255, 255, 255, 0, 0, 39, 16, 0, 0, 0, 1, 0, 9, 105, 109, 112, 111, 114, 116, 97, 110, 116, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 2, 249, 236, 167, 144, 0, 0, 0, 0, 0, 0, 0, 0, 1, 143, 191, 130, 165, 117, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 1, 20, 0, 0, 0, 1, 8, 100, 97, 116, 97, 0}, + expected: &KafkaData{ + ClientID: "sarama", + KafkaOperation: KAFKA_PRODUCE, + Topic: "important", + TopicOffset: 28, + }, + }, + { + name: "Invalid request", + input: []byte{0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 2, 0, 6, 115, 97, 114, 97, 109, 97, 255, 255, 255, 255, 0, 0, 39, 16, 0, 0, 0, 1, 0, 9, 105, 109, 112, 111, 114, 116, 97, 110, 116, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 72}, + expected: &KafkaData{}, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + res, _ := ProcessKafkaData(tt.input) + assert.Equal(t, tt.expected, res) + }) + } +} + +func TestGetTopicOffsetFromProduceOperation(t *testing.T) { + header := &KafkaHeader{ + ApiVersion: 3, + } + pkt := []byte{0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00} + offset := 0 + + success, err := getTopicOffsetFromProduceOperation(header, pkt, &offset) + + assert.True(t, success) + assert.NoError(t, err) + assert.Equal(t, 10, offset) + + header.ApiVersion = 2 + pkt = []byte{0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00} + offset = 0 + + success, err = getTopicOffsetFromProduceOperation(header, pkt, &offset) + + assert.False(t, success) + assert.NoError(t, err) + assert.Equal(t, 0, offset) + + pkt = []byte{0x00} + offset = 0 + + success, err = getTopicOffsetFromProduceOperation(header, pkt, &offset) + + assert.False(t, success) + assert.Error(t, err) + assert.Equal(t, 0, offset) +} + +func TestGetTopicOffsetFromFetchOperation(t *testing.T) { + header := &KafkaHeader{ + ApiVersion: 3, + } + + offset := getTopicOffsetFromFetchOperation(header) + expectedOffset := 3*4 + 4 + assert.Equal(t, expectedOffset, offset) + + header.ApiVersion = 4 + offset = getTopicOffsetFromFetchOperation(header) + expectedOffset = 3*4 + 5 + assert.Equal(t, expectedOffset, offset) + + header.ApiVersion = 7 + offset = getTopicOffsetFromFetchOperation(header) + expectedOffset = 3*4 + 4 + 1 + 2*4 + assert.Equal(t, expectedOffset, offset) + + header.ApiVersion = 2 + offset = getTopicOffsetFromFetchOperation(header) + expectedOffset = 3 * 4 + assert.Equal(t, expectedOffset, offset) +} + +func TestIsValidKafkaHeader(t *testing.T) { + header := &KafkaHeader{ + MessageSize: 100, + ApiVersion: 3, + ApiKey: 1, + CorrelationID: 123, + ClientIDSize: 0, + } + + result := isValidKafkaHeader(header) + assert.True(t, result) + + header.MessageSize = 10 + result = isValidKafkaHeader(header) + assert.False(t, result) + + header.MessageSize = 100 + header.ApiVersion = -1 + result = isValidKafkaHeader(header) + assert.False(t, result) + + header.ApiVersion = 3 + header.ApiKey = 2 + result = isValidKafkaHeader(header) + assert.False(t, result) + + header.ApiKey = 1 + header.CorrelationID = -1 + result = isValidKafkaHeader(header) + assert.False(t, result) + + header.CorrelationID = 123 + header.ClientIDSize = -2 + result = isValidKafkaHeader(header) + assert.False(t, result) +} diff --git a/pkg/internal/request/span.go b/pkg/internal/request/span.go index 6c66484da..840a4799f 100644 --- a/pkg/internal/request/span.go +++ b/pkg/internal/request/span.go @@ -21,6 +21,7 @@ const ( EventTypeGRPCClient EventTypeSQLClient EventTypeRedisClient + EventTypeKafkaClient ) type IgnoreMode uint8 From 5fac756fd2e6eccb24e8a59e0ab59567a83c102d Mon Sep 17 00:00:00 2001 From: Marc Tuduri Date: Wed, 29 May 2024 16:58:20 +0200 Subject: [PATCH 02/16] Propagate Kafka data to metrics and traces --- pkg/internal/export/attributes/attr_defs.go | 4 ++++ pkg/internal/export/attributes/metric.go | 5 +++++ pkg/internal/export/debug/debug.go | 2 ++ pkg/internal/export/otel/metrics.go | 12 ++++++++++++ pkg/internal/export/otel/traces.go | 11 ++++++++++- pkg/internal/export/otel/traces_test.go | 20 +++++++++++++++++++- pkg/internal/export/prom/prom.go | 18 ++++++++++++++++++ 7 files changed, 70 insertions(+), 2 deletions(-) diff --git a/pkg/internal/export/attributes/attr_defs.go b/pkg/internal/export/attributes/attr_defs.go index 258a09cb1..77c455ece 100644 --- a/pkg/internal/export/attributes/attr_defs.go +++ b/pkg/internal/export/attributes/attr_defs.go @@ -204,6 +204,10 @@ func getDefinitions(groups AttrGroups) map[Section]AttrReportGroup { attr.DBSystem: true, }, }, + KafkaClientDuration.Section: { + SubGroups: []*AttrReportGroup{&appAttributes, &appKubeAttributes}, + Attributes: map[attr.Name]Default{}, //TODO: add attributes + }, Traces.Section: { Attributes: map[attr.Name]Default{ attr.DBQueryText: false, diff --git a/pkg/internal/export/attributes/metric.go b/pkg/internal/export/attributes/metric.go index 4e3683ea1..63a132543 100644 --- a/pkg/internal/export/attributes/metric.go +++ b/pkg/internal/export/attributes/metric.go @@ -61,6 +61,11 @@ var ( Prom: "db_client_operation_duration_seconds", OTEL: "db.client.operation.duration", } + KafkaClientDuration = Name{ + Section: "kafka.client.duration", + Prom: "kafka_client_duration_seconds", + OTEL: "kafka.client.duration", + } ) // normalizeMetric will facilitate the user-input in the attributes.enable section. diff --git a/pkg/internal/export/debug/debug.go b/pkg/internal/export/debug/debug.go index b1bdc9342..df99d72c9 100644 --- a/pkg/internal/export/debug/debug.go +++ b/pkg/internal/export/debug/debug.go @@ -72,6 +72,8 @@ func spanType(span *request.Span) string { return "SQL" case request.EventTypeRedisClient: return "REDIS" + case request.EventTypeKafkaClient: + return "KAFKA" } return "" diff --git a/pkg/internal/export/otel/metrics.go b/pkg/internal/export/otel/metrics.go index 18091a7bc..4b31b84a4 100644 --- a/pkg/internal/export/otel/metrics.go +++ b/pkg/internal/export/otel/metrics.go @@ -165,6 +165,7 @@ type MetricsReporter struct { attrGRPCServer []attributes.Field[*request.Span, attribute.KeyValue] attrGRPCClient []attributes.Field[*request.Span, attribute.KeyValue] attrDBClient []attributes.Field[*request.Span, attribute.KeyValue] + attrKafkaClient []attributes.Field[*request.Span, attribute.KeyValue] attrHTTPRequestSize []attributes.Field[*request.Span, attribute.KeyValue] attrHTTPClientRequestSize []attributes.Field[*request.Span, attribute.KeyValue] } @@ -181,6 +182,7 @@ type Metrics struct { grpcDuration instrument.Float64Histogram grpcClientDuration instrument.Float64Histogram dbClientDuration instrument.Float64Histogram + kafkaClientDuration instrument.Float64Histogram httpRequestSize instrument.Float64Histogram httpClientRequestSize instrument.Float64Histogram // trace span metrics @@ -246,6 +248,8 @@ func newMetricsReporter( request.SpanOTELGetters, mr.attributes.For(attributes.RPCClientDuration)) mr.attrDBClient = attributes.OpenTelemetryGetters( request.SpanOTELGetters, mr.attributes.For(attributes.DBClientDuration)) + mr.attrKafkaClient = attributes.OpenTelemetryGetters( + request.SpanOTELGetters, mr.attributes.For(attributes.KafkaClientDuration)) mr.reporters = NewReporterPool(cfg.ReportersCacheLen, func(id svc.UID, v *Metrics) { @@ -285,6 +289,7 @@ func (mr *MetricsReporter) otelMetricOptions(mlog *slog.Logger) []metric.Option metric.WithView(otelHistogramConfig(attributes.RPCServerDuration.OTEL, mr.cfg.Buckets.DurationHistogram, useExponentialHistograms)), metric.WithView(otelHistogramConfig(attributes.RPCClientDuration.OTEL, mr.cfg.Buckets.DurationHistogram, useExponentialHistograms)), metric.WithView(otelHistogramConfig(attributes.DBClientDuration.OTEL, mr.cfg.Buckets.DurationHistogram, useExponentialHistograms)), + metric.WithView(otelHistogramConfig(attributes.KafkaClientDuration.OTEL, mr.cfg.Buckets.DurationHistogram, useExponentialHistograms)), metric.WithView(otelHistogramConfig(attributes.HTTPServerRequestSize.OTEL, mr.cfg.Buckets.RequestSizeHistogram, useExponentialHistograms)), metric.WithView(otelHistogramConfig(attributes.HTTPClientRequestSize.OTEL, mr.cfg.Buckets.RequestSizeHistogram, useExponentialHistograms)), } @@ -341,6 +346,10 @@ func (mr *MetricsReporter) setupOtelMeters(m *Metrics, meter instrument.Meter) e if err != nil { return fmt.Errorf("creating db client duration histogram metric: %w", err) } + m.kafkaClientDuration, err = meter.Float64Histogram(attributes.KafkaClientDuration.OTEL, instrument.WithUnit("s")) + if err != nil { + return fmt.Errorf("creating kafka client duration histogram metric: %w", err) + } m.httpRequestSize, err = meter.Float64Histogram(attributes.HTTPServerRequestSize.OTEL, instrument.WithUnit("By")) if err != nil { return fmt.Errorf("creating http size histogram metric: %w", err) @@ -672,6 +681,9 @@ func (r *Metrics) record(span *request.Span, mr *MetricsReporter) { case request.EventTypeRedisClient, request.EventTypeSQLClient: r.dbClientDuration.Record(r.ctx, duration, withAttributes(span, mr.attrDBClient)) + case request.EventTypeKafkaClient: + r.kafkaClientDuration.Record(r.ctx, duration, + withAttributes(span, mr.attrKafkaClient)) } } diff --git a/pkg/internal/export/otel/traces.go b/pkg/internal/export/otel/traces.go index 9664494e8..16579e9cf 100644 --- a/pkg/internal/export/otel/traces.go +++ b/pkg/internal/export/otel/traces.go @@ -30,7 +30,7 @@ import ( "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp" "go.opentelemetry.io/otel/sdk/metric" "go.opentelemetry.io/otel/sdk/trace" - semconv "go.opentelemetry.io/otel/semconv/v1.19.0" + semconv "go.opentelemetry.io/otel/semconv/v1.25.0" trace2 "go.opentelemetry.io/otel/trace" "go.uber.org/zap" @@ -600,6 +600,15 @@ func traceAttributes(span *request.Span, optionalAttrs map[attr.Name]struct{}) [ } } } + case request.EventTypeKafkaClient: + operation := attribute.Key(semconv.MessagingOperationKey).String(span.Method) + attrs = []attribute.KeyValue{ + semconv.MessagingSystemKafka, + //semconv.MessagingMessageBodySize(int(span.ContentLength)), + semconv.MessagingDestinationName(span.Path), + semconv.MessagingClientID(span.OtherNamespace), + operation, + } } return attrs diff --git a/pkg/internal/export/otel/traces_test.go b/pkg/internal/export/otel/traces_test.go index 21704af1a..4c312d5d0 100644 --- a/pkg/internal/export/otel/traces_test.go +++ b/pkg/internal/export/otel/traces_test.go @@ -19,7 +19,7 @@ import ( "go.opentelemetry.io/collector/pdata/ptrace" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/codes" - semconv "go.opentelemetry.io/otel/semconv/v1.19.0" + semconv "go.opentelemetry.io/otel/semconv/v1.25.0" "go.opentelemetry.io/otel/trace" "github.com/grafana/beyla/pkg/internal/export/attributes" @@ -551,6 +551,24 @@ func TestGenerateTracesAttributes(t *testing.T) { ensureTraceStrAttr(t, attrs, semconv.DBSystemKey, "other_sql") ensureTraceStrAttr(t, attrs, attribute.Key(attr.DBQueryText), "SELECT password FROM credentials WHERE username=\"bill\"") }) + t.Run("test Kafka trace generation", func(t *testing.T) { + span := request.Span{Type: request.EventTypeKafkaClient, Method: "receive", Path: "important-topic", OtherNamespace: "test"} + traces := GenerateTraces(&span, map[attr.Name]struct{}{}) + + assert.Equal(t, 1, traces.ResourceSpans().Len()) + assert.Equal(t, 1, traces.ResourceSpans().At(0).ScopeSpans().Len()) + assert.Equal(t, 1, traces.ResourceSpans().At(0).ScopeSpans().At(0).Spans().Len()) + spans := traces.ResourceSpans().At(0).ScopeSpans().At(0).Spans() + + assert.NotEmpty(t, spans.At(0).SpanID().String()) + assert.NotEmpty(t, spans.At(0).TraceID().String()) + + attrs := spans.At(0).Attributes() + ensureTraceStrAttr(t, attrs, semconv.MessagingOperationKey, "receive") + ensureTraceStrAttr(t, attrs, semconv.MessagingDestinationNameKey, "important-topic") + ensureTraceStrAttr(t, attrs, semconv.MessagingClientIDKey, "test") + + }) } func TestAttrsToMap(t *testing.T) { diff --git a/pkg/internal/export/prom/prom.go b/pkg/internal/export/prom/prom.go index 58ba40068..36c944a56 100644 --- a/pkg/internal/export/prom/prom.go +++ b/pkg/internal/export/prom/prom.go @@ -138,6 +138,7 @@ type metricsReporter struct { grpcDuration *expire.Expirer[prometheus.Histogram] grpcClientDuration *expire.Expirer[prometheus.Histogram] dbClientDuration *expire.Expirer[prometheus.Histogram] + kafkaClientDuration *expire.Expirer[prometheus.Histogram] httpRequestSize *expire.Expirer[prometheus.Histogram] httpClientRequestSize *expire.Expirer[prometheus.Histogram] @@ -147,6 +148,7 @@ type metricsReporter struct { attrGRPCDuration []attributes.Field[*request.Span, string] attrGRPCClientDuration []attributes.Field[*request.Span, string] attrDBClientDuration []attributes.Field[*request.Span, string] + attrKafkaClientDuration []attributes.Field[*request.Span, string] attrHTTPRequestSize []attributes.Field[*request.Span, string] attrHTTPClientRequestSize []attributes.Field[*request.Span, string] @@ -220,6 +222,8 @@ func newReporter( attrsProvider.For(attributes.RPCClientDuration)) attrDBClientDuration := attributes.PrometheusGetters(request.SpanPromGetters, attrsProvider.For(attributes.DBClientDuration)) + attrKafkaClientDuration := attributes.PrometheusGetters(request.SpanPromGetters, + attrsProvider.For(attributes.HTTPServerDuration)) clock := expire.NewCachedClock(timeNow) // If service name is not explicitly set, we take the service name as set by the @@ -235,6 +239,7 @@ func newReporter( attrGRPCDuration: attrGRPCDuration, attrGRPCClientDuration: attrGRPCClientDuration, attrDBClientDuration: attrDBClientDuration, + attrKafkaClientDuration: attrKafkaClientDuration, attrHTTPRequestSize: attrHTTPRequestSize, attrHTTPClientRequestSize: attrHTTPClientRequestSize, beylaInfo: expire.NewExpirer[prometheus.Gauge](prometheus.NewGaugeVec(prometheus.GaugeOpts{ @@ -290,6 +295,14 @@ func newReporter( NativeHistogramMaxBucketNumber: defaultHistogramMaxBucketNumber, NativeHistogramMinResetDuration: defaultHistogramMinResetDuration, }, labelNames(attrDBClientDuration)).MetricVec, clock.Time, cfg.TTL), + kafkaClientDuration: expire.NewExpirer[prometheus.Histogram](prometheus.NewHistogramVec(prometheus.HistogramOpts{ + Name: attributes.KafkaClientDuration.Prom, + Help: "duration of Kafka client operations, in seconds", + Buckets: cfg.Buckets.DurationHistogram, + NativeHistogramBucketFactor: defaultHistogramBucketFactor, + NativeHistogramMaxBucketNumber: defaultHistogramMaxBucketNumber, + NativeHistogramMinResetDuration: defaultHistogramMinResetDuration, + }, labelNames(attrKafkaClientDuration)).MetricVec, clock.Time, cfg.TTL), httpRequestSize: expire.NewExpirer[prometheus.Histogram](prometheus.NewHistogramVec(prometheus.HistogramOpts{ Name: attributes.HTTPServerRequestSize.Prom, Help: "size, in bytes, of the HTTP request body as received at the server side", @@ -370,6 +383,7 @@ func newReporter( mr.httpClientDuration, mr.grpcClientDuration, mr.dbClientDuration, + mr.kafkaClientDuration, mr.httpRequestSize, mr.httpDuration, mr.grpcDuration) @@ -451,6 +465,10 @@ func (r *metricsReporter) observe(span *request.Span) { r.dbClientDuration.WithLabelValues( labelValues(span, r.attrDBClientDuration)..., ).Observe(duration) + case request.EventTypeKafkaClient: + r.kafkaClientDuration.WithLabelValues( + labelValues(span, r.attrKafkaClientDuration)..., + ).Observe(duration) } } if r.cfg.SpanMetricsEnabled() { From 26977c039bf010723aebbca3add50bedb9a40f92 Mon Sep 17 00:00:00 2001 From: Marc Tuduri Date: Wed, 29 May 2024 18:32:55 +0200 Subject: [PATCH 03/16] add integration tests --- Makefile | 7 +- pkg/internal/export/otel/traces.go | 2 + .../components/pythonkafka/Dockerfile | 7 + .../components/pythonkafka/main.py | 87 +++++++ .../configs/grafana-datasources.yaml | 41 ++++ .../configs/instrumenter-config-traces.yml | 12 + .../configs/otelcol-config.yaml | 43 ++++ .../configs/prometheus-config.yml | 13 ++ .../configs/tempo-config.yaml | 27 +++ .../docker-compose-beyla-kafka.yml | 69 ++++++ .../docker-compose-generic-template.yml | 37 +++ .../docker-compose-include-base.yml | 3 + test/oats/kafka_other_langs/go.mod | 63 +++++ test/oats/kafka_other_langs/go.sum | 218 ++++++++++++++++++ test/oats/kafka_other_langs/oats_test.go | 44 ++++ .../kafka_other_langs/yaml/oats_kafka.yaml | 25 ++ 16 files changed, 697 insertions(+), 1 deletion(-) create mode 100644 test/integration/components/pythonkafka/Dockerfile create mode 100644 test/integration/components/pythonkafka/main.py create mode 100644 test/oats/kafka_other_langs/configs/grafana-datasources.yaml create mode 100644 test/oats/kafka_other_langs/configs/instrumenter-config-traces.yml create mode 100644 test/oats/kafka_other_langs/configs/otelcol-config.yaml create mode 100644 test/oats/kafka_other_langs/configs/prometheus-config.yml create mode 100644 test/oats/kafka_other_langs/configs/tempo-config.yaml create mode 100644 test/oats/kafka_other_langs/docker-compose-beyla-kafka.yml create mode 100644 test/oats/kafka_other_langs/docker-compose-generic-template.yml create mode 100644 test/oats/kafka_other_langs/docker-compose-include-base.yml create mode 100644 test/oats/kafka_other_langs/go.mod create mode 100644 test/oats/kafka_other_langs/go.sum create mode 100644 test/oats/kafka_other_langs/oats_test.go create mode 100644 test/oats/kafka_other_langs/yaml/oats_kafka.yaml diff --git a/Makefile b/Makefile index dd7903a84..b9ae0c738 100644 --- a/Makefile +++ b/Makefile @@ -287,8 +287,13 @@ oats-test-redis-other-langs: oats-prereq mkdir -p test/oats/redis_other_langs/$(TEST_OUTPUT)/run cd test/oats/redis_other_langs && TESTCASE_BASE_PATH=./yaml $(GINKGO) -v -r +.PHONY: oats-test-kafka-other-langs +oats-test-kafka-other-langs: oats-prereq + mkdir -p test/oats/kafka_other_langs/$(TEST_OUTPUT)/run + cd test/oats/kafka_other_langs && TESTCASE_BASE_PATH=./yaml $(GINKGO) -v -r + .PHONY: oats-test -oats-test: oats-test-sql oats-test-sql-statement oats-test-sql-other-langs oats-test-redis-other-langs +oats-test: oats-test-sql oats-test-sql-statement oats-test-sql-other-langs oats-test-redis-other-langs oats-test-kafka-other-langs $(MAKE) itest-coverage-data .PHONY: oats-test-debug diff --git a/pkg/internal/export/otel/traces.go b/pkg/internal/export/otel/traces.go index 16579e9cf..4790ba6ee 100644 --- a/pkg/internal/export/otel/traces.go +++ b/pkg/internal/export/otel/traces.go @@ -641,6 +641,8 @@ func TraceName(span *request.Span) string { return "REDIS" } return span.Method + case request.EventTypeKafkaClient: + return fmt.Sprintf("%s %s", span.Path, span.Method) } return "" } diff --git a/test/integration/components/pythonkafka/Dockerfile b/test/integration/components/pythonkafka/Dockerfile new file mode 100644 index 000000000..00aa60d05 --- /dev/null +++ b/test/integration/components/pythonkafka/Dockerfile @@ -0,0 +1,7 @@ +# Dockerfile that will build a container that runs python +FROM python:latest +EXPOSE 8080 +RUN apt update +RUN pip install confluent-kafka +COPY main.py /main.py +CMD ["python", "main.py"] \ No newline at end of file diff --git a/test/integration/components/pythonkafka/main.py b/test/integration/components/pythonkafka/main.py new file mode 100644 index 000000000..f702cd6cb --- /dev/null +++ b/test/integration/components/pythonkafka/main.py @@ -0,0 +1,87 @@ +from confluent_kafka import Producer, Consumer, KafkaException +import json +import json +from http.server import BaseHTTPRequestHandler, HTTPServer + +topic = 'example_topic' + + +def delivery_report(err, msg): + if err is not None: + print(f"Message delivery failed: {err}") + else: + print(f"Message delivered to {msg.topic()} [{msg.partition()}]") + +def produce_messages(): + # Kafka producer configuration + producer_config = { + 'bootstrap.servers': 'localhost:9093' # Kafka broker address + } + + producer = Producer(producer_config) + + # Produce messages + for i in range(10): + message = {'id': i, 'value': f'Test message {i}'} + producer.produce(topic, key=str(i), value=json.dumps(message), callback=delivery_report) + producer.poll(0) + + # Wait for any outstanding messages to be delivered and delivery reports to be received + producer.flush() + + +# Configuration for the Kafka consumer +consumer_config = { + 'bootstrap.servers': 'localhost:9093', + 'group.id': 'example_group', + 'auto.offset.reset': 'earliest' +} + +class KafkaConsumerService: + def __init__(self): + self.consumer = Consumer(consumer_config) + self.consumer.subscribe([topic]) + + def fetch_message(self): + try: + msg = self.consumer.poll(timeout=1.0) + if msg is None: + return {'error': 'No message received'} + if msg.error(): + if msg.error().code() == KafkaException._PARTITION_EOF: + print(f"Reached end of partition: {msg.topic()} [{msg.partition()}]") + return {'error': 'Reached end of partition'} + else: + raise KafkaException(msg.error()) + else: + message = json.loads(msg.value().decode('utf-8')) + return message + except Exception as e: + print(f"Error consuming message: {e}") + return {'error': str(e)} + +# Create an instance of the Kafka consumer service +kafka_service = KafkaConsumerService() + +class RequestHandler(BaseHTTPRequestHandler): + def do_GET(self): + if self.path == '/message': + self.send_response(200) + self.send_header('Content-type', 'application/json') + self.end_headers() + message = kafka_service.fetch_message() + self.wfile.write(json.dumps(message).encode('utf-8')) + else: + self.send_response(404) + self.end_headers() + +def run_server(server_class=HTTPServer, handler_class=RequestHandler, port=8080): + server_address = ('', port) + httpd = server_class(server_address, handler_class) + print(f'Starting httpd server on port {port}') + httpd.serve_forever() + + +if __name__ == '__main__': + produce_messages() + run_server() \ No newline at end of file diff --git a/test/oats/kafka_other_langs/configs/grafana-datasources.yaml b/test/oats/kafka_other_langs/configs/grafana-datasources.yaml new file mode 100644 index 000000000..c7b118ad5 --- /dev/null +++ b/test/oats/kafka_other_langs/configs/grafana-datasources.yaml @@ -0,0 +1,41 @@ +apiVersion: 1 + +datasources: + - name: Prometheus + type: prometheus + uid: prometheus + url: http://prometheus:9090 + jsonData: + exemplarTraceIdDestinations: + - name: trace_id + datasourceUid: tempo + + - name: Tempo + type: tempo + uid: tempo + url: http://tempo:3200 + jsonData: + tracesToLogs: + datasourceUid: 'loki' + mappedTags: [{ key: 'service.name', value: 'job' }] + mapTagNamesEnabled: true + filterByTraceID: true + serviceMap: + datasourceUid: 'prometheus' + search: + hide: false + nodeGraph: + enabled: true + lokiSearch: + datasourceUid: 'loki' + + - name: Loki + type: loki + uid: loki + url: http://loki:3100 + jsonData: + derivedFields: + - name: 'trace_id' + matcherRegex: '"traceid":"(\w+)"' + url: '$${__value.raw}' + datasourceUid: 'tempo' diff --git a/test/oats/kafka_other_langs/configs/instrumenter-config-traces.yml b/test/oats/kafka_other_langs/configs/instrumenter-config-traces.yml new file mode 100644 index 000000000..b8346b54e --- /dev/null +++ b/test/oats/kafka_other_langs/configs/instrumenter-config-traces.yml @@ -0,0 +1,12 @@ +routes: + patterns: + - /create-trace + - /smoke + - /greeting + - /sqltest + unmatched: path +attributes: + select: + traces: + include: + - db.statement diff --git a/test/oats/kafka_other_langs/configs/otelcol-config.yaml b/test/oats/kafka_other_langs/configs/otelcol-config.yaml new file mode 100644 index 000000000..b830bc605 --- /dev/null +++ b/test/oats/kafka_other_langs/configs/otelcol-config.yaml @@ -0,0 +1,43 @@ +receivers: + otlp: + protocols: + grpc: + http: + +processors: + batch: + +exporters: + prometheusremotewrite: + endpoint: http://prometheus:9090/api/v1/write + add_metric_suffixes: true + otlp: + endpoint: tempo:4317 + tls: + insecure: true + loki: + endpoint: http://loki:3100/loki/api/v1/push + logging/metrics: + verbosity: detailed + logging/traces: + verbosity: detailed + logging/logs: + verbosity: detailed + +service: + pipelines: + traces: + receivers: [otlp] + processors: [batch] + #exporters: [otlp] + exporters: [otlp,logging/traces] + metrics: + receivers: [otlp] + processors: [batch] + exporters: [prometheusremotewrite] + #exporters: [prometheusremotewrite,logging/metrics] + logs: + receivers: [otlp] + processors: [batch] + exporters: [loki] + #exporters: [loki,logging/logs] diff --git a/test/oats/kafka_other_langs/configs/prometheus-config.yml b/test/oats/kafka_other_langs/configs/prometheus-config.yml new file mode 100644 index 000000000..cc4215ccc --- /dev/null +++ b/test/oats/kafka_other_langs/configs/prometheus-config.yml @@ -0,0 +1,13 @@ +global: + evaluation_interval: 30s + scrape_interval: 5s +scrape_configs: + - job_name: otel + honor_labels: true + static_configs: + - targets: + - 'otelcol:9464' + - job_name: otel-collector + static_configs: + - targets: + - 'otelcol:8888' diff --git a/test/oats/kafka_other_langs/configs/tempo-config.yaml b/test/oats/kafka_other_langs/configs/tempo-config.yaml new file mode 100644 index 000000000..392dbaf4d --- /dev/null +++ b/test/oats/kafka_other_langs/configs/tempo-config.yaml @@ -0,0 +1,27 @@ +server: + http_listen_port: 3200 + grpc_listen_port: 9096 + +distributor: + receivers: + otlp: + protocols: + grpc: + +storage: + trace: + backend: local + wal: + path: /tmp/tempo/wal + local: + path: /tmp/tempo/blocks + +#metrics_generator: +# storage: +# path: /tmp/tempo/generator/wal +# remote_write: +# - url: http://localhost:9090/api/v1/write +# send_exemplars: true + +#overrides: +# metrics_generator_processors: [span-metrics] diff --git a/test/oats/kafka_other_langs/docker-compose-beyla-kafka.yml b/test/oats/kafka_other_langs/docker-compose-beyla-kafka.yml new file mode 100644 index 000000000..abbbf50a2 --- /dev/null +++ b/test/oats/kafka_other_langs/docker-compose-beyla-kafka.yml @@ -0,0 +1,69 @@ +services: + zookeeper: + restart: always + container_name: kafka-like-zookeeper + image: docker.io/bitnami/zookeeper:3.8 + ports: + - "2181:2181" + volumes: + - "zookeeper-volume:/bitnami" + environment: + - ALLOW_ANONYMOUS_LOGIN=yes + kafka: + restart: always + container_name: kafka-like + image: docker.io/bitnami/kafka:3.3 + ports: + - "9093:9093" + volumes: + - "kafka-volume:/bitnami" + environment: + - KAFKA_BROKER_ID=1 + - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181 + - ALLOW_PLAINTEXT_LISTENER=yes + - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CLIENT:PLAINTEXT,EXTERNAL:PLAINTEXT + - KAFKA_CFG_LISTENERS=CLIENT://:9092,EXTERNAL://:9093 + - KAFKA_CFG_ADVERTISED_LISTENERS=CLIENT://kafka:9092,EXTERNAL://localhost:9093 + - KAFKA_CFG_INTER_BROKER_LISTENER_NAME=CLIENT + depends_on: + - zookeeper + # Simple python HTTP server, which exposes one endpoint /message that does Kafka query + testserver: + build: + context: ../../integration/components/pythonkafka + dockerfile: Dockerfile + image: pythonkafka + ports: + - "8080:8080" + depends_on: + kafka: + condition: service_started + # eBPF auto instrumenter + autoinstrumenter: + build: + context: ../../.. + dockerfile: ./test/integration/components/beyla/Dockerfile + command: + - --config=/configs/instrumenter-config-traces.yml + volumes: + - {{ .ConfigDir }}:/configs + - ./testoutput/run:/var/run/beyla + - ../../../testoutput:/coverage + privileged: true # in some environments (not GH Pull Requests) you can set it to false and then cap_add: [ SYS_ADMIN ] + network_mode: "service:testserver" + pid: "service:testserver" + environment: + GOCOVERDIR: "/coverage" + BEYLA_PRINT_TRACES: "true" + BEYLA_OPEN_PORT: {{ .ApplicationPort }} + BEYLA_SERVICE_NAMESPACE: "integration-test" + BEYLA_METRICS_INTERVAL: "10ms" + BEYLA_BPF_BATCH_TIMEOUT: "10ms" + BEYLA_LOG_LEVEL: "DEBUG" + OTEL_EXPORTER_OTLP_ENDPOINT: "http://collector:4318" + depends_on: + testserver: + condition: service_started +volumes: + kafka-volume: + zookeeper-volume: \ No newline at end of file diff --git a/test/oats/kafka_other_langs/docker-compose-generic-template.yml b/test/oats/kafka_other_langs/docker-compose-generic-template.yml new file mode 100644 index 000000000..80214399d --- /dev/null +++ b/test/oats/kafka_other_langs/docker-compose-generic-template.yml @@ -0,0 +1,37 @@ +version: "3.9" +services: + grafana: + image: grafana/grafana:10.0.5 + volumes: + - "{{ .ConfigDir }}/grafana-datasources.yaml:/etc/grafana/provisioning/datasources/grafana-datasources.yaml" + ports: + - "{{ .GrafanaHTTPPort }}:3000" + prometheus: + image: prom/prometheus:v2.47.0 + command: + - --web.enable-remote-write-receiver + - --enable-feature=exemplar-storage + - --enable-feature=native-histograms + - --config.file=/etc/prometheus/prometheus.yml + ports: + - "{{ .PrometheusHTTPPort }}:9090" + tempo: + image: grafana/tempo:2.2.3 + volumes: + - "{{ .ConfigDir }}/tempo-config.yaml:/config.yaml" + command: + - --config.file=/config.yaml + ports: + - "{{ .TempoHTTPPort }}:3200" +# loki: +# image: grafana/loki:2.9.0 +# ports: +# - "{{ .LokiHTTPPort }}:3100" + collector: + image: otel/opentelemetry-collector-contrib:0.85.0 + volumes: + - "{{ .ConfigDir }}/otelcol-config.yaml:/config.yaml" + command: + - --config=file:/config.yaml + # we currently don't support this in our dashboards and grafana agent doesn't understand it yet + - --feature-gates=-pkg.translator.prometheus.NormalizeName diff --git a/test/oats/kafka_other_langs/docker-compose-include-base.yml b/test/oats/kafka_other_langs/docker-compose-include-base.yml new file mode 100644 index 000000000..7a3f4b3e8 --- /dev/null +++ b/test/oats/kafka_other_langs/docker-compose-include-base.yml @@ -0,0 +1,3 @@ +include: +{{ range .files }}- {{ . }} +{{ end }} diff --git a/test/oats/kafka_other_langs/go.mod b/test/oats/kafka_other_langs/go.mod new file mode 100644 index 000000000..bcb510218 --- /dev/null +++ b/test/oats/kafka_other_langs/go.mod @@ -0,0 +1,63 @@ +module github.com/grafana/beyla/test/oats + +go 1.22 + +require ( + github.com/grafana/oats v0.0.0-20231025143155-a8ecae950304 // indirect + github.com/onsi/ginkgo/v2 v2.12.1 + github.com/onsi/gomega v1.28.0 +) + +require ( + github.com/beorn7/perks v1.0.1 // indirect + github.com/cenkalti/backoff/v4 v4.2.1 // indirect + github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/dennwc/varint v1.0.0 // indirect + github.com/go-kit/log v0.2.1 // indirect + github.com/go-logfmt/logfmt v0.6.0 // indirect + github.com/go-logr/logr v1.2.4 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/protobuf v1.5.3 // indirect + github.com/google/go-cmp v0.5.9 // indirect + github.com/google/pprof v0.0.0-20230705174524-200ffdc848b8 // indirect + github.com/grafana/dashboard-linter v0.0.0-20230815114304-3c1213ef32d9 // indirect + github.com/grafana/regexp v0.0.0-20221122212121-6b5c0a4cb7fd // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect + github.com/prometheus/client_golang v1.16.0 // indirect + github.com/prometheus/client_model v0.4.0 // indirect + github.com/prometheus/common v0.44.0 // indirect + github.com/prometheus/procfs v0.11.0 // indirect + github.com/prometheus/prometheus v0.46.0 // indirect + github.com/stretchr/testify v1.8.4 // indirect + go.opentelemetry.io/collector/pdata v0.66.0 // indirect + go.opentelemetry.io/otel v1.17.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.17.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.17.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.17.0 // indirect + go.opentelemetry.io/otel/metric v1.17.0 // indirect + go.opentelemetry.io/otel/sdk v1.17.0 // indirect + go.opentelemetry.io/otel/trace v1.17.0 // indirect + go.opentelemetry.io/proto/otlp v1.0.0 // indirect + go.uber.org/atomic v1.11.0 // indirect + go.uber.org/goleak v1.2.1 // indirect + go.uber.org/multierr v1.8.0 // indirect + golang.org/x/exp v0.0.0-20230713183714-613f0c0eb8a1 // indirect + golang.org/x/net v0.14.0 // indirect + golang.org/x/sys v0.12.0 // indirect + golang.org/x/text v0.12.0 // indirect + golang.org/x/tools v0.12.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20230717213848-3f92550aa753 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20230717213848-3f92550aa753 // indirect + google.golang.org/grpc v1.58.3 // indirect + google.golang.org/protobuf v1.31.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) diff --git a/test/oats/kafka_other_langs/go.sum b/test/oats/kafka_other_langs/go.sum new file mode 100644 index 000000000..5d25f8363 --- /dev/null +++ b/test/oats/kafka_other_langs/go.sum @@ -0,0 +1,218 @@ +github.com/Azure/azure-sdk-for-go v65.0.0+incompatible h1:HzKLt3kIwMm4KeJYTdx9EbjRYTySD/t8i1Ee/W5EGXw= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.7.0 h1:8q4SaHjFsClSvuVne0ID/5Ka8u3fcIHyqkLjcFpNRHQ= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.7.0/go.mod h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0 h1:vcYCAze6p19qBW7MhZybIsqD8sMV8js0NyQM8JDnVtg= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0/go.mod h1:OQeznEEkTZ9OrhHJoDD8ZDq51FHgXjqtP9z6bEwBq9U= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0 h1:sXr+ck84g/ZlZUOZiNELInmMgOsuGwdjjVkEIde0OtY= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0/go.mod h1:okt5dMMTOFjX/aovMlrjvvXoPMBVSPzk9185BT0+eZM= +github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0 h1:OBhqkivkhkMqLPymWEppkm7vgPQY2XsHoEkaMQ0AdZY= +github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0/go.mod h1:kgDmCTgBzIEPFElEF+FK0SdjAor06dRq2Go927dnQ6o= +github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 h1:s6gZFSlWYmbqAuRjVTiNNhvNRfY2Wxp9nhfyel4rklc= +github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= +github.com/aws/aws-sdk-go v1.44.302 h1:ST3ko6GrJKn3Xi+nAvxjG3uk/V1pW8KC52WLeIxqqNk= +github.com/aws/aws-sdk-go v1.44.302/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= +github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dennwc/varint v1.0.0 h1:kGNFFSSw8ToIy3obO/kKr8U9GZYUAxQEVuix4zfDWzE= +github.com/dennwc/varint v1.0.0/go.mod h1:hnItb35rvZvJrbTALZtY/iQfDs48JKRG1RPpgziApxA= +github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= +github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= +github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4= +github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= +github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= +github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE= +github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= +github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/pprof v0.0.0-20230705174524-200ffdc848b8 h1:n6vlPhxsA+BW/XsS5+uqi7GyzaLa5MH7qlSLBZtRdiA= +github.com/google/pprof v0.0.0-20230705174524-200ffdc848b8/go.mod h1:Jh3hGz2jkYak8qXPD19ryItVnUgpgeqzdkY/D0EaeuA= +github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= +github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/grafana/dashboard-linter v0.0.0-20230815114304-3c1213ef32d9 h1:NXsChAvUCYFqCTWS3hmN543x/Rk8cDev4s18vaZq6Fc= +github.com/grafana/dashboard-linter v0.0.0-20230815114304-3c1213ef32d9/go.mod h1:4zovusCMljsbpo6ISSN/awpv+bjHhZJphYNLI1+7I74= +github.com/grafana/oats v0.0.0-20231004163855-07f6e62e76a3 h1:Viyp4xu6ltWamZG9bUMR8yfHhsJlC08+wQvt3R33xv4= +github.com/grafana/oats v0.0.0-20231004163855-07f6e62e76a3/go.mod h1:UlueL8BBVkLhE1RwSst5oa5KhO6qnvgoy45bQ//1VdE= +github.com/grafana/oats v0.0.0-20231025143155-a8ecae950304 h1:wnNo6AlWG5IahNGHoi42fPBH6D9F6jz93qj6UfITYGQ= +github.com/grafana/oats v0.0.0-20231025143155-a8ecae950304/go.mod h1:UlueL8BBVkLhE1RwSst5oa5KhO6qnvgoy45bQ//1VdE= +github.com/grafana/regexp v0.0.0-20221122212121-6b5c0a4cb7fd h1:PpuIBO5P3e9hpqBD0O/HjhShYuM6XE0i/lbE6J94kww= +github.com/grafana/regexp v0.0.0-20221122212121-6b5c0a4cb7fd/go.mod h1:M5qHK+eWfAv8VR/265dIuEpL3fNfeC21tXXp9itM24A= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 h1:YBftPWNWd4WwGqtY2yeZL2ef8rHAxPBD8KFhJpmcqms= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg= +github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= +github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= +github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= +github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/compress v1.16.7 h1:2mk3MPGNzKyxErAw8YaohYh69+pa4sIQSC0fPGCFR9I= +github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= +github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/onsi/ginkgo/v2 v2.12.1 h1:uHNEO1RP2SpuZApSkel9nEh1/Mu+hmQe7Q+Pepg5OYA= +github.com/onsi/ginkgo/v2 v2.12.1/go.mod h1:TE309ZR8s5FsKKpuB1YAQYBzCaAfUgatB/xlT/ETL/o= +github.com/onsi/gomega v1.28.0 h1:i2rg/p9n/UqIDAMFUJ6qIUUMcsqOuUHgbpbu235Vr1c= +github.com/onsi/gomega v1.28.0/go.mod h1:A1H2JE76sI14WIP57LMKj7FVfCHx3g3BcZVjJG8bjX8= +github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU= +github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v1.16.0 h1:yk/hx9hDbrGHovbci4BY+pRMfSuuat626eFsHb7tmT8= +github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc= +github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY= +github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= +github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY= +github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= +github.com/prometheus/common/sigv4 v0.1.0 h1:qoVebwtwwEhS85Czm2dSROY5fTo2PAPEVdDeppTwGX4= +github.com/prometheus/common/sigv4 v0.1.0/go.mod h1:2Jkxxk9yYvCkE5G1sQT7GuEXm57JrvHu9k5YwTjsNtI= +github.com/prometheus/procfs v0.11.0 h1:5EAgkfkMl659uZPbe9AS2N68a7Cc1TJbPEuGzFuRbyk= +github.com/prometheus/procfs v0.11.0/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM= +github.com/prometheus/prometheus v0.46.0 h1:9JSdXnsuT6YsbODEhSQMwxNkGwPExfmzqG73vCMk/Kw= +github.com/prometheus/prometheus v0.46.0/go.mod h1:10L5IJE5CEsjee1FnOcVswYXlPIscDWWt3IJ2UDYrz4= +github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= +github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +go.opentelemetry.io/collector/pdata v0.66.0 h1:UdE5U6MsDNzuiWaXdjGx2lC3ElVqWmN/hiUE8vyvSuM= +go.opentelemetry.io/collector/pdata v0.66.0/go.mod h1:pqyaznLzk21m+1KL6fwOsRryRELL+zNM0qiVSn0MbVc= +go.opentelemetry.io/otel v1.17.0 h1:MW+phZ6WZ5/uk2nd93ANk/6yJ+dVrvNWUjGhnnFU5jM= +go.opentelemetry.io/otel v1.17.0/go.mod h1:I2vmBGtFaODIVMBSTPVDlJSzBDNf93k60E6Ft0nyjo0= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.17.0 h1:U5GYackKpVKlPrd/5gKMlrTlP2dCESAAFU682VCpieY= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.17.0/go.mod h1:aFsJfCEnLzEu9vRRAcUiB/cpRTbVsNdF3OHSPpdjxZQ= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.17.0 h1:iGeIsSYwpYSvh5UGzWrJfTDJvPjrXtxl3GUppj6IXQU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.17.0/go.mod h1:1j3H3G1SBYpZFti6OI4P0uRQCW20MXkG5v4UWXppLLE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.17.0 h1:kvWMtSUNVylLVrOE4WLUmBtgziYoCIYUNSpTYtMzVJI= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.17.0/go.mod h1:SExUrRYIXhDgEKG4tkiQovd2HTaELiHUsuK08s5Nqx4= +go.opentelemetry.io/otel/metric v1.17.0 h1:iG6LGVz5Gh+IuO0jmgvpTB6YVrCGngi8QGm+pMd8Pdc= +go.opentelemetry.io/otel/metric v1.17.0/go.mod h1:h4skoxdZI17AxwITdmdZjjYJQH5nzijUUjm+wtPph5o= +go.opentelemetry.io/otel/sdk v1.17.0 h1:FLN2X66Ke/k5Sg3V623Q7h7nt3cHXaW1FOvKKrW0IpE= +go.opentelemetry.io/otel/sdk v1.17.0/go.mod h1:U87sE0f5vQB7hwUoW98pW5Rz4ZDuCFBZFNUBlSgmDFQ= +go.opentelemetry.io/otel/trace v1.17.0 h1:/SWhSRHmDPOImIAetP1QAeMnZYiQXrTy4fMMYOdSKWQ= +go.opentelemetry.io/otel/trace v1.17.0/go.mod h1:I/4vKTgFclIsXRVucpH25X0mpFSczM7aHeaz0ZBLWjY= +go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= +go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= +go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= +go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4= +go.uber.org/multierr v1.8.0 h1:dg6GjLku4EH+249NNmoIciG9N/jURbDG+pFlTkhzIC8= +go.uber.org/multierr v1.8.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk= +golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= +golang.org/x/exp v0.0.0-20230713183714-613f0c0eb8a1 h1:MGwJjxBy0HJshjDNfLsYO8xppfqWlA5ZT9OhtUUhTNw= +golang.org/x/exp v0.0.0-20230713183714-613f0c0eb8a1/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.14.0 h1:BONx9s002vGdD9umnlX1Po8vOZmrgH34qlHcD1MfK14= +golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= +golang.org/x/oauth2 v0.10.0 h1:zHCpF2Khkwy4mMB4bv0U37YtJdTGW8jI0glAApi0Kh8= +golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc= +golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.12.0 h1:YW6HUoUmYBpwSgyaGaZq1fHjrBjX1rlpZ54T6mu2kss= +golang.org/x/tools v0.12.0/go.mod h1:Sc0INKfu04TlqNoRA1hgpFZbhYXHPr4V5DzpSBTPqQM= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20230717213848-3f92550aa753 h1:+VoAg+OKmWaommL56xmZSE2sUK8A7m6SUO7X89F2tbw= +google.golang.org/genproto v0.0.0-20230717213848-3f92550aa753/go.mod h1:iqkVr8IRpZ53gx1dEnWlCUIEwDWqWARWrbzpasaTNYM= +google.golang.org/genproto/googleapis/api v0.0.0-20230717213848-3f92550aa753 h1:lCbbUxUDD+DiXx9Q6F/ttL0aAu7N2pz8XnmMm8ZW4NE= +google.golang.org/genproto/googleapis/api v0.0.0-20230717213848-3f92550aa753/go.mod h1:rsr7RhLuwsDKL7RmgDDCUc6yaGr1iqceVb5Wv6f6YvQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230717213848-3f92550aa753 h1:XUODHrpzJEUeWmVo/jfNTLj0YyVveOo28oE6vkFbkO4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230717213848-3f92550aa753/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= +google.golang.org/grpc v1.58.3 h1:BjnpXut1btbtgN/6sp+brB2Kbm2LjNXnidYujAVbSoQ= +google.golang.org/grpc v1.58.3/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/test/oats/kafka_other_langs/oats_test.go b/test/oats/kafka_other_langs/oats_test.go new file mode 100644 index 000000000..e02ff1cee --- /dev/null +++ b/test/oats/kafka_other_langs/oats_test.go @@ -0,0 +1,44 @@ +package oats + +import ( + "fmt" + "testing" + + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" + + "github.com/grafana/oats/yaml" +) + +func TestYaml(t *testing.T) { + RegisterFailHandler(Fail) + RunSpecs(t, "Yaml Suite") +} + +var _ = Describe("test case", Label("docker", "integration", "slow"), func() { + fmt.Println("First test") + cases, base := yaml.ReadTestCases() + if base != "" { + It("should have at least one test case", func() { + Expect(cases).ToNot(BeEmpty(), "expected at least one test case in %s", base) + }) + } + + configuration, _ := GinkgoConfiguration() + if configuration.ParallelTotal > 1 { + ports := yaml.NewPortAllocator(len(cases)) + for _, c := range cases { + // Ports have to be allocated before we start executing in parallel to avoid taking the same port. + // Even though it sounds unlikely, it happens quite often. + c.PortConfig = ports.AllocatePorts() + } + } + + yaml.VerboseLogging = true + + for _, c := range cases { + Describe(c.Name, Ordered, func() { + yaml.RunTestCase(c) + }) + } +}) diff --git a/test/oats/kafka_other_langs/yaml/oats_kafka.yaml b/test/oats/kafka_other_langs/yaml/oats_kafka.yaml new file mode 100644 index 000000000..9ed398deb --- /dev/null +++ b/test/oats/kafka_other_langs/yaml/oats_kafka.yaml @@ -0,0 +1,25 @@ +docker-compose: + generator: generic + files: + - ../docker-compose-beyla-kafka.yml +input: + - path: '/message' + +interval: 500ms +expected: + traces: + - traceql: '{ .message.kafka.operation = "receive" }' + spans: + - name: 'example_topic receive' + attributes: + messaging.destination.name: example_topic + message.kafka.operation: receive + # metrics: + # - promql: 'sql_client_duration_sum' + # value: "> 0" + # - promql: 'sql_client_duration_bucket{le="0"}' + # value: "== 0" + # - promql: 'sql_client_duration_bucket{le="10"}' + # value: "> 0" + # - promql: 'sql_client_duration_count' + # value: "> 0" From b90bd354beb3ac067764724fd9d346cc5ab313e8 Mon Sep 17 00:00:00 2001 From: Marc Tuduri Date: Thu, 30 May 2024 12:16:17 +0200 Subject: [PATCH 04/16] Improved python script --- test/integration/components/pythonkafka/main.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/test/integration/components/pythonkafka/main.py b/test/integration/components/pythonkafka/main.py index f702cd6cb..376b2671b 100644 --- a/test/integration/components/pythonkafka/main.py +++ b/test/integration/components/pythonkafka/main.py @@ -2,20 +2,22 @@ import json import json from http.server import BaseHTTPRequestHandler, HTTPServer +import logging topic = 'example_topic' +logger = logging.getLogger(__name__) def delivery_report(err, msg): if err is not None: - print(f"Message delivery failed: {err}") + logger.error(f"Message delivery failed: {err}") else: - print(f"Message delivered to {msg.topic()} [{msg.partition()}]") + logger.info(f"Message delivered to {msg.topic()} [{msg.partition()}]") def produce_messages(): # Kafka producer configuration producer_config = { - 'bootstrap.servers': 'localhost:9093' # Kafka broker address + 'bootstrap.servers': 'kafka:9093' # Kafka broker address } producer = Producer(producer_config) @@ -32,7 +34,7 @@ def produce_messages(): # Configuration for the Kafka consumer consumer_config = { - 'bootstrap.servers': 'localhost:9093', + 'bootstrap.servers': 'kafka:9093', 'group.id': 'example_group', 'auto.offset.reset': 'earliest' } @@ -49,7 +51,7 @@ def fetch_message(self): return {'error': 'No message received'} if msg.error(): if msg.error().code() == KafkaException._PARTITION_EOF: - print(f"Reached end of partition: {msg.topic()} [{msg.partition()}]") + logger.error(f"Reached end of partition: {msg.topic()} [{msg.partition()}]") return {'error': 'Reached end of partition'} else: raise KafkaException(msg.error()) @@ -57,7 +59,7 @@ def fetch_message(self): message = json.loads(msg.value().decode('utf-8')) return message except Exception as e: - print(f"Error consuming message: {e}") + logger.error(f"Error consuming message: {e}") return {'error': str(e)} # Create an instance of the Kafka consumer service @@ -66,6 +68,7 @@ def fetch_message(self): class RequestHandler(BaseHTTPRequestHandler): def do_GET(self): if self.path == '/message': + logger.info('Received GET request for /message') self.send_response(200) self.send_header('Content-type', 'application/json') self.end_headers() @@ -78,7 +81,7 @@ def do_GET(self): def run_server(server_class=HTTPServer, handler_class=RequestHandler, port=8080): server_address = ('', port) httpd = server_class(server_address, handler_class) - print(f'Starting httpd server on port {port}') + logger.info(f'Starting httpd server on port {port}') httpd.serve_forever() From 337c7808f05783279d838b6186d2b373d16341fd Mon Sep 17 00:00:00 2001 From: Marc Tuduri Date: Thu, 30 May 2024 18:09:48 +0200 Subject: [PATCH 05/16] add proper logging --- test/integration/components/pythonkafka/main.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/test/integration/components/pythonkafka/main.py b/test/integration/components/pythonkafka/main.py index 376b2671b..9ce5b4d8c 100644 --- a/test/integration/components/pythonkafka/main.py +++ b/test/integration/components/pythonkafka/main.py @@ -1,12 +1,12 @@ +import logging from confluent_kafka import Producer, Consumer, KafkaException import json -import json from http.server import BaseHTTPRequestHandler, HTTPServer -import logging -topic = 'example_topic' +logging.basicConfig(level=logging.INFO, format='%(asctime)s %(levelname)s: %(message)s') logger = logging.getLogger(__name__) +topic = 'example_topic' def delivery_report(err, msg): if err is not None: @@ -17,9 +17,9 @@ def delivery_report(err, msg): def produce_messages(): # Kafka producer configuration producer_config = { - 'bootstrap.servers': 'kafka:9093' # Kafka broker address + 'bootstrap.servers': 'kafka:9092' # Kafka broker address } - + logger.info("Creating Kafka producer") producer = Producer(producer_config) # Produce messages @@ -31,16 +31,16 @@ def produce_messages(): # Wait for any outstanding messages to be delivered and delivery reports to be received producer.flush() - # Configuration for the Kafka consumer consumer_config = { - 'bootstrap.servers': 'kafka:9093', + 'bootstrap.servers': 'kafka:9092', 'group.id': 'example_group', 'auto.offset.reset': 'earliest' } class KafkaConsumerService: def __init__(self): + logger.info("Creating Kafka consumer") self.consumer = Consumer(consumer_config) self.consumer.subscribe([topic]) @@ -51,7 +51,7 @@ def fetch_message(self): return {'error': 'No message received'} if msg.error(): if msg.error().code() == KafkaException._PARTITION_EOF: - logger.error(f"Reached end of partition: {msg.topic()} [{msg.partition()}]") + logger.info(f"Reached end of partition: {msg.topic()} [{msg.partition()}]") return {'error': 'Reached end of partition'} else: raise KafkaException(msg.error()) @@ -68,7 +68,6 @@ def fetch_message(self): class RequestHandler(BaseHTTPRequestHandler): def do_GET(self): if self.path == '/message': - logger.info('Received GET request for /message') self.send_response(200) self.send_header('Content-type', 'application/json') self.end_headers() From 49858f104f6db6ace5c97c998e2a5c8e6c1029cf Mon Sep 17 00:00:00 2001 From: Marc Tuduri Date: Fri, 31 May 2024 12:06:28 +0200 Subject: [PATCH 06/16] Setup to make oats tests pass --- Makefile | 2 +- test/integration/components/pythonkafka/main.py | 1 + test/oats/kafka_other_langs/docker-compose-beyla-kafka.yml | 3 ++- test/oats/kafka_other_langs/yaml/oats_kafka.yaml | 7 ++++--- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index b9ae0c738..a798ea0c2 100644 --- a/Makefile +++ b/Makefile @@ -290,7 +290,7 @@ oats-test-redis-other-langs: oats-prereq .PHONY: oats-test-kafka-other-langs oats-test-kafka-other-langs: oats-prereq mkdir -p test/oats/kafka_other_langs/$(TEST_OUTPUT)/run - cd test/oats/kafka_other_langs && TESTCASE_BASE_PATH=./yaml $(GINKGO) -v -r + cd test/oats/kafka_other_langs && TESTCASE_TIMEOUT=120s TESTCASE_BASE_PATH=./yaml $(GINKGO) -v -r .PHONY: oats-test oats-test: oats-test-sql oats-test-sql-statement oats-test-sql-other-langs oats-test-redis-other-langs oats-test-kafka-other-langs diff --git a/test/integration/components/pythonkafka/main.py b/test/integration/components/pythonkafka/main.py index 9ce5b4d8c..d22f88a1a 100644 --- a/test/integration/components/pythonkafka/main.py +++ b/test/integration/components/pythonkafka/main.py @@ -72,6 +72,7 @@ def do_GET(self): self.send_header('Content-type', 'application/json') self.end_headers() message = kafka_service.fetch_message() + logger.info(f"Sending message: {message}") self.wfile.write(json.dumps(message).encode('utf-8')) else: self.send_response(404) diff --git a/test/oats/kafka_other_langs/docker-compose-beyla-kafka.yml b/test/oats/kafka_other_langs/docker-compose-beyla-kafka.yml index abbbf50a2..491a566e9 100644 --- a/test/oats/kafka_other_langs/docker-compose-beyla-kafka.yml +++ b/test/oats/kafka_other_langs/docker-compose-beyla-kafka.yml @@ -15,6 +15,7 @@ services: image: docker.io/bitnami/kafka:3.3 ports: - "9093:9093" + - "9092:9092" volumes: - "kafka-volume:/bitnami" environment: @@ -23,7 +24,7 @@ services: - ALLOW_PLAINTEXT_LISTENER=yes - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CLIENT:PLAINTEXT,EXTERNAL:PLAINTEXT - KAFKA_CFG_LISTENERS=CLIENT://:9092,EXTERNAL://:9093 - - KAFKA_CFG_ADVERTISED_LISTENERS=CLIENT://kafka:9092,EXTERNAL://localhost:9093 + - KAFKA_CFG_ADVERTISED_LISTENERS=CLIENT://kafka:9092,EXTERNAL://kafka:9093 - KAFKA_CFG_INTER_BROKER_LISTENER_NAME=CLIENT depends_on: - zookeeper diff --git a/test/oats/kafka_other_langs/yaml/oats_kafka.yaml b/test/oats/kafka_other_langs/yaml/oats_kafka.yaml index 9ed398deb..79fa39c7f 100644 --- a/test/oats/kafka_other_langs/yaml/oats_kafka.yaml +++ b/test/oats/kafka_other_langs/yaml/oats_kafka.yaml @@ -5,15 +5,16 @@ docker-compose: input: - path: '/message' -interval: 500ms +interval: 2s expected: traces: - - traceql: '{ .message.kafka.operation = "receive" }' + - traceql: '{ .messaging.operation = "receive" }' spans: - name: 'example_topic receive' attributes: messaging.destination.name: example_topic - message.kafka.operation: receive + messaging.operation: receive + messaging.system: kafka # metrics: # - promql: 'sql_client_duration_sum' # value: "> 0" From 83d820ecd9490d4a358300e10de8fc447ba90579 Mon Sep 17 00:00:00 2001 From: Marc Tuduri Date: Fri, 31 May 2024 12:24:46 +0200 Subject: [PATCH 07/16] make linter happy --- .../ebpf/common/tcp_detect_transform.go | 4 +- pkg/internal/kafka/kafka.go | 83 ++++++++++--------- 2 files changed, 44 insertions(+), 43 deletions(-) diff --git a/pkg/internal/ebpf/common/tcp_detect_transform.go b/pkg/internal/ebpf/common/tcp_detect_transform.go index 92b900932..75af685cc 100644 --- a/pkg/internal/ebpf/common/tcp_detect_transform.go +++ b/pkg/internal/ebpf/common/tcp_detect_transform.go @@ -154,7 +154,7 @@ func isHTTP2(data []uint8, event *TCPRequestInfo) bool { return false } -func TCPToKafkaToSpan(trace *TCPRequestInfo, data *kafka.KafkaData) request.Span { +func TCPToKafkaToSpan(trace *TCPRequestInfo, data *kafka.Info) request.Span { peer := "" hostname := "" hostPort := 0 @@ -165,7 +165,7 @@ func TCPToKafkaToSpan(trace *TCPRequestInfo, data *kafka.KafkaData) request.Span } return request.Span{ Type: request.EventTypeKafkaClient, - Method: data.KafkaOperation.String(), + Method: data.Operation.String(), OtherNamespace: data.ClientID, Path: data.Topic, Peer: peer, diff --git a/pkg/internal/kafka/kafka.go b/pkg/internal/kafka/kafka.go index 532c21ca6..627702d55 100644 --- a/pkg/internal/kafka/kafka.go +++ b/pkg/internal/kafka/kafka.go @@ -5,53 +5,53 @@ import ( "errors" ) -type KafkaOperation int8 +type Operation int8 const ( - KAFKA_PRODUCE KafkaOperation = 0 - KAFKA_FETCH KafkaOperation = 1 + Produce Operation = 0 + Fetch Operation = 1 ) -type KafkaHeader struct { +type Header struct { MessageSize int32 - ApiKey int16 - ApiVersion int16 + APIKey int16 + APIVersion int16 CorrelationID int32 ClientIDSize int16 } -type KafkaData struct { - KafkaOperation KafkaOperation - Topic string - ClientID string - TopicOffset int +type Info struct { + Operation Operation + Topic string + ClientID string + TopicOffset int } -func (k KafkaOperation) String() string { +func (k Operation) String() string { switch k { - case KAFKA_PRODUCE: + case Produce: return "process" - case KAFKA_FETCH: + case Fetch: return "receive" default: return "unknown" } } -const KAFKA_MIN_LENGTH = 14 +const KafaMinLength = 14 // ProcessKafkaData processes a TCP packet and returns error if the packet is not a valid Kafka request. // Otherwise, return KafkaData with the processed data. -func ProcessKafkaData(pkt []byte) (*KafkaData, error) { - k := &KafkaData{} - if len(pkt) < KAFKA_MIN_LENGTH { +func ProcessKafkaData(pkt []byte) (*Info, error) { + k := &Info{} + if len(pkt) < KafaMinLength { return k, errors.New("packet too short") } - header := &KafkaHeader{ + header := &Header{ MessageSize: int32(binary.BigEndian.Uint32(pkt[0:4])), - ApiKey: int16(binary.BigEndian.Uint16(pkt[4:6])), - ApiVersion: int16(binary.BigEndian.Uint16(pkt[6:8])), + APIKey: int16(binary.BigEndian.Uint16(pkt[4:6])), + APIVersion: int16(binary.BigEndian.Uint16(pkt[6:8])), CorrelationID: int32(binary.BigEndian.Uint32(pkt[8:12])), ClientIDSize: int16(binary.BigEndian.Uint16(pkt[12:14])), } @@ -60,7 +60,7 @@ func ProcessKafkaData(pkt []byte) (*KafkaData, error) { return k, errors.New("invalid Kafka request header") } - offset := KAFKA_MIN_LENGTH + offset := KafaMinLength if header.ClientIDSize > 0 { clientID := pkt[offset : offset+int(header.ClientIDSize)] if !isValidClientID(clientID, int(header.ClientIDSize)) { @@ -72,17 +72,17 @@ func ProcessKafkaData(pkt []byte) (*KafkaData, error) { return k, errors.New("invalid client ID size") } - switch KafkaOperation(header.ApiKey) { - case KAFKA_PRODUCE: + switch Operation(header.APIKey) { + case Produce: ok, err := getTopicOffsetFromProduceOperation(header, pkt, &offset) if !ok || err != nil { return k, err } - k.KafkaOperation = KAFKA_PRODUCE + k.Operation = Produce k.TopicOffset = offset - case KAFKA_FETCH: + case Fetch: offset += getTopicOffsetFromFetchOperation(header) - k.KafkaOperation = KAFKA_FETCH + k.Operation = Fetch k.TopicOffset = offset default: return k, errors.New("invalid Kafka operation") @@ -95,17 +95,17 @@ func ProcessKafkaData(pkt []byte) (*KafkaData, error) { return k, nil } -func isValidKafkaHeader(header *KafkaHeader) bool { - if header.MessageSize < int32(KAFKA_MIN_LENGTH) || header.ApiVersion < 0 { +func isValidKafkaHeader(header *Header) bool { + if header.MessageSize < int32(KafaMinLength) || header.APIVersion < 0 { return false } - switch KafkaOperation(header.ApiKey) { - case KAFKA_FETCH: - if header.ApiVersion > 11 { + switch Operation(header.APIKey) { + case Fetch: + if header.APIVersion > 11 { return false } - case KAFKA_PRODUCE: - if header.ApiVersion == 0 || header.ApiVersion > 8 { + case Produce: + if header.APIVersion == 0 || header.APIVersion > 8 { return false } default: @@ -117,6 +117,7 @@ func isValidKafkaHeader(header *KafkaHeader) bool { return header.ClientIDSize >= -1 } +// nolint:cyclop func isValidString(buffer []byte, maxBufferSize, realSize int, printableOk bool) bool { for j := 0; j < maxBufferSize; j++ { if j >= realSize { @@ -156,8 +157,8 @@ func getTopicName(pkt []byte, offset int) (string, error) { return "", errors.New("invalid topic name") } -func getTopicOffsetFromProduceOperation(header *KafkaHeader, pkt []byte, offset *int) (bool, error) { - if header.ApiVersion >= 3 { +func getTopicOffsetFromProduceOperation(header *Header, pkt []byte, offset *int) (bool, error) { + if header.APIVersion >= 3 { if len(pkt) < *offset+2 { return false, errors.New("packet too short") } @@ -189,14 +190,14 @@ func getTopicOffsetFromProduceOperation(header *KafkaHeader, pkt []byte, offset return true, nil } -func getTopicOffsetFromFetchOperation(header *KafkaHeader) int { +func getTopicOffsetFromFetchOperation(header *Header) int { offset := 3 * 4 // 3 * sizeof(int32) - if header.ApiVersion >= 3 { + if header.APIVersion >= 3 { offset += 4 // max_bytes - if header.ApiVersion >= 4 { - offset += 1 // isolation_level - if header.ApiVersion >= 7 { + if header.APIVersion >= 4 { + offset++ // isolation_level + if header.APIVersion >= 7 { offset += 2 * 4 // session_id + session_epoch } } From 0e2545c6f362b0683bfa2d0e22dc15baf3f04b18 Mon Sep 17 00:00:00 2001 From: Marc Tuduri Date: Fri, 31 May 2024 12:35:55 +0200 Subject: [PATCH 08/16] make linter happy --- pkg/internal/export/otel/traces.go | 1 - pkg/internal/kafka/kafka_test.go | 54 +++++++++++++++--------------- 2 files changed, 27 insertions(+), 28 deletions(-) diff --git a/pkg/internal/export/otel/traces.go b/pkg/internal/export/otel/traces.go index 4790ba6ee..4f7281fa8 100644 --- a/pkg/internal/export/otel/traces.go +++ b/pkg/internal/export/otel/traces.go @@ -604,7 +604,6 @@ func traceAttributes(span *request.Span, optionalAttrs map[attr.Name]struct{}) [ operation := attribute.Key(semconv.MessagingOperationKey).String(span.Method) attrs = []attribute.KeyValue{ semconv.MessagingSystemKafka, - //semconv.MessagingMessageBodySize(int(span.ContentLength)), semconv.MessagingDestinationName(span.Path), semconv.MessagingClientID(span.OtherNamespace), operation, diff --git a/pkg/internal/kafka/kafka_test.go b/pkg/internal/kafka/kafka_test.go index 8a84b2a02..f3f66d1c0 100644 --- a/pkg/internal/kafka/kafka_test.go +++ b/pkg/internal/kafka/kafka_test.go @@ -10,32 +10,32 @@ func TestIsKafkaRequest(t *testing.T) { tests := []struct { name string input []byte - expected *KafkaData + expected *Info }{ { name: "Fetch request", input: []byte{0, 0, 0, 94, 0, 1, 0, 11, 0, 0, 0, 224, 0, 6, 115, 97, 114, 97, 109, 97, 255, 255, 255, 255, 0, 0, 1, 244, 0, 0, 0, 1, 6, 64, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 1, 0, 9, 105, 109, 112, 111, 114, 116, 97, 110, 116, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0}, - expected: &KafkaData{ - ClientID: "sarama", - KafkaOperation: KAFKA_FETCH, - Topic: "important", - TopicOffset: 45, + expected: &Info{ + ClientID: "sarama", + Operation: Fetch, + Topic: "important", + TopicOffset: 45, }, }, { name: "Produce request", input: []byte{0, 0, 0, 123, 0, 0, 0, 7, 0, 0, 0, 2, 0, 6, 115, 97, 114, 97, 109, 97, 255, 255, 255, 255, 0, 0, 39, 16, 0, 0, 0, 1, 0, 9, 105, 109, 112, 111, 114, 116, 97, 110, 116, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 2, 249, 236, 167, 144, 0, 0, 0, 0, 0, 0, 0, 0, 1, 143, 191, 130, 165, 117, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 1, 20, 0, 0, 0, 1, 8, 100, 97, 116, 97, 0}, - expected: &KafkaData{ - ClientID: "sarama", - KafkaOperation: KAFKA_PRODUCE, - Topic: "important", - TopicOffset: 28, + expected: &Info{ + ClientID: "sarama", + Operation: Produce, + Topic: "important", + TopicOffset: 28, }, }, { name: "Invalid request", input: []byte{0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 2, 0, 6, 115, 97, 114, 97, 109, 97, 255, 255, 255, 255, 0, 0, 39, 16, 0, 0, 0, 1, 0, 9, 105, 109, 112, 111, 114, 116, 97, 110, 116, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 72}, - expected: &KafkaData{}, + expected: &Info{}, }, } @@ -48,8 +48,8 @@ func TestIsKafkaRequest(t *testing.T) { } func TestGetTopicOffsetFromProduceOperation(t *testing.T) { - header := &KafkaHeader{ - ApiVersion: 3, + header := &Header{ + APIVersion: 3, } pkt := []byte{0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00} offset := 0 @@ -60,7 +60,7 @@ func TestGetTopicOffsetFromProduceOperation(t *testing.T) { assert.NoError(t, err) assert.Equal(t, 10, offset) - header.ApiVersion = 2 + header.APIVersion = 2 pkt = []byte{0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00} offset = 0 @@ -81,35 +81,35 @@ func TestGetTopicOffsetFromProduceOperation(t *testing.T) { } func TestGetTopicOffsetFromFetchOperation(t *testing.T) { - header := &KafkaHeader{ - ApiVersion: 3, + header := &Header{ + APIVersion: 3, } offset := getTopicOffsetFromFetchOperation(header) expectedOffset := 3*4 + 4 assert.Equal(t, expectedOffset, offset) - header.ApiVersion = 4 + header.APIVersion = 4 offset = getTopicOffsetFromFetchOperation(header) expectedOffset = 3*4 + 5 assert.Equal(t, expectedOffset, offset) - header.ApiVersion = 7 + header.APIVersion = 7 offset = getTopicOffsetFromFetchOperation(header) expectedOffset = 3*4 + 4 + 1 + 2*4 assert.Equal(t, expectedOffset, offset) - header.ApiVersion = 2 + header.APIVersion = 2 offset = getTopicOffsetFromFetchOperation(header) expectedOffset = 3 * 4 assert.Equal(t, expectedOffset, offset) } func TestIsValidKafkaHeader(t *testing.T) { - header := &KafkaHeader{ + header := &Header{ MessageSize: 100, - ApiVersion: 3, - ApiKey: 1, + APIVersion: 3, + APIKey: 1, CorrelationID: 123, ClientIDSize: 0, } @@ -122,16 +122,16 @@ func TestIsValidKafkaHeader(t *testing.T) { assert.False(t, result) header.MessageSize = 100 - header.ApiVersion = -1 + header.APIVersion = -1 result = isValidKafkaHeader(header) assert.False(t, result) - header.ApiVersion = 3 - header.ApiKey = 2 + header.APIVersion = 3 + header.APIKey = 2 result = isValidKafkaHeader(header) assert.False(t, result) - header.ApiKey = 1 + header.APIKey = 1 header.CorrelationID = -1 result = isValidKafkaHeader(header) assert.False(t, result) From ebf1c0398bdd9ab6b00e796553f3f54752c6c1b7 Mon Sep 17 00:00:00 2001 From: Marc Tuduri Date: Fri, 31 May 2024 16:28:08 +0200 Subject: [PATCH 09/16] debug prints --- .../ebpf/common/tcp_detect_transform.go | 2 +- .../ebpf/common/tcp_detect_transform_test.go | 2 +- pkg/internal/kafka/kafka.go | 38 +++++++++++-------- pkg/internal/kafka/kafka_test.go | 4 +- 4 files changed, 26 insertions(+), 20 deletions(-) diff --git a/pkg/internal/ebpf/common/tcp_detect_transform.go b/pkg/internal/ebpf/common/tcp_detect_transform.go index 75af685cc..58baac09a 100644 --- a/pkg/internal/ebpf/common/tcp_detect_transform.go +++ b/pkg/internal/ebpf/common/tcp_detect_transform.go @@ -51,7 +51,7 @@ func ReadTCPRequestIntoSpan(record *ringbuf.Record) (request.Span, bool, error) return TCPToRedisToSpan(&event, op, text, status), false, nil } default: - k, err := kafka.ProcessKafkaData(b) + k, err := kafka.ProcessKafkaRequest(b) if err == nil { return TCPToKafkaToSpan(&event, k), false, nil } diff --git a/pkg/internal/ebpf/common/tcp_detect_transform_test.go b/pkg/internal/ebpf/common/tcp_detect_transform_test.go index fed93179d..ab36d3ceb 100644 --- a/pkg/internal/ebpf/common/tcp_detect_transform_test.go +++ b/pkg/internal/ebpf/common/tcp_detect_transform_test.go @@ -152,7 +152,7 @@ func TestTCPReqKafkaParsing(t *testing.T) { // kafka message b := []byte{0, 0, 0, 94, 0, 1, 0, 11, 0, 0, 0, 224, 0, 6, 115, 97, 114, 97, 109, 97, 255, 255, 255, 255, 0, 0, 1, 244, 0, 0, 0, 1, 6, 64, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 1, 0, 9, 105, 109, 112, 111, 114, 116, 97, 110, 116, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0} r := makeTCPReq(string(b), tcpSend, 343534, 8080, 2000) - k, err := kafka.ProcessKafkaData(b) + k, err := kafka.ProcessKafkaRequest(b) assert.NoError(t, err) s := TCPToKafkaToSpan(&r, k) assert.NotNil(t, s) diff --git a/pkg/internal/kafka/kafka.go b/pkg/internal/kafka/kafka.go index 627702d55..c66638afd 100644 --- a/pkg/internal/kafka/kafka.go +++ b/pkg/internal/kafka/kafka.go @@ -3,6 +3,7 @@ package kafka import ( "encoding/binary" "errors" + "fmt" ) type Operation int8 @@ -40,11 +41,12 @@ func (k Operation) String() string { const KafaMinLength = 14 -// ProcessKafkaData processes a TCP packet and returns error if the packet is not a valid Kafka request. -// Otherwise, return KafkaData with the processed data. -func ProcessKafkaData(pkt []byte) (*Info, error) { +// ProcessKafkaRequest processes a TCP packet and returns error if the packet is not a valid Kafka request. +// Otherwise, return kafka.Info with the processed data. +func ProcessKafkaRequest(pkt []byte) (*Info, error) { k := &Info{} if len(pkt) < KafaMinLength { + fmt.Printf("Buffer too short %v\n", pkt) return k, errors.New("packet too short") } @@ -55,22 +57,23 @@ func ProcessKafkaData(pkt []byte) (*Info, error) { CorrelationID: int32(binary.BigEndian.Uint32(pkt[8:12])), ClientIDSize: int16(binary.BigEndian.Uint16(pkt[12:14])), } + fmt.Printf("Header: %v\n", header) - if !isValidKafkaHeader(header) { - return k, errors.New("invalid Kafka request header") - } + // if !isValidKafkaHeader(header) { + // return k, errors.New("invalid Kafka request header") + // } offset := KafaMinLength - if header.ClientIDSize > 0 { - clientID := pkt[offset : offset+int(header.ClientIDSize)] - if !isValidClientID(clientID, int(header.ClientIDSize)) { - return k, errors.New("invalid client ID") - } - offset += int(header.ClientIDSize) - k.ClientID = string(clientID) - } else if header.ClientIDSize < -1 { - return k, errors.New("invalid client ID size") - } + // if header.ClientIDSize > 0 { + // clientID := pkt[offset : offset+int(header.ClientIDSize)] + // if !isValidClientID(clientID, int(header.ClientIDSize)) { + // return k, errors.New("invalid client ID") + // } + // offset += int(header.ClientIDSize) + // k.ClientID = string(clientID) + // } else if header.ClientIDSize < -1 { + // return k, errors.New("invalid client ID size") + // } switch Operation(header.APIKey) { case Produce: @@ -80,11 +83,14 @@ func ProcessKafkaData(pkt []byte) (*Info, error) { } k.Operation = Produce k.TopicOffset = offset + fmt.Printf("**********Produce: %v\n", k) case Fetch: offset += getTopicOffsetFromFetchOperation(header) k.Operation = Fetch k.TopicOffset = offset + fmt.Printf("*********Fetch: %v\n", k) default: + fmt.Printf("Invalid Kafka operation: %d\n", header.APIKey) return k, errors.New("invalid Kafka operation") } topic, err := getTopicName(pkt, offset) diff --git a/pkg/internal/kafka/kafka_test.go b/pkg/internal/kafka/kafka_test.go index f3f66d1c0..1c491f93d 100644 --- a/pkg/internal/kafka/kafka_test.go +++ b/pkg/internal/kafka/kafka_test.go @@ -6,7 +6,7 @@ import ( "github.com/stretchr/testify/assert" ) -func TestIsKafkaRequest(t *testing.T) { +func TestProcessKafkaRequest(t *testing.T) { tests := []struct { name string input []byte @@ -41,7 +41,7 @@ func TestIsKafkaRequest(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - res, _ := ProcessKafkaData(tt.input) + res, _ := ProcessKafkaRequest(tt.input) assert.Equal(t, tt.expected, res) }) } From 48eb9b68f4c17a50179b9354f25f99b2b423cf1b Mon Sep 17 00:00:00 2001 From: Nikola Grcevski Date: Fri, 31 May 2024 12:39:35 -0400 Subject: [PATCH 10/16] Update to support push messages, update semantic conv --- bpf/http_types.h | 2 +- pkg/internal/ebpf/common/bpf_bpfel_arm64.go | 2 +- pkg/internal/ebpf/common/bpf_bpfel_arm64.o | Bin 3832 -> 3832 bytes pkg/internal/ebpf/common/bpf_bpfel_x86.go | 2 +- pkg/internal/ebpf/common/bpf_bpfel_x86.o | Bin 3832 -> 3832 bytes .../common/kafka_detect_transform.go} | 74 ++++++++++-------- .../common/kafka_detect_transform_test.go} | 10 +-- .../ebpf/common/tcp_detect_transform.go | 5 +- .../ebpf/common/tcp_detect_transform_test.go | 1 - pkg/internal/ebpf/httpfltr/bpf_bpfel_arm64.go | 2 +- pkg/internal/ebpf/httpfltr/bpf_bpfel_arm64.o | Bin 338328 -> 340128 bytes pkg/internal/ebpf/httpfltr/bpf_bpfel_x86.go | 2 +- pkg/internal/ebpf/httpfltr/bpf_bpfel_x86.o | Bin 338016 -> 339816 bytes .../ebpf/httpfltr/bpf_debug_bpfel_arm64.go | 2 +- .../ebpf/httpfltr/bpf_debug_bpfel_arm64.o | Bin 366792 -> 368592 bytes .../ebpf/httpfltr/bpf_debug_bpfel_x86.go | 2 +- .../ebpf/httpfltr/bpf_debug_bpfel_x86.o | Bin 366480 -> 368280 bytes .../ebpf/httpfltr/bpf_tp_bpfel_arm64.go | 2 +- .../ebpf/httpfltr/bpf_tp_bpfel_arm64.o | Bin 362792 -> 364592 bytes .../ebpf/httpfltr/bpf_tp_bpfel_x86.go | 2 +- pkg/internal/ebpf/httpfltr/bpf_tp_bpfel_x86.o | Bin 362480 -> 364280 bytes .../ebpf/httpfltr/bpf_tp_debug_bpfel_arm64.go | 2 +- .../ebpf/httpfltr/bpf_tp_debug_bpfel_arm64.o | Bin 392216 -> 394016 bytes .../ebpf/httpfltr/bpf_tp_debug_bpfel_x86.go | 2 +- .../ebpf/httpfltr/bpf_tp_debug_bpfel_x86.o | Bin 391904 -> 393704 bytes pkg/internal/ebpf/httpssl/bpf_bpfel_arm64.go | 2 +- pkg/internal/ebpf/httpssl/bpf_bpfel_arm64.o | Bin 361416 -> 364672 bytes pkg/internal/ebpf/httpssl/bpf_bpfel_x86.go | 2 +- pkg/internal/ebpf/httpssl/bpf_bpfel_x86.o | Bin 362672 -> 365928 bytes .../ebpf/httpssl/bpf_debug_bpfel_arm64.go | 2 +- .../ebpf/httpssl/bpf_debug_bpfel_arm64.o | Bin 387496 -> 390752 bytes .../ebpf/httpssl/bpf_debug_bpfel_x86.go | 2 +- .../ebpf/httpssl/bpf_debug_bpfel_x86.o | Bin 388760 -> 392016 bytes .../ebpf/httpssl/bpf_tp_bpfel_arm64.go | 2 +- .../ebpf/httpssl/bpf_tp_bpfel_arm64.o | Bin 407200 -> 410456 bytes pkg/internal/ebpf/httpssl/bpf_tp_bpfel_x86.go | 2 +- pkg/internal/ebpf/httpssl/bpf_tp_bpfel_x86.o | Bin 408464 -> 411720 bytes .../ebpf/httpssl/bpf_tp_debug_bpfel_arm64.go | 2 +- .../ebpf/httpssl/bpf_tp_debug_bpfel_arm64.o | Bin 435104 -> 438360 bytes .../ebpf/httpssl/bpf_tp_debug_bpfel_x86.go | 2 +- .../ebpf/httpssl/bpf_tp_debug_bpfel_x86.o | Bin 436368 -> 439624 bytes pkg/internal/export/attributes/attr_defs.go | 16 +++- pkg/internal/export/attributes/metric.go | 13 ++- pkg/internal/export/attributes/names/attrs.go | 3 + pkg/internal/export/otel/metrics.go | 33 +++++--- pkg/internal/export/otel/traces.go | 2 +- pkg/internal/export/prom/prom.go | 47 ++++++++--- pkg/internal/request/metric_attributes.go | 4 + pkg/internal/request/span.go | 5 ++ pkg/internal/request/span_getters.go | 14 ++++ .../components/pythonkafka/main.py | 10 ++- 51 files changed, 183 insertions(+), 92 deletions(-) rename pkg/internal/{kafka/kafka.go => ebpf/common/kafka_detect_transform.go} (74%) rename pkg/internal/{kafka/kafka_test.go => ebpf/common/kafka_detect_transform_test.go} (97%) diff --git a/bpf/http_types.h b/bpf/http_types.h index f397617d7..1b01a97a2 100644 --- a/bpf/http_types.h +++ b/bpf/http_types.h @@ -15,7 +15,7 @@ #define KPROBES_LARGE_RESPONSE_LEN 100000 // 100K and above we try to track the response actual time with kretprobes #define K_TCP_MAX_LEN 256 -#define K_TCP_RES_LEN 24 +#define K_TCP_RES_LEN 128 #define CONN_INFO_FLAG_TRACE 0x1 diff --git a/pkg/internal/ebpf/common/bpf_bpfel_arm64.go b/pkg/internal/ebpf/common/bpf_bpfel_arm64.go index ea037d856..02d3cb605 100644 --- a/pkg/internal/ebpf/common/bpf_bpfel_arm64.go +++ b/pkg/internal/ebpf/common/bpf_bpfel_arm64.go @@ -141,7 +141,7 @@ type bpfTcpReqT struct { StartMonotimeNs uint64 EndMonotimeNs uint64 Buf [256]uint8 - Rbuf [24]uint8 + Rbuf [128]uint8 Len uint32 RespLen uint32 Ssl uint8 diff --git a/pkg/internal/ebpf/common/bpf_bpfel_arm64.o b/pkg/internal/ebpf/common/bpf_bpfel_arm64.o index f390bd5deea9d1c972d486d2e16f0fd21abb010d..92a64b5cf31256a850feabbfb3d918ebace797c5 100644 GIT binary patch delta 88 zcmew%`$Kkv4;vE$(_}xkAiD#+3=EwN3=CpG`~b+F2c(&Rn1PRhVF{1{Vsil5i-5Ew b5DNg=%Yd{r5I68mzQ?A=*sz(G{WUuPu&@qv delta 91 zcmew%`$Kkv4;$l*$&8HVlUvwi>>9Wj7&;jk7{q{h0gycpNHYQP0U&z`kO5+!0J0YW dX-Ocy0Aw!%($YZez&-gMn;xUYW?uH!>;P155ZC|! diff --git a/pkg/internal/ebpf/common/bpf_bpfel_x86.go b/pkg/internal/ebpf/common/bpf_bpfel_x86.go index e7142477b..783f63d48 100644 --- a/pkg/internal/ebpf/common/bpf_bpfel_x86.go +++ b/pkg/internal/ebpf/common/bpf_bpfel_x86.go @@ -141,7 +141,7 @@ type bpfTcpReqT struct { StartMonotimeNs uint64 EndMonotimeNs uint64 Buf [256]uint8 - Rbuf [24]uint8 + Rbuf [128]uint8 Len uint32 RespLen uint32 Ssl uint8 diff --git a/pkg/internal/ebpf/common/bpf_bpfel_x86.o b/pkg/internal/ebpf/common/bpf_bpfel_x86.o index f390bd5deea9d1c972d486d2e16f0fd21abb010d..92a64b5cf31256a850feabbfb3d918ebace797c5 100644 GIT binary patch delta 88 zcmew%`$Kkv4;vE$(_}xkAiD#+3=EwN3=CpG`~b+F2c(&Rn1PRhVF{1{Vsil5i-5Ew b5DNg=%Yd{r5I68mzQ?A=*sz(G{WUuPu&@qv delta 91 zcmew%`$Kkv4;$l*$&8HVlUvwi>>9Wj7&;jk7{q{h0gycpNHYQP0U&z`kO5+!0J0YW dX-Ocy0Aw!%($YZez&-gMn;xUYW?uH!>;P155ZC|! diff --git a/pkg/internal/kafka/kafka.go b/pkg/internal/ebpf/common/kafka_detect_transform.go similarity index 74% rename from pkg/internal/kafka/kafka.go rename to pkg/internal/ebpf/common/kafka_detect_transform.go index c66638afd..956398acb 100644 --- a/pkg/internal/kafka/kafka.go +++ b/pkg/internal/ebpf/common/kafka_detect_transform.go @@ -1,9 +1,10 @@ -package kafka +package ebpfcommon import ( "encoding/binary" "errors" - "fmt" + + "github.com/grafana/beyla/pkg/internal/request" ) type Operation int8 @@ -21,7 +22,7 @@ type Header struct { ClientIDSize int16 } -type Info struct { +type KafkaInfo struct { Operation Operation Topic string ClientID string @@ -31,9 +32,9 @@ type Info struct { func (k Operation) String() string { switch k { case Produce: - return "process" + return request.MessagingPublish case Fetch: - return "receive" + return request.MessagingProcess default: return "unknown" } @@ -43,10 +44,18 @@ const KafaMinLength = 14 // ProcessKafkaRequest processes a TCP packet and returns error if the packet is not a valid Kafka request. // Otherwise, return kafka.Info with the processed data. -func ProcessKafkaRequest(pkt []byte) (*Info, error) { - k := &Info{} +func ProcessPossibleKafkaEvent(pkt []byte, rpkt []byte) (*KafkaInfo, error) { + k, err := ProcessKafkaRequest(pkt) + if err != nil { + k, err = ProcessKafkaRequest(rpkt) + } + + return k, err +} + +func ProcessKafkaRequest(pkt []byte) (*KafkaInfo, error) { + k := &KafkaInfo{} if len(pkt) < KafaMinLength { - fmt.Printf("Buffer too short %v\n", pkt) return k, errors.New("packet too short") } @@ -57,23 +66,22 @@ func ProcessKafkaRequest(pkt []byte) (*Info, error) { CorrelationID: int32(binary.BigEndian.Uint32(pkt[8:12])), ClientIDSize: int16(binary.BigEndian.Uint16(pkt[12:14])), } - fmt.Printf("Header: %v\n", header) - // if !isValidKafkaHeader(header) { - // return k, errors.New("invalid Kafka request header") - // } + if !isValidKafkaHeader(header) { + return k, errors.New("invalid Kafka request header") + } offset := KafaMinLength - // if header.ClientIDSize > 0 { - // clientID := pkt[offset : offset+int(header.ClientIDSize)] - // if !isValidClientID(clientID, int(header.ClientIDSize)) { - // return k, errors.New("invalid client ID") - // } - // offset += int(header.ClientIDSize) - // k.ClientID = string(clientID) - // } else if header.ClientIDSize < -1 { - // return k, errors.New("invalid client ID size") - // } + if header.ClientIDSize > 0 { + clientID := pkt[offset : offset+int(header.ClientIDSize)] + if !isValidClientID(clientID, int(header.ClientIDSize)) { + return k, errors.New("invalid client ID") + } + offset += int(header.ClientIDSize) + k.ClientID = string(clientID) + } else if header.ClientIDSize < -1 { + return k, errors.New("invalid client ID size") + } switch Operation(header.APIKey) { case Produce: @@ -83,14 +91,11 @@ func ProcessKafkaRequest(pkt []byte) (*Info, error) { } k.Operation = Produce k.TopicOffset = offset - fmt.Printf("**********Produce: %v\n", k) case Fetch: offset += getTopicOffsetFromFetchOperation(header) k.Operation = Fetch k.TopicOffset = offset - fmt.Printf("*********Fetch: %v\n", k) default: - fmt.Printf("Invalid Kafka operation: %d\n", header.APIKey) return k, errors.New("invalid Kafka operation") } topic, err := getTopicName(pkt, offset) @@ -124,7 +129,7 @@ func isValidKafkaHeader(header *Header) bool { } // nolint:cyclop -func isValidString(buffer []byte, maxBufferSize, realSize int, printableOk bool) bool { +func isValidKafkaString(buffer []byte, maxBufferSize, realSize int, printableOk bool) bool { for j := 0; j < maxBufferSize; j++ { if j >= realSize { break @@ -142,22 +147,29 @@ func isValidString(buffer []byte, maxBufferSize, realSize int, printableOk bool) } func isValidClientID(buffer []byte, realClientIDSize int) bool { - return isValidString(buffer, len(buffer), realClientIDSize, true) + return isValidKafkaString(buffer, len(buffer), realClientIDSize, true) } func getTopicName(pkt []byte, offset int) (string, error) { offset += 4 + if offset > len(pkt) { + return "", errors.New("invalid buffer length") + } topicNameSize := int16(binary.BigEndian.Uint16(pkt[offset:])) if topicNameSize <= 0 || topicNameSize > 255 { return "", errors.New("invalid topic name size") } offset += 2 - if len(pkt) < offset+int(topicNameSize) { - return "", errors.New("packet too short") + if offset > len(pkt) { + return "", nil + } + maxLen := offset + int(topicNameSize) + if len(pkt) < maxLen { + maxLen = len(pkt) } - topicName := pkt[offset : offset+int(topicNameSize)] - if isValidString(topicName, len(topicName), int(topicNameSize), false) { + topicName := pkt[offset:maxLen] + if isValidKafkaString(topicName, len(topicName), int(topicNameSize), false) { return string(topicName), nil } return "", errors.New("invalid topic name") diff --git a/pkg/internal/kafka/kafka_test.go b/pkg/internal/ebpf/common/kafka_detect_transform_test.go similarity index 97% rename from pkg/internal/kafka/kafka_test.go rename to pkg/internal/ebpf/common/kafka_detect_transform_test.go index 1c491f93d..56562ef57 100644 --- a/pkg/internal/kafka/kafka_test.go +++ b/pkg/internal/ebpf/common/kafka_detect_transform_test.go @@ -1,4 +1,4 @@ -package kafka +package ebpfcommon import ( "testing" @@ -10,12 +10,12 @@ func TestProcessKafkaRequest(t *testing.T) { tests := []struct { name string input []byte - expected *Info + expected *KafkaInfo }{ { name: "Fetch request", input: []byte{0, 0, 0, 94, 0, 1, 0, 11, 0, 0, 0, 224, 0, 6, 115, 97, 114, 97, 109, 97, 255, 255, 255, 255, 0, 0, 1, 244, 0, 0, 0, 1, 6, 64, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 1, 0, 9, 105, 109, 112, 111, 114, 116, 97, 110, 116, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0}, - expected: &Info{ + expected: &KafkaInfo{ ClientID: "sarama", Operation: Fetch, Topic: "important", @@ -25,7 +25,7 @@ func TestProcessKafkaRequest(t *testing.T) { { name: "Produce request", input: []byte{0, 0, 0, 123, 0, 0, 0, 7, 0, 0, 0, 2, 0, 6, 115, 97, 114, 97, 109, 97, 255, 255, 255, 255, 0, 0, 39, 16, 0, 0, 0, 1, 0, 9, 105, 109, 112, 111, 114, 116, 97, 110, 116, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 2, 249, 236, 167, 144, 0, 0, 0, 0, 0, 0, 0, 0, 1, 143, 191, 130, 165, 117, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 1, 20, 0, 0, 0, 1, 8, 100, 97, 116, 97, 0}, - expected: &Info{ + expected: &KafkaInfo{ ClientID: "sarama", Operation: Produce, Topic: "important", @@ -35,7 +35,7 @@ func TestProcessKafkaRequest(t *testing.T) { { name: "Invalid request", input: []byte{0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 2, 0, 6, 115, 97, 114, 97, 109, 97, 255, 255, 255, 255, 0, 0, 39, 16, 0, 0, 0, 1, 0, 9, 105, 109, 112, 111, 114, 116, 97, 110, 116, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 72}, - expected: &Info{}, + expected: &KafkaInfo{}, }, } diff --git a/pkg/internal/ebpf/common/tcp_detect_transform.go b/pkg/internal/ebpf/common/tcp_detect_transform.go index 58baac09a..c3e66e9e2 100644 --- a/pkg/internal/ebpf/common/tcp_detect_transform.go +++ b/pkg/internal/ebpf/common/tcp_detect_transform.go @@ -10,7 +10,6 @@ import ( trace2 "go.opentelemetry.io/otel/trace" "golang.org/x/net/http2" - "github.com/grafana/beyla/pkg/internal/kafka" "github.com/grafana/beyla/pkg/internal/request" "github.com/grafana/beyla/pkg/internal/sqlprune" ) @@ -51,7 +50,7 @@ func ReadTCPRequestIntoSpan(record *ringbuf.Record) (request.Span, bool, error) return TCPToRedisToSpan(&event, op, text, status), false, nil } default: - k, err := kafka.ProcessKafkaRequest(b) + k, err := ProcessPossibleKafkaEvent(b, event.Rbuf[:]) if err == nil { return TCPToKafkaToSpan(&event, k), false, nil } @@ -154,7 +153,7 @@ func isHTTP2(data []uint8, event *TCPRequestInfo) bool { return false } -func TCPToKafkaToSpan(trace *TCPRequestInfo, data *kafka.Info) request.Span { +func TCPToKafkaToSpan(trace *TCPRequestInfo, data *KafkaInfo) request.Span { peer := "" hostname := "" hostPort := 0 diff --git a/pkg/internal/ebpf/common/tcp_detect_transform_test.go b/pkg/internal/ebpf/common/tcp_detect_transform_test.go index ab36d3ceb..ed90a4ff4 100644 --- a/pkg/internal/ebpf/common/tcp_detect_transform_test.go +++ b/pkg/internal/ebpf/common/tcp_detect_transform_test.go @@ -12,7 +12,6 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/grafana/beyla/pkg/internal/kafka" "github.com/grafana/beyla/pkg/internal/request" ) diff --git a/pkg/internal/ebpf/httpfltr/bpf_bpfel_arm64.go b/pkg/internal/ebpf/httpfltr/bpf_bpfel_arm64.go index fce226a52..7c3ad1361 100644 --- a/pkg/internal/ebpf/httpfltr/bpf_bpfel_arm64.go +++ b/pkg/internal/ebpf/httpfltr/bpf_bpfel_arm64.go @@ -136,7 +136,7 @@ type bpfTcpReqT struct { StartMonotimeNs uint64 EndMonotimeNs uint64 Buf [256]uint8 - Rbuf [24]uint8 + Rbuf [128]uint8 Len uint32 RespLen uint32 Ssl uint8 diff --git a/pkg/internal/ebpf/httpfltr/bpf_bpfel_arm64.o b/pkg/internal/ebpf/httpfltr/bpf_bpfel_arm64.o index 99750dc5dd4ea3b914982df8a3febca46e38e6b5..70981e9ba86eac54a231b0b105ca56126a68709a 100644 GIT binary patch delta 39982 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

pBX)1aKhlE!6}^+=<>8K0C(zK z{?lOS?vOq5%X+1k!Y1-7KgSJjHMq^-c7r<%&iL6@U4DV;Hn?DLufhEW4;VaX@UV|@ zn?`&B^Z!2b-1z%?4?wME7`(vX6$Y;{c)iB%H1%dpKox8=c&EX;4c=?;euEDf ze5lTsyOZA|b%Dz#3~oGP^nk$&bao#9edyPA%OC1l8j)OL@M?qC8obfq%?58bc$c4T zwZ|_|eFnc^@T&$NHu$)~p*Q^(IN8S-*DXE)dcfe-2Cp@EqrsaE-fr+NofBx>9$f(L z)7d%gP28ouf2?1`$w=-u_<+HO3_fD;34Sw;8`=TtHD104iq?K+az?t&yx*q zF?fl=s|{Xj@J2t|YO`OUwi~?5;5`QS8T^95uNr*V$GA<$eFF5ve;7SraErl93|?*U zT7x(0oIqWhbpd$0&d$LTp*i+`O+?!+2Mj)B@DYPg7~J?S3c*2loywbG@B%;EYK32* z))>6r;F}HJX7EmfcN@Id$GA)TeFF4=!G{b!V(pKWl|=wd@1IdZ9mn%^`!2 z7<|Iu#*jb%41*UKyu#16TH_a}^#ccVp8!2z@DYPg7~B{( zdcfcX2CvYWZqpiF0A8Hn_#lc$)kI zwc6md25&TYv%%X9-evF}AJfz16QBnSe%0W^1|K&#)MWI4!7VzYezimwfL9y5USryb zyxHJw2JbX@x50ZgwyD7Vnt=F#!G{b!V(jIb88obfq z%?58bc$dL@4DK6c^gnHpy)Y{9_*H`s8+_d0&;%5ML#}wT!7TR;;m7Qo=?kJbNJLw7+YH`m@NR?m8ob}&0|p=Rv#pN! z1?q&sjT8M1oMG?+gI5^5#^Cin#;v&7CqNGvywl*_2Jba^zrhC#KBRLqF7Ajf0H2sx zzG*`E#aQ6ADbAuq_}M`5sBnG;?as6FgFMd!p{oMUvZJn1ZI!CC#)xrNTDA2?6ZIs1-t4Ck@&*WIC@ z1~xd$PD44B6V5HCK|i$Gc?#!X+6p;uofdv?pnaXQXf6aL2yUGVLGC)|DH0?CupmJ! z>nxgwtnFFn7CLuiou}xW-|QU2d2AkE>ZIfO)y}fk@X}x`h>}{v?;X4LI{{bGILUbi fim_RDu;Sy;iOyfafgJi|J__pmk#o!Z@ZA3mT0mck delta 38320 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 IoQa?K-}|j26951J diff --git a/pkg/internal/ebpf/httpfltr/bpf_bpfel_x86.go b/pkg/internal/ebpf/httpfltr/bpf_bpfel_x86.go index b30cb0c78..1f23bc508 100644 --- a/pkg/internal/ebpf/httpfltr/bpf_bpfel_x86.go +++ b/pkg/internal/ebpf/httpfltr/bpf_bpfel_x86.go @@ -136,7 +136,7 @@ type bpfTcpReqT struct { StartMonotimeNs uint64 EndMonotimeNs uint64 Buf [256]uint8 - Rbuf [24]uint8 + Rbuf [128]uint8 Len uint32 RespLen uint32 Ssl uint8 diff --git a/pkg/internal/ebpf/httpfltr/bpf_bpfel_x86.o b/pkg/internal/ebpf/httpfltr/bpf_bpfel_x86.o index a32e427b7e521c6799b35a8c8b61c4b49d775e4f..aa402265de29c69152d4aaa55e11a0763e8e4667 100644 GIT binary patch delta 39581 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 Dcn_oj delta 40405 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 TnjJ@&U(DeTYZ7;A$ diff --git a/pkg/internal/ebpf/httpfltr/bpf_tp_bpfel_arm64.go b/pkg/internal/ebpf/httpfltr/bpf_tp_bpfel_arm64.go index 8ab0ba31a..51aeb7dc2 100644 --- a/pkg/internal/ebpf/httpfltr/bpf_tp_bpfel_arm64.go +++ b/pkg/internal/ebpf/httpfltr/bpf_tp_bpfel_arm64.go @@ -136,7 +136,7 @@ type bpf_tpTcpReqT struct { StartMonotimeNs uint64 EndMonotimeNs uint64 Buf [256]uint8 - Rbuf [24]uint8 + Rbuf [128]uint8 Len uint32 RespLen uint32 Ssl uint8 diff --git a/pkg/internal/ebpf/httpfltr/bpf_tp_bpfel_arm64.o b/pkg/internal/ebpf/httpfltr/bpf_tp_bpfel_arm64.o index 41f0af2aeaf7f4c6f65e3c7a1341816e700bd840..9ed357cab330deba47f4629dd6f261d25975708f 100644 GIT binary patch delta 49353 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 diff --git a/pkg/internal/ebpf/httpfltr/bpf_tp_bpfel_x86.go b/pkg/internal/ebpf/httpfltr/bpf_tp_bpfel_x86.go index 5c6bddddc..7f73cf426 100644 --- a/pkg/internal/ebpf/httpfltr/bpf_tp_bpfel_x86.go +++ b/pkg/internal/ebpf/httpfltr/bpf_tp_bpfel_x86.go @@ -136,7 +136,7 @@ type bpf_tpTcpReqT struct { StartMonotimeNs uint64 EndMonotimeNs uint64 Buf [256]uint8 - Rbuf [24]uint8 + Rbuf [128]uint8 Len uint32 RespLen uint32 Ssl uint8 diff --git a/pkg/internal/ebpf/httpfltr/bpf_tp_bpfel_x86.o b/pkg/internal/ebpf/httpfltr/bpf_tp_bpfel_x86.o index eab1a02280eb8535d5c2b39b0cbd3b6ce2b6973b..895efe53d889bf4d20fb4be125676b2312414832 100644 GIT binary patch delta 49021 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�{zT2cnVfL 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 U;BXxMaX;GW?Qr+sA6xXl0O1L=>i_@% delta 47641 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 AHUIzs diff --git a/pkg/internal/ebpf/httpfltr/bpf_tp_debug_bpfel_arm64.go b/pkg/internal/ebpf/httpfltr/bpf_tp_debug_bpfel_arm64.go index ad40eff15..4714b91dd 100644 --- a/pkg/internal/ebpf/httpfltr/bpf_tp_debug_bpfel_arm64.go +++ b/pkg/internal/ebpf/httpfltr/bpf_tp_debug_bpfel_arm64.go @@ -136,7 +136,7 @@ type bpf_tp_debugTcpReqT struct { StartMonotimeNs uint64 EndMonotimeNs uint64 Buf [256]uint8 - Rbuf [24]uint8 + Rbuf [128]uint8 Len uint32 RespLen uint32 Ssl uint8 diff --git a/pkg/internal/ebpf/httpfltr/bpf_tp_debug_bpfel_arm64.o b/pkg/internal/ebpf/httpfltr/bpf_tp_debug_bpfel_arm64.o index 4d1229643dc47bb5c856d7a349d398d6e9bfe7fb..769b2be4310f14924ffab4b44826ae03d9a4f53f 100644 GIT binary patch delta 51269 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 delta 49959 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 QAMc=@uJ^fn--*uozn&G4X#fBK delta 49889 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 delta 57796 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�R5tQZwW4|n8oQWET#!f{|51o^WSj=EdONhgmL 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 R{V^f+%>HBbp^1TW{%_>Cx!eE% delta 57699 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 diff --git a/pkg/internal/ebpf/httpssl/bpf_debug_bpfel_arm64.go b/pkg/internal/ebpf/httpssl/bpf_debug_bpfel_arm64.go index 380750c59..208bd8b67 100644 --- a/pkg/internal/ebpf/httpssl/bpf_debug_bpfel_arm64.go +++ b/pkg/internal/ebpf/httpssl/bpf_debug_bpfel_arm64.go @@ -114,7 +114,7 @@ type bpf_debugTcpReqT struct { StartMonotimeNs uint64 EndMonotimeNs uint64 Buf [256]uint8 - Rbuf [24]uint8 + Rbuf [128]uint8 Len uint32 RespLen uint32 Ssl uint8 diff --git a/pkg/internal/ebpf/httpssl/bpf_debug_bpfel_arm64.o b/pkg/internal/ebpf/httpssl/bpf_debug_bpfel_arm64.o index 776dfcfbfd18fb23bfcaab61e31727389d9053c7..1b003d156588447f13a5f9d5587a44e003efedc5 100644 GIT binary patch delta 62546 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 Y_;ddW`XBPw{}a{IJk5XfpZZq*55s@mmjD0& delta 59084 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"^m_On_NS=KZDizdRG1IaWWW(S%eg%(y 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 D=kswc diff --git a/pkg/internal/ebpf/httpssl/bpf_debug_bpfel_x86.go b/pkg/internal/ebpf/httpssl/bpf_debug_bpfel_x86.go index aa6c1e724..e70b76e2b 100644 --- a/pkg/internal/ebpf/httpssl/bpf_debug_bpfel_x86.go +++ b/pkg/internal/ebpf/httpssl/bpf_debug_bpfel_x86.go @@ -114,7 +114,7 @@ type bpf_debugTcpReqT struct { StartMonotimeNs uint64 EndMonotimeNs uint64 Buf [256]uint8 - Rbuf [24]uint8 + Rbuf [128]uint8 Len uint32 RespLen uint32 Ssl uint8 diff --git a/pkg/internal/ebpf/httpssl/bpf_debug_bpfel_x86.o b/pkg/internal/ebpf/httpssl/bpf_debug_bpfel_x86.o index 36e2ca5322dcd749cea94c6e7cfd8638ea6a3799..3bf0bee735cab8c5f85b96e9a836dfdd4ff448e3 100644 GIT binary patch delta 61780 zcmd_T51gD;b^m{7_D^O*0uxBcBm|hm7#4zLfB;JfFvI|3NO8e{qXaU9022(jV2}w( zc{U{KDtvV``T9(e>RPD3RioXS*qLg+GAQ4=YHYVc?TRTKYrb_WNVgX47LoqW=RW7m zoH_mW*H`=Nudmm)zvl&+dEayHpXWaJp65RIoM*Q37xTw|IltT+FaP}a&q^oQS_ZbKl0kr3a_qbXHgFiSU$EY*Ww8onED9@VUMcar`a_x)hyf`tobLhpU_e;56~b4CV8-{;RfIO~FYX3cqD z0=(m+z4&l9#4gzP$Q3JkPVl97x%Y*qd^~nW&rYv&L+ribH6M?C?JQQF7rWV~zrEYJ zfBGkCZ}&}}Z~f>oU)a3ZI}ZME&E+#<_wGAo-HO<|_gzE(p0aP}y0_nT%M57j+&UeL zKBxF|l0O^#Il-Uf{5i&-b^fgJ=O}-U@aHgpR$|p%pNf4kcJSf#nb@2tm-NMLJ8JtL zdFI_0|4*;`)QP^$?t!>-N&5PpGoSfq={URhocRr({+xw@t3^?0fN>rypE%U4J}&AhvH&@tpYK z*uM3}m*YbbRXoME?EA!#6+PR1=6SK79z5>Gr#fTT?fcFg_vvZ1v_nmUnnQ<52_xhSeJ&$>%TlXH`_pX~(1bo%zN1r=(^VORl zeeT%JS8;yyxnnn9&H2&ij@^7!=SQDAcJtMpAARoF9d+H#`O)W&-O+X1IY0W`v3_^W zpTo}i(dUlcqs-Cgj@={7(dUlc!_3j=j@=bz`aF2^_pa`U4etAkTYfiI+jq_P&)E05 zP5A{}@b5&Obi!hP`tG(=ZQm({2d~IhC&w4e+BfSH_blw5g*@{TUEUJx*b@~! zucKpDIBN$@(rSGpng4r3*7600LCv0>kf^)q5`V=M9Ir{8+l zoBy+|#F}qpVhf^CCKF-Dr=y8++k*d-ti{0>zxnQei>3JEgU=p$s`I)Fyp6c^qZ1em z?u1+Yhr4Y-#9i(jFBcm!FZMaFu=BB8o9$?JS?d2!He}zS@6X*=`?HUED-tvW4s zZVMm5$Kvp-D`IcI>-zs>Q&RoR4@F>;vH^j>InC z_v!;f)mLwh4b6&euI{-j_D{287lwOEv3D?FGuc)w+u{32IlhW=7(cx zSeZQ^php#BWy0fz=#k=*nHU5+KGTnt$iHrFs$^~MnDy^6G=DPZ|BYd}dPeN_@Ef1h z2IUQ(`cF3~FU0?ket4;V=XYbY9{D%ek$uPA_^ImkpO2+GW8RpYeqCe`U^VD*lOAAK zd#fUAl^wqm$>m1d<^Ek(r{B-P|FTvmeCAMWZdgAUdn__K!JOzp=l=sE^Te0w3CA0m zKRG$}fhw7ox6UT3^5PF-A5Fzid!+i%&trczlO8X_=l_w6Oy$?HMVHlQJNF5C{Koyg zLEk@5-_!Kn9Zz=)S{vYdg1(_U8C0-D%4Di-*HkNu{S}4*~VZYmw*- z`kvVnu6uKQS!{iH-Ieh-bT6i)!k+LkO6mz%yEFVW3ObiWAKw%HltgoWk3|XUVjN>p z?l;iaA5np8Dfg?aGTY}q`D_xMx)-|c_!BtSn!VxYpn4~#pXgPWT}(QUa?)H@{e5P~ z{QbS*!Ykv;7QDvkDNbL4363iswHZ&Px%Y(+l4{RAEIKt3ok^no?+d?8qBFnDqQzXw z513D6{xx%SE*D-xSr@;b{-KKA$SPUpQ<*n2OM`d4KfLQIYQ=AH`dLx8oI_>&At#;9 zS-auy7&XA)E$4W)XFTUznNLCOYnhk-PKgor#SsWU(~WUQW;Ni zQXd!fSEi`=Q23Rr<4fW*hN>@I9X~4;pFLEa`4$>y3+D~_0eJ#i@-vJ~I%vANQ-{KJ z*Th#XTS0OhN{Y(cr_w*6zK^Kyf1tj9 zRec{*-~S}~zT7wR2TJh2)c0Si?_D1Z-@87(WLfHit;Q@<-&d;dx47`KYvW5U+o;m+ zA!8#aai>bZSAE~EPBi#nc-n8oPY(7dxjVg8#>Z6pXVv$ws_)-a-;b*Alj{4l`o8tl zR{4n!`R`E&oe+WVte5-}F1i{^RC?w^;R|T+6)LUI=ZJK#Q|Sfu{T}uGH`Vt?)b~%Q z@1IfMzpTFB@Fw5jXwT=5l;C^n`;XN3zf<4;NqwLDNc9h{jlX!ytP3(LSEcW|dteiN z2?zg2{FLh07vksloOs)<@3}pF!MW$HO3M*mF%&;-W=lVO`cQoFaVsyrFv`F3;_!+O z#?!~G?Cax%zVM1eJ|WXgDF1$ZanD6mC~908mOm6ajr&u(nY?B zZXQ1Btng=4z`{e$jfZod>o_GiiN5CO-X*$F?I%WAH_`tK>y*{V$BcZ^@U+o)=SAf` zO=Gb48M1oBTwj3tT-GS$4Huc$(EZ@tF1H{D@cKLVhoxpHE8xLGu#;S_lbM< zcDr%r7m1e*b-M}0ONl3$mu`0MjB>Y2(aI6!JwYcrdw;h}69?$RkCH-atjlF60el#I zq|0TQe*zxwa{bIF-bVafmn#yZz)Oj*oSxwZS-v0gi7r=WehPfF%MCOC6x`@?qZhlt zS2%AAB^>K=bymoNC%fD@^Si(=b-4!f$H7xwZi@M7@GD(pd7~3}2|V59lFajOCw{HV zrJ2`&=|MNMimpG-_--V0cDpPqRKSUD*U$V7@T_iEV15~#>~;gp3+^DE+wBIKS5uj( zRJSWL-w9sS?S`2@22OXo(SQ^F2NITcyE^kExRa$Ot+h2-U?nx z#)KB%IHCREzHXOfehR#rt~v8h!P#yXWH@0Sb!BQT^#F4goTDCKeiwK>^#Jq7!Tr<& z%ujZcy@4`} zE1pd}Nqh(CK1~15pj*A8PvLIj1oI~#KScJPd7M5^sL{PfanM5vIZ8l<3&|MGrUn(6 z_frG9M!Ve*^S6oTPxZJF=9h^VKALbf#Yy5Z=EZk9_r`Le7sLxzc2EN6pREaw!nSWb6&)L^lk zN#^|lo60mNh^fpli>b^qi>2&m7E4)R7E3w6ES7SRSuAClIS^Ah%n4#DN14S`)|tgp zjx&p;Y%q(ZoMIMB>9SD|h^0(M95^wRX;u(ZnPC=FnPnDB+0QJNvcN2sa)4PZ{vslV;X0enFX0eo0%wj3s6;Tg}rA&eY8pUEN)2tw-GQ-TK z(q);&QuZ^8r7SRur5s=uOF76amaO1RuEG;rWlrTg1BiZM-y&}`H!i>o*J#|-yF$j+(nl0aKa@OFCp$@ z?k9QAM8f3)P8g(wWk(Y(uXqV@Q8DBLihGEMn7>K+=Qk2=lo*TF7l~)rW3IvSE8peZ znG|L+sTg4=!4xOFmlWn~qZY4?u90+knpwI$V>nCvb;|oA`v24cx|b+Eg}7faic z>Whk_IhvvbD9D3xui=bhJS|t4qo?EWp-mkNyZQUqQXLCVmZ#?IRZ+PtyXDiQ7d-)o zFOc3H@-#fkdct*PdDxvGMhD5!P;xx%PBZruqK92~byP3-q$Ae3oiF+z>H_BWjK4~QG>dYS|o--PEW6Vzw&pi-#<4S)H=}$0!mECfW7NH+U7jMw8GYv_YT#JhrI{DrgC35%jN;kEIp(*JeExXc56 z*A(Mvf6U|`XE{IZ2QGU}`x)hkn}d?J0}9OYv|m(=r~Q)2Kghg?1}UEQhnb%x#?$^N zbM!17#N0S1$kX`*vpk&-ua6oi1=g9Rz;R}IIG7tF0CVf!nb-`n<~4mZNgSI~_zA9^=Ex<10VBldfqTf*_HOHPW6a+44$$45Syl&=%#weKdDFINb&$LP<;r07qFa$!2;TbDl=~+K7)3lDvIAoJi`2OlFz4Is8QyFVA`ds zGmjImpk1l-JEI16-b>?j{9gCyq}CI^Hsz>biyTYKnk}|!Wq+KU0DG;^eWP35cK>iUM-_gY6i&#+T|#jWagw+>GpAhmk)<6A zqJ_2#zqnKu+O%3~u%e$uE_`_@FL-73le#4;NVu0-7C%{LX?ae`vG^%4%i^b~7>l2h z$v=1t-SC>zffhGYMq!$nS4S?nDQciBeo~6D_~~Vq24;wH>Ap@q_l7)O3TBb#HwBTx zob5E-3UOCpg)_lh;;zj6DdJO$aW~9dC+;cH3Yz)k`-ykag0~ROhIbOrDfPHsVm;b( zEPsgP^9JdWAmD_@C}G*&9yiMT4dT-u?QwO*7ZZ;WQf3B zRQ=2{sPc+2sEQ{40Lx{}G>m+*O->75cU$|QN+`ylN)hV@ripP0_E1-2MV)1SmKZDQ zer8#(4lv6CxWw!izybNsur;X*EHF!f1I$ujnOO>~Fw2U%aC>`sgUnK1nHl8;@bJ|r z0cZFH8Z@UKpam)Oq6cV{9;Wr@9Z`W|@%o9Ozm?<{RC-)N@u|c`=FgD))W>^Vg&1oY z*(w=frmd20zmZ=H?;YqkDL|Q6^I{D=$z{kI*xeb`nJSUv`L#}0XTFGdk)!pG;IJA#XZCs=A}Esbr*M>cHX5sshmahIL_(sBR*{@Sx3cliAzncK6Y`( zC%fYB+gV+8dB^cFd|8+6*mJ_#!~X#R9o0X5w&O@FcDVY&~%oHMh(}>0rgC6-xx`N8SwZYnky-3iiCOH_5Hs5;S78=2HNq@r zs>Up4YK+)>xx`LQu!7jBNoKKA)68P05?P)kbn8ZpM~Yd@R4=obsXk^gQ@JcnE?jf5 zQ+ZYpJ5^*BJ5^#9J2k{Cp34fen5hwFF;g{WF;ipNAUXrFQxmKpc50GY?9?=~*r^2F z>v00&xlA#Ond)U0Gu6i|W-1qOg4n4%v)HL3v)HK;v)HL2X7OBBn8i$uFpHV0F^icB z#yCOj)C9BGsYzzBQ`5|1rxI(T9uUuEidoE5FSD4bK4vykfy;4%*r`0T48kHY497>d z(lUxXmxILGb6HW`P3x;+W^r8BnZdlcp zJelxZW|_rv+0QJF%YtG!E(a7Z3n-za65zQkGmGc4MvTV=S&eH?B|Mi?tdIQ&crK@z z#c`Qh8(ku~GxRc}#{-1b^r-}}_Eh=}bdt-4yWc=p?Dx+V`~7ob^r$#4E6lPrDUM1< zi{PEZ9X+Q&c@ytTjOs$VDkGN$A5x+2H)* zqVyigfJXL@=zk10?UKY`o2CphI3c$#$|QLZaYo{z6qlvAD0^8B{@=MM`$_J-#C{A; z(f%Z75Emp|me|vh4V7slhs#pS(}pv|XrPn_mnHONLnXhC?vgq|T$Zv+H)skN;sPMY zhRQIrY^aPV#)b-9mbw9Tmdl1p<{G;GTA}ZnsD+}?&n&xidBxaJfy+|oA7I{7h&EKp z%+C^ILq%McXWkkGB-aC0kPVPAX4wEKua7E_0!NvpKyg`0fen^Rd6Udi-so?%mluq4 zf)pq&ODQlx9zC3)xF~yx^`Ois#-Qy}j6wUaxG;nNM<1p)!Ky%10GA~eCgP$j5u<_P zq8w!w7bRSluq)zGY%oW=GeMir(z_^=>_T*Wq}YQfZ&~D6E(P|pT&%ZsSr(NX-l7Se zKOm=RgB8SV_xHEAI8WT1W_9u_7>3JIpJAEhV%o=yd|b%`yqhtp62RiJ6x*M?uDya3 zF&gBj;TUa;F!vN97iFJf*#04tzsz!)Wr2V7!d>59L4p_+i0w}^FQ*D%`+F68*AnOV zww+v*;28S1dpw{7L@-4@OHrqX4pKl5GzT4L5RHD8HwT^JqGAlXab_7~a9QGn zPL={E+Z4icifUa^y0Lu#!exofa+F!l>xyeBZ*yHS*(Rg0#oQcQZ*MOvMT`?~jxFZq z*i!7rmdRg^89wiLG}7;ekRjY;E5{FcL< zLHw5D#}vP1@|{rw#cw&zEN;sQ#c*3je$B{D3Ad$oW5R8jyot&S=<-O5Q%E2dzhxh> z_T&_p#cx?;7PsYqVz@0!is81@ZcVr?he#fv0u%thWm#o_-*SXm{FXJtW5h7&;7ZmW$hRQZd|? z)5Oi$Iz{&B=I~?h>NvUSxqO%MT#ntWCKGusNzX6BWKra9iR8jbWG@nk+rjD>cF<+6+wPo}Jk^DOu4Vt6joTiOf6RwXKs z0{fYzK=EWsfhCs9LOV+y5ZyrWWJ-AhEJu0XbBSFc3<~jFPB4q-(%lis#jBW9jL5oP zX7MVD*HOHRQ!EF=t2oU}Ud6z>6%%(x6^L6g$qct6+=?k?@hYa7#jBWMc6{WB;oFm= zpV@mA>4zPP%nv^pM83WfC7{d1td9_*N47o?`DSa1;hPn|srY8e@97tDvK!=z5zGEt z(r|_tYg9Z)xG4T#KEd>36mj8HX^-BZrN-p0OZoa?cvQ^7>QA>+)*E=IRwfBJc zQk)F)kEwvJ^>P35_@8yO3VLx@_4)g$pz}`sO;V^)utj%Nz&nXkb-IBtKS4ZqjN)Rr zK+5=)2jPySFYg?LJCeTKwY%fAnQO*Lbt%2?IKDJG3-Gzb6N=XoHx$n%o@9Q*L)C9T z(y^}#FRIIn>GGm_|B9$gc~M^)mDQWSQ}zdWE=Y07qzZ zi5Sam9Dan1hl}aO^b@h!HOacX+4aeujwRt#Pe&?{r7PYvZyL)w?KGX&DhvfCi6NKA zpPZ5R8+p-iiCI>tTNGK&#yxODoFLY{%q-SD zPnSg(DDQ{6^?f@fr3ri_fsYEIz{$ zF$$FT#LFxfAL1~x_z*{#;X@4YqIjJX#D_S}EIz~rv-l9Fn8ke}hWV!f4Gz30p5+AbA@(z8sjKmxc!61bhy%>xLmXrl zA7YtVe2Bx$;zJx|4#bIA=LGQ~jx&o7vB4}p#3^R+A-dI34~P#j$t*s^G_&{+GZ6<) zoQPRg5FcVcv-l7T%;G~FU=|1Q0=pQ8D?Z-TQqC$C3yu>W;iC38KdWZ~Bg4R&X z5`7`Bc}w)g6wASQZ+w~=(G_@a+|dHiN6*QN;|WSY1E7HLixl&2V!St=W0vrXJo7lo z5q&X448tYS7ZqlSz8GPa=!@EAH2;x7!Y{^HLBcO4m?ivTl3BtprkN%BB5`@t0I{Sg zX0fEb%wkFVE~o2{28b!mv4WV+JhPb2BC~{Fl$gbG4l#@6tT2n^9AOsASqnHpOy?N0 zn9d1iF`bjl5`HnwES58ojZR1`XNp-YXD_ovUj%)e5QT}6+m>0vFY?S1eoF4DPTDR{KQ5dD~RcoXbLf%d6tXmL^K6vjabeSvslg{ zW*LMPV%Qalz8EED%Ne*Cct~j_IG9ceuMpEY#d0y7?#)pFVmXtVuX5(5MyBbVR4x5FB66rCC{P>kF3H3lE1`3o= z4@6>spWslB1ha&CNMweDdLS}G#xZ=_c$r)n;~J3~!jSh72a*7VJSCt)3H2y2OQ^?y zVuX4ias&Djc~K!o7fYnan30dOTy_Prh|JIhiW0nFP2SP}JX=Z64A~(?GQXXC&2XmxH;1F3MgAk)~NHGRwSux}l#gGpx zhI~XZCqS+>k2azkFk zL1c!ulmo=LFlz0Y3jE z>x*qKT;Hs~%ZtP)PvnEl%L{be!jv*Tl$SwcNhZ;L9Fm(kP2 z7*i7IftSg_a>&c%_XIbQU8c9uB{D-oJ<>Ns1l%ytvT|{vgSZ!M%$nx zMh{4&$1uyoTDl{7V{@djmT+A$Mq2NU?IWv?Sl5zmlZSsyZ-zI+M#tM^bPY}3_7INf zt#TPa*|$ga3imTN2Nbbx$AFUi@xO9%ogv{J6&v0$%o!xS zqsA;#a++DfJ5o2d-$(My65dfzjPQ;kadV1J(T(or@Vqay!aJ`0f(q~GyCu?%7DnNR zNv|!uV}Rwd5TX~yec67(&^o8WENvfFa;$@D%(4!uE5#_qZiXNN{;Z3EVG1f z6o~ckK(q$R7kN-&1z9X7Hn%Gv`T_-rT%s+6vqm4$7SNY5R5V;-<}nqxvMHdV6fmep znPpJb6k|}0nf&7{mobC)#`PKJh+AWd+*t)qkU>>cj6sDL$#nsP#JB`|=+gP0dSZT- z7>nysW?8$AGs{|dg4wTy5#BMprMOJpq>Rjse98??5mG6vtj6JFd!{CJ$6uA?pz zGcVy7TOWwRJ#r++8GsS)A#a^axW^#Lv2v3QzcRDzJ`D?>c_{@|JW2jEE>K=upF<6! z)uKPp@)bdK^Oq<}z{ZaDx88}NVJ+_B)i&!Vt_j^?ZHe@}c`siXPoJ9sYf02lW6gVmoNMyv^a`Ow!9 zYeHWh`-YA+$-FVTBob@Vrx>v&S;dGo$uU!`$*bSxSd-xuQ5h0zGRiEmCKH)RF0m#J z=KD91C!1nP5FdhJA+aV?N{(2QY2v0e9-)=-xvd30T_1WVqXa0(QaWoGe;GmKSX$Rq z0mzTPi~zZ}&UGs9yjBH}_YrG(zQuw6(+UVU(T^MhtRQRX5hIsa6OoS@{Rw7Sb5EK4 z(@ptW8WCf(Ks!Hbp)9&nim~V}61O#w<x5#gultEn z7Og{k5KDm=m+xxQM-WSi^<`&jg!R#rIPgahn!QOIPxzY!RGz<*UZIx~v;qQ9H0PrX zUKjt!A1#oZXNmQN%gnMM8!`Duy`1WY0&bpToI!4$2v*SrA{YfMNOf zBp5|pwr*9VFD~08v$$;2%;K`mFpJAJ%PcP2e)$^$;29{AhWn^ z%go}k9cC7n?I^Q&%j(SHvJJ*LL439iW^vh0F^kLAT@v+xxNMWm;<8OMi_12{EH2wD zGrMf*y)jOZXqN)BxNHZQ#brClEH2wJv$$-BnZ;#0$}BG1I&tnU>29{6tlQ&@ka|VYs6)nWR?|NnpswG8DdOp z33kc0IBT z%wjqFn8kADJO_0Dznyx3;so=oAf~g(ET*%>ET(gaSuAITSuE!Wvslg=vslhCFn(P{ zOy>kEi0PbU7SlP+EYU8BE216{%b8*p%h}5;ma~spEN70`|GJ8p&O9rK=`1pf=`1lz zw962)Sk4NwSk4hThQ1iQ#je{ir%;1cvOqZN{h5$)2;EYU7GVk|0Uy8*!{$nSTR zDY#`&F@jx&m?hX{gcz4R>T$aN*Em7Ce9Z6!v374Z6vO>FsTl6jDaDXa6Qh9=?1H~h z0QQcj>&83$&w?O9jw~x|+7@}95S#+Jc%BBBMZZLh2aU+{wDBfq9}$Mjc`DPO)5`cYCjHFI(bIM4lr#&O;3mk2>6z+ZP6f_C zN)@sK7!Sz^KtTl((1HLIVFa{De2KsGhv~LM;TpO@h$q3=mVlNlvjnu{z&fBs;z=Z+ zMdC@GxSPh?0rGfo0TR$6@g)+_QX;t?+k=WRc83)E&;a7LfR-91pv4l^B zZG#LkPCy#eho2fj2H7^~=M1uKAU`bv#L z4N}Cqg=ywJG${R#!7@LKK}vh>{mf_H8U?frFw0YZiCLcVvmB2iS#!3jxuh$jIz16n31L66!=#Td0yiZN=Z6+`YQyhG0>hvz&b?xORiBUe}!9r5Vs01(qQuG<- zST44F(8wkJMC8Lpf0S8l|5z)36worR6kz)&nR^P6?VnN%+n>GOG>{l)B(}e9Uw(KubTf<0H>30WBqF31}H4#+Z_TmfQ^yOMd)P2zvOQ zWjE0Pq=1$IPLP0>L1y28@s9BK?(CT7-@w?kEm}v^SV7hiW6V;+I5AF9B3RswQH>%` z5JTP^WQNm`f}u09u1)Iw3pOx zl?=DZXz!W1IhagY<4W$w5_5AbDfVM2Z`wjk9n%VCsTqZOq|h8}2u?vyE-ysu2n44H zV;zxsM^u3Xv-B}bFiTc3f?4`KlVOrzmOLv+FiVkHf?3Ai8C4*`EJHM=(7O`Mg4h#b z1hZ6_C75MIF@jkTd(sxnGR_JT%rZr+o%^Yc5lb+O#Fj`fOE1g82xjS1j9`|mVg$3~ zh}(i$@=5{0ECb9E%ra=WObnAP!7LSK31+D=%VUT9bch7AOxs`<`4b5e%p$=mGJqvm zMS@vMH@DwIYRnSMQdf*%7Ww@Vakxz19B%&GRxry$f2)F7BpAg{CKrB<^xA@1#&3zn zpDcppr$S^AG|h5pyZls$tbtOSqWrQ3N-M@1D8nrI`!>;J!GM=V5Q0s>a*Q&Ie2iHZ zLF0%Q31-PLOE62GS%O*0%qQO;1+z>N zW5P%<%M`I5?@3y0K`y~8seltCn5D!l!7PJ{5zK<062bUf{N5;-MS@eHk6@Nz)|X(F zIx%`whR2kV2lCq?(U_oh>gK40QosN)3J^JBPc#o3{SlVS7(%QG^o1vwc}xXv$`mlI z6yT3b-WC-ggDRyMgQ}MpT`CREuw2H>u#u0n$tjqn&IvN8#uQ^vA^1dB&>+So*hAMA z3v0I};%AAmuud||x;4Wr>)<|SzYaz)i@UwOz%;WIm|>Oz`G8Do}U7VKuDJo&8>#FBuU z!7P)UAi*q%Enx*8%rea^!7Q#A$sHf^7Z4}nHC77i_j8&ZM=S?xo=91eQ$!AC~OPUf;fdsRx+U?x$ z^4X!~`Q6ozy@Ftt50Id1v=wvmt=-k@|FPrRuJcZOm;^^UT>bd=a~)&86mr^TYA{oY z-+R5|vF-rB<}pN7!IhydDFzr22%Ylb5)c@66*#JUfo{72(fN3cD!^CVn0ZF5cRuJO3*EA5I0*$@)T{CAcHihK&%@y zN~{}%*Lie#Y1+-u4Jr_GgM9t2j~;Dx7vj-ZT8IWF``Zi566*%yM>L@?Jy>Iw22T;| z2IE0BYH(D)!;__MF&-Rsi}7dmbQj{ifVKuR%dAP#LyaykOWf9AV&7o=VL==|WIG6+k| zavr0^`aB#>OLZP=+>n{aqh=msr&^x~_IY)0j)cEXcFu2J%%qvM{bttEE~>8IO`2Jo zG_w|aoVxm6GihrP2hCdt_NVlP$q?%fEAlLr4#Nvn`ocGeb%$k|vlcUk=8T!N4L@mV zM$4@uZDwt+nYGvp(H-b$(zP|1xUIoFNt+F3mMh#KKC+Q!mE7zyX4clstZkTCn>MpH zVPvFc)IR6NljNgbLd7i zh;<_}X1bQlbj2fto~{jI-H5TB)i0jZc~va_-CfmR&ZX%ZjAWu3Wuo?-+uqDUVtpA$ ziS=ciWPQ1ey|g6JXHX#4XMm7R)s2DcGfS3&S+We9B}>LESr8_v8;CGT-M|U6WI>o@ zt3fotiRnP5q5^rK)L2vqO>)bSeHi|x9tsP{ll_kab&!77xxjjwU}6UagvOi zuAq-tH@IYsANIm@1F`po{Nesn)RLu_Y?f{X{Q_=VD`4YvE3j*&ThU9bTTvv|-8R7H zO|EN=nDU2jSkyV^ZdtOV$!6(B6o_?Kj1uccV3$KTB27ya-H3u&vdp1tKCgQ3%+9yP z;{O;_KXWR~V1mt?78_I!N4V5OoQHwN;B;^1}84v&6bv5qzy1Br81W z!4z9DX<&g^H?U0H>_MvE|6LW`g$Xiay2V-IR*R$91l{0NuDyaBv2HM84RnJOY}L>} z)bFsS(=8k%Znlu*HO?T{)R7s}4Z@mEH>g6a%c~RX2Eh-_4f6H-KX-sLmM$DHW)M$e zy1+?e2GeBLkY5I2fms?{A=V9shc9YyRKFXzzP*BBV%_2fvF^gg4N-;72D4d{YmNu8 zwgwaH9!;~=Yns7=F@qIj1}BXf9580EV$2}iLb|~d#tf#(prL``+NH`24jD5zX3QWq z=kgRvS8t}OVv_vkP>k*<>J+e^~J+xu5Lu0ST|zOn8CU+ zgR6E|Utij}q&uE1hD(-ro)b?MtJg2@{C>xRGF@eT{Ne-<{i<+y#fr`qvGMA?D>~mA zTZf%QeT<(3qJ8yCbt*kT&@P!zr$<74+&vRSFOBBHndf%CH#QRPK9|OQCOqrB&T|$bkWe3= z=JQGv!~4$bylNdB9{NZ~h1cp-+AHRM%8>(4A3y8?_0UV=Vf=im55MW5kNZyskZ?^wibj?Kia*iLMv;E(!)9DNR^_uN6rh@;=k0ZJW z1+7hM9zOp>+qk0o@ADUoT51O5Hb3BIJ9wJ)K{2UxP^Pwm$fKN!((5Mud2VQf9KQNE z9RrD8SMWc$t_7R;Lc+T1NWHH@JBXDLr)<6m0WlC6Hu(seddWTg+8Xya}@vO$_1V5+$Z@GP179F z$LoA%`GQWRKbOQkQ7}`a!_Q3`U?%RUR08H>~X z?C00el<6&2m#n8Lv#{@Nx*T%i`%{=lKiD1K^;X}qu}K5r~Nc(ro#o-bzXfdUUAaL^;~Su%(-)X7tZrx>{|a~ zKgs6#cd&H&^L}j1bG7j4>*$7+Hm&~(SA(9^$MIa;h?zvc$HkRR`on(c%=7On=yHCW zn+s1c9j(doHh;mN3Nn-Ex4iA7hThq(|2-Zcy%fu(kGr|&;7QiU`IvM8ok7Y}aJ3)g zbY=yu?%e<60c0o3-}SbhG+&WHSLdS|}#s(7Oq{!Si~Woz|&`Ofa{p!dS4LV8Mazovii5;hKS zPn_b!F7oIZ@sJ%^s^MMvn}yS8|G~aT6*53iaPm3M8La40)0#9x6l+3@M&Xa(S{4`6#b7 zz{it(WJ9a`3%V%*KmCRS3OK{wn>;ozfjr7UjtZv2&z3q*4`e+i^^EWY7amiLY#F}S zK<&^%WOP>|;sRDc$j%qW+~5Rqdu z3kMjZ9DlhI2N;7Ke~A(Y7=t{e2YEmV@_YmZKaG?E8sOA$2KN~rGOVWq%EPu24itqR z$tey{Af8unKmm+>B^+R6NEAR3qriH>V^iO$;ST*i#puzr8t#ziTYQlp-&r-jp-@tc z0)`c%ffKifXWiGi@Inmlel^@NyoVI~lQEnrRv){o^YxCPPu*}(>40KXioZC6gG9a; z%8DT`sT&OPk1B>7zp;S>`Ta~;?a{Np0j12;8&r%NP(?A$B&DV%3dF1II8XuPqiZ}$ z1^(yLMGpOpnu;^x0ku#ipnzUA6~Pt7nA>=tQVPUK);AzbRs71c$T3y1F)fT9npWI{ zk>5~r6ACFa6=f%YME(-=sj28MkzzDh-+=tc=Y<^dLyn&+#Q_d5SM?1Da}^;&IG}(t z98gmcm!zy171*g*G*fZd@N|o3_!gyZ4!^Rsb744l2kjI4CaSpy&J@s|s72_aa>1i- zAzF~VwZ+iK_ACzi>btC_7+p5pntNV8(c<8r-D~_sQ*#dm;IH1{Kn18!9?XPg=KzfP zDT`z9iNvx`D*E~6?I{rzST9!B-G>QUQ4!&7!A{k(G~dZ2plK?`gO&S%Qgb!xR>e)3H`E~kA8yY z)r3OvvKfMz1_+p?t{k>Xpd-1jV~ll7IAS$S| zCY-N8FAY&4-u=MQY(R?xpP|%B@C8n)`H3@56@30y0fzN_^@CK&(LhAz;E)D1n)5Xu zU6WL6g8KRC)Or?&!Sd#vpZ_&*wVng{X7(eTaL*z0Rh4C}KS}tQ#&7Mh9uitRN z@POe#!)3$6hDX~uaP{^CH*UCLc*?M!GIS0Yj5vWLrVt&%X~UT|rt6e#OQ0SwTrfOf zc+ha!@UY=g&1q_JT_+HaYp%{at?S3Dg0Ua8&T1a%OcfyNhWj*Q7b~X|i1UVvhD(Nr z3|9<~7_KP}aLvb5f*%8hCk;;BoV7S+Cw#C)=+|>2E@nGtORtY6)k^9SbP8v=d z&KS-b?l)X$=fDlLC%8ewWy8aUM-A5vj~i~ZaX{<7wgfu+hUo#rX~P-AS;PH?3z{(s z2Xq4Qpy9INVZ)<_>xRb-HxviB=2I%ckAWXKf56^?lZMlVGlsK<`wbUcT-{gbdf%#G z`jl9+#y#{kv8bI>hI3VtB-G&G4Av3B!|ZOrvnRErELA zRMP{7dkyy)&Kb@dE^5XoEa?Q|A;T5JBZg~+#|%#xo>Uy*nop|)KL$=SJz%)kaG&9v z;k@Buivx!WORWUYLxwAcM-0~tj~SjYJlSM=c=tWfOo%vfy6FMKy_%~xe6s7L8A1QD zR-R+@wP1L_@Sx$c;bFt0hU@JdxbgM`*DyR~*qzbd;H2TS;f&#I8`DhcZ%d#aFg##* z&~VxCu;Ed|boq-KIBhs%IIB3oHSbpmehe5MFg$3uYUhNld>GffW|P8-e`&Ni8@zwd!&Lc|5b1BM3;Kdu-}J7D;*;UmISzuy8m zDhbRl8Gg<1tg~7@fNzTopKW-x;q}Y`?%60{qfyvqc$eWv4L@%9fZ@Z2pNlx~4{5Wg z0mqaA_!YyQ%Ufp*`CP+G4X-r3*6;?;)c@!K6u8AGY&X2u@P5Nj8a`zB8N<(kas8zM z$Be>jicdx(&u;Yqc#+|=4X-x5-tb0Z)bAUB0=F53U4|bu{J7x*h7TJ)V)*FUaEhu1 zykrz!Gd$}}rUwk4ZFsfe^@caT3HDbtV4G3cW%yCUj~hN<_^{#U6l3%9SoH@7y8fvn zICgHU9Y}x0aOZjL^0|hW8eVC5t>F#r9Jnp*32wXLy@vN2e$wzE!_OFgu8nCF9BWIU z9x&W_zUcwOOAW6yyw>mr%@~DSbOP~q!+Qu_!YyQ7nmL}e70h2 zpshB%-tb0YTz_QPCJD^D3_oi4al;1;A2xi%@KI)e7e)hKG77I5o^@fX2cW;m@Y#k} z8(wdCW5m&2*!O@@*k$-p!;c$2VEC}%BZiN9J|nsZ`5rI|uW7FS;>%qpbp}f>Y4ySZ z>V=ht*Bahnc#GlfhW8rY-_C)1vOU2aGW?9;=L{b+{EFeu)$J!Zw~cAEE^SMo9x%Mt z@CL(M3~x8Q*YJMLm@QB01mZ)6pE3NL;bVqhG2D5n=>f$7uK7}x;KzXBwT3qs-eP#W z;k}0Uw>WU9@X1z!=R<~{G5nn2V}@Tb+e^-a zQNxc5oem$!NV^(|ud))EP48->+|*Bjnwc$?u}h95Qj zc*Na)!9272zOTU;J@e*PE9cSI=L{b+{EFeuwe9)m8eVF6WjhCMZF_>-V0eq+?S}Un z-f#Fx!-v|K2E#LL3Dg6Ij~RZ&aOah#2MjMYyi#*OdDrR$;thtk7~XDpui^cMpEP_( zv3JWnqZ0fWFnrALD~9RkOlS^8H$mi|Yj~;Ql`W=Ne)K>q!Se>gTMTbEyw~u4!%rGM z)MUE;XuvbggovLre9Z7GhG$*f>H)YA78yR<@M>WgBV<@F3CtS}Z!^5h@S}zwH+;bG zVPDhh3Xr>3FEYVeXGzt^mVV{{f3`3 ze8})KhMzNhtepe*N_&Fq{EhYo%{9E#@JhpL4R0{KrHyHDY;Q}T9x%M$@RNoQ8Ggp_ zbB2#;hH-jDClGgDYkI)&Qo}0^uQj~E@D|11PqJMl_%UF3zu_khA2R%m;pYq=YjNZ! zd8L)$-4^ubJ&c_nxMBanI15Fw&B%=*Bjnwc$??y%SXD_EQqguK0NQQyS^50Yz}|^*If_A z3%7;${e(Unw}n6dN!L~M23fdjvg^Y5)RyqR$*#-d>Gy|U!l&C7{+vE%j{J9jwdi%0 zaMj2qfJ{zxyoHC*)~>Gkgl?|TvQ7s4;$b8t`ib9~l+7M}MKeSYWf!~5_#@%Q1E@R|FE z@aOb7GxrZsIq&^RxawzAPI+&5-_Iz${sIM5(y{Bh@GF!)GxSKi4hS$XfH5*QFgOGz#AyUL z9DyCG1ad1nexhkYawn8DdVwa>+PxZ5Hz*0YodlXr3U8t&E>Th^RRYab6PlOMxVX*UT2^EW1YRvS~{Bj`QnMcSzH{B)_(9uD~6Uu=8s># z?04q={0K+KqS!wkvH$S0pTr{H8h`E6m+U|KjKRLh?$V=6Bex7>dVP+8E5{!_=cLHx z-dY$Eg#tI^IRLba{QOi{rSn~dAh#e zxqtmvIz#_z&)Xh9j3RW#v-f{z-6eA(8^@2^cxEI$emVXB$ngg@ULQSw&i*x*zZzXI z5hniK=G^<~G6w1Idr#l;Yw0-Odr!Z~r@wc}jgkFZe(=%A zS=)XsUsyiN`L_DM@2CI!@=IQ zS8o0vk-Pop2mR-b;}>3c=D>}<(4xrf{`X$@eD77~qvhSU$7}fGj(U&(A9b=X~$aH!fB&tyW24odk3Y8djMCg~k%|4Ezb`v4 z@?ZBK_sH^Nqdz@jeEk!5Fa7Qj(6A`>svqz7?Fmn`sOQiT<1amNcjW8)FZ{&kVv*_n zuYGz$U*!Gc=R9-Az&pc%AKT;yetP`N&n%C&2F721=GDmQH0&=~`pRz@=HD0?pLgyD z_J8URzjwsZYyCj&4E5zbq|U!#`XaIy^hu&vdw_XD`k zy=VNUZTI{~4F7L0k9?em|F^TpM*jQ$?=%On&wllb`H`N|Yez(WXYT84++RCl z{PktGRem%tvNjg^W@Y7~$Sr-5$3pXd1Dp2|Kgu`5yhj$6E<7&s-N?D6ET_qE(VSBCtjOHR#ibX|ikul)Q~D+T zEG(@&J92$=<($gvXGi}3aR(@QtN$5q_2271@A03n^ml+;{196ddBNWSA}dROyDoC( z+EcnF!+pjc_qh{(Z8AX32k9RK+b7iEU+}Q+ga>wpefMwN0RAwNDSbR02^NIY;Hbxa z0a*Rg%F81EQD(nTA+!IN$3{L|`A#-+<^0HpDl6}f{OkP4QKgl;Blj$QlTH0Ejj8`9 znEG=|KiVC6Thz>m7e5%zh?S4hf~RXn3~cuE`Og0np*zICb8b|={MpF!y)-%Y?Eg0= zN4M4f-9WTBbc|0Ed?;omc z{YB*ab7|GIAQC;Uv?Ur%UYwun+{bCz3#&RwpP!-6L-e^ypFcPYhWOzJL#%s@emyAdyfk{sk&7Opb5o7)q|+>UsPwT*qh}v|YM6H9 zk0_1)bLTu%diB!iY0=9bD)n!mzt=oeIs<=ie5iCC{@(FW>A?-rvj^_ua;?($Hbjr> zAEKh4c&PMk$};drEP68(Ehka!q0)*piQZt5D?OB^QYVur_HgNbh?a*Y^2pv$bQXy& zez^2C5-qu&MKNk(9AnI^!-p@&N=E+Z{ZvS_~7vS<~FzQRdIap@nI{%Aw=E%Q$# z(NTNof6g6ww9kFo+vxLZPFl#hZ(w%J5AG@bGo5I`Q=A^>^skk!N=M()j~jk-PwB>u zRF`A-Lb*Hggz$<^r_XElmYycj={K|JWG?*>^U=(oW)3goybG!5S2^ia&eC8$fq5=& zJajgx=&}!%HeOD(Sj*`vd@YVWgYs{tuR(M%GDAKhtMDZz*N{Dkq&KXJwYl zp8E(+>W-AIS^h|A#U@gj8dP?+jk5s;}DY_yO z{gX#3KYk|-xut(bIV03tIMd(L2ORV1-&g2lndk+leJj+2{f?`v&p%b4fB8u1!hmscggMB%yiod= ztD?sSD^&(}Qb)-JD*Y<;dAs_2kNUhgYIDeLhuvKIcQFPf~AOce6^n_N|?AcdPXK)#neX z&%dWWe@1;i_@T;2uZh04wKQId9#h%($I%S~rN(p7lPXvLS@hwP`*)ujaf#DP-+nc^ z@zztqn}R>@w`eBJy)U%dNcd~wvG6Y8<=-KGUwE7F{5QnUh4%^1-zEN3c%$(AJ>u^N zl}ElC-MTRHeB}o}iw+$ZH0dTrCS%vRl;sw>fvt(T8uKdR;Z)4IL@2+3_}KL^7h`@O z@oAf4Zjkx2kY{2puH?%|K16&G8R|3pojb4WT!#3V^L>@v)%Y{Q8U9~Vu=Id)qlU*6 zA4BrGQh@Remfu7tSz0aq@b`L73G#G*!AZk3=ZeH~Qk0os`4_2=hhLz(w~^P3ylL2- z9qM04jdj)xH5{?hf2A8z8Tu$gl6fHO+(|Fd5<&4X#Kmp}Zi3~1c_u9}YNc;}j4o>U zobaS8Nyp+t)G>jyAIY1{A0>TD z=S9wREtPQOyoig@6{@CpgT$zyZ@GBsyeFvTCOK_CDOr4c#FZ7#C!RJss>FXudG}Gk4l#?q1aqh_h`13-z*wkIjpn~G$7PwnNj$K(-;FZAMtoYK-;F6= zMx19}b}QX2iv4bi`S2ov82f@KheXhm{e}{zGKG$GAdOPte zea_M93>CbH_#Le|E=~-E`yj9Nxnbt#!H4=>lKIErdY?-(FWNzTxX+C+r-*}iqtA_U z!n=^+^*)zl{wTQF=L*bU1i#VeCYWCbxB6U}dGT$;Z}z!q=5=7#?`D|a4esrCHRg%i zT;Srde%IiHFC)Xee%E6D33#yI#V!c1c**U=3;SK1c@4EfJl^kynePA}-|v#lzY8Af zcWLH7125}$Bg~ES14;7a17)B>FFW$<0p0?a=Fk5LOSFQLEjUDN{1>*?>Y zIcfpscY}9R3ow5aoTnCGejdD+S|H@WHIPuC7T^pE)(}5NEx>#MxJWHPf6)Tl!TYEM zm>&aAPzx~s3HS+W0p?f1lhgvtb1rgj;ZxKC#JkR={$Edn>Mc}Y)F*^IpEyr^J7s>D z{>`Dg^MvAl;z{O@Lw>-yD)TJyQPXq}Q9M9gC&n~hO2%zIRmf4kT>&NRqYCs*^}8V? z5Pyw$F+D&{G5>^k>0>dMQ9MYTWj^^1=T0rg+$i%6#K-T8xiKYw3(51$4?#W=b5q0t zPUtPw6EQc<8D=TN{K=SW5TnV(u(X)Pu*B#}AQ!_DXNF;cT^VK;yOLxUyOO?`=D#1+ zY*7%wkuP%xqTzm*xa9EF;Wf zSVoz}u;iGM(w3x-P#MXu_AciH* zEQ4^E7_;pBQJPiH#$1ZHZC3&^BqJ&Th9%1^h9%D|hNY+&hGmktZCIvg8Z-YEop4|} z=4P2cN4)ePZDSM%r%-}h7b<9>K#le-%)@umisumRQxu;UzqlTA zIbtm7#);=wX^qM9zrT~_|LLP-i8={x0r52Ri92c0co)@}7}HdmyumC@-ZC6}yK_6K z?1$*z31j4-S9~0Cyv;$FVW^!zdkV@hOpGQyNDAifjkyu#;p?e|W_#Qyv*TlodCt4& zG3F~huE@Necwldzn>6{$#D3>TRSGsw=bX}F~rJHPDuP@(MV#)xqNa^#G> z&T_i`@MxF}v3GPUj1y~xLoAnV;)s!FjXY<#5OUyTpEzk0l(_)p*d|t)2eRQdaYiw= ziSbKK1&Q06of>T;jeNq(>H5Qcq;peTU?rUZd&p_U*h9uPgeSO``t-c90T)-il{iU^ zQSQgcL3;Gfa&BOkVfoiEMymA00vu3*f5jk~h`JnS7`%%{dpYU~%;ym=n2Ne0^X0?~ zpN+Z+m45-{pJd)n@}mw!U71+Vf+@uqmd0ebdaWFK{(Zxc1#N$cB4di&ziJ*gHFnQ9Gy@wmq&G@*%~L4=aW| zq4i?ulK!!9iZZ`kr-89V(L|ld#ef%78-=Q8?VD`3s4NXI0SjL}`e8J3sn`S=g zZdzs^8gMg;=My)W9S+#vCMC3|Ntv$Tif)C&#E{FqAZa+I825rHQ+}G|eil`!MXv1V z4^ZO-CEx^-A!9hJ3LyU|%f6&%QhwtrAD zY=4$mcflyj#kALqyxx{m`yWR)hZZNSq!YmQyQ{(zf?@l!#5jSs?S&pU#!NZ=kz?L+ zH|-@K>v0pz0oDt}9ydvhG4%||3y|1#VFlZRP_Z9` z#QKUyS>7ImMqYDd@=m`dM?>+S3ksc~#6`x8x z#(Xi!7t=GP9P>?J+8Y*#{r*2k31`wnrp8Ekf@g`}LJyV7H}DCGmu;aZn~IMoo@RcN z>~o#5H1!8F6I9wuCJD2bujebrBcjO@@NWP&Pbm@>iK<$yGPpWR@jY?B=ct1#XZN z{4}E_*D$jzxe|)8~+ z$H#6B6J939IzG-U%kCtzEW1<8vh0p+XN9b9m|65CnML0Sb07+{oFEE^cXTUEGmF9z zW>J_YMhjm1J{slE(khtw1>!{qY1Pa5#Zty^^Z5g};J2JRcVfT|hY6lfAWkq}LGlxx z7;sr)ETQBX&=|8k1Iino5=j|0T^}*4a5U)4!BwH&D3OaG$^6BPl)yf z%paiweOVeKcZBi_*Agdaj1Z&AzeMu+iGFuVj+S9u9C|LvRX(5S`D}0WiCkspxjkF^ zqTk4szIH*+)}@zF&c0m{A4KuzJz)`)SaDxv-Gx*l*m@sjXhmGDKRjibP8p~8suuGK z$PZDK=7jQ35FZ^Q+oavO#66e}nc{0`W$-d}Y@2{-8wCBhOK3u(_XU|bV^FKb21A!Z8c?5bOkYkv*Z6K)& z5VwJ`ii1WNElfCrY~gg^1_C>BN{-bu0yjhf$~RdqtLyAp-SSalR6yi~4wHqghEW|_ z;Us5})ia_xw7hQQEyJ<1I~EpE9ti5t<%ipHx_&&q(@`CW@Zg&CQ({jv#6hQcgR#@Z=a+50?t}@F_u4c;Dl^oBiTFi2jb98Z3p}-*lH#vlV z=nBNc3>*#;aRnnU8o3S)L8!1gO%9KB)8 zoLM}&!vQCVOE<|ZF5NV1*VQ04@2=}t3?OLvA@ zT)H)8ap^Xg#iiR~7ME`9!mtIzr5k5vk8aS84H1`ak~4@)H_a?A-4SMS>5ekv$`C4& zV-}ZgfmuRDCYVEyE_t}hoFFdUX=ZWh&M=Ehx5g|k-3BxMB2=WsEG}IM4Ute02@UZc z-GE|6BsN4`x)K{AE?tQYk+mgaLojG%ZK*>;5Gs-*Ii@W_M-VDfAa1*K>HaUFAqX7_ z;LdVP**xNi+W&p(3=ye(Zl8E0SXch$TU+ zNP$^mMIFYtSZoGK*oUGmBkmGK*btmxL`4h+!Gz z1Tic_%wkv)%wkwl%wkwF%wkxw%wku@n8mK-Lk^r6mLg{m!!pS%hGmLb3`><+49hID zgo@Oe#jZ4&#jdy%S|Fe&tS}r|dfw*~oD;(`#4Ls-!7PR)#Vm#;!z`g9S!S^-W6WY# z^5B3*p%|7TXAr|O$t;FtidhUxm01kSEVDN(WLN6UVpp2XVpkk(n*vM&F)V|Wpbg6q zvkbxnG3L3%ilm9PVaY0nT^VH-yHa2lyE3ts?*CAL1Q?bwWoR1~iWR9cORR{F4MD6( zo#lufL8wSIyS`n6G<-qNAFKm?EQ&~y+4r{7bu}3 zS!VIn1QHwK_{ebvan(#Pi>n5)Ay6pC6frgy;;BJsh?X~4E_+KI8bW(ZYX9}20%XAE za+Fy%i---;3iC#e&=4(e8u{Qm)Xt|$dqLt(emeg!XOPWiwkrcw$jI}Ci_Cr}G(&^f zl%G;^>@{_0$VmZhE@wG|Y&M53)itCF66?(*VnaGtK=*Sa*P$WUY*tymGE3_L;=v7J zd4!4th!q)935XR*5o475L2{5HBUmndKEiT|70EG6s7Rh!LPaDrL_$R-SWclLfsYlL zR0R+#g4hsLKw?F7YzRjAG|BZWs49lshKkf!--|bqotcTcI`fzAqW(v$NVAz^qP4cb^ zaejHmJjyKF?=j{;w%>>y(FzKjL7p+UjNEMuD=6|fvpi!SQjG04LPxazWXOTrL!%Pg z?-9-*yIYAJIelCBRgD76Ww%^pmfi9QhkA&<9JAi~L}6}ISYuH* z!7K_Tc0?4;vRpz%n#3|lF(_M#VVWHUR_qLRcH#hINMJ^W|F5wmNz#X#jf9G%h|vY& zt;-PyNRU_&#E!tQNUTViSsqePE5<|W8Z%vsKkCF7v~n*PyrNrQoEUPs7f|R(7-1y| z36%l&f=Q#G%yPLm#INi=!4PqKnpNqso?(QJ=nEXVlKLM7#P%0Wh6z?6@+rd-J0iBf zX3Ez&zn_LPGzORlvSFx*3o>B^kbnn`8RD)QvRob{&KUWukvEuEl0Mk}refIs%vGU& zZ`vtTB#_t<$HypVkXVrdv&4!Ni7}`oR%GOwkfnT<7#AR+B6((SdMQ*yLPvN360~DS zL_wJg$O2@BSr#A?J0kh(B<~t@o5Ko-JWkv-=(?EtKcNyZ=q8wDkRf&iS0u-jk;kv? zmJbnk4MM{iouAI{MmU2EvZBsF@(ClKGAywp?LlbD*ExTC5He%T1$f%+t}}y>SYPo7 z%iDv{$Y+hb!Q38%iZKXN*N6HkR3z}RB56*LSdolk#EMAlh{TGFvRq&FqJHdyUB~&EA zETJMv;ov>AQD{+BUq zva@M0ORPvsF=9m=Ev2APVnrl&ghrD;GAy5aFDH&k&=Fa3#cvKPC@U@>N`m#D91=?+OR7mOAo4P^$R&0}mRvI|7mr8Hlt(BDx@;%4 zFhWJ#R=)qs31XCh3=%6c$SkoUDQ1Zkk=PL*D?*_nMV3pb$P6*;h=hvF66;Wr=2n{j z$RM#IEiNFjA|tni3M5u!R54;j#)wg2#EKwPB&XyE6_MBy3H3neh#ph5TY~TelA+ES zWYA=?-SQFQwrz(S&2YiwFS1<5(3Ih7zzH&_YDPg_$-NtmSq7EFlE|PMq}4K7R4zzj zOJvLxj65h(0=}N!mIAU z4c!_lkY#s+Srkg_h$xJ25A%yci5-z;e2V3wFSet*f)Y9s>Z1s&BxewXSzQ1!Kf$5ebILD@HJk#HL6v3}Q?4 zQ?40idB|1k@N)lc*A^?3SP{G~<7%!wB0nCzzw+T6VntrQzjVO|dM>`;Wy;VuO3`d{ z!b>~u0ph(;#}OJ-fOu2Xzh`5nC)5N*;}2B+_yeTq?607}G({x#hYF&*=^=2n6GC!1 z@j`l15aSb2!QXut5ghd4>;fV<=)<}X^_)0&U5>IYqwkr|E(==;d=_y{@p|IA;`zi4 z<`;KYo*eHP?+fTAC-3l(cX~9=2zAOkJq8mY%R4>vJ3H`B4+;H{cX}Z713mXXvTFzh zNf5UUU^$HZKu_TyQ%DcHID_oSbm#{{LGntD#WF%aL;=dTST2iagnnrG7;)QxRw>4{ z!(k{0LO*nYGG~y*F+xAIykX?-?C=DVe~?)g#|Zt<Cg`>jx(G=c4!Fw z&>Tj`jHKHXepMrLqYKN51c?kK_-aNha0E>LP4gufP{h| z^g~yu!E(8WA@oDbv&8K#pnF)Jxg83E&<|Z;f-|&lVuoj! zGl+i?2vw*P3WCrNU4bFub`!?wdrd|@VdOgW1NX3LmgAm=dl*7LwEkJ*u27JsPw0eh zxbwR2ITHFI_ncvt%RQ&byob6BH${0%$jj(Lx+xA(_rk!+EyqWG=unU}XAp&h$*_PZ zOfZYW6tgIl(2ok;eGv*WMskcH2?asu2lzFTBNQZ0+!YE^@bVxTf1?CkATHZk zW^vi#H6hw#+a!ivkWi4pi$a!AkOcG5A0R^%qbE7c5*i|J{h-hgy8lxsh=g_^Rs^9T zMJ{mi9pP(4CYWy^#%n|-l^mfVQ_K%RK0z*GW(f^xGD~R45Sd{Zvgds$2)&;u!3h#` zmSUFBkPNeghGdx~G-QlfLPPS*5*kuume7z%=EXh~gx*gy#R(E~R%MpZkXdH&%Ga4C zG^EKap&{;)@CwDy3^Ge-$PjZNu^|agkkF76vxJ6Zm?bnM%PgTGW6Tm7l4q9CkRr2$ zhD?SWIEf9J;tUcRQe~FVkXdF44XHCrXh@S;LPK0CYyk-k8Dy5wkRi_jt;a5)^&347 zOmGGX4M{OeXh?=xLPN655*jkbETJKJW(f@`GD~R4Bp9I}5*sqb86-5M$}FKFv&<42 zQfHRXkS4Q)hPbt13rJ{)M0!YQ$PmeWD2T*{Ak+iXLPA4Q%(8{cFv}p!62lHiXh@D& zhlUgtBQ%6UKfGM*%(M;#!TX73IKwQ>SA>R0=!Z8n6dKYZIZh~{A%p8e{@iHz8W9Qo z03$R+B0D5BB*Xb7@*}&B`X36BfY^{RlOd-Vp&>(eZ-MKn$>}vB zlgy3}3H@k$W?0_#%$WRjVl3O+?!fh-e$f{vhMf1B6bjm%;1Y_xXNFlemt|s9SdJ+p z|4nZNk@Bf`sGU%i`aeSnS|MH=f*Q(Z5}_ViK4Ih%>LK~7ESJq^&6KYzd0#-A&lV@N z{ezc=6_CwmhFDi%gypjNoHg>AkvExFX2Z>AOK||#OnO6j0(p&ygnob#8Zt(5jB@Y3 zJ4nw1IKOm3f#nh!B9R;t8iGg;l$X$uDl>(K(3h>~H6jSzKn8h@$gC=W&=3jbkkF7i z$@MH~D8?vnD#k3pJHI7AJWos&4BAa1p&ol^ zlw$i_4l}gBNioeVyWJYIY{%=&vU?6gJvz^*XE@U1WzvuBc+E5QzbI^R22toXg-s|5 zXPBje4Q5f;VitXP>j%0(LPHRVA%hTu5-;&+hk{^Kj+hKt#gLCGhJrE0kmnRbo>vTc zkr=mk2@RPb_Msr+o|~lv)L248>clWS5*p$-GD9AMOQ;7J55W=1p$(P16-4d@qbwJF zV>T2dPZ=<1L>I839>3`=AY$v~Eg-`2 zjGBfs6lOrI^(U1a&mA*56a)_*M>xX(jZ%b$l#PNZmW%BlzN-5K31YOM$kWU#N#9~J z^#}!l91PPRlv#nd?Gzg_&FuK7GD~PkomoOd8pIe>5*mWHfPm$Yw}41!h(vO5Xb8P* zlM0}Td3^3e_MkKJF_wp8jQT&{l|V0IR_vd4 zGs~cH*LI&UMvN1Re9XvmMlO*ZK7UZ9J~jnxsK;-53y2Ilc?*be{JOA0vH(dCceRj` z2YwWC0tTHQgo^zjGzz9zE`w}{){goF=t?~Z5&9v64ude=;lPi=305Gl5t(F`(2%lX zgoaErOK3=ySwcf*nI$wN!I2vh8X|A~c=;acf5e8gIK#^nD}vAvgm&PHBs64DF+xKU z%u?YbvxJ6>5NoHmL}o~6NP*@32nAW*BHJtp#0U+URE*G&vSNgWOescaNL4XHLu$+t z8iL3U{ZxXh@z}re&3R?!C0) zqR^0f$U!?WacE0;LJ18SR*cY)1aW&_H)$usEGLjq5I?QR!y%CyBCm6Pk-M9rkNRH{ zBy>XxNa%(vv68+(X9*^6`H&@7mgQ1@lo@g?x$?~7#V>%d{*xuwgi$cbEK91vtziqu z3F6EmPcX}pE2$VuuCytiA@=wGozy3Y4H=^Z-2dgsF-vGjo>@XerkEu(q{=LzAuVPJ z4awXR&Z_7x8szjA5sLKae%X$Ma!6=Mo(rs_0(gxGA~i5AB{Za=7@;9eVqAcPhP0F% zp&_wsSY84phO>l0Tt+2o>3MZIl**(oH`l`&LudqYwqfn4CCx}A4 zCInX?3LC_@LJ19#w}MD$Ncy%=F00}Z#aI>Ntsp2bp&x?8!9r_Le?ak<9;}>Q#oI@I0mYl>?OOdRbYwHFR++y9d7`HsI^y3xvZbf{?IXlp zZyzC+3gJ76^X}^T&2JyMiZb+#^|aqU@^Ru5b3N_1kAN2vkMR|KJgEHcR}i~GAI^Re zu`Bdp-Ag)lC2?xlO%l73RE*e_lw!oLq?r-B@=c0eSxdO5CVpYq0^+C{W)??Hl35%zX=ZWMj4+F%W|UbRH92NDY6AR_M1d2;Q!~LVj+!#F zIBKSu#ZfcEjF!X80cy-&2GcwK8qDITX)%+dhJO2FSLb&f#8VSr6SjajYKED`QIljA zM@^a;C&J4CMwrD>Gs-NEnjG`?HMDQR4@nd_K|D1R%;KmiGmE2Unpy1U3^8Vz{EkGe zwB(ka-wuu@D+hmU^`cNL{#bFB%2)LpEEjjIxKB?eGmKw#z>h9Ky|`l?-3!2w!yP-w z{17qRv8j-Q_OCi*ID`0O^Te3dGRuq1GRr5KWtLAd%Pg-l%PgN|mRVl+Ocql7u}#h( zv)ohIlTyzGsrB@Gs`S5GRrKVWR_Vz z#VoVD$}F>dmRV+bo!I;O#2?$_3^L1Iin|~QL*Dsfyv*_;mdh+pFv~1YG0QB^Fv~2@ zrf71ZkHsH5#u;Rm=b2@e7nx<2Pcq9apJJ9-US*b9KFch#yq*feD-?fhlQYOH7k8=5 za&ec+EQh<)4^qtPz4Q!#S!TI-OJ$aew^U|%HsAu{j~!!{S)ON>Szct8Sw6`uvwVtK z24R&L(@@;8@SbXSY|vB*@W;ZPiVPp8e{&8{zpo1!?pL^D@y&T1_mL#V3B(;c!YuAs z@t%r1R=lU|j-{`CaRKqi!hH&b;*YH=hC6mvF@DvdrWo#6ai@wqcJS@p3sZPYp+9uT z2DCg;3Gm0lU5X6ij~ydMA4`+xnWf3$Ernbd-ctQcAKp@7JaV5>d_q78(<%WOs>G;( z_+y*Q@-)<~59N-J7_&SLh4&QYJoK zm41TY9o-ciByR7RNuKM-kMY+a-=q%}ls?vcgrNtFyrw$o^*~V z#^ZK)Mo~fWv`%>@!z8ZOSxUgx%J=_4=fAYBuLzz_$i>wfONT73)cT&>>I zDvnO^v?h=rL8vGISF3nF#nqak3^JnOR7xwx0ETB&%i$RnhCEM<3cq+$=xHr5i>DQy zQvVPN32?PeaRzZLR*7WrFWcA%8RE|gvu378TkyeJffLZ zj7K!$8I|%4lH+`PXprI&O)N03(Kxd_0ZAIqXo^`Lsl+yQD;#EinNEObK1pWLH^MBB zXo4&!h{9oZL`n_Q%%TvUQe1&3gr^fMuGUFn8H5zV_)_cv4m?EDD1PP-~Zj1%~2Q>7L$@|uyi48v2Z z^$ik3A53|GA9YQe3>lRH@=?P%X0iQ6Q+`6pVf)2%I*<*WT+=KkriJNCbSGoarZm|g zF={BbzhLC}QoNSKlL}r*CxGprQViQ4yE<$EZ`#Sz8fT{K4?A&)6U5b;Vis3xnizvh zT&;tfLk>&R@{JfxEUs2~Lc!kj(zo!_%(Au^VV3i|EGNj~0-jMQki|t&3h)^xh;hZ@ zYMn9iS(dj4o#6&^fD9OPnQKFZGRU&TsDK=!Mm}rgH6w2shNo2P8w?$pK|9tfZ8Buo z(InCzRX|Lgw}$^i2Ja1V0F`H#H>IgDh|41tW*&R1d>z7azsd8bbmzT&;0takUOHi>o!kEUwn#4Pkk4wPtP%8J<;mTHzUme(|(siT#&Q z#ML^+8NhJ0!ZYd%+#P-ke}Y+Dt<%KX)mmp3SF3nFPmL=DOVl27J%yNZO#OPx2w9YbzayoyF6U5b8XBJoM;4Ps7akUOHi>sAf zss04wYMmm+tPxl1G_jr~HI{o%Ye2u)Ag)z$wWhM60&%sb6~on4(qV3@3=f2D2z^F^j_Zj!=Op z9AcJbJUpkmg0b5|7JYH%Kop8ARa~tF%77~tS8JJBR>jkb;cAsH(Tl6Kczal0zJ(7* zC-nJm;ghEoj!t4~|M!PKpfJT5#MKJVCkj9gS8J77T&?hgdO2mmG0QBj*1D0yQ>s0! z?hY`W-@97#v?%lma6E?o#9?AIq1+qbDa8rJ)jFmauGSp0xLV7^`hnIovpm3>0l)S9 z&J(Q$D-c)f_o;H94lgdOdA>6DU*KvzGfy>~>Uc!oldpU&+IvM`^z-@B(pc|_NB;mB z$eCI{lCL>m*%<5nSbu=;qZiOvw}g7D%;)nhCU%x{e;T2}v^BtyB>ocdG&8> zNauGgE+9>qd`EYU$A~*MrWF9Ou5kL&?h}j=>k8vJnyxS&Gf4~L{4Pfcx`t)qb`42h z=K|7%!}QQaS13oUD}?ZMt*=3>D>S^ZT_JyddYseUgxF9^4N<`wu~rzP{j9Da-ZF>$ z(t>$rsqi$ht}yn$VTJkp*stmnU_YvB+#=RZ=r)@QGs~c?5o>)2OYN#Kv9EBz(iY7RJSMs_)tEOd7Y&MUBd}t6p#ubf=^dym{x7N zLRd!X3Srf#D^w%a6~dZ_^at&EJe2KLfHjS-5Y{ZZLNmm=Lh)_g70MFp3KfWTh49*( zuSVu|49h9G$`6m}{b3|J_rA*47xi8j4U&oQlwuoan5CBo$+qcJq=LB{C8VrvoH4esX>22Y)I>LG)!4=unKoU)B(bjGD6wwSDdJ9rXl~#)Lv$~v&h1t> zMywmPOx#r=V;eKZHclAZIAd+2V_PUqm@>8z9*s_o=~0`pjTvJbbH+Bpr=Tm0NAhS9 zbTJtna?wzNZo)}o-GntRAblD)wh>Rj!xk*PI@o(`fUoZ87Q+K+T>(6-LzJ&pOT))8K$5(ZW;n|?>;yjr;eS$Kvu5g36tHRfq3UBVTAQ}+Q zp*s37rYNDS#$@VHL+N6K?5i64i2SY!lf0|K#uS!~DQsv{2zx(kY+;;jp_sz7F@@No z>k459t}BFCWnG~WV+!-i6yp32J7(R4*bm|aVpm*NHyJs)h;@sN66*?;iFJiq#JWPM zjwxL3aA13;`?TzBVaF7X-CsHFgx*Ud(f2)2x%)(z!W5f68J4rmQsp?AvQ97417u=d zEtT2Oq&+5zJ#k2i(0_{OKOr}j&C`YU-ga=DnUxQdzXqcYUd^K`Z$2LCq0s6tp%8!oe zy(SX<)Pt21my>y{EQ|N1B7v-Kq`T{8iVxF_)aM!@)^#ru>+w0uEWI708LF=Z5ftiL z0#~O5eS*Oa-4}z12;JSY>F|Wo-B`Tn@@ZmS!920 zbqki&4EIJN$uqQFV`8mvinv{4RG9O(D@-%CtHNf6Pnj8>q#4ZmLnDXr}l?Havl}Se;mx zALJP+6-pE93KfWbg)TdT+LMkNCFnjKqA9Euripch3Vw=rX88Am%5R;~drE&ac1P)B zt9#Fg)^D$TZFTQAdzOq)@9X0qj{?zmr%KNyd(VuFR(_Q1y)v={4<_|7dkkp64VA9C zpm*`o46Ow8@$R`G`a;x((!&?@{#KB>NK2jj6E2PjK7D+V&pvGQ-Mt9823%{6&h6Y~ zi^FuhK}sJ7XcLV5wXoVN+p_by!0g&~lK+4&YM{XM+R~F3_MWkH(#St`WGJ7#z4YS? zdoSGx|A{_ga>7kIl_E&^LI=q!sE_XqfT)5umhN9e=bNBCl0M#dEQo%x_omX9NPae+ zEbAl24U(p*ppVb-b;R!|opKTNbK<7b)fe?%y0mHP`?rHAMQ)U>r9Vc#nXRSo)8D1| za*{rV7lH=d9TB23TkD1Dg9MT@spK7VoVBhhH$_R_kw zln}eUaxeYuS%L+IKHleBa=y!!o?A}?aIEs9^}TZ<8ymOjOyuS8BW1oDHY00?A9?fr zi)nO;^L@k2r{Ae5U2tjd*2~hS+%)UUn-O_3S0`acsrBhTPHq+th$va60oxl|MHg`dGN9B~udVd~?PTyWydO0S??Ujx6w`a+unG1LM z!MDJTmL9)?=0dLW#VcqoEWsD<^s&wlwgoh0zIP=VVG6VtW<5+Hq zVKZfWFa=3}+N3|jT?Q{^*9`d-_f5^rkQcZ>V@KuQYcNCTHn#Ixnjy{GD<7l3JxkkP z%j9}3@t3g3%_K|TAEAu3Waa1^dix_A;VIR}BYv1H^50F;>GOP57P*EQ?jQEUa1ljR zmu|h0CQY&Q_>H|AF2h%u^l>$-9W=$y@J&dkGwE;hQ*{x|=#y`v+eXHy+a%1lPB2PH>Iy@{@ zlPUoj3cSXGLMW&zhPe#}>VF9rt~ErM4H;sB#XM%48D z73OPEB_Kmi%||GhQVhB5y`T^kPMP^CTPKm@NgWO_<|}>%4+q%KSNyCU4kTc{;upkl zfYAlAsRMh1VCLtHVb__DzJeLUYW{}v6;H}=-~_nhK{X$7g|f$j99&d#5{jcy#!g)SLYj0(!;4{~sWZ?0fW$GA*K z%va3Ej3jV@qT$x+>KktA;FMX|luAH`xSEd`ED6Q9^eM&2k8kD62_Vm{?J(}Q6N-I)#dD(6Uv|DW*L4&? zq3k&6qo43)Gk^8{74x@X<}aSa<3M?|a8>aDeFw_nm7O>wLtQbNP@ZXs+^P8qx$GDr zM}_tM6{EMV@Uva-h%oPq~!2C_B`G_tVQH&GV`I#{DbJTFP!}KCl zI!nEi;OAS$%*VW9e+7nHiqXWfqr?TEg0U=ppaYEZ>03P#Q~#qtzMa7HPt8}zCl#Z~ z3u=D)K2;1keisXeoN!ppS5#n3rX#)l!%tw@AE3a|q=26gw-pTC0d*aPg*z%=dVuC{ zX>6=_GANokFnDn%H^%&kVw}FVwj;+JX({&k*LCDrVh*VxkMfyrrqEKAfC91g9R(Oc zQ)*6Nj^O*eI7pYj$2HWPKzk0EDG*b)EXY%e2QZ0;)fh*HtYUOXUNNqqr5Gbb_H!ii zBLrVc!vV$=iK{7rDT42e;edSZdP~<+F>+NT``&nVemMRA9AP0Fysxz zkPoRb4SA-+*ZaC*D~SWTP}f-*^u)MnAqpG^B2N8tO`*7BHMLoH3j=JZ3m= zxTyJLYVt{)Ks?pOmAg;rd$=b^f1-04izw5G;Zegm!v(_=hRcShyE$+(-3hK{xM8?u zI0idF2Szh4AZ~craI%Z3pVD0k)B=V_4d)CO3{My?8=lrYL^Yn#3B)zcm5(g%``ZhG z*}wJ|>8~gK>@x)WU1@R;Ge;iBP5!&8Qe;k4lq!=oLp9I>;UU8b!zsfV!&$>)-5j`l zcY-S#o-{mVxN3OTaNTgTivzm&6HE&j9x|LToHCp-oHabA8KW?-6Nrn3Ck;;-t{R>- zTsPcQ9H7tLiKYb%4;fAvP8rS^&Ke%;aNtmZd?&$k(eR|3mD#Qc%R~V)M8H=K4AC-!>?$@Og^j=h~F^WJKVWqoN%Gx zWrkN9UT=7_;s6SFs08pX!+Qe4)ZxG(!|R;{&uF(yvgvEHdFgU;a%;7kart?%n~Th7TBi!SE}F4~HE1?F|8PA3k@$byxQ=3 z!uJis8en5aOUJ@P^6I`&QEehL;&$ZFs%m&4zcp^s<-d0*2?EV_LxQD#L3GZ!)|^Ge+E9I)Qk%;l~U= zVfb0Y2MxcX_*v3_SaE=aH&g<+cXj8A!3zy9GrZdHdc&Iy@91#gA29FgBzWFyc%R{? z3?DH3g5g&TA8s?Xzi)wdLdd=6niep;%kV%2kGOD8iu$I0BB!T$_!><@VZ1@es zy_c94FuaV}TT9;pCc}Een+@+Uyvy)j!}|@*rN0ndwIgHUuZ|~F^kKYd&e%qNVMAUdd&f4*sK$XcNpGfc(37ohMzKg!0-!-{lo89R03*z*zg;M>HQuwXTrIT z{0j{)GrZdH`VI&F>H6kQg6AEEcNyMmc%R{?3?DH3LYt}oaRslm6GA?0_zlCo8%zrr zUS@c;;q}5WMySAMNnqY#c$eY5hW8nM%J2chFED#!zsC;4;#%cGa&Pfi_$HxpmVfb0Y2Mxbu_>ke(yE$-gb|<)b@9eJ7@rG9! zUSoKZ;Vp*m>S7ukySoyo1q?r7_*ugT4Zmdgkm1)gpGz0}rcNN9cZF#I!>g{SJo(ps zmoAC!{fp9%f7V6<^VX~i4#cl5^6({J=$N?(;J{q&8#^P;(%N-O@c z@8W1Gw z3QLg>Q$FzDLh13J^(~GLzpJ$37f`dav=e_v?kzn{e+L@x3Dv|(|L{iNNu|M7Up!j7 zx3r=~d76J++KIoh`%6#bZ@p3aG5)^xlhTTRqQ9-5ly>6p=ub;e)8DzHKMi%A_`}jq z|B0#|f1tGDpDDdiLzEaTcdsbj`_Fyn&7JVG55aw8K^-9iV>k8s4a|8ARjG^P{5##jzjUKtqf2oA1#hpIDGT~ zan}e*`sk>ILr%4VC#8~D(TOR9q}yadDvGAB8KpEF)9NHCI2iioa7=0N*hz@F?|<+2 zU-j1O<30Cz?tRXE&U3OKrRuldwbp+3`gr%=tNy*F@!xVwzkXD0JUw^zBPX^`NWHM< zzn*Z@>SxvjIo2Qa^rKh3;>fYoxqDvrxl11X%89vj>c@}%VB_1yQY(92d)l?DH;yLR zPTKR}X~(8swdapddsV8i=fU6qtMuy8J^NmJ?uNB5L55$G|BuQ4?>?vilWY6KJ ze>e3HkN(%wZ#wwZpIMF6ckk-rL(Uo(3Rk8cjMI1S8jsVjOpWik`@FN(^+teW;l}vn zSEg$92Y);DCwr>JgO9s2F7UQhA^h9FNkyw}kNLV?&&Cz3Pwja03&mp(N_}k4U%c^@ z)JOLGi~RS9Jts}R@#YU?kmK&@l~nTC)6Zr7?CR%|es=V8Q9s-IxuBmd{cP%ILqF$I zj~@NC$J2XGdvktWQig5wu9=1URga|J_qwmeS^xB~*yV6%I)toz-7)^eFQmig9phh( z(|6>)^5{#p)KjPZAHR?-DV}(`Blq>#ey995E}r}IRDH`>>hV**`Af>}kJESLzTwLK zMg5N-OC9^@Gg~Lqdp`ekA^p3lM-M!GL@NF3sYf^6cz9~fSa?@lVts1uLG|5VPW|Dd zZ@MBgdhu=2Hz8cNYY87==V!{&Pazz79R7<=-5%R--SuZ$_~AJH?oSrte1pc?x97pB zSEoa|{`ljmqoW7nTswDZ_Z^jd?%bu_cvSMabC-7KQOW1dUD~ZjC7(NYY4;wLeD2(( z-F#H?xpP<2h<6{AeD2(pbm85XAC-LBxoaVI`|hKX&z-wk%E{->T}|cWbLXyxa`L%z z*PQZPYW~3EsmYN&o3B26PjTBPQww{3uq|4bRD0;H@#Thh*WXEi`?jgFFpD%SKs;4^o2i@fb4PN9^&`DK4}SW6sb?O2$!887OBEk|+2?Lbr~a}2 zg^#D^A3gi?&C%39)n77~I%Usczdy11Bn=rS#v$XC^#|utj2RikjFV5iTZX(ugIl}! z2r_K77*hS88AJXitz(W;V&|u);wd77;(x6;GB0sNhRefyPP+7z z)aUnHb?I}dUGewdh`(R6=c>z3Ir#c`$gWQv633GN^yo94{AlX-`kNn59sAPv{$j|e z|LWtZm#6mCAACG@-2Vna;)U-WzNfc@Ao1bvMT|Y4NyY<1s|Jhn|6d1-Js8s?401pm-rwi7S1YHj_GPe`4&Vcjp8_J<^o4*!@uI{eNrnfAZsrv1kF(cuN1_BZRa ze*n||&(FU*spS6S@o~|GNNGkuo=@ZDjyv;n$r;l~N@bpo?TOLaO{n-Qaz&(5XfAFGGf3ce~ zZz_A||K+QQD6jt+3`ft`{wj6)Ytoy4b^hz4>1Phcli%kLO<#6ydu<30%3B2<(7W>e z3-Ub=2M>|837M(*o{{e_lY7FXe9y}FoP0k~zE=;a-;zlmQ7>iFxm30O<8|p{>(8%E zubF=!o1Q#3ed?|CzuB5TCjH#4^`GPOr90}!Tq2*}+)+OlpM~4&*WmMSZ?AsmR`9$X)f{!Dsfa`nO6_?)bZsay=B1qy|MBwlx(!>5 z;T`7t^xgGiu1Fv8raMjA2hI0er1N>wkC^nj`Cd&{sN%-@?YrwAkouzEHTJh3GpJ+1 zq(5oCKW)DMH}gGx&!Frf=KC?``?rrCKPh(R43lXkzKbTUH)+z}dQbh_E5+fP zOxn%Koh$zDohJR)&G!e)_s^Q|kC^X&X1?z?-+y4fKXX#-{Dtw!o;QXS^ZlS-9bDm& z=KCwm_p^U>{)o4xPn%kEM&b0c^Ebb@a;$)8`euZ~ zA2XD-{`Btju?L_2x-*l)r`MnUX!^L9oIWw3JW;>yBk8;(6#5CNS~`F5>1Ro`INj;> zQ$L(OZq4au>gnZ6T<4n8&tRQroQaeT_22)4^s)2rm`{Iw!>WfbONHsn>#zJy`c2Vh zS<2DL7``Q6{?#y+aZcDVuzyGRX~RzmZ@ztC|E}`Ol@hM@9QWC~OSjoY#i%#wiJbn=)ZSd57?LF%za=lh_-=M{Lf7it;|; zS8mCK8RehCUdn{3v7aFJS>bO;T)j?S+Rto;upk_r9`|*K@X^)`N54IU4UdJ;alB;s zrDC5vc~Ak$mxOVGW%>Vxw$$hBi_X40;3zJz;tGUQk_xv7e!h|qA#tDngKIM2? z`AI2%>Z06GT>06)U9NvjGBh-yBrS04{t%jmUn;!fDhP$d!ENIB%a%f@2wMkdoV}*} zeyRV+10l?jBS}~*307WqpUQ;HsiqHm(jvn4ghjQ-T_D4|KT%{5Qf!?UnK}rOuI)v%V>1);F!p`ewnA6kvrl z&ArW3wYt6&{BT+RUxdtZ&g@OK27+Qv#UZ|I6?s=oFEAu z&F~)KSJeS;odrpZl6pHCz$a1waas*qKF zE4U~vpu7vbSz17OFL+W~K>4r0Tcib)({i3%Nm@YpHQ*~&MWLbzQ%IPS7ErzyyiHm_ z`HSGPw1D#Wz}HI)D38i#ZdzJE`4q7HwAE352e=|Fp!{p#+oDyWrwOR&h#6^t*Cj3R zJ@7r!0?KLmJfbQspnMYeK4}5vE5NhT0?NM%-YqSl{5#;9w1D!H;7F!bMH5z#Fefdb zeB9Z>4@nCszX{xs7EsYS9AC^J&E0Vu$c&%_p_&bvKNAmxJ^GI9eqM zJxw_19LeyQyo*Uj6xbwu=t2m2!>ff0!Z_iti+!y)R8szdI55_d3sPQJmQdVV9cs#F z2yfV(33CHJB4j0@sR`4P;T5$^Xw@&eYUJ2xQIi)X`RKV!SW%AS(L)(=BI&6kuamB9 z%4}7>0K9iBDs-SFfMEZV9_w*-=s3*-*m!JKLE~X1_VR|z**sb0BmJKL-~tx!qp3z&{lp< zc*DL-STuaRa8J4LF3GQGK?EuE%u`F=Oq7;-ApJe z|Ap|Yr{xvW@H*j&FrItZqE%(KXbp@EOlU~Li&ELkt`Fhm6?s82{4(K|Vb~W8!`>D~ zi*1$iYwwd5P(I@_X@Sm22TNRW6R50ZWI;G!AWB0aTlyFtcCTb^4kO7h}0( zerYou#+4U^*R|52p#0auhwn{?31#G8*GxyDs0lxnghL-ohe=^O3rdDD%BKut7L*Oc zJ}rz3y823Sa4{V!%2(Vd4(?Bf8N+M$N9i!93HM5dBRlEP5blriUI>fIe2ZUl`Mb_O z`G&*+)>jhl4`Nw1s9269q3R0EY6dO?G#xJ}b6KF{$}br^mIZpsToza{9AQ}?^TuJ1 zv%>vBCd&d$$Cde(-c#mlf96d| ze!ivWlq>H@mJy1=b_`7##uzCXmN68CDU*N0euFzmC!7=%1(%Fo>x z!oj7HFlTsmDH;haO^BzV+%DU$f<@)kH_0^ID{EQG7YMK3J`#G$ZwKEt5;AX29M}!M zXCzE0e_1%cQI?97V+SP&hO#DnUownMroyc9s%cp|Dy2fr@M_@}SR!Za@a#xvEAxsM zl{ZNFU)enpmX&woW>gc0g>mzHx7efH0lAyKB}rffZQ(ey$~+$5E|2NT@w~3cx`J~5 z?zUC)YXuqQ{>@Ffe{&n;$Mwtefh6?jy>vlkkRi6usJ(x8b6hhV-`$kCVw<^S*ukuD z5*OtB8`?66T!v~tLt<|@Zn^vmYUjhT1OTc+e=-=Ihhwg619^c)R z`*%0P@!idpUr;-5UgMW0^(XBwja-m~e&AV>heqZ8-OX@(chd^)mqBz?aaCw4e?|CJ zo8_(D@GFGd$}fujNLe^pOgIWhy;~AwWo1b-oGE;YtfWj_o_Kh(@UO_i$%^v*!Y9ak zL%1TbgO3)@DF2Z#7EW@8R|`)tzdBruS*|~IGv=`@Tu8!OtJ=LK1Zbi6E#$aW6w zVI-_5$4|ir(jg<$6?X7C;jD5zh2%da<=dtFORtb$jD#Z;_@*QrHYK-5NkHuWKZVEc zlPgx;n0WW z3CI*UMhf%{A10i6>%hTd#KEjGPH>3WbH`V}%zCuM=(y;{xdL zqB5^=MVStVw&?7{(P8mFd8wG98#U`7s76%IZKAW;B5g z%qi1>hN%D!G!4UnmNFe!P^JS*CO;hLDkly||1WC-9mq^2O+*K>%4~t0VK|UirUT>3 zbYRlthXW<$*nw!bJXUK09hgz3165N2T42^N9H=SNfjMP5uwe4TfwnRnh+ei^0*@xp zfn{Yn&@&alffd7WAiRBe5N4F=z_>C8VL@3Oh~mI9p$T+gN|_FnO$BgZ+AtibD6<7- zlilzV@m{g_%C1pBLQKkbkraW4p zY8Vd8Dzm;?qzSCBsZ0-B%5<=;%vrMN%6F9M(2~gyhq{L0P_!%wHc;fQNjQF2+msG@ z<$snya_FQiG8tYiToCTRy7gq5DRaqYTA2@_m0^1nmRyGJaE1`B<-3}^ipi2qR+$y% zl(}Rx;doN{$&DhGktG@YGy{i|Ba%^WGGNW7s?0T;S;JVenNwyJ4P`1hvSoV$8Fb3D z7nI{An@HAZCQJg>Y$ja=C1G^YD{sM@P&!O2-!8niEX!)j9}!-C#Yku>vkP0w?7{`Z z5&CdZ5^Nv#l-Y;jy5TFzDAQhX_8Di#50a>#`J03MQNYpC1omOaaaWmrxH709E+5{R zoB(!oVNRJ{m^X|rEGWzPPs&ed0{f`h&yd(#&c3M3Ww(xDbYa((Ulz7q7$oX~Z;!MO zvzm~cPM&DMua$Q>v9A*i|BSGGIc=!@AH=@Cx;iwKU-CW~C-h)jdJ-pc2}gl_KA{=N zlgjM#va4X)*yCxd%s!tr98X(Uz7exLr?JnovOs9BIHyc|L79C%VK|<)!{zHczCN-m zYRQ@&+L_C%3(8zxt;%Wy>|9=*Q|9t&Q@J9KOHgTb!7?uXK)UVd1FJ*N@LJ)ltbV|* zhy2DX3H_^T${kHJu!54>xwKYxJZ%_DYfG+tSMBk*Xv<@lEM^QGj8=y!N$5|0$uQ%1 zcBp`;Db&7I<}$>Qi_YG0_GQN_%JH~~7G;s(J=P-``oeH14i;iBD03-o!Z4Q7W?lK3 z+T(GtBn`cNxc-bV>W4jodNQvGTuK`^jHR@yR`3()(=+B)hdIM97j6jKUo%_EJI+o7 zGHu5lEiYXh#e<|fNDwvV>ae1GN=05iUK|Yza&JeUZ52K`h|bLL;lhi`?-Tp6Cya$9 z<%}#Y95ycN!^Zw{u`ersx+3BA(2cTStO+_Q!;11BN`-_;g;ap%`E!~b<*pMRyDb&Q=YRDzBR^Z6e&W{p9cPVPvw`W*MBh1@ z6hQu$zkmKmXN`Po^n#baUkVffe2POHd@2~%S)5tNW zeFF6yEl)?9{?DPEA*N>b$mVWyE^B=fi3Bw2yO;Z6XX{nt-B7e%@1h9__qkh^a2b?IVp@7B|;8E5L3=(tBPQf$n3oien zavUTi26SEd<-T36AM5Q@L^DWa3W>*H1c@o(AqUmYAklI5C1-~q8ZE#Wu|lST8VYEf zfC}o8F#41V>S^JAANFLWQS-CK8fxeLJA2x&!#Ux87sz8a1kd2Uf_l;wC}{@XucsYX zm3jZ3bLAVxj{En5GVkB*ga-=hj;mlv3-JCtDXn3<00L)R0qxVuynjRR3_BS2@2V?5 zD?Fs2Zo~=l79#gzD5zV?yf=50d9Pnm=Dofl-DmIh3(Bl-QJM8EgCp^d74|d(D~uJ- zV&}s{EN~WPh21lf6S6`GoH1s8jtdY4byk@QY6zZTr-C{!Jfxs5Xa*{%%gR(xPosc1 zxpb90;4O}Y8Rd~}!u!Xbu&7J{VN}utDhSKUCrQ&o zL0wU%fUv4e0bxy<0>Xwe1%xeS3JBZEeFb$#6R05UD&H$t4gq0LnF7M_x}*gtAj~RL zK$usifUuxU0bx71hB5_&EoBM_+sb_f zbw?AZAnYnrK-g2J+%3q1AqFiU5VOLVRv(r@1qC$(&txd53&K`FIB7UmP?t1;3c`vq z71UM35D?acaRMr+Tgp^Wca+za<+oo^Q1_J25Qc)9N@(FIR#0coNh+L{3{X&Kl^eoG zKah!~&^RINzasW=wJ*Xh(&{N?N~_DlXdz0gE6S8sSC!v;oy>n|t81D-ZFNKWtFjUS zZFNgowbh}mOlfsTnbPX6G9zVAnUOL`7>9!=M+luA5r1m}LuFo>+UkNbBV$pSk+G!A z$XHfpWUMGNGFFu%hQ^vEFf=xl85vv3jErq%M#hdZBV$*Yk+G-D$QWK9w?Gsa8na14 zynu($m{+E@x}eO+SX5?YEGaWGmX#S9E6R+F)tIIK85(PvfuXUX%*fbMW@KzDGctCR z85z6EjEp^HM#dm-H?c~Up)rdD85Go3=am^53(Aa)MP)|Dk}@M>S(%ZsqRhxx1>=Ma zjWx|cZFNJLk+G%B$k8H>t{ zj3s48#>5U7>55}Wo$(_RrPW!((Cg(4L(i8tEcU1`ji$DGN;04csXm)l4th`;P4yY1&&W^p zS;OUT3gbP1Z@)`J_DEh1H3Q#%dyYj*9ajK5-hRs$B+R$jiZC4D0Vy?3NPE}Wm#sZ& zi|pmX;Q~2fTOp;Bo)4UT&e??UYu}DBpjBEJ%s8x~lw{8|3<-t*&VTwbgUV)K){ej1#K1Iy99jt!@e1S+HOj zv!HDlvjEEHIDd4#OdUz+NCHkkZS|5ewbfn2Yej1v-jL+K_eOcj5ovWsxIfB!vYw&L z^?;(w4=FYB_uv0pE(4{|tbo#I^0LcMDKys$sB|Xh-je|Sa=}sH6%Wi}AKYMYK z$anUdGT+%DcSa$;vqR1d<~w^;neXgPVLNc3RwiRyEEtx76UFjnn*s7=GDcR%Fe+Fw z3_Ik_%nv)|&73+bVu!=e-I(a9!j>#1{^5YN4)Ebb|@f`T&j)RW2=+$3{P^wiWx zza1=k>WbQ_r*0^JS?thL$MR=!D9#^Afkn+gJvH>s@R)k)6~oX|=eCHQHOb2_z@^`S#kpEsk6$|Q|AmrPd%(d5)qPaB4wx}r=yHRRC94~Cu^^5(ewvWpFNsk4Tmr_O<`p1PnJsHZMEE(s$pP)}V}jvswRKV2~l zJ@t%oJcZ;x3(C|}cZ7%Z)YLmuPu-IY2(48AtSD3bLpk$%x63_$R<7u+Nq&ldCX^}u zDJrx44A_7ci@KUO-Km4mP}= zdO9rbD!C#$kWr=sR^AK;a%!god1X3KH05K7oO0rT%zx^e=|Dv@(196K0s63N z7!FY0Ob2RervojM9}ZC796J#0mS<_rKnJ?Ybb#_^wm{ER2nQ%{rUR5W(}BFa=V6R+ z42&zofmlyn&;&Ywn~I&5lsD6XvZ)XbOe@oYiZUIjnfz!0%A3W3L{Ht&40NEa%obQQ z6`%_`hT#C^&2*rvb~+H=G28-_Gxzn>SCl|X4~H6t;ZRc;afN#7uG;CqvT|Qfow;hbiL%PPqMR~Y zXhN9|QQpikV&%cJR77i0{>fvhqe5P5TQ z|7RCWm;!L1s7wbYmFd8=G9942nJr-D&2XTq`RTx{*Hbq&0|z1H%yeMEIk4m$uySRz zz_O_i4)l~+--_2$XRk?`kRC$b90!W+@`&|-ypAc;LCBe5XNycIvqg#~KOCAg42PnU zB%HHp5Gbn36ywe+Q;b_P3@z@QaR1eV3e{E6$Gf@A`3Mh9b z&$#?mWvw&&R%u)IptW_ z0X=oYBtY2FauqBHql>7g?kH1F-BqTZI(uD`pIw+!W*6oS$9n35B-lQjQf8A+D+fI) z&c5XAls~gP<<8{nJNqpt?Jo!Q&+J3Wo5_<}fPGjVR1lY+HuhLstIRH(H5_Ye`{k4K zhlVDw4pub>&OKwhO0~`+92VrICTh5?J0|si*D=TRk=P z($rH^FHJplMV4Vvo_gvT!_ZS#!E(O7o_f|~fS!6z*p7*gGW)Q2!?2z5XWA)uCeOJ1 z)r1Fn>O|ix@9XDCl#?AUTUvm9j+N{ohm1X*w#w}Dp5b`f%KD!zpNUx>6xpXUE<;tB z_BmztdBbo#ZHLR(cN{jlE6T}g1KOF(t9fNEuP!Tdc{Rvt1@d!wHP%N9>9F*p1SQabRGAG3W(TO?OP>YLr)F4vppf@&a{`r4hP6(<#^mcPd(!*sG1B|N}E&0 zThFok={|z zfS!8N*rBH`Dfji%Q<}i&R#v8-ddAsjg{_{trX1_3H_Bg~D^vcAJ)&iOGCol5JmIk| zvg6SFr#>+9+~|qF0lrWEIP9RLUfQvj^p4R%xqsU+|HXSp9v?ma)Z65y)J})as-(bO z!iO)W`#NjM_|aMDpXJNrAA$Z^zI^MWBiF1x?Q@d#1X12i9G^52_*CJd;myL6eV)H& zZsc8K(LQ-e+L)A~aC%C4hrIDaIE}5N(eMpnY&~65rf_;rnZoIYu|qiB6voi(|8y*j zk%c3^6GCZ?42%Xn$18>r4W>^XRDeno;jtTKM_vnB!M2GLMX3M zA!qmhNLW4N^3N*A(Lg3Ugx0qHX5TK?A1|zH0;9pA;do)aFkC@i7!EQTU~6f60&Xo$ zdrR{(7%Y$}oDQcZ6;L>x6-J*^I6W?m6UKem6D7CiM{D6ItDQIAjRW$38^*PID(|3a6LUPT@3!*F(bTo@StM zI)7$TA%)Z2T6*a!iIXCn=GM|9+k{0pJt_Io#1u|XDN_wt(fTNyu6f~fLkmzI*ixoE zu&qpaU`Ltqz^*dofjwoa1H)N~gH#7*y>L3O87L1dC{rF-RHi(zq)cU2S();{iZa!K zRps)v(qf_xta;&dLo-kw*ixoEu&qpaU`Ltqz^*dofjwoa1H(kp0#pY^SxpGiRM>ht zuY3}C(_m|9$^(mPr#!HvOnG2gnexDjGSz`q<-TybrU{e>Hk9ub&mo*{DN`QUR;E0# zqfB{VSDEs_o-);e;dMz1^o7$|O~8pDoX#s#9#~MOJg}%td0(;0b!B*(((tR_$%SWu=s zuxJ?az>+XdNa1uvnZoIs^15;&oNg(fAq?U4!hn;lr@6=Uv}AyAx>Nt!Ph{)qWzDxJ z$AmnE^1b%m7$WW&kWIGXR#9834=5 zua)&W{NYGNxxe*vRTCHhYsw6O4P^$vmNEliTbTi{qs#!2Ee>B17Ja!0kEjd09aC{Ji4sR_*YTxZ#`Yr1O~vG zG6P^knE|k+%mCO{W&rFcQy$$_X8h|Z_qU!7=Orz`0GL%~0L&|M5Eg_HC#a8}6lTCf z0EC{Jyh?alnelHn;lb9^bDDu$PdA180Z{bOZDs1CyUNr@FB^tDI$KQ2Qy!gHraZb3 zb0nV10wDC!MVDdHF!a%7W$L4=%CSg9Zxg; zQ#;>rsi!8lj2-W|xeH|eqe8yaj$bhBVL{m1=bYVdHQjdkJ1+l{+WF3#y-@n!HVO39 zI3Y6>92b@O()-Kw)v)88m-=eH^H#My81K9tzxDKzX5dRLwwAUImW1IT?bFJ9>8%*X z3RqjqQy$$h9B)0nf&{rCP#;Y_HTyJsQDUb)x}bc&ECNFxJ)z94rze#uk1i=w9zA99 z$6HUAHG%r*X<<7HDuyx2XAEN&R1L#ED~t=GJi4Y#dGws&cUsGT-7?l({UBy*Me)`na_<>np1LYwwWxkALE7QWIEV_Dx9z ztZ-bJ6;3F#!m_X(w9|$$C@Y3BXlKY2^+W7!E0{Hm3TlQ?!JJ{(o5E-@9xY{Rvlk4n zmc6e#$`Q5M5PRDSmX)c^rnsBh?ChJ9{IS+rq}Jog)Mit={pFivsZq4qGis-U)r6x! zZFW;LP@CN{3~hD?%)8m_Na!lF!ewP@vol+g{M2S=g>koqHamAf?w)S}OaJrW-qui? zLYp17CKXVdomKANPL)}n+HPvIsqOCHO~UpkvnLEgn?1$+;t)3H zrq-L%>;bIS2!w`j4)4MUqb7JG?bH-}6%b(CFdh$38efZB!#sx*#y}P0byrLObU{0A=)G!sqyMHUkS0oqIGWlb{pkZ84TNqs` z((EW;uj@rkpf7~1S5!_a1Th0$Vkcv+cO2yHi86lynUyTNP`YP&bZyZ%ZGOlk&R zLCI8rE0{8jE1>wB4p96}2WCxvI6&<;9iaAmQ@rc1II!RxXqyV)z@lL|K=C&nSW-J3 zSTXtGK$seC0cyV^j_PsEz!oSdb5Kqgh66=qIxwkB2c}JaI8ae$3#j&6-v77DG@6qq z8qGil@JlTF5G~L&3P(}CrfCH~WajJ%WKgmfUQ%ofNQh68zJ zIxwzG2PRE^IDng$9fYy=8!A;gFryjhK-E-$7ML{*2WrZ6U{0A1ESUUofZA`iz@pe= zl`0)r)&g{(XDWaLD~91fkjHa-MHyw*msh5PCI<%rphr(5Z`ruGTnGR65fdFdUdtrUTS|Ck{yeS4{yp zK=C&np!k~(v@|~*STN<`K-(}Jp!S;%bkrU@5IrC=C{q9qtSHj~iofYV{_3Q~=)kx# z2Vuc59H91_4iwc62O>zH%ccMvp!k~(Q2b2?YMP%8%$f3Nfreo?Kg z4W_Vn(lE5y(01cJfonuF%3LFwRpvt|wB5*0`wH!H{^YoJI78lXL7Cb8-qurU=b90< z-A`^zwAocxepWd`253hbn!rV(reTOY7hDBxWv&qw%E<-v9aN^hq|7y>0*7Uyz3x+hQ4E+l6^$cA@+<6U73^IM1)$9?Nd{a2=QXt3wog}_J=`#C&pR$Cvp&DI z^;D!8*yj{?v(Ht`J#a|#v(KsRW}i3J&OTpo4z!ior4jeC?t6G+az)HgQf8k|8AhK^ zE37){KT(^+M%oI>jjyRMu@VL=nPw%bw;i%Jv1{V~*(yQ$h)zM}Sc883QF z9zbk@@T_61>#ev7!p&yTwWTSA;Q&wI_tl%ztdOz0glcgyC&r``axx(zZXcW?lw?-9N-wlI}vmq3RFq|7_Qy9LY1v0YI0bzK!C8-d02*WeVpBBbG+kPMIoZ6`i zr||qu482gETVXhq=iq<7O`Z>A7a<7C!T+{H_@Q*zeEYC4{GGSYAMuTmFOH@kzrFtT zZ;hOM_T!S_ugPTsJ96KMdMX1)TEfT7 z$TOfi3O-zzJ94+~nE&WgP^8P3$G-wHNA3LazIe*u1h7vE!vWf-2b?Ib57~R^7BiV2=72 zhH_*o(xE6v1yrP0gwdx|q|a&r-dqi*7;;b;S48`) zG9OPMAcq}{#}n+-ZOb=>hZO1UIANej?C)(0|gU1QEVr4!}EGx6V z%o&nD67N`H774|ui0F`?6+$qMG4pd-ih?4&piD(N1mv(&kzN!Y zQlytO0~P62Wh&CSRW}8g+^TzIo5W{Pq&HEaTqOmV3(6E=LO>1&s7M#V`0!TV;jE+r zD$=vc6lCU=Dab4+Q;=CyrXaJVOhIN@nS#uUSEN@p0~P5tWePGI$`oX_l&OVlD^rl! zQKlfXt6aWTT1*t_J+DX)6G;m|k(oPsRmdt+keOGeAhV!ML1s~zg3OXK1({`K3NoXL zCQy-CRX$1j3X1faG6k6pWePG|$`oX_l_|*VC{vKxRqiX&dzwH+W_VrF0#u}Dl_|)~ zD^rkJP^KWWs7yg-NtuGovT|RMUeN?x2^8s7Wh&BZ$`oWaluwdRY~|fjrXaJeOhINx znS#u&a$k|&(*!Cqxm7n6>DjZB7NL9)TXkca?U2vIA5OOF#_-fM3J67C&_xxj?r-JY(gbSN z+sa>+g&1hnJIdV3yQ@s8dQX{B^&nvx4lq(?l^H4X%Kfdp3!1=CSyZN0y`;>@SXO3a ztSB=wR+SkUYs!p_4dwn;-YrdFXlyILR@Nt>RqrS>GIo_28GFi%jN$c33otTfl^GfH z2@kgNE@%dZ#-cK{>Lq1H#DKj#bl^Gc;%8ZOvWk$xDG9zOH z3Y@LO4YN%{m3X%^}I5r z>P2Nr)h8p90IhmOnOgO#GNkF)s=Hp&QF+4nsW^4IDYk`RJ~vra>NP4kSi7qi#-aInp3MjBN@eshv8T^X`RQtJgt2EP4f9g8+St^jtt{Z^IvHd_;h13Vy2@4srb zCH2B#`_Rtakz^Q`47R|8D?q6^--aP2wfS#gMTV~ z=wq^nf!OUVSTc-R&^3%%03~^xpQ_)UB%nfS)mN0MRfn`3b}+W`&MV(545|9KFq)L> z10`jy2b5iYNYjzO|Nh@`87M7h1(cGLGjB{Bq63tcbG?AdadJ`e5U z4Dp|^D|5l1Y8by^)shPO;`%wYb3K5{@xFtTi37AlNgn^|#{~mO$>AXv42r^Na#k>@ z%-8X^LE%>NCpyyQwnEN0gfPZ>O4}e>-&r7KQtPrYU{w?BSBc-oKkV&KZ`wscfF4 z3H{rtu#M%=rsIUPhtja!ZyP=?cAI~~c8m0ysG@z=YcAKygauKbnLsP&O670ZPZ|0Hxz>ftquG%5gf-F!jL!D#z(SYfAdx zI?yo%-~grLbfBwtIuPWY5arnd8D%<+(eL{4pfxs zz>F!6F<_PBa9~#LbReo}0=uAPDu4r&j?)23$LT;<^V5N4QyvcV48s8`$JGI8|91?x zKwg=%fKqWfP*6J^C@Iqcs|1GwP=ceyP#+waR!-`Z^W$;YHtDP~o2aJD7NT^V4mMr+ zmNFe$Q0ACu8$K)&j}|2XfrVQ2a8=?E9iVia4vedv4iuExLKDhtp($lLR5s-!G|{w4 zKoeDz>A;LK9hfuuF-E8yrvpv3(}6{0IzZ*PTtF1yz>=vD4p2Hy2bR@N2Qu3ReF_J% z%5)&7Oa~^E=>V1EU%_AfzyT{AhXW-oKnJFj>A;LKyMW4ZIzZ((9cVfSS}c#h`hf!r zOb~_xl#bJZMYYp`Ws@H*K;<|cSW!D2$X%VZ7+ZkK@ra{xTr+^-KtY)fP&!Trrc8b~ zK;<|cm{vO-m{q0&wS=So-@4723gG~y<8+{@b~>YT%MiJemQLZk`o!wF^fVbO5>=LW*I4`-Cwi#yh==Qk zrRtQTQ>soWdMs6s?pqydQUDcDtB!5K$>wfT^Sm-6 z)wnYIl-q>U&TYbJhmss8V4p)tPL8K-zkZqjXZGX)L=w=%TsrM3b1635l-TjCh%LhN z%3O*aSLRY|Pnq>)WFZ6fvp#NFUWv5A3C+L?i^{Ap^X_2>^UAC+mY&NA=%AOHbI)?h zkmpcd#++P#ax^5NKZu%gJJk%-F)yi|>w3$Mdxr5VS^4JV1S~%-jQZm-)|M7e>``B< z?)NMYvT$GvWQE}|E2PwXs|-3w)gdLfb}GqfuV{VbWQ%gS{&>_b$_j<6fP0k3qgLz- zT0u$PXpY@4w_(HhRV=%G*nyldE+8J1OY-XF?C}=m_^TggXlenjfDo@ zQgtZBVb91?4W#PR%9N^CZjtea4AiRoJ<6+EfLirAWe(b=FqGmvTFS9hy(<6er!ocO zKf5D@hcz?Gt-o{rh$BWHA5Cw*bN;&Y%D^I8KY^v{IDvq>8G_!(LFe_lqUB!jONK2}0(!7xH@Q5X+{9}@dZr2M4e+_Taw zWs`8SWSBO5j&Q~BdBRdpzrroTRl_CWS;JQg*OdQW3Ld;Hqu=n6%Q7t*CgEtw&@}vN z;kM!Pgcl8O5$+f+2`?GGTDYrx@lJ6-T1=AS3jiM(NkY#gyi9n-@VKzFV!yyfVR_i- z^Vz~#!{-W%hPZFvBAho|5*}AZmmITNny4TN=)>O;j}DW&R8hITbAIdbqkpt2ntM$M z9}`E8l!$<1{N#k6kV%aLJGFmF3Vr;fgd4(N7QSd>!b_U}V&&W^N%@DBOTu53{C}a0 zjn%&Ybtpc6C~Zwnz(I(A$Cn<$LG1lx9h?%j4%UQ`zu$t&{T3_@J3J+vIGmh6 zbS1%_Aam)k$CJXg35)Vpi4(GqXN7Hfyrxr;1vaods??Bd}Md6_qx_;Op z{OzeNj|YA!AN2zXp7@8F=!Rj3s=`ApBy20h1G;snaO1E;lHVvYuVh(AQM z6&8eTli}$P6>yL>mDz%L__HlokY_9FFrK|^{axWNzdSXFbouSW9&f(2{>hU^&rLsm z>-_gm9{t1A*uUNy!UyKBK7RDIsrkiINAsy@#YOK~36k)U;}U<>WX~B+8NQ|oVS7z8 z%DkqQu)QWc1DI=y!mK3N6SRbFFZ6`%u&8P@rh|yiwmklo3ESxSM=c) z!{6)}k7Qe};R*}F)*<`}j&*3^{Nw~27LykYw;+PEbr74f_8pY-hZQZrVFBgakjE~1 zL%C)hMs&6(z@DepVF=Nz!#NGc{pgM8Y%8b<_dOH`vEin52&$(+6UyyG*gAyhZ0lPT zwhlp*qz>Wwr3+m2p1j00p|GtG8}V5OS2TaW1xv#YSA?y@ZQ;b>=2_j*7$4_B0Ad&r-ZFTbHdi4qDEsn zgy?L`F9_Qf!`=#Ts2{zt!eyHXD^}JaL}yze_ByZ*VFAiIgyor`7817Q^GUEBMDHm{ z7-}M6>(H{WbqLYfRyZYW9m48}b*Sc|cRmij(V!0zoo$8qGjZEwow&dtdS@m2T8Afv zt;2YewhkjW+xjPkzno7EqW7$e-uSns*3WMq` zE^tG#Y??3x3C#8c}?$?30sFIUEszV?8orh$v#9Rw-uIL;GT7Xdr_H#EV#g3 za)EnE*w!C>;4ZqrjlCd_sDJ9@(R1|4`<1CNZ0o=PKD8MEJf{Je;isw0%jyZ+)8+1@mzSu!If5=Hd zwoQn2ks*&=0LMCsbr=EKo}ead9mbz{ScfMx9>YPLKMv5gf|g|Hdnop0Ex;xmmjFCy zLRs$=whkdc+xnJ;twWIet3&bm!;%Z&)0em=6t)$1g{^}*3CL(M4nnMpfa!2e*gA}5 zlEmTU`~d;lo}eadJ%+5;HsPWR;0VyRd{NjsI3sKwS`dyMVgS#S>5;fC2LiOMa7NfV zv>k$6^V(SnBw5@PPc&LShtwSvrz>9JGjRqbfK-&rzgl&`c z;sS#~hIJ9^@U*aX80#d~VZ>)!|1<))T{mgE0RFQ(<_~`J=y%69;I|%oR1XEo{zbRU z|8r^d@6ty#-)znDt5hb*(5(N{<)f#h7V59QV)Rds!fr+O_~A>ET$Ot2%F!b?EElaY zgl~-|=EmmwX;+S3ld9G4muyklW&5I@tL@Uiur?_^DZhBxV~aXpaOqEHll)nCv9BLX z(tC;b(qVd>trfM;V@mS*uvXM?=@%ac`|2?3($6|1Nr%?J9-r0gFTTm9%K1O3hO#K( z?eU{EAo&-aU3z|1l0Gq1kqDRRkV~)X1vFjy#PmU`qS6SOs~1>z8*Ky+JIk%?Xje8Ou6(&;@)2y|KYXG z{~4_(6m6==RpMS=8}NtSatwyoL0Zw0>*YK3#D1cDKOPlp<3Clgr)aDOtqp!$9}`c+ zwE=&WH#p?{hti`VLkKtN704gW4IN+Ain`^YktQMR@AJdj7+%o^AcaHu|YJ;C- z2gRPP3lq1@fBt&hJQrOjULAMVy0BRP-J9g*xm5q&O>*o~!H9-x*)sx_EmSTjDR{ep?rBBV*J5 zBp#6K;(xi`ra!4}=uLIdrA@7WRX-fHiA-U?W5M zyRTme3cscfW!&8SCv^ya`Dc$G#{*Tmz+J#|nje35HfVn-`Fq+DJ}A6eyJpVK&A-(X z;5S=)tW`&`BdR?v)pTei^+?Wtqt1ZIfg!fPBA%P;!th;I{wOb=o9jZ)O~KEoLk*Yy z$ib*?U08NE(_cSK3oIvh(_6NWej~L3x*&V}OFXgGhsG`Qm)(N9X<>^sOGu0xbbS~< zvwqpFayOkgv;M(bUsrNm(9eN+8{R@NR@>WTf#`IC59tdIXmAe;ZswLLJf?eVXgzx^hg zD(AnN9=+KbLdfeC6kPf@<0-ygMDoM=|3(|!-|YTC9jdqqasxU%3hP7uvf+yEi3hfH zfxCijIzpCR`WN)dvZA50$9J_w@y9~;xK8WG^6sGhCC7)<(`h$l_iB2$-c}Jd72f_bE z{xhvp1C0OknFZgUmH)KgB46YHACUiKw#FE9SGcHmTiB%y4vYWAF=Ro)59L3#`lmlW zdTeUE{>X<$kF9qz%Y#BzEadiduAIN{kZ<&AQzR?eiL|8AjCtEO#f(j$EA{j7(XC&Hk5YY?d>q%F zinI3f234dE%HIFs(U-+jrcr<7!%{F?|F(P_hd*A$fsAlr*)UF;tDpaX0_wOEkS%iuw-E^9Dyxno~;;|t~39G?oE z*)ggSG2rvhUZ@HG#N=~ugD{{0^r{dqc? zG}8?QXAH*$&2)pkW*GJvGu>cs8ipM^0ppOb@$JUme&XquHPa2#YsN69-?CxY?fnPS zZ`w^izM6?Co^IWue364}r(-u2$y_n_A56cjoqodIHx4Sm6=o*~j4Q;y)@zuIg zzQ_TtZ~Wls;c^4}w#?>w=R>2}dQbint+)w|4JB}(2&Tle<2lDmjx%o3Pdc6%=EK6m za6(wFe|nEbg{k_VA)GAMpO%lPY@z@zu3;FSb{uD2TqruOI&L}c4fF9K?*d2Ju{=6F zpn)W~z)*BtaolpucWv|nuC-E@FLHn}vgXR5gkk5huY8T-3{x(U%o&a=ym3$gD#RbF z;gGL!6v01hf&&cuf?*8xhPmm(-sy8LsesEwr~qMT@|O7z{wBgu(}W$ATr!NBv12(7 z6okEJ7m{~H6NrZiTZ3Rseb`XZJ{ie0&ivz}8 zpRd32H4aO)^9S}g3{9A@gD^B>_!(5-!pw|eTp{*o!y#Ye7OEMBea1u?v|!V49EM6J z%peT)45QMLE;Qgf!qB97X23H9w&%hDdsqHr9~t66eno7K?HFu16JzT8J~VoGz4F1) z>~a2C0-NRFK((0ArTYCJ9F2~{_9i%(oOh2ArTQZeYQSjMzl{g-LjA{hAg{>-dFqGt zPu)AZ$aJ)FoTjM=B>|`8w-(&T-T6g5yQUOOBU^ISMPo2_f@)!w%&fk2{`lJn4AK@$?YO z!`{qLg0z6+Imb=M3yv2ZFF9VeoR^DTu?fPNFPavZf6Laf9V1cgkwMzu%h!hEmgBbL zj^nQ5p5ySPq4UW`_rnPx@3`Q&=(yy#?6~5%I>gdVwV?!Q0mm)JZO0wQUB^Ag;Zf59 zdHJ5T3Bq~H^H*O!_SMbN%FhOcUXZVum0`{~9(O$9c+&Bd3GWVv}HMen6U}MvySH+HytlHUUad`FyinYb1CKjb$=A&0 zVa_=ocRb;E((#nz>0y>wIGhk>9nU##I$m(R=y=KT@(@Q735F7+1uk+e;CS5egyTua zQ;w%CV-(KV1mRi7bB>#i7aT7-UUIx_I6|MVn1px?yur1A<8j9mjwc;YIi4PH6c4(Y zK|;*4j^`XV9WOXubiCwvxz86Sqkg5IptInOt_2*ATb_T*b7Lb1Ma8XyG7IvxRq|L0Z6Z*>S~j)p5;n!*R

VWG2zMNJ9rqju*-o9o5M7vcoOfI>9HBtbB*bIDaoKUjan*6nal>(I!18Y!iv#UJ zLd+e=kmdXV1s0j0 zyySS<@rvWjWrG&Lx18f~#}mpCnhXUdU4|*g(~f5x&pMuS+;qHalyB2Uf?sy_*Y5#r;xC~Q{ryb8Ye!y^ATJ&MZk2!tnj0Z*;uL@s=wQf8{_Ipn`2K!*<8_INt5}A;)_i?{mCAatQ|iGg@dJ(@cKn#*CoDr6_LNPS|K`ueK06xi-Zr>OEOI~Oc(3Dq zj`ur0;P`pRFAj4Q)?7X8z|oF3I^N`Xi{ovMw>!RPh^1S04<$$oINs}cpX2?G4>*3_ z@r#xbmeyS3TEOu}$D15)alFm(cE|S^j?m}3O+q{d9Pf3!&+&f82OK}|_{9N7@h>ZD zu5~Toc%$P@j<-18=6Ji~d-^QxAGbh1A>oG{?{&P-@l%GY(xT5ge!=l*SuYsw-{fN|YkK^5r zA9B3c@jl1<9UmCxC_F!$5MFe==B8l>k9NG#@g~Px9B&(98NJ(w5~Kwj?{@r<5*_gs{o+7RTEhZ+Co; z)V7A~d6v3>i9PNMECNi0u+=hR|f445C5aUj7RP|yKz6r2QSz*%tK?^8Zk$)8|Xz;$pF+y-~Seelp{v(Yy8 zCCoGM1v&tZf|KA3I1A2C?QOJ`rU|prRsq++O>i6B1^294z!y7yPI#UzK?lH5 zaN1|R-LMZn0vDdF7c2dP@>62s8n^*&fji(HcmN(vY!)j$f$;J4inSNO%iuUT4c-SI zfeW6!|DmP>P*4Lmz%6hG+yf85BjcNoujSvDqWFe(*5s{tER(w?PeksF)H+A!jNEnk zj=#gCR7@ts!#7efxhF0wWb2qaCzqq;{NnqjZyncdaNXe#QX4#8waC`-@h7<)t-E=z z%lsK*mJN9)sfug>AREv_qGklNz$_y5S&@zoW%9A7wLLA!DJ zR?JIMaUNKbWb0U+A(x|7oe^eYtv{67<^x5pNo{jJ?Rfd{3Egwviu~4Z$U~u}V-g9j PTjho%^a&40CFII~{Y`h}Wt26|vdis7wAgc1g51_lZkq0j*e9HE3k3K*b~w*m$!V9)}I z)hc?*FlwI+x+^-GjzLogCf*h>UE-)6C9%ZOv`Vy)iD?ZUD~9CLi6o~~jydbM_xe?> zT3+w@BlnMcKlknrOzrQpp8f2#pO^LQz3W#`x8Hxr%s-{4Gs(phK6l*w(TQ*E{Kunj zS@y*hfoyB`d+Ld+UvuzC;^6QfcP1`*;;YA{lZj`Zcz)d#BZ=?qJZ1fL%Z?n5^BuAC zFcj5M0u|m4TAsp4=H2x;)t(*_Y2XnYZ9BEcr171eu>h~Z(eXx;^v*dmVcM+ zJU)Lx@`}_G`|>|Zt|}&wldj%SDeU~_8}B^hnke-v2S%j????v0nC#w@+4@`QsVM#G zDE*%FRZm>~Oqe+N`rpbHA3mwsu8lt5A^%2)r?1<2*2P~r`KI4-)Qx)7TisDNJaPOb zw=lg1g>*rCNU<7`*di6Hy7INjdSd5^S00wUKX~G>tMWsM^v;{E`Lje} z=dYhXcITPb7FQLbLJqhKhX%n7=|cF%R^r%m%Te-u(Z5o5x}=P%08d4Xn%__Uzadp| z{J_pvTz72Zx$yZ`;>}Myc-=7vC2o7-vAe&1Qu2o@!WAD%oPWsP6*ywee&39G?tS;f z1+N+UMtJ*&5_cxPIQRUA5(kVV4w;jlEcLYai7!5S-ALlQI}e?`W!Vwhiw}=_@gX}O zn>D@o*F!sZfA0UP7l*q(k@$Av8`6#MOzyn@O9wx3<>!CA-*FH8j{bbF@6SU!*M0tk zwYciY|7Wyk=d@?v7WM2myPkcC>)CI5V&|8oXWts${<*}l(!tTSmq%Uu%G48k{_01` zLk7F{eSchx8duuq|3zJV?wd`t-S0>JdOGUYw?zAQMEjefK7LWubJiqY8r}KwWuJWF zJ>MN4PFx*c{nf;g2VM5t9X2egJK$Au zbN%1gy??#$*u)Rw?!EnQrF)m2`1sOSj+HQraQqbw$6t=a@u4Ohe>)Dxe-nk{S8GQ; zD(c8bARH%FhPUrZ{2&p8#~+(GXYJ2_M=<_b9E|tI!MOT6I&Z~w-Xo)6{4MRWZ_qA# zhjiI5g-fR-mY=&NF6h4=71h_}iAx6xSd;iqMC`e38x#M3$kxvO`vG?TpBS?LW==x( z!HKyaUY3|VFmba4?a!^Ad-49n5eFrIq@jC3L-$|1(EY7Abbm!d_u(447j}N}(Yd+h zVWKgd_`byNlfs{TJds^?l=l5sMScHp1aa;A$^XEO$ce{QW#*P!jJp=`5v)o4?y(Su z^l#1G{>g;gnoRwU(Qw~DXTCgfWccew;`CMD*5R;8hr`?Y!{Kr_94;FuVNK$H8|LTU z_-NvH#`%5uFDJwGpHGbce=*q4?fOze?r7pjzv{OlefW?}0RQPY|N8&*ZA>EE_tV7T z%ikMyLAinb9)`y|4ocqmKVUd)uDmaC>Iumg-#Pc0Wyzl`Pt?Q2s^sb6{OaUkXHQA! z{;!RNhqhevFY&-Ojx+4%e~ z+rw+|`Ov-LyS5~cNlw2#{LGf*QOVmX;WJy3>koW;Ma~rj`~O%@EB^%#R>J)+mwX?q zgs0*2kxFbV_tC|EYUq=u-fb&WA;zFFH9DbN3A`}q-{3) zH{KVXT}-~RdZ$TyhuMG7?Eit;56%7~X8$p>|9P|j7iRyvX8*_We)zp&a@E?Gj6v?X zdlxr$fA|}5@}eV6+Hq$8ZTt80ZZPTRnEk2v87sQ=eAE5mwO7hTzuDNYJfdI5q)C5= z+5dpq|A^Ut)a?Jc+5aoE|DD77<$pg;KR$BiZ%w9dG%3U_x@6LSbANcmRpRgg@9Y~qOCuTH#m?!JFYE*?@{l5iuHaMme7a6wT*&Bj!)pnQ*TCMSXFgxEeK{K`$KAf>!V z_?XS9U`+YnU@xSCw6Py8_Hp57Bz|2lH}0o3f}kK=JvFNMpo)*8W;pE1AXxik5R@F3 z4Id=-MNFzpVgYle&0New(LLD<>b&c5V0 zI4M5iU(4|)x5AHoW@v2{`y;I&$f~U%7klJh3F?Lq5}p=j?ZElE+PBI%4sFZCF)?T# z6UN2So>9JA%0GBt5KP2;dVqwLl2FkCj+Ev~F9ktO7|s77*o&!PCO#l;uBCAK)#7|q zbJ8pGCl8*yAl$22v6mfBx%@S?KXsN=>~JEOaokjnDlU}>7UJW>U;OFNs$-%Wl*A>? zl-wxIEq9$=!~3rY*EYoAs5WHYoLWEVa80;ZTVkJ4K2pj$_^?FKFuYQ@>5iWlK1=dG zBb9aZbRuXguf0ktubv1xF;|1KB%Cml2vSnBIN&dZS3Qyl#*}{~e8_GoK$!(DDYL*p z1`3X6dE?3~FQd%zmLis6#R5|s;sRJ;TA2mrz;e>x;0j*aFUTt&esvHmdvG);D6bbj zrZyTB4IeFBQodd6$4-w1b#PS*yiGh=`S55kBMIoxZOM>sjRdpGLtBOSjs)|{CxRD7 zf(7L(!OxBa9bq{5pzwL!{eskKae2?f-X00k%A?l^?;8m+V4Uz|BrJ{uSH&PY&HejNPbNKjJ#Tkz6IP*F}@EBw+(P*Xky+#Lz(%GZKl9tj$!NmzpeA3#Dd z8ZGWujR{kFN zu+boMy0kwW_ze=qM}w?pc&$`r`smRhue=4Ekv3JXg4ao#DnAOI7!4}Qe*->sG^i;D z;#fK>ZLWMgc;jf$sA|GnkdTuaP<}UflhlCnZg5^|K=}vY%~Au(N%>3{qz05v0B?~R z$i^2~1Q(?Sl-~>9IvP|nn($d9OiB$XKL@^1YCw5dKGP+s0p*jx+oT4RuL75)29)0i z-YzwuJS(5CtVj(gKL>tbv>G%tA$f)*Oi2wW9}j*|YCw4lxF$8A{CnUXQUl7L0Z&T} zDE~G1VW|Q6L=$(xb*Ta6SDh)mt16v96D~r+jMRYgJ;JLWks1)juzE;3)vI?&4H#Z2 zToV4SfAC_gU_ zjLgav$%$ZJH7TKZX<3j_-XOeoM=F>wJSLn|E{Xj$)2Se@JR@8^?BP^UFd1Gg877rm zlHss=DwtM|0@bcmP!~p(GLSTs8AqDRj3X^&#*wzN#F1(gNIIIpK+;uaAW2D0;Dih$ zX=MhIj56a$R+(`mugo}7R9=3ajDG}@k|r>aRFoM=YRU{Gb!7&UhBD(wQ<-t3rOY_e zR<1ITbTom1q^rz8lG+&800T){nSmsu%s7%&W*o^YGmaFMs|+M1O<*9YC^L}Mlo?3s z$_yk8WyX=FGUG@~nQ^2Yb2VTf>1YN9lCClXN$PcR4KR?Tl{JtA8D++itTN+BUYT*E z7_qcJ14&6UFpyM~8Axi%T^WuDBz5IDkVq_7W*liMGmf;B*$Lai(foh#^)k+Pr-CI( zuz@6XcApVQ#*`UICX}N0Z#si36%7CGOtW-6!&SCQevlCXA_z^kwYx4i$Ww{qLe5i26Fzi$3RQm@YLrpTkp?{YG zRz4^-puFKysey%|prst>wxE3O4MDKt*`Z)b`CY=x9+WSDb8&ghpAyDhHJ|XZRhJ>B z8Tf=(a9lKuC%k!OKCvwb;{v#~g?rB(^Wx9BgZ64(5^RQ&<+5SPQpyR>0E z-Iau+&M!@MT6tMeF?_A?3|L}N)bx9TU{>v{*{0fuZ&pAyEX>CKYP zo>O~ok~Cb!d(omvh-OLU-Yh9RFiSdn?&3jvUKkGX_>$vFKfjDW*`_o@Z$$LE*W$vB@BmplcaLt%GL49(o8P_u|2%%i2f}3sO<7#HiD~7(0L%M}nV74=k0jwFd0`PqC&UR3 zEJ^2-7Zmf#X9yoHFDP1u4-;NceyiB=eqzz^GU4E|L5EYy|4s5QllK)F;eRVhE3LX! z?hzlB?+&AcAlM?jOnQGod7JRDUFl1PR|!uVK3=$F_yXaw;ZuYwhL;IXgRA1rQ*we; zP5E+DGmvM65wQLq_FyQOSB`Fy_a%b`!>feb%2CIXf6`mx;}5@0ntn?nm{7h~_`ssf zvcgr|Nc>kx7 zOge^-6rM7?O1LI$9iCRE!}H2?xTVY*Sx{yTRF^b?SI{*D;0l7b#3w|7xPp{2YivxJ z4osN*=mS}0I*?OV2dcrOCeVSBDF6 zZBqaoSTqa=I?8llNtq6eUD2;GIFMGR1LMk(163JTIZdDgc~bx!C>VwVMP)iLsZ0l^ zOnx{}Q>Fvc%5b2HaXqUEbf9SpfCKY};Xq574lF3sfhCh44s@02Kv0ZpNF1m}fn{71 z=s-ppoemC67={B`Wjc^krUR2EKO872(}A+`3%5!8qXwomfezG_>A;L(IM7gLfwRhS zr;-{{rh^O0bZ}AmwyInqJnXmvmXzsGmj`H#1XuPu85~LpBe0aVNhsep6y(%S2lC2v zprl-7peSnsuc)HTE2=Bgp&4b?P{S}BnpLI)O=UXJj=37ee$>FCW}pKdWjc_$D!yVm zFs4ig(uU!{xH28cDAR#_#M1t(fr4hB14U&zP*J7>Q_6IpW*81kE7O6xG974wt2+Ck z2Ie&b9cU@jfsQgASW>0~UBhr7xH_&eI*?MP0~z6H{$~wLXa+ivRi*<)WjZjaOb1Ga z;XqlL4pfxsK>cbn|Dy(GGy@%IDAR$KG96e@rUPxma9~lH4s?|1Kx(Vb|Ez(rt#Osn zfwVFm$STu;oH8BA8-@b~WtLY|W_jhRCeXu*GCiy*)4^$1KwX&*&6xa%oDIWpXjb^F zjr}-LUDSl=5o}{J=qP_`o7|)2HnaaEg%{u$cpk2Q9 za~WEW+k*!Li^_cW6I>fRKps<$o|xp-Pez#zO&I$~DklmJP2jtqf?>S-nREq|l;c-B z;Zw)+DN4i8#+2zyS{TjoZK>^77n8w+^5J(#{z-Wgr@TRU*_NT8 ztjyM`#C&?d=9CC@p0Dk)lW|@;ms6&F(s9}4uPC!6>W&-A zY?=9(<>o-QR-6z&%u3TODzjxehS4%z<$&Au@daqh+<$^;nQ67LW$K2}G7V)GH7jge zrlri5!B-)$bIVE~$K&fg(o(DB_X0WLe=A9R zkvoFM{QSXTD8dH+6@Cj4_V_Ree_>BXcH7(3dGPavREQ-j?IG z%fG11<_&I)Pe>k9X7gsi8;|RsaKdC5k><@Svv~`Kqk$K`>7=29<9GV$@V1joYj!m& zTQiV%Zn*f~I8%;Z9Lcq&g;9BY`#GV^x0N~NvP_}SAWbUs?Pn=wd0QbFAVQjuS7^4t zyfO#AFaM-?OLDTR`;kGjS=b~`0 zdo<)*5qa@ok53E3&R1y}#}nYHX27eo8CO6<4~V+cyi~cowXi1`7sd%_&p9r*{6)3% z&DpeY^d%*)xb8B{I-XaK`eRF89tc~97L6S;!>%&FUkYxE9R@>YSisYYEug3wqHxoe zn|@(yUvT!0GGDPR8OAHNyxiO4_>W1GZm2H{CJi4hT)JJ_-+l{PkqqE_&Wr^rHOF-= zfHl@Ij6O22`~x}Rp)U^yQ!;75fqzGz3PiSLc(w3!RTB=rQ-<2nBf*R^UJ4wTkr%?o zez@3Yl`oY12dtA9#LDcH^UBwXec8*>X`Q_zeA)tRu12F_RzI!mz5>s_CzEhzHK)wB=%%3~)}MQqlyjKO=$ifk;UkWg z@7fHn7S8v0?k$^!P8>;o;I6s%UpTaX0y`hQXy}Rks}jG)*TpSE!Er{Jf@A1`(QjaPmd_tT1{Owl(;tsTmj^TH)XBH*{zffgpEcKQFT8 zh3!CZI{Un{FFJ-anCC`$U9~e1Oq|rS%N5B+eK0c=Bm*2EPb$ZOAiV7tGLc{(gPvMp z4*D6*%R#@?KUs9HuG%@~OA|e3B70dF=cXM}VKB%1bj;PBwz#bYP+Qy)MoUp!9H>;6 zGuec&t(~meIg2-(eb(8b4}RvjeE+s!(H+py130Y*>*FgRrp|w4oaY1dI z(Tj#fXZ&-?+tV2@ip^dKbiloulUwOPDgn$X97@Ap=HN z_>J6iKxf=grp_3$VA!cMZW@NpxTSpi)v?aF3${9AXvk27cx;Bwcubi(<8fu`j3<<- zGtLXc0qTrPYJYyKlqWjliZbPaH84&{ePCTPP#@S(rarK#Or3E{nexE4GUb6CW1JnnmPmgPW`oN4brCC{J>WuTslm|ithw>;7EGbhSSW*6-?$8GH36M*s+x^GramyOOnqQRnfk!2 zGUb7JWy%AK%9IC|l#6m==!`4M?*+@(cGa3DP#;)VrarKtOnqQenexDvGUb77Wy%9P z%9ICom3unl)ERLNP#>69K3+bdGtMYeADC69JTR|Jd0E+%ycGaZA|B0~ZZL9@tT)JTN7+oRB)>yz=wn z0CdJB1(BXN1Gj*wE_gyr#4y1;XMbWeSU_ z`(@-vofWqk14mk!fg_{Lz>!sE;K(a$;HU;gOf{$_yNJWd@FhG6P3b znSrCF90v{&o3}NAk)xx`$kA11QD)@mDl>AVUKiH@14mk! zfg_{Lz>!sE;K(aW;1IESS!zHN7&%JHj2snZ3X5yX3>Fvc}?#RcIga8zZu;TH;JCI};P zRFoMx>dF)rHw+_iG=+PCLxjaGWeSTs${&`OWzZEbDOZsIVR8DLxBv=^Gs+YeXAMJG zoHq<%altTz#U*75i>H+%$%N>L>oHd&p)rKTGm>DdbXJ*FI`4Qv7~j8tP5y_)xNNJJQvqMq?r=Q)P!=NTUMEpsiHC^Qzd219+ZV~o6IM<8E0?6 zex_vLlU!2|AkQ1d<6Y+5xIlex6F&6Hp+n+V#`E$HQHEt}j+-)!cQ*^daQwqJ$ZG%*4KEsoh&Z)L>=MwTX5J&WLSR#I(Cora5wS{e`y%4J zW}t|;s7w(tHM$fLmrQ<$h|9_p5m$t5N1if_j#`UYIx2fQM7}%#8S29Dm?GjCWr~O! zh9M$uDIb561SAm=F9`QK>XJO>EAv4%b)J-8l@suQF-gDy%uqoFV~6P1+Ntqn{#low znqNNHQqxQBNd5s4ad7_N2~)y2Ve~FR-e-?1^XWHZ81J*Q?)aSA~pqcY-BlK5(Wkh%bN-oM~k~aAuYH1e?1++8~iMYwgp9VXqs;@iT^D zuR_#o3!tW#0dHRH@R%avmSKp97nP%N-;nsP%;USt6cLYI6qnZ%5mOYLxLMw2iikL? z87LwyDPJ#kh=?Q2uQ_~nc@ ze#u~Y)brAw6T4iUnGxfJ{*34fC>wh;BP#c1M8h&8UR3VSh#!;v{)||NYoRwI8jfZ} zVN?VK!);{>h8GP(FubHp!EjfZg5lJgqw@NK;nJn?2`Ctbpf@^UDHaS*7=~att4zT# z^uEXshF}=_UF&dJnS$YI;Q_($Y?RO!3^$c27=~U~z5))w5Dd2rLomEx7=q!pVF-p7 z4MQ;81y`j&3WQTz;uDb5!Wi2W3}=)n7|t4oU^u7Dku{}E!Ejxff??=+2L!`SNkDX@ zyk%aQ@|LzT)h&z4RJQ~Y18_XmEh%LlKc-A|OZswobmIY#w~U(tAaBVkQ!tz}_Wi}4 zH}**Jtjr52D$~J|G98-og5jDwprOnwnso&S z2jq?@s~PA(&J=(eu=-s%P*6J^C@Rx|ia8!NFr`cfsNanofMB?x8R)>QDF6;M4a0$X zWjfGOrUM<59}ZBzO9#4YhXavdI9-gZj1G(|vk5YW;lPA49iV=f4irs(I54S92TID~ zKr9%pX#yRXHU*#t>W1L}z86K@paTtMI?yut;Q;lzbfB&Fo?y7E33R~fap6Gf%6_MU z17pf8Fs&SSDybo5I+#_agL&niU>MUiu80K`mFdtV58$vg42R0X2rQ*-a$hKd;fC7j zz^pPISWxZ>hE>4Zi~ZE^(xKq0!9J2wW*-?d42ROnbb$I@I*^O)eZg>E4`7uRl<5GT z8Bjy4k%}@Mm@*6pYRYtATA2>aMl9nW1)!5e0$w=*9hlbx=)j^f9iV=f4lJo13o12f8W zU|yLHP`^tD7SzrfpnjJQEUKLj1Y6Dgk0wZM9duw!nGQ@S(}Aoq9kBXc)IeVCbfBP2 z2g+VBT+s~d15?U$U`Ck^SUoP{#H`v`15H=nyeqHm1;dM)fgUcI0#QRPZLaajnB&?FpLs@{XHCzjjcwBy$SW1$xb5;UDzhbm>*I5g$CTMJnV98nM7If( zAySkovt5_p&)lYA08e*}T(WD;Tbu3~1h2Wj1fqa5V73*S)(h7{2P=rZpkx zW$R(pLI`@v(Ku6%UJ^-^ni59k@y%pinQtZ=%DBmZV7R5sH=PSH_XWdsd0l1;oK7c3cNr!Ej1mgYbkXU`!Y%h`P_bRJpU)oW0?=>GD(W%Qs`t^9~4xDd=T} zv^>th0dht;>W?iEHVRvZ^Tv)hXOqgf700@yCBqO5H@#qZUNcY}I3YKF_5@jBI7E9v znXlN2hVhDRR*$D(xMdiE;RP=kUX%=YH+#>Sv0!+~ajy zc`g}(;jR}9L$8YrDR~BmV0cU!f?^1U)5;VKk1MlNW|S!y&N+KQct9{*)PzVdyiUFb zQ>M%pO9#t~#c0EUKf7!0ZSNoY=i%c{x?7%$9!v(~`^6>xOfrsaPDX1B-#pwu;7{+K zd;dd2Umia8IXNIbFW+m8#s?gAkJNEXR{v4{Qxv!>Id}WNCSN9SwEzl-8^UN_3Ww*lfOtj=kAwD>Gj-|Y z!IPJTdo>@(EwE!OI&3cnB4gy|Og`_pt<0HyDLy{xC8&(v0>n{m%FI5tJ}!_mJ4MD| z%FG_6fT$Gr0EJ7Up7>ajuEiC|y`5&ti+XA3Yw$pW2nbRv5Ddy~& zk(x(-PS+F4oUXgzs$}2|#h8p79KZs(N-+z}shtJpm094}hCv52$}BId%oKSail&Luc#(2;{ai*i6b?#GStL1wcjq!1%teVQCSJe^#c7I(7dJ?h zKmygoOPYad;?!xe15^`dgpvRGtrA$<{Y8nX3CydVn!utmHGw5%Y62^#N&iEE6b05a z1J%TJWoiN&%G3llm8l7ADN_^JR;DJfqf9wgx2g#g1*T4q9io~ztxQc|MwyzxtTHu$ zd1Yz>p`617QWIEGrY5jj(FBSDYsyp;*OjRWY$#I`*i=4VE(B`gmNGSgZDnc#JIbmF ztoBwVrYJC#jXkECIIT=gU`Dwp1wl=mRemp6zSGMqQxjNJrY5kY9BTqac3IH`iUMoO zR1?>gsR?W-Qxn)!rY5kZOif^0nVP_ka-<2Y$}s9`0!4wTGvXScnmDaYO<+cun!v0w zHGz3$Y66SOyu~XCV^}|Qoty`&7FSFH)WkJmt0tZ?Jlc>i8yYJ2tP~6Y61gEUYUWUsLVi8Qf45jC^L@Klo?0r%8VloMysz(CScW*})RGmvzY*$KPC7}pdR zkDWajM<7OKTtOU}I9tX)5*SDdnt_32(l7!^S-2NSL|j}`rntDF{9$=f2XXPNVQ7on z%G4Hj&X)E^ffN^aH3Jyp;?y~V_A$c{7iW|yF3u}cTwE{=ZE;Z;HO?9>RW*TCT5((x z#`ifr$)({)a%mXqG>Dg(ANGbYE|7~BL!1nbq*S7$s&+IX&@EOY2LYv2W4ZVMN~y+` znLi_p`+hzG7M*=k?R)|(4{|lAm;^imE-LepZ%G&)bL$HC9!%!tmCLz<_L8u**BsXe z@{dWCX@>ZbF#K3)Xzk5>JnRnGq@TP#EJ`$=pIp8BCT=f#S3>wZ-EmKeWXeWonBjgxN3APqT*6PjeAh`yD;+G8BYyMbs7- zm8mVBGz@L=lrojGHQ`=AU6P=y%;(>E|)?Rd6a{0?@ z=L7PzV`!5Hw8ao3#c#&Z0 zgH_)fwACKVbs@La1nPUK|GoZZ2|%Ln&0RF;U|#t>Vu!xBtW14xv?#D#5E%O2I_#Vi zYNGp4jxJb+WN%U6ugU??_bzA#>U-P5nANE7o!J~SYmAEm2bahCUakR5eQ#Ux_Z*N( z3Ho40Rh&PdK)5$4y(!Mno0OD!!i;cluuBtQ&0iLXJdxaV90m5 z9x(L4l=EUe;EG|$d#4OT-di&ad2g&Aj^)6R_tuRa^4>^JT$K}2&O5Ie$j}QTHc{TY zs7!h9l3~buyUH9Wl>buRTi6npM|p2ictGA;mITb>6t`5ADQ=lordp=1Of5=N8QKzP zQM^33rFLpj7W{g^ZBqcmC`-ze_jZjP@?OLoI1D@Fy(wj00QJOla9r)Ypsbho<}?Ej zm{jH!m0SU3WnNLm=Ts1sP>JK>aWsD46`{14U&zK>4sbPz|Ou z10ATD0^q>3VK_kjFddjtI~|xe`QboInGP%{#}3F0w4@1iplb?%1Hlz>4WUNhKuVbo zP(MruCQN=fkX5DwIpxR!$a^O>few^R0dSyf7!FWBOb4daP6uX8emKxjrUSFea3GTR zE@%QBXqy7yz@lL|K>aWsSW-J37%TQ`3=X7~=>X-!;y^6#&1nWYkT(Uufr4Q;P*kP^ zlge~p%H)Rwln>JZ%7=UM-dR0>4m3>xaA4jr9H4%f1um#P?o?7k%5-o^nGW{k!(0zI zb!A*-EMQET4pBec8W5iCQ}fdy>WAr2OYLAdv><%e#(tcrLLZC-3Pzz122dl-^8E%SqR`FW4a&~e-yJRtDv|Bhc9pMbAkC=ZSvm_%xj zS34alC`S)WSP!_Q34GO3HViGolq;a79KUJ_fAtMMMTxvOeO>Gf->Qro## zD~#Huh_s+g5h=dWft~VREbj|uYt>`!%X?=u1LeK5!nV2E%5igrXC6GJ`Vz%se{iXDo&gxD$3<=d-qwS%FuD+~7=sER_h zq8Xwg-5b_vP;n zeReo`^Y-v1|pTeo$U6_L0S8@Jac6+i-kdoZu_l=f3{~ zk=|YrNpEF!d`fS>f&(UG@r}{glV}a!t@3W&@N0y-hL;I*4d0jK_!ZlR!dGk>I^^{I z@0G&JeQ%1wM^t1X4)qSaT9^y@s(tS2O+%vdB|UWEkm!7i_s+fj@2$?aepK9=)cMXB zhR(OqU`_Q4xR6eu#HL! z!syZ1*5IGEW?&fVgol4d*8-kAv7Z-NOTsq5w4Hs?*@Ke?^Fxu#bECYp+8KZfeY;$d zY?S3PL)jfLr5p#K@V2XD5@E2RM3=#4Uh^{8j7>OagmH0 z7I0S!prkh?vRSkgCB5S+tK}?Kh-J0Wg+~{!cFx!>XJ2r3$a0@K?huXtax)&RAGpHs z*UMyO6VB&ZF~a?*>f}Zmi~ZWRDH=O|ty5O!bY3xx`{DE-I_QfS1#pOdzS~z zZLhxN<{B&hf_V!E4K5jzK2`v>4(5dIq+e9#q+e3zq+g3z&d*tYS~F0CTa-~@3oI+M zK&}YP0%z3D@*u~;@hmTr;F`OVNOD`11QuA|5Ffw-p}9o|p{BQ`OieE|xUf^x+cpeM zZ%6rdc}|9=H+@>1pPJrr;Yc*pmJC=Sm@5EN)SE*Fxe97}3(C~=mb5@>dTVNbeyfxx znqEq7DaC83ol-oJ+{U6|YVlf{fm%FjZmGrVsGVB8t}?ZFsncVJPmzZ1JvS`l&Qt5C{v49Q>GNJuKYbI11khKlqtn)RyBcIyp}Sx zcx`2B@jA-X;&qj&#Y<&lhbhHND<3a41x;^8nNqxJRuibj%PUihS5&4JucS;ZUPYN& zyqa=R9D}B}uKZrGe392sRwFo$pdxv#C1GyO`LyMPErW7xuOetR0@J-O-(_2$sH5qGq8_FAmq3NXt7Yt1=*Z(aEL(|&|Kk?b2Bdd#gSWA*2-5op2#G_rZ zT&OSx8^c9Lnc*U<%xIBUX0#|OGg_3Cd&>e>G=brwrp$0rS7x|qC^K9%l^HEs%8V9m zWk!pRavUwBt93Pj;UXo`A6Lw9kyd87$S5;hWR)2$^2&@BMP){dl5%fZ;EE5N8MN65{qOHtm(NXR#3*6NNhKtne;u>JMNGmg3WR$7g%_=imjgK1&h8%K{0(xmgw-h%y1$-sxYwjMxUGz^hc{@l1geRULm z^GUM^VoQwZ0NngCz)OP%2f^zH^HX`tr#L8UZFyAI(mpA6xw`%$h<4duEDKz71#sD4 zKKeD{0(#QjS;L}|Ixac9HvT(g?eKot@2R99#YMI9_0f!BygphIhU1j(2Alc}=`NMC zl266gP`X=DrgV2onbKV-V^JXTL%KVyOzCc2*mmR@!|14u zh^zgc4rwh9K!&C;PC)7IyfUS`EyIxRc9bc6T@vnf)FrtiJkRtqc|^?!4@h?>T!uO_ zhyyIpF9S?vEgzB>Tz)ET`PfS(Eje|*41IXW=iqTkuqVt2(~jrhoHCz-^M>&pTy)1z zs-4flRMPT-WYynlbOL68v=%4ib8y!%o`bpUFAEsEAa0B=xG1($x;v)KN}8cJE13h3 ze_FUV*fA?PdrR${gxZc5`@A}m?&dEx(PBObU$Mu|N@BFZ)i1@nG&^{TnnUyp{6ge;}xdNt*eMIaHWxkM{H7v8zZOi(z(o?eEpOp%+BfVM4 za5O6k!*NPsxzsMTyI2tec4~LWl&RfKD^t6hiMg-ctz8-yKzldJNJfGK9u`@H9ALG(ZDlUa3+XJi zywL7;3`4sMDJ|{L?sg4ByBloj+o9b}gR63N)aqjCT@*mh3S(?jyPH?0cDHC4+TBTI zj1p`!%GB;Qm8so@w01zd+m-}`M=DJgl_?bIDpQMtF^~Kdnv5$$C<38LMw!P?C{t*X z^-J^SOaV}u6qTvnoiui6cT2_&?JlLXyZ}mR>0nLs)1eu!-EC+F9?&u;#1$>L0@}*F zqD7M*n!k==To9zQXwpZehM?W;dhKrTmN>%++hXl5zLCQLU}$&8gi+;e0!nS^a9-_f zf`T$@gi>18K((S7cmUYS7UHIzTBc z9q5_@;egz+57Ypqv~(b&cGkdzG993lHg-V9e^E2gfk{&UYM^8o4wRKy1C-Lzfx5|$ z8kkY00}bWK0cdwynm`9ArDYAYO@VM=QJD^Ol<7dK7}pSMU`&|~P)Z92BJFNgGthyY zDF8K)Hw*^~%5;EIS~^fM`B4Lu($ayN+QorbyW7wNIxuSrfCEj#aDY-;I?z%(9q5?+ zaDdWTI?z>nPrIAGGOjW@Fs{rd$QXtL6Ur!*FO?7;%Ey-Im(vz=ARzSW@n3ce|RvE25N^S2TXrU=3xISwj&7##KxQD5a$X1+~+G zqB0$@Qd&4bDJ>l+YkoQ~?X|mg=fI3I9hg_916CS~Km}Aa>}gTf^wi+(b?ynz2)qkh^u`$NY@=e{Vkh^ z`dYGGju*|9zkaZWxEycXTq5{XJ6o#^eyvm~5+bR!E1;&V&GqvWOmkuVUDOVnYus=o z0aXrk%L=1;*jxo=HWviDuydOSpVAlfwuI#guiAU&q+pkVUJ7<8=q=t57eGNT*55^e z6!ezBazYAv%f=2t@074@{$|8y^_wem<6s5~aC`kj?c~YuO(zW zu6VA#%hp^_J6p4DI2wE5HEV|tj$fmv!ylex+79ws+jfxGlB1!fOySdvFsh1gFq_JJ zgUQu+ao>T}c{^(78_cDc`|{m)zDM3*diiZmp5M_xl*ud zN(MMU&MTwI@wLk2Kmp5oE8s?5LhMtTzaTfHSRuD&81mh=Js$GiMa>Wm@V4B0%iTxc z!({u$&3tNXK3`4$~ zSEhWI3*J(`%LQ*K-{pe0J^3zIxJ}8UGUU4xcf=>8d^f9n;hjNnz&cqOR+*hLuT1&w zq_cAYT;{Kcy)WOL8VaU0fg;*Jx>xQ}G&eGS>E5{y9Xb5v;pB_=&Ru-;@Yy5D4Q~%W z^xEMgs*`V*Sy)~RPwgKU`6W4Wc z324KMrEU+D8?KyksWSIh#}7X>TE!~E9~MUrmXLsLUioPm#n`Y2@Z)mO9~>WZR`?6T z=dFvmER5qXRK}XW;761@!e5j8-&D??B>GL^w46sa`Hh4m*b{Vwae_aS1F>Z$#3|v& zm7Bsi0UZoZ9z1?R*g7~VjQn&6YvuMGl1>8Et??*;uGTtK61EP_2wR8Jx%dRE!G)`ms zgANvj2Wn86ZH{l2ti$7%(Bb&}(KkEx1PhYEdOTL>d5j7RQt~8*6VgHas?r{hCplY# zcydF2I@A@897^l3$jgI|t-|T>FE$JxT;(9>irMx#JlojwNlP8(j;b7EQ&trPf#n{@)eXtPe>26>{o({)z@RgP6B<|_N$v5@_7=9vUs|xp2 z_5=-K+jTm^*5McL3=hl>pPjt9Ja=h!_|Fr`PnYMGpE>-NWEJbN+e;Zgaqv>`;|+VJ zy0E>J1C&&xiOTiB+?4_hNv~m<6)Y{{xg{_10 znx77(B$D^X=~Fs}!& z3L%8DRhSj-dn|V(!q#DgT6==5uywd1Y#m;dNQ?5}pnQELvz>%eTR>5`=b_lAg{?zS z%UFlTCA3YgPiar073%p|&_x*u82&~o}ES+WDnb-Wi`nqJ$y{xdfSM7}+ ze8q14LtwQh$O;csn6Pyiuh4M)Y*7SOdwfUOI*4DNe>jkP7xp>4^0F0%S6J4eZurON zm4ydliVm_A1)K zI3XPzcQLo%V(yfSx%drQzwIUFjk%bMpN(0E@Ut-M5dL(7bts#Q9b!LdDbvBRa|g@I z3HNFcF}ETKxFU9hrZTH=Nx1K^NOxV#Z3$b4mxQguSkBct3`r$xFp9Yd!nS}h7jyG2 z=GI)yg+kG^X)qrC@dYM?)LhKXx|j=575$NF2oQs1) zV0-?ou&to7F!HlPW`%7B3a%fl55!<8FMP*^Cg#pcqU|*q7jqGVtrIgY=C(CIok&Ye zwN8|TZKEIt!-@SaGEQI_1?$9^i@A8CX=?^C*gBPVF}L7i?zD@!cws3{_G2#INLnvv zT+D3=+pd#xF&Doze`UBPJA9Vj?;ev#escTV$2KGO&bru}J8|%8YQpwvn!>i7moz^E z$HYm4?OqbLRgT{in~SLiIf)@j1XCKH&=2_D)EswEY30)t1)~?m39qyQl}S3dbdOq5yha z6z+R0FVKXo!-%c+1Vv%%F!cD=;Xp$vYA}kuh^@AOig3?Eab#8xphHW-)}frc->rrJ zQZS(eQfzzv85eseE_M|rY~5)HTXz;Uf3LnSarGrE?)76YB%=crCb89?peQ_0VZzqo zX%~ADTkY{F38mJ-obbT??v#tY_(s+`lnzh6)Ku7%i@ll2!3sibwdbD^w&!naezsTo z`oZ=p3ER^n%u0FT*DtkU@2##9ZWwd|vDG?}lGtgT$O+qCJSA*94Zaz(P9V&}i7PHM zPT)H*+Y%KQds7-a84M6xty5FN)~TlEXV>W}v!*5_l!}x6*ozkn)=R`zdx8mJoPhVc zWfyz#MZsZnCrk{Vl9+2=K0GtL7GHkYZR!A!e9NoL1MwlXen@eG?91e^8p@atT={df$tENI8qQSI4YHxe6~?gG!$f@){? zvPL_PXh9{He&K;}IR%$~`u=e`zUuC8a{fQj8cAK)PsZNIG(B_KVER9=0Lxz*aOvZt zaeCm&IhGE&^eJ4x;Zji98NRFq<*o}qH934@H6`j~yZuxhnB8hq<*On+Zc@US-8N~H zww=R2(fp8S+wFbY5`{Ru-$YMp73TEo3LbQpo}l9#I!YaF$ZJBoRWv;}&=f)NeQoL` ziA()W&VTGGp!^Nb0YeZxshzxjdp|q&zP23y$`_C>{TJFF|hY!AR`W%}{eh#B&!;dfR zc6(G6D}$UH=lh~ITNz}+yQH`(zB#p9ThBV~(m$t%;a9A7`_xL%%An=aPmY>&Wq@DF z+HF5AXD03f{XX^%J+U7YKa9G-%IMb)wxF41Ah{0LiI0dzoz$uuTnEshfpj_lEqVp` zBLsH)nikZ!&ZY*zb6VkLcj6DJLut8Luv_vVkkpVHoxegKu8JY&3R=<=PrLL#*P6hu z9_+SWtF+-pXD1pYD+7E@Vz*bSqj;|A*T3YrN(~J+Jnz&VUv%jwMqy!PFc?{b;M6FN zNVU3A^_V&|dwb8FW23#Nw69`mIJP^F?zcspkxr{JzkBmtyTw%8_MLl#?&~~}wJN|5 zj_kH3YTs4C_&_;w{!w}~V31W#^$Mn4`cqmEUL4yEYoW={Onxg!yiXm1y47yKL^&d6 z3#Qy){gesL9r$%-7)vfJ1}o{-B`UeDq&49zaf0)ewjBHHiW;rU*^rcD`-p9 zsB3~+_?>skyqV3}vxt5r>LY99SLb2!f#GYf$0{s#J3|lmH^@0X{aDWCmK)lrBGyEI zfzevNuGfly+f{y>UB-DOhhkHcK#^pF>9jbBy9S( z)Ga77W$SmE%k{*5jC?8T0c)bauwe`Oy4Hv9!v9nA*W6gUh7Jv+%lXIk3c3S^Aox}^ znAZf5{@U$FTH$`4`@A}ob@SFuQPhzda%1xWbm6M3$~Wl-;Z{9h)}=qDSB75)+U@&V zrTD3d-L8+u$eIAJVD0w%>gYtt*1zP~tp=!L?Us)Q?V6zC(*I3s&d1rm(hGpz&TdDk zLks<}c}!&gL%o8ucx1PmvI+{cHHd=-A;iH+yUIi3oC`6t6iuEOsmZMO07j7Ns6VRpyx ziV?V*4=>y?d}N{--YOrj!q2sA?xN#*_}WhoADZ}jc;2Un?+LRX99~gHA^4huhoKR3 zhGCz*e$XE1P!&_u=sCktc{dH_&l^UgPTbtHUl0{A*-r?NA%9CRLu9WQhMn(y;K1|p z&(gNJt3EXRuAwSkOJjopS5h#H1G8@Ml?=mPFoO@rPZ@?C%P3-#-Dte=g$_6xoSiem zt3IWJ6HA$4V`jdD(ab@`3`PuIJ}$zJ!N{jqayEz3;_?&KrwyZH;kWGAkRM|WKV8R0#xKbu=HM(bK~ix*&2iUpD!lTc;UmNJuHmsnBRpi+ z@R8N@6hk>^IF?~=_Pmc-;g9*Wuu_n>CECTJJ}gIOMeY2~l6>tvd?D2^U?+;Zrv3 z2sy<&=6?Rs;ol^yi)Q}EfnzS@bPdCvaUo}HL*#hW-mvEk!}FS9M2Xtq{XjMPGwi%{ zWEeAH2Q%E1;mB^n4(<^q3`Zw0j4;FpbJ_i^u(X&sN9xwap|)Y%BQ#tXl4Xjb4F&#P zc+>9>zo9y7A`2o(p%+QwfiPVOa5vKw_TH>MoLuxxnCO z^;~#{1d5aAT{f)zfDPwCyqR#*_hk4FJ7rd1aLHrgAsEL~;TiZ?3a`Y+WOyGw7Q%1r z(&1hT|3M;Bq8%>##PE^l=H2kFIBq)bIL?G;d_+pChgZr+GPO0l|0BakBr4%IKA~eY z>&7TwB(M?}u8*#@*K^0+7@ahXF^xa1fDOl^ro&ybI> z^J%?ho^fM?&+&4dQGns=Uod)T&5Q*wpMsemzgxt{{0oNBBb#Pyy!WFrHuwSv2ViVe z?wDKtr^EYSTb<1kfb3E>N!g0=V!SSTy@&L>E zrv?(F1{}{go^?F$c){_a<0Z@ExcJYy8n8U~msgD3GgPgAuAk>6*=;y(I&L{`JMK8{ zI!--4a6VajcrYQzILOr$8pzj>IqW=bG?~2D9k2{`loO4`oJn6V>xhhpYWfO#_9nUzPbv*BQ!SSNw zCBs#;dGIS&1CGZXPdLswE;ycaT<-JSL63}lBw0=W&%Os&i$@v9S;u+DMaLz_700zf zt_JnNgrMQL>A2;%?YQH(>p1lrd%@BR(*p@o1CFzf^Nx#-OO7j!YnIUq>o!5S;kfCz z<+$y*|rtFS6 z9(O$9IOn+Fc+zoskR=ulCdgvagAUC&o^?F$c){_aBJD#vS_m@i}L;F?p7x&A+UeR&Mam8`X zaousladVL6kKPU@1Z~G1$6d#%O9n3>?KtB&JHRrM@&gG{1CC3MD~@Z9>y8_ao0c(> zTQ)(s?YQH(>o|o4vSmXs#9rEQ#&Om#Msl#lBqW7zbiCd1gN`3|{D|Wx9Y5XYs;nLx z1kd&pB7VW~OOA)5d!hJ>ar|n>M>{^%@unV2{iA>_y@Z%=biCd14#O+t_+5^7JKp1X zFB$ER0`@UM`9;SsJ6>^Vzs+&{VUE{1-spI! zzGq{uM!gmZFSraZIUc^Of5phZ+VRnjPj$S>@s^0C{!s%c@J5$myWK@$eQ`1CEb&e5&J3j<*Qo{5=P5bQ!ige$es5j&~bAO3K~ic(3Dq zTN2UvBL{H6i!Q^3$b0=Kyg4>;c8c$eedj`uj; z>v&()CA{ePWydSt;%dP0I>#FwZ+2YW>Jqj&e!%e#$GaTwcD%>&-a)Pg`vwz&7ahOs zc*Pa21{|+*ywUOI0ha!^bs$0dfa3=o?{K`!@ovX^9PhOZt=B%AFn3;J^iPJX4{z;X z<&@-k#PO4kpLYDL;};yi^)q@Ga(T-1byvgwv$2U6O?)bq0mS%Z)AVF%t z@sp09cKod47aYIjSbl6F^&E$SDTJlfHbMAk$EP~p~_4z@m|OK z9KY!JWydS7k7^*kEsJU(PKc&x@H)pE9dCBL)$umR4>;Zt@#*n6jB3DT*zI_a<+(Ml zK=j;xbFU`{_~Pk7#}7Mx#PO4kpLYDL;}-_G8oV@^5Deck=+J7%M>{^%@g~Px9N##= z(tEcLBuEW7e%SFNj-PbA*D$^#+UNL1%NRW`+XUeirG5>dfWsWGbG*^aJ!12)6ld8-kep1iYP3wWx3+VQiFUvT`AGI z)WL*cljALpZ*;uf@q>;ZcKpZyOXqlUAVF%t@w1L!aQu?v;kyQF;4s7Zeqx>Fsw8Z* z3BsElZ*{!Q@dJ)`INs%Wx8dj;lszT^9`1F#&+&_nUv|9WZYe}Iyh=cMhdEx?=W3K; zV?QC{&5pM^-sboL$2%PFa=g38(*E#pPcI?ny^i-ee$nyEj#u2{YQXV2GJ+Ev*vJIs z&5pM^-sboL$2%PFa=cqP3QkcCxD0z8?{oa32;EgF2iQabMHGG z!D{%vexdlvVYTC<9iQrWljALpZ*;tUkgLIig9*XIjvsOSq~oU@KkN7f$1e@Abe7@! zT@5%s+VQE5H#y$o_(sRuEpL!>KWGz#A9nnR<0tQ*TYK#2_YX?WuMPk8%+W6=r`{Pp ze%9!_l1uLl*Kd^1$p^y6H;$e!KLrbawQ=;cWa0P1^{*Q}J6U=tyc?fO4~CD+=kl44 z$e^mWOT6XE)E z#gI#ccjI$*IDA|_m(LC-BgeLWEBw{DQqc4#!}YJ1^cCNY)1SUSy#Mv1r!AkJK|B;; Y=6&H)!pX8!h~!HyY!27IVf2{)1u_C_LjV8( diff --git a/pkg/internal/ebpf/httpssl/bpf_tp_bpfel_x86.go b/pkg/internal/ebpf/httpssl/bpf_tp_bpfel_x86.go index fbb1742e0..ac9938d52 100644 --- a/pkg/internal/ebpf/httpssl/bpf_tp_bpfel_x86.go +++ b/pkg/internal/ebpf/httpssl/bpf_tp_bpfel_x86.go @@ -114,7 +114,7 @@ type bpf_tpTcpReqT struct { StartMonotimeNs uint64 EndMonotimeNs uint64 Buf [256]uint8 - Rbuf [24]uint8 + Rbuf [128]uint8 Len uint32 RespLen uint32 Ssl uint8 diff --git a/pkg/internal/ebpf/httpssl/bpf_tp_bpfel_x86.o b/pkg/internal/ebpf/httpssl/bpf_tp_bpfel_x86.o index dc0e331f227a178b26c50d346ea803cac21ef09b..62e5e6d28777fd3f7216cdc2fe95d7a03b0a2c57 100644 GIT binary patch delta 77468 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 D(R>YJ delta 72926 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 G=>G-Ts-a>4 diff --git a/pkg/internal/ebpf/httpssl/bpf_tp_debug_bpfel_arm64.go b/pkg/internal/ebpf/httpssl/bpf_tp_debug_bpfel_arm64.go index 28d94b03b..ddf5126e1 100644 --- a/pkg/internal/ebpf/httpssl/bpf_tp_debug_bpfel_arm64.go +++ b/pkg/internal/ebpf/httpssl/bpf_tp_debug_bpfel_arm64.go @@ -114,7 +114,7 @@ type bpf_tp_debugTcpReqT struct { StartMonotimeNs uint64 EndMonotimeNs uint64 Buf [256]uint8 - Rbuf [24]uint8 + Rbuf [128]uint8 Len uint32 RespLen uint32 Ssl uint8 diff --git a/pkg/internal/ebpf/httpssl/bpf_tp_debug_bpfel_arm64.o b/pkg/internal/ebpf/httpssl/bpf_tp_debug_bpfel_arm64.o index 9e2dec02ce6c560696e41c00f2c3828c5814b58d..f2e88058019270053e744d52c4678a35657ca654 100644 GIT binary patch delta 79876 zcmd?S3%F}ldG0@wwbmvJ*pLlub~e{=+eDxct_I{1P#^+AMA3*K*<3VS3gK!tpfez1 zTB%02HF?yw%S$z0szEqiQL)B)i`L>otWE2MXg!|vqNd)OC)?)4 zdmeelwjU&7zxBw`$6c}%d(O^#PP%IO%Ei#Od`0VPC&mtrm0CYPF?M9^^E;0|`Kj2c zJ9j(ftgU~z8*;o_{w>MBdv?hJ<@-Axx#pBxcHb+xD{#jfGWc+p#ZF$>dB7XfTVev6 zT{5iwo?Q#Sf^o?;cJBYoBX`{p7P%}I+jZwf&;0Bm<7F6MxWTz!Nw&=!z8muPH+%=l zZgcEAt2aI~cE&CXOYRptZ@=)k*w1#p_Djdb_TTyBg)h9}ZxhIK&-GL6Pd+F5Io8jS zeh&3>O+N?v+1JmWes=YF|OIs+qwTGx19Q!FxMycf)CEU zJnmdlK5u{8r~gGd+`av2p9<4&-}Nx$jRHcem1nfT>c*x-}=M_v_L#&TW6g5Fc*OTf+}`&DMyQ++T$DTkrd1Sa!#| z%VB44j=eX`c+Xo(A+NVt<*}VF9z8AY;yaJsa=`Li!c5yAcx>nUN5=))ja#D69rtN> zZizm3+^5~TCHmZPpLXw-=yS(?+Ra;{&mH$^cW;S4cib1X=sjDa&mH$g-FeTJ=yS(K z_w~YKxMxfBx#PaBa`d_5zK(MAx#PYS<>+(AeQjm=eB^sqoWHR1S=;w%b+3xmcJ|Br z#d*~74g9oowGY*p89#gLE@zI7bh(VDx+ziXC9 z9)D-&(N`ZCyY-RhUA^Z%@gMvYC*vaz-1YbYvA=lac{`8WH}>exSH1U^t#99mVw)2y zVQAR#s;KtO3%|c}xA)x=Yd&(%`#zM2-TlbXkDR|0d-l%TdoNqQJPH(v7e#^MvYiVb zIWqRqokxG6BJuKDOyyYIE&#fg&^cAoyTV|LrT%N}9HOYQ;0 zhUNbmp8S`^e!TO-XMXOGuX&;2ue{Lkmr-a~Tyj51?7a8FZL#lbZ1~uhF1g{G|9P=t z_qA`vw?>1A<9x^4qj7)D*8i7c#LjyzJ@}FPzgqma#)<16x$tYBSd6Xh+--F5rq9m> zg3Yn_?R>`QUTP=MTg4{K%bu_np%ExgL!Ld#=CuzrXyP|Lb!-);cB@ zJ8;*XaxTlZouk0K9=Z&$?wVpgY_WI?n-UxhX z^~NJ&?@7eo(z@||v9ne$JvNqJid_-j54PV?>I{lLO-x7g0#IQbi~b6PKc zICj?7M}N(!{_yIHPmaB8_r22Ixqj|K>xzeC$1WeFr~2=Pw*mX=ZNR2oTc@8Bdwf%B z0S9sY_CxU@cM|)y_J3yVxI=yrp7YngVH75Bj(yLI0e_DeaQ-gw_;Tyf3u4E{-E!;n z&&7_79n#wS!q^LM_`!c#6j;6K!q|U_TZD(h+k#Jqw*|iwe*eAj`}N^1!jABQvpIIp z>=q&R?bgTsGIsEDqbnLBAR@t%`>VM-haKJ(Z^?bd4;T)0GlE{zwxMIw+rs|8=Z5H1 z`Y(US@RsOqVN-Osu;&}Xqj%S&dabXOWB*aN3ENjcwmr6GpZGU_+B)Wkv13=`cg6Y# z#6Gk7sW--U*(3I3>(5qVw`}d}y}~EFdxek7y}~K2-+FuO)Yy7JS(SitmBf7I={yW}Y*ty%u2gio3d%Cfw{?(Aul92NH)pI@^8}9ah6j%P_kYafMdHwcu z*o2qG{%_*US-b2SRk!3M-s~=M#>AT&Klh&+Z{&&OgR#}yJ|D}*{-1s>!9B;$qwd;c zHUD_*oOtZt7=2dd0Y&aS!pL)6?5|pXF9GO~|D%8sb?ATDfD)^>e)6^0ABExMmP2yu z4`VnPx9bDXe|&gp{rxv&9wCY^vG*MHRBUevGOH3~zK{5_|DN$Dw#J`$-Rk!<@o(=c z&w{NBvhh<|iId_7oY|K!^HzC;#&vrn-`_9a!&7$;xirWv0=_5Y`~GsRD9HDud{4>u zqvU&ikJd|$jc;k~I7$BZ=+ol|w2~*pldF%N6fc~)>*75Q*O%S@Jl1;MZSj3~{ekkA zlrMipWPd{WidRPbr1DBV;=fRS^?eclWyJB%-{1P|?eT5#3z~C#d`osN|GC8nTQ9gn^6mFv>y`LC{K3|{@p<%vt;g}1d$9FWDHpq-6?=L7 zu#IUca`S`oKdIt}t>f>E@4o?eNcTV3y8F)fw%B`Hw@R)J+a&2T54OG_Ny~qwxqlYr z-Xf;ygRTAU64Rcq5s-@hIW+B?k?$Eza?;M&&VEhnZe+b&(-&G#+$Hqj*Gs4(j(`(dw|bPV_U+GwwAnZuOXXZhE*{u))4 zHU0RgEsl^qwlT5g7~KW{>m8shxz`K zhgug0@qI5?{GHi>?PED?wYyq`%w+KZ!+KCWxjvdeE;0* zR?oXHe)pBTpPW7EwDb+XS-ncWtbXyE@r#%Dx@P88?g{#rEEaa~UKU$yV|EloY?wj#Y_#5}n_^*Yx zJ}~32$K2|N_FUM$PwaPBHyyr^-amNEx$JRrRX)kN*Iy}DA5dOkZa>pW%jHh&*>j}T-p z<%H=mc9{3F}-ojI_0(WBM;1$Qp z&6G^$SB0&EHP7Bu{;1Ty^!Zm|FD1h7>wP$p77?4> zVP1H>3*^$%_3S;*K2#3EK9d4tufRkzeEW3if<-xdWWZnt83C}rX>`P)V zDIax)jFH`At{idTkg$g&RJ{snS|DuVlsM?wC!RfVO61`AQs0&XVlHWTqi|Z-I+zi@ z<_zioy{>ZZ@Mg>v!UX587T(wvkCl7Ezp)Z?HRX+E=Qh17=IYAZgtvY`%0C?y&g!cu zv%Z=#>uZApDZmO>Gy^NF&VkJ{w#;(1bN{B9+?Un#w;1 zAF#o#C~uR&mP&7MUFGM358vSW%J+gZ(#Oj00Uxu$jg-F(&TeoMvdXK>1hTi=+jVkCL&KDoP6|Uj}~u zhQQS|p^k)-w1D#a!BUu)}#fLW71Un-YYGjd=$7YEuj27@B`8U%J+gB(gMnV2!2RfK>2ZS zQ(8dzpTL2fR&`BCi)Z_`r3I9q4St)nfbwnN6=?zGw+ip`E@=T_oK{cDpgK(QuNmGb zJQn^L%F5?1a{YG_bI8F4Nl0kIametfj0NRuh4<{q#m4Zma6uS5{Gix3ibECU!>*I7 zX?KHbD8EQ}%VgPglwTpd-$M!4n{nWhk}%MOu4Fi(nQ&{$W8nkdlyF01KTPan<>X7n z-cGpGnUOw5 z2R|x-N%=N#PXd$j?|~naz@$6?_a!hX{|NkP2~5h2oFnB60}Y)MOCp|Y;bP}x*wq+C&Er0gm)QudV@Dc6)4DMt|p zj-hg*85k;EK57Am%A_(QWm=h$GONr;nOA0{EGjcnmO~C?CmJfNnt`FRuFO!`RA!`H zQD&sFjTs;qZZIm>5|Hflxbx~%B(UYWnP()vZ%~R zSr!g(S};^rH3LIsT{#Ms5}1@3DOZ#kDZ9#ylznAJ$~9$1%F)?+{b#70XaFpNk!6kd;%-GrMcUn%=r?#XR^@XRQ~n3`abEbjQno7p4y;Q57fizbRe6{+EE!zMFzjVvH0e8~f{hO( zTw8hdGHIc;1=mylzSwvF%7PmzAAKY4f|uM_*@c_*|3nhjAFZU1)8|Gzh%(64P#AVT z9p^mG8^+UdN10E`m>zaiyoJ~{1vtHX?ex7cRYLFaDd0_ zHBI2-^4P0jV(fTYPMjY($fxC`VLUCDh3yen)Xt~n;mj`WFWbn=FjeN`a-tCJ5R9kg zk}!5~y7cKO)n!*P{1V}&Fa~uvCLWW=d$orhJxEm{%l zK4lp8tT2w~^2^1+LEPn(-zz)V`-^dxH@s1}q&yV+mbJJm3$G9Ii3B#a2h7mc44e;0 zToCP$_N4IopmZ^p^*Hb4FQ}dK1r?8L5eJSF2u-howibXL69`>pP9XFQWBy>^m0wdk z=MVB1&L2=g_zOo#|1(25OmL192o=MaK&W{Y)Rj4Zu%gVz^R6-<&)1asxIYBr`F~qE znm|~&DDsdM_LW)TnldY#D6_(;GVALuvZPkUcXr4zuiGoGT?^fPH|wLM`LcqE6@{$!z*InwYcE= zhL?rcl*9ABBXLEU=lxjuPo@0sACR-|66t?b_;VcbO$#n{i8k5I!gnmVjPkkQdly_m z`8MJ7F*1v#%pFvecZz+f5OYoCPYCZ(jJdYqW#N@T6P}a|8~Y1xER4t&9zkQlO_jL= zSB&fj-XhO>4=uQ~@*Xb`2b zb;)Ivc{$A~vx2-bFRx`~US6wS{+jT5;E^ur%-aLk)eOA6_B|dL#^p8pJQIleG8Zgt zFE$0w-u3LgIlJ`#a4tb+vAqHlwe#|tdH(zkv%)w++6x|+lzDZn+VZl0S2G!Kd2K55 z^4d0x%j?)yAmt}&=jF95cS5#BD#CD(_PR2zrok2&Bn^{*%j-}pc#{mGt$CS3QT~kZ zkuv8qHhhHeRQXq8-y(B9P6i_!I6%(vEixyRR6bSsILraPFtYz9?*9&xIiGAPN_dlG zIQ)tYE@$`v;k@$4#f~|jqTyxXD)XzuHRZ)yaawP1ZQ-JPze)Zb_$ImBD}U%#Y5!$8 z;x$e9oMbq1DlK4mlkmv!(ZXZH=L=5^pC~*vyeyoQ(+v)6zD@2QdJ;RxfhJ@n0fFdD zu#?cMTmvT-TuGU?=?&%ZHvQ{y*EYOKcttt9P5(~Z^^|!UPnCl|lN~JQB#_9Bg$=D4 z!w9We6Cw0c(0N~I^~CjH%g%D3nSG3o$%5F(xMRuZvQ*v z4(K6iQq6D%xGjFZI4W>6xFO?1`HkQ=N%T_wlyFL7c~+U_bIRWn`=0NTIAQW1B>4*= zOaG&Sy(FQm8Q|eT;$g)U*hB19W5*HHlz9MkWjfeYrb8WN9#9vI`#%;~(+oVKp;y63 znMX7>`Ef)O!#JR+FuHW%P8rlL?h;o-{Gjl@oduT^4zK@6I9L)=Cc`G-v@rUN9%q#4 za9NoSSCrWzRb{q7Q<(?QzCy46r~pT>Vk*QDbd>2pSD6m1nfw?7LuEQJQl*brY4W25aMgr^bYMl94)m2H2c-W8rUE#yW*80(mFd7pnGU$CW-SN@ z63TQSsZ0m5%Ao^+M5dgn01o60!-0Y_D=aFr!iq8-tSZyNx-z?{Vaf*xwM|XnplF){ zaA?Ia9O?*PbA~9(ByKEyeZfuCP6wvSbRbopZ=tlZ9FWBSha{G30*|PmOoxi50ytDM z42R0fbfBV42O1_nx~QqV{~du06mg)f33Q;ROb7a=0yr=*3A+B#4oppcIN-MH zAPpqYz=4D&(1DCH9mpy(P~{B6fxI#uC@9l`ipdWLs>%TeRZSDQN-r@uNmk-;_9f0=s;4LEs!z{2hz%PAfrqN3MM}sD29yw*Dfe& z20BnvrUP|T0a~D87!EX*=|EeV4)jcZIM4@&^FQjqKr_&Ru`(T)me%BWnmj9R+PhM#na=ibB&z;$nbLs zBzqR(uB#cq%fdb3^@qoa+#@Q>v4-13nUhxKYoq+MSCnaQc-+2L`X4*swxSt0Yt{F7 zO_`HcV`Y|~7&|7d64yobbJ8kl7?W1%KoeL&MwydRZO^{q*?Y>IwCWqiq}7^NekhC< zKk_b_KPbgrFx3P);9eSKxJxo@EXN&wVnqSo_ZO7ehec&}VaYJMuqe=0mQF+?a9%qH&uB9p*AY(?kSQCc_%dVgN*r8@%g`+UT?03J3$5X?Yn5@X;6dYvvsxZ1R9F%>zSRRGs0{moVlODyg!eo~6pqTjBfR{JWmi__ zAgc+VvP6={d*vr3|590I$#DOV3|}})60$MZ5yol8dA^}A98BEp+{x`_H!*ym@KpI+ zu^;%hWtWjVC(Qrz=lGoRTb~hW#R?uDT9E|oU{xyEnBCx@j_;_$aO|XeR^NTo!Uq@Q zt$S8qaO=WLmf~N$r}f8oExcsElO*Soyz~V6`QKlRilD?1_pToMa+G+{y{&KFvvANk zM@WXHuglHQF43{Jh4)ItUCQtg!fC_H!dd0d-P=0z-i3os7@?j6iiq&K9U)UptFK51L;Z=J+>#_d;)&1&HcJYg`*kh|-K7R4r z@qpUZ!{n|UT2^XTsnDW!bqDODnRb;5EoxV((4uyg0xfD+DbRAKMLn$oEfLab0u@?m zWh%6?%1_8mGqkLEWh%6a%Io47WeT*a$`okTl_Py_qD+C7lQE649tyMq5wj*WfeJ0igph#>t*kN?T6twEw2I19XqA;I(5fm^ zpjB6fKr0Y2>$-N83au5*K!sLUnF_7GG8I~D%2a5Llqt}fC{v*2PLB>y1X_UvyP0;C z3azweph7FFOodinnF_6NrD>Ay)xI@0nGnnFlAQKpbIeP&cYg`}B? z14kukNfI!ms3ff@|D!y`KuB6srjWFuOd)AonL^TzGKHi)WeQ0LAYO46ZbNXv8y zH27oX3&CGpa#LjrNfUBmfx~ZyT{QS9WrnGYGQ(6(nPI8`hDwofs-zhhrz*;fQ#EDA zsfMz~Dc4qJnCd7qO!br*rUt^HN|AADs2Lci#>$LSQ)R}fL_TVPC{D?$24#k+j55Pi zPMKk~W%s7=eJ1S2hX-b)4Dx=IWl~ZPzDg>IqI8{<+oT?}@PSundry9x>lD3r@raHPdY3Q7CQ6q2qPUhYZ%k0b#*2sQVjB%LZ#Nt%3SWT%icWf(%z zyz)~r82}+^QF%{!wuex(Y#2h)s^M*cB-Bg-l%!2%DoK07_RiG`Mh4FO52h7yD(GEkS{0~A?*r|NUdOQ=FF3NB0kGA$Y zYw@UPy=?iljY33f9csf4z23tzd9!<8erweN6pi+kDH^4Sl%mn0+9?{Ps1*4j z8l|X|qEU!SIbbosr^4ZUJw`M}@UK;ssy+Se=!hs9%_vheYDJ_FjTY5Dl(`>>Mj;|a z3x@-EBENV%Th0VD5i>wViVU20a~DKAq#YtsYtML`^YTMPiu|0rEqh$OK>8mUI4{?b z408@?fpE~tyj(|_^KxCon3wB&RJ1 z2xE*;G}<)`Wm8|7qR}ubbu4Dx%S}GDV|#Wr{{i zUVe&5DH?64ouW}IA`PG#rHYiI(UBBDq@rkaqRbJK?qEd=RJ7PyD zr)YF=x%590sM%Q443s!fL`sRnMD5gIBwrkrr@|qn%<^evDjYH<|3MP^vw=x~#G#-} z(I|d6fP>fpM585RhiJ5{%mb(>)4`fD9cn7`fP%JHpr_0u>U$LolzBvJCO?j7Xcz}H z5=IwOG&)vR(P$8=Op$@2(W%J*(Wtv3Y5{r-)hSwpN0?Kl!+B-4NI{t`Kv8LQ0Mh?d zm7)S1LCsW%Bd9CWfrc_2=$QP_;ZRgc2YPC!0~D2p4nVI*RVf`9n+oB;M41jumFWOQ zrEG!pl~D`Pfs8U8pr{lM1bd1DMa@75N`~P;S(y%0l<7djA=+FhXd{<^DU52rUMj}ehU`ru$W;=r+jie{igRGreHnyCN| z)rAo^C>q7{1Dcc$^p)wr$drcz@ehv@F6Te`j1J_r039eR(*dhGg#%Qb(t(=iK;3g-MH%_w zKxe!3zjc7BQ#!EbIbc<%aA0IAL<@|S*#Z+~wty9#!huw9^}GXAozj84+SvkDbqWU} z)#+@}NlEk5fwD3ks4KGt0;*2g1yr5Vfv)F(Rh`0tzNru`K+!4dTT?shqX<J-eaqs&RG)V1^Wv@-2^%YlozqF11#%vr0N$5fqi(uyL}b%!)RC#@(t<)qa>?ce~j zRzpo-1tVonN)@l0KcbQ{?Nwz?TGb3=(yHN=ZwjLeL^O)^dZN?S1Uk@Drs8m*%=>VENatnI?QvK)W3OQ=whfqm3l&k))Bo_*x;#LGWbW*4Sj7S&JA zD1Rw9M&2kW6N|r2b;>?0YXSBlRj6QeAyues!Mf&W7fqCDpDG8;kgP-=vJX>+(T5pj zR*)6eJ`B6Cs7!lFnO#`+?5XR+r|rN&H44#aS`zHzaX!l6C>kv&Q#49ZDMh0_wSyrV z?F+*}ibe;<4$*kO>+Jr1Mc1MN<^qm!5hmmCPXw!)#)~2h(>cN`ecPAWmZ^GW_=B1 z)<@AP>nq(X{ck<2$&@RY6*iPvAylR~LW)Kw%2Yg3R7yc%TIPa~9}GcZUYTb}A&>-g z0cR#_nt>J8)y|2@rpIl=n3zn+

(u@=0OT&xy#oXFsapW$1X^TQAW1=gSxO4W{cX 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 delta 75515 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 FmG_(TnW+E( diff --git a/pkg/internal/ebpf/httpssl/bpf_tp_debug_bpfel_x86.go b/pkg/internal/ebpf/httpssl/bpf_tp_debug_bpfel_x86.go index 12f16aa44..22bf69131 100644 --- a/pkg/internal/ebpf/httpssl/bpf_tp_debug_bpfel_x86.go +++ b/pkg/internal/ebpf/httpssl/bpf_tp_debug_bpfel_x86.go @@ -114,7 +114,7 @@ type bpf_tp_debugTcpReqT struct { StartMonotimeNs uint64 EndMonotimeNs uint64 Buf [256]uint8 - Rbuf [24]uint8 + Rbuf [128]uint8 Len uint32 RespLen uint32 Ssl uint8 diff --git a/pkg/internal/ebpf/httpssl/bpf_tp_debug_bpfel_x86.o b/pkg/internal/ebpf/httpssl/bpf_tp_debug_bpfel_x86.o index 1bff04d9a6424a73f48940833f1a91b6f372fdc0..2dee0c1938aae961a15dca86a0850c50700a9765 100644 GIT binary patch delta 78777 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 PVpF`)@hxv@GkE5I3}PWX delta 76552 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 diff --git a/pkg/internal/export/attributes/attr_defs.go b/pkg/internal/export/attributes/attr_defs.go index 77c455ece..06c800534 100644 --- a/pkg/internal/export/attributes/attr_defs.go +++ b/pkg/internal/export/attributes/attr_defs.go @@ -204,9 +204,19 @@ func getDefinitions(groups AttrGroups) map[Section]AttrReportGroup { attr.DBSystem: true, }, }, - KafkaClientDuration.Section: { - SubGroups: []*AttrReportGroup{&appAttributes, &appKubeAttributes}, - Attributes: map[attr.Name]Default{}, //TODO: add attributes + MessagingPublishDuration.Section: { + SubGroups: []*AttrReportGroup{&appAttributes, &appKubeAttributes}, + Attributes: map[attr.Name]Default{ + attr.MessagingSystem: true, + attr.MessagingDestination: true, + }, + }, + MessagingProcessDuration.Section: { + SubGroups: []*AttrReportGroup{&appAttributes, &appKubeAttributes}, + Attributes: map[attr.Name]Default{ + attr.MessagingSystem: true, + attr.MessagingDestination: true, + }, }, Traces.Section: { Attributes: map[attr.Name]Default{ diff --git a/pkg/internal/export/attributes/metric.go b/pkg/internal/export/attributes/metric.go index 63a132543..ec6697d79 100644 --- a/pkg/internal/export/attributes/metric.go +++ b/pkg/internal/export/attributes/metric.go @@ -61,10 +61,15 @@ var ( Prom: "db_client_operation_duration_seconds", OTEL: "db.client.operation.duration", } - KafkaClientDuration = Name{ - Section: "kafka.client.duration", - Prom: "kafka_client_duration_seconds", - OTEL: "kafka.client.duration", + MessagingPublishDuration = Name{ + Section: "messaging.publish.duration", + Prom: "messaging_publish_duration_seconds", + OTEL: "messaging.publish.duration", + } + MessagingProcessDuration = Name{ + Section: "messaging.process.duration", + Prom: "messaging_process_duration_seconds", + OTEL: "messaging.process.duration", } ) diff --git a/pkg/internal/export/attributes/names/attrs.go b/pkg/internal/export/attributes/names/attrs.go index 6030492d9..ad6397844 100644 --- a/pkg/internal/export/attributes/names/attrs.go +++ b/pkg/internal/export/attributes/names/attrs.go @@ -48,6 +48,9 @@ const ( RPCSystem = Name(semconv.RPCSystemKey) RPCGRPCStatusCode = Name(semconv.RPCGRPCStatusCodeKey) HTTPRoute = Name(semconv.HTTPRouteKey) + MessagingOpType = Name("messaging.operation.type") + MessagingSystem = Name(semconv.MessagingSystemKey) + MessagingDestination = Name(semconv.MessagingDestinationNameKey) K8sNamespaceName = Name("k8s.namespace.name") K8sPodName = Name("k8s.pod.name") diff --git a/pkg/internal/export/otel/metrics.go b/pkg/internal/export/otel/metrics.go index 4b31b84a4..890c2fa43 100644 --- a/pkg/internal/export/otel/metrics.go +++ b/pkg/internal/export/otel/metrics.go @@ -165,7 +165,8 @@ type MetricsReporter struct { attrGRPCServer []attributes.Field[*request.Span, attribute.KeyValue] attrGRPCClient []attributes.Field[*request.Span, attribute.KeyValue] attrDBClient []attributes.Field[*request.Span, attribute.KeyValue] - attrKafkaClient []attributes.Field[*request.Span, attribute.KeyValue] + attrMessagingPublish []attributes.Field[*request.Span, attribute.KeyValue] + attrMessagingProcess []attributes.Field[*request.Span, attribute.KeyValue] attrHTTPRequestSize []attributes.Field[*request.Span, attribute.KeyValue] attrHTTPClientRequestSize []attributes.Field[*request.Span, attribute.KeyValue] } @@ -182,7 +183,8 @@ type Metrics struct { grpcDuration instrument.Float64Histogram grpcClientDuration instrument.Float64Histogram dbClientDuration instrument.Float64Histogram - kafkaClientDuration instrument.Float64Histogram + msgPublishDuration instrument.Float64Histogram + msgProcessDuration instrument.Float64Histogram httpRequestSize instrument.Float64Histogram httpClientRequestSize instrument.Float64Histogram // trace span metrics @@ -248,8 +250,10 @@ func newMetricsReporter( request.SpanOTELGetters, mr.attributes.For(attributes.RPCClientDuration)) mr.attrDBClient = attributes.OpenTelemetryGetters( request.SpanOTELGetters, mr.attributes.For(attributes.DBClientDuration)) - mr.attrKafkaClient = attributes.OpenTelemetryGetters( - request.SpanOTELGetters, mr.attributes.For(attributes.KafkaClientDuration)) + mr.attrMessagingPublish = attributes.OpenTelemetryGetters( + request.SpanOTELGetters, mr.attributes.For(attributes.MessagingPublishDuration)) + mr.attrMessagingProcess = attributes.OpenTelemetryGetters( + request.SpanOTELGetters, mr.attributes.For(attributes.MessagingProcessDuration)) mr.reporters = NewReporterPool(cfg.ReportersCacheLen, func(id svc.UID, v *Metrics) { @@ -289,7 +293,8 @@ func (mr *MetricsReporter) otelMetricOptions(mlog *slog.Logger) []metric.Option metric.WithView(otelHistogramConfig(attributes.RPCServerDuration.OTEL, mr.cfg.Buckets.DurationHistogram, useExponentialHistograms)), metric.WithView(otelHistogramConfig(attributes.RPCClientDuration.OTEL, mr.cfg.Buckets.DurationHistogram, useExponentialHistograms)), metric.WithView(otelHistogramConfig(attributes.DBClientDuration.OTEL, mr.cfg.Buckets.DurationHistogram, useExponentialHistograms)), - metric.WithView(otelHistogramConfig(attributes.KafkaClientDuration.OTEL, mr.cfg.Buckets.DurationHistogram, useExponentialHistograms)), + metric.WithView(otelHistogramConfig(attributes.MessagingPublishDuration.OTEL, mr.cfg.Buckets.DurationHistogram, useExponentialHistograms)), + metric.WithView(otelHistogramConfig(attributes.MessagingProcessDuration.OTEL, mr.cfg.Buckets.DurationHistogram, useExponentialHistograms)), metric.WithView(otelHistogramConfig(attributes.HTTPServerRequestSize.OTEL, mr.cfg.Buckets.RequestSizeHistogram, useExponentialHistograms)), metric.WithView(otelHistogramConfig(attributes.HTTPClientRequestSize.OTEL, mr.cfg.Buckets.RequestSizeHistogram, useExponentialHistograms)), } @@ -346,9 +351,13 @@ func (mr *MetricsReporter) setupOtelMeters(m *Metrics, meter instrument.Meter) e if err != nil { return fmt.Errorf("creating db client duration histogram metric: %w", err) } - m.kafkaClientDuration, err = meter.Float64Histogram(attributes.KafkaClientDuration.OTEL, instrument.WithUnit("s")) + m.msgPublishDuration, err = meter.Float64Histogram(attributes.MessagingPublishDuration.OTEL, instrument.WithUnit("s")) if err != nil { - return fmt.Errorf("creating kafka client duration histogram metric: %w", err) + return fmt.Errorf("creating messaging client publish duration histogram metric: %w", err) + } + m.msgProcessDuration, err = meter.Float64Histogram(attributes.MessagingProcessDuration.OTEL, instrument.WithUnit("s")) + if err != nil { + return fmt.Errorf("creating messaging client process duration histogram metric: %w", err) } m.httpRequestSize, err = meter.Float64Histogram(attributes.HTTPServerRequestSize.OTEL, instrument.WithUnit("By")) if err != nil { @@ -682,8 +691,14 @@ func (r *Metrics) record(span *request.Span, mr *MetricsReporter) { r.dbClientDuration.Record(r.ctx, duration, withAttributes(span, mr.attrDBClient)) case request.EventTypeKafkaClient: - r.kafkaClientDuration.Record(r.ctx, duration, - withAttributes(span, mr.attrKafkaClient)) + switch span.Method { + case request.MessagingPublish: + r.msgPublishDuration.Record(r.ctx, duration, + withAttributes(span, mr.attrMessagingPublish)) + case request.MessagingProcess: + r.msgProcessDuration.Record(r.ctx, duration, + withAttributes(span, mr.attrMessagingProcess)) + } } } diff --git a/pkg/internal/export/otel/traces.go b/pkg/internal/export/otel/traces.go index 4f7281fa8..312208ef1 100644 --- a/pkg/internal/export/otel/traces.go +++ b/pkg/internal/export/otel/traces.go @@ -601,7 +601,7 @@ func traceAttributes(span *request.Span, optionalAttrs map[attr.Name]struct{}) [ } } case request.EventTypeKafkaClient: - operation := attribute.Key(semconv.MessagingOperationKey).String(span.Method) + operation := request.MessagingOperationType(span.Method) attrs = []attribute.KeyValue{ semconv.MessagingSystemKafka, semconv.MessagingDestinationName(span.Path), diff --git a/pkg/internal/export/prom/prom.go b/pkg/internal/export/prom/prom.go index 36c944a56..ef1094582 100644 --- a/pkg/internal/export/prom/prom.go +++ b/pkg/internal/export/prom/prom.go @@ -138,7 +138,8 @@ type metricsReporter struct { grpcDuration *expire.Expirer[prometheus.Histogram] grpcClientDuration *expire.Expirer[prometheus.Histogram] dbClientDuration *expire.Expirer[prometheus.Histogram] - kafkaClientDuration *expire.Expirer[prometheus.Histogram] + msgPublishDuration *expire.Expirer[prometheus.Histogram] + msgProcessDuration *expire.Expirer[prometheus.Histogram] httpRequestSize *expire.Expirer[prometheus.Histogram] httpClientRequestSize *expire.Expirer[prometheus.Histogram] @@ -148,7 +149,8 @@ type metricsReporter struct { attrGRPCDuration []attributes.Field[*request.Span, string] attrGRPCClientDuration []attributes.Field[*request.Span, string] attrDBClientDuration []attributes.Field[*request.Span, string] - attrKafkaClientDuration []attributes.Field[*request.Span, string] + attrMsgPublishDuration []attributes.Field[*request.Span, string] + attrMsgProcessDuration []attributes.Field[*request.Span, string] attrHTTPRequestSize []attributes.Field[*request.Span, string] attrHTTPClientRequestSize []attributes.Field[*request.Span, string] @@ -222,8 +224,10 @@ func newReporter( attrsProvider.For(attributes.RPCClientDuration)) attrDBClientDuration := attributes.PrometheusGetters(request.SpanPromGetters, attrsProvider.For(attributes.DBClientDuration)) - attrKafkaClientDuration := attributes.PrometheusGetters(request.SpanPromGetters, - attrsProvider.For(attributes.HTTPServerDuration)) + attrMessagingPublishDuration := attributes.PrometheusGetters(request.SpanPromGetters, + attrsProvider.For(attributes.MessagingPublishDuration)) + attrMessagingProcessDuration := attributes.PrometheusGetters(request.SpanPromGetters, + attrsProvider.For(attributes.MessagingProcessDuration)) clock := expire.NewCachedClock(timeNow) // If service name is not explicitly set, we take the service name as set by the @@ -239,7 +243,8 @@ func newReporter( attrGRPCDuration: attrGRPCDuration, attrGRPCClientDuration: attrGRPCClientDuration, attrDBClientDuration: attrDBClientDuration, - attrKafkaClientDuration: attrKafkaClientDuration, + attrMsgPublishDuration: attrMessagingPublishDuration, + attrMsgProcessDuration: attrMessagingProcessDuration, attrHTTPRequestSize: attrHTTPRequestSize, attrHTTPClientRequestSize: attrHTTPClientRequestSize, beylaInfo: expire.NewExpirer[prometheus.Gauge](prometheus.NewGaugeVec(prometheus.GaugeOpts{ @@ -295,14 +300,22 @@ func newReporter( NativeHistogramMaxBucketNumber: defaultHistogramMaxBucketNumber, NativeHistogramMinResetDuration: defaultHistogramMinResetDuration, }, labelNames(attrDBClientDuration)).MetricVec, clock.Time, cfg.TTL), - kafkaClientDuration: expire.NewExpirer[prometheus.Histogram](prometheus.NewHistogramVec(prometheus.HistogramOpts{ - Name: attributes.KafkaClientDuration.Prom, - Help: "duration of Kafka client operations, in seconds", + msgPublishDuration: expire.NewExpirer[prometheus.Histogram](prometheus.NewHistogramVec(prometheus.HistogramOpts{ + Name: attributes.MessagingPublishDuration.Prom, + Help: "duration of messaging client publish operations, in seconds", + Buckets: cfg.Buckets.DurationHistogram, + NativeHistogramBucketFactor: defaultHistogramBucketFactor, + NativeHistogramMaxBucketNumber: defaultHistogramMaxBucketNumber, + NativeHistogramMinResetDuration: defaultHistogramMinResetDuration, + }, labelNames(attrMessagingPublishDuration)).MetricVec, clock.Time, cfg.TTL), + msgProcessDuration: expire.NewExpirer[prometheus.Histogram](prometheus.NewHistogramVec(prometheus.HistogramOpts{ + Name: attributes.MessagingProcessDuration.Prom, + Help: "duration of messaging client process operations, in seconds", Buckets: cfg.Buckets.DurationHistogram, NativeHistogramBucketFactor: defaultHistogramBucketFactor, NativeHistogramMaxBucketNumber: defaultHistogramMaxBucketNumber, NativeHistogramMinResetDuration: defaultHistogramMinResetDuration, - }, labelNames(attrKafkaClientDuration)).MetricVec, clock.Time, cfg.TTL), + }, labelNames(attrMessagingProcessDuration)).MetricVec, clock.Time, cfg.TTL), httpRequestSize: expire.NewExpirer[prometheus.Histogram](prometheus.NewHistogramVec(prometheus.HistogramOpts{ Name: attributes.HTTPServerRequestSize.Prom, Help: "size, in bytes, of the HTTP request body as received at the server side", @@ -383,7 +396,8 @@ func newReporter( mr.httpClientDuration, mr.grpcClientDuration, mr.dbClientDuration, - mr.kafkaClientDuration, + mr.msgProcessDuration, + mr.msgPublishDuration, mr.httpRequestSize, mr.httpDuration, mr.grpcDuration) @@ -466,9 +480,16 @@ func (r *metricsReporter) observe(span *request.Span) { labelValues(span, r.attrDBClientDuration)..., ).Observe(duration) case request.EventTypeKafkaClient: - r.kafkaClientDuration.WithLabelValues( - labelValues(span, r.attrKafkaClientDuration)..., - ).Observe(duration) + switch span.Method { + case request.MessagingPublish: + r.msgPublishDuration.WithLabelValues( + labelValues(span, r.attrMsgPublishDuration)..., + ).Observe(duration) + case request.MessagingProcess: + r.msgProcessDuration.WithLabelValues( + labelValues(span, r.attrMsgProcessDuration)..., + ).Observe(duration) + } } } if r.cfg.SpanMetricsEnabled() { diff --git a/pkg/internal/request/metric_attributes.go b/pkg/internal/request/metric_attributes.go index 7521fe3d1..46ae7ed41 100644 --- a/pkg/internal/request/metric_attributes.go +++ b/pkg/internal/request/metric_attributes.go @@ -90,6 +90,10 @@ func DBOperationName(val string) attribute.KeyValue { return attribute.Key(attr.DBOperation).String(val) } +func MessagingOperationType(val string) attribute.KeyValue { + return attribute.Key(attr.MessagingOpType).String(val) +} + func SpanHost(span *Span) string { if span.HostName != "" { return span.HostName diff --git a/pkg/internal/request/span.go b/pkg/internal/request/span.go index 840a4799f..7c944f204 100644 --- a/pkg/internal/request/span.go +++ b/pkg/internal/request/span.go @@ -31,6 +31,11 @@ const ( IgnoreTraces ) +const ( + MessagingPublish = "publish" + MessagingProcess = "process" +) + type converter struct { clock func() time.Time monoClock func() time.Duration diff --git a/pkg/internal/request/span_getters.go b/pkg/internal/request/span_getters.go index 69c738fc8..dde0529a1 100644 --- a/pkg/internal/request/span_getters.go +++ b/pkg/internal/request/span_getters.go @@ -91,6 +91,20 @@ func SpanPromGetters(attrName attr.Name) (attributes.Getter[*Span, string], bool } return "" } + case attr.MessagingSystem: + getter = func(span *Span) string { + if span.Type == EventTypeKafkaClient { + return "kafka" + } + return "unknown" + } + case attr.MessagingDestination: + getter = func(span *Span) string { + if span.Type == EventTypeKafkaClient { + return span.Path + } + return "" + } // resource metadata values below. Unlike OTEL, they are included here because they // belong to the metric, instead of the Resource case attr.ServiceName: diff --git a/test/integration/components/pythonkafka/main.py b/test/integration/components/pythonkafka/main.py index d22f88a1a..d9234f6de 100644 --- a/test/integration/components/pythonkafka/main.py +++ b/test/integration/components/pythonkafka/main.py @@ -17,7 +17,7 @@ def delivery_report(err, msg): def produce_messages(): # Kafka producer configuration producer_config = { - 'bootstrap.servers': 'kafka:9092' # Kafka broker address + 'bootstrap.servers': 'localhost:9093' # Kafka broker address } logger.info("Creating Kafka producer") producer = Producer(producer_config) @@ -33,7 +33,7 @@ def produce_messages(): # Configuration for the Kafka consumer consumer_config = { - 'bootstrap.servers': 'kafka:9092', + 'bootstrap.servers': 'localhost:9093', 'group.id': 'example_group', 'auto.offset.reset': 'earliest' } @@ -74,6 +74,11 @@ def do_GET(self): message = kafka_service.fetch_message() logger.info(f"Sending message: {message}") self.wfile.write(json.dumps(message).encode('utf-8')) + elif self.path == '/produce': + produce_messages() + message = kafka_service.fetch_message() + self.send_response(204) + self.end_headers() else: self.send_response(404) self.end_headers() @@ -86,5 +91,4 @@ def run_server(server_class=HTTPServer, handler_class=RequestHandler, port=8080) if __name__ == '__main__': - produce_messages() run_server() \ No newline at end of file From bb32e025d507cb37937d23bb4f6bcd9910f00cee Mon Sep 17 00:00:00 2001 From: Nikola Grcevski Date: Fri, 31 May 2024 15:17:34 -0400 Subject: [PATCH 11/16] Fix test --- Makefile | 10 +- .../ebpf/common/tcp_detect_transform_test.go | 4 +- pkg/internal/export/otel/traces.go | 7 + .../components/pythonkafka/Dockerfile | 4 +- .../components/pythonkafka/main.py | 163 ++++++++++-------- .../configs/grafana-datasources.yaml | 0 .../configs/instrumenter-config-traces.yml | 0 .../configs/otelcol-config.yaml | 0 .../configs/prometheus-config.yml | 0 .../configs/tempo-config.yaml | 0 .../docker-compose-beyla-kafka.yml | 0 .../docker-compose-generic-template.yml | 0 .../docker-compose-include-base.yml | 0 test/oats/{kafka_other_langs => kafka}/go.mod | 0 test/oats/{kafka_other_langs => kafka}/go.sum | 0 .../{kafka_other_langs => kafka}/oats_test.go | 0 test/oats/kafka/yaml/oats_kafka.yaml | 41 +++++ .../kafka_other_langs/yaml/oats_kafka.yaml | 26 --- 18 files changed, 146 insertions(+), 109 deletions(-) rename test/oats/{kafka_other_langs => kafka}/configs/grafana-datasources.yaml (100%) rename test/oats/{kafka_other_langs => kafka}/configs/instrumenter-config-traces.yml (100%) rename test/oats/{kafka_other_langs => kafka}/configs/otelcol-config.yaml (100%) rename test/oats/{kafka_other_langs => kafka}/configs/prometheus-config.yml (100%) rename test/oats/{kafka_other_langs => kafka}/configs/tempo-config.yaml (100%) rename test/oats/{kafka_other_langs => kafka}/docker-compose-beyla-kafka.yml (100%) rename test/oats/{kafka_other_langs => kafka}/docker-compose-generic-template.yml (100%) rename test/oats/{kafka_other_langs => kafka}/docker-compose-include-base.yml (100%) rename test/oats/{kafka_other_langs => kafka}/go.mod (100%) rename test/oats/{kafka_other_langs => kafka}/go.sum (100%) rename test/oats/{kafka_other_langs => kafka}/oats_test.go (100%) create mode 100644 test/oats/kafka/yaml/oats_kafka.yaml delete mode 100644 test/oats/kafka_other_langs/yaml/oats_kafka.yaml diff --git a/Makefile b/Makefile index a798ea0c2..b0beaf703 100644 --- a/Makefile +++ b/Makefile @@ -287,10 +287,10 @@ oats-test-redis-other-langs: oats-prereq mkdir -p test/oats/redis_other_langs/$(TEST_OUTPUT)/run cd test/oats/redis_other_langs && TESTCASE_BASE_PATH=./yaml $(GINKGO) -v -r -.PHONY: oats-test-kafka-other-langs -oats-test-kafka-other-langs: oats-prereq - mkdir -p test/oats/kafka_other_langs/$(TEST_OUTPUT)/run - cd test/oats/kafka_other_langs && TESTCASE_TIMEOUT=120s TESTCASE_BASE_PATH=./yaml $(GINKGO) -v -r +.PHONY: oats-test-kafka +oats-test-kafka: oats-prereq + mkdir -p test/oats/kafka/$(TEST_OUTPUT)/run + cd test/oats/kafka && TESTCASE_TIMEOUT=120s TESTCASE_BASE_PATH=./yaml $(GINKGO) -v -r .PHONY: oats-test oats-test: oats-test-sql oats-test-sql-statement oats-test-sql-other-langs oats-test-redis-other-langs oats-test-kafka-other-langs @@ -298,7 +298,7 @@ oats-test: oats-test-sql oats-test-sql-statement oats-test-sql-other-langs oats- .PHONY: oats-test-debug oats-test-debug: oats-prereq - cd test/oats/sql_statement && TESTCASE_BASE_PATH=./yaml TESTCASE_MANUAL_DEBUG=true TESTCASE_TIMEOUT=1h $(GINKGO) -v -r + cd test/oats/kafka && TESTCASE_BASE_PATH=./yaml TESTCASE_MANUAL_DEBUG=true TESTCASE_TIMEOUT=1h $(GINKGO) -v -r .PHONY: drone drone: diff --git a/pkg/internal/ebpf/common/tcp_detect_transform_test.go b/pkg/internal/ebpf/common/tcp_detect_transform_test.go index ed90a4ff4..baded4c15 100644 --- a/pkg/internal/ebpf/common/tcp_detect_transform_test.go +++ b/pkg/internal/ebpf/common/tcp_detect_transform_test.go @@ -151,7 +151,7 @@ func TestTCPReqKafkaParsing(t *testing.T) { // kafka message b := []byte{0, 0, 0, 94, 0, 1, 0, 11, 0, 0, 0, 224, 0, 6, 115, 97, 114, 97, 109, 97, 255, 255, 255, 255, 0, 0, 1, 244, 0, 0, 0, 1, 6, 64, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 1, 0, 9, 105, 109, 112, 111, 114, 116, 97, 110, 116, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0} r := makeTCPReq(string(b), tcpSend, 343534, 8080, 2000) - k, err := kafka.ProcessKafkaRequest(b) + k, err := ProcessKafkaRequest(b) assert.NoError(t, err) s := TCPToKafkaToSpan(&r, k) assert.NotNil(t, s) @@ -159,7 +159,7 @@ func TestTCPReqKafkaParsing(t *testing.T) { assert.NotEmpty(t, s.Peer) assert.Equal(t, s.HostPort, 8080) assert.Greater(t, s.End, s.Start) - assert.Equal(t, "receive", s.Method) + assert.Equal(t, "process", s.Method) assert.Equal(t, "important", s.Path) assert.Equal(t, "sarama", s.OtherNamespace) assert.Equal(t, request.EventTypeKafkaClient, s.Type) diff --git a/pkg/internal/export/otel/traces.go b/pkg/internal/export/otel/traces.go index 312208ef1..099096b09 100644 --- a/pkg/internal/export/otel/traces.go +++ b/pkg/internal/export/otel/traces.go @@ -519,6 +519,13 @@ func SpanKindString(span *request.Span) string { return "SPAN_KIND_SERVER" case request.EventTypeHTTPClient, request.EventTypeGRPCClient, request.EventTypeSQLClient, request.EventTypeRedisClient: return "SPAN_KIND_CLIENT" + case request.EventTypeKafkaClient: + switch span.Method { + case request.MessagingPublish: + return "SPAN_KIND_PRODUCER" + case request.MessagingProcess: + return "SPAN_KIND_CONSUMER" + } } return "SPAN_KIND_INTERNAL" } diff --git a/test/integration/components/pythonkafka/Dockerfile b/test/integration/components/pythonkafka/Dockerfile index 00aa60d05..58136b894 100644 --- a/test/integration/components/pythonkafka/Dockerfile +++ b/test/integration/components/pythonkafka/Dockerfile @@ -1,7 +1,7 @@ # Dockerfile that will build a container that runs python -FROM python:latest +FROM python:3.11 EXPOSE 8080 RUN apt update -RUN pip install confluent-kafka +RUN pip install kafka-python COPY main.py /main.py CMD ["python", "main.py"] \ No newline at end of file diff --git a/test/integration/components/pythonkafka/main.py b/test/integration/components/pythonkafka/main.py index d9234f6de..61029c39f 100644 --- a/test/integration/components/pythonkafka/main.py +++ b/test/integration/components/pythonkafka/main.py @@ -1,83 +1,70 @@ -import logging -from confluent_kafka import Producer, Consumer, KafkaException -import json +#!/usr/bin/env python +import threading, time + +from kafka import KafkaAdminClient, KafkaConsumer, KafkaProducer +from kafka import errors as Errors +from kafka.admin import NewTopic from http.server import BaseHTTPRequestHandler, HTTPServer -logging.basicConfig(level=logging.INFO, format='%(asctime)s %(levelname)s: %(message)s') -logger = logging.getLogger(__name__) - -topic = 'example_topic' - -def delivery_report(err, msg): - if err is not None: - logger.error(f"Message delivery failed: {err}") - else: - logger.info(f"Message delivered to {msg.topic()} [{msg.partition()}]") - -def produce_messages(): - # Kafka producer configuration - producer_config = { - 'bootstrap.servers': 'localhost:9093' # Kafka broker address - } - logger.info("Creating Kafka producer") - producer = Producer(producer_config) - - # Produce messages - for i in range(10): - message = {'id': i, 'value': f'Test message {i}'} - producer.produce(topic, key=str(i), value=json.dumps(message), callback=delivery_report) - producer.poll(0) - - # Wait for any outstanding messages to be delivered and delivery reports to be received - producer.flush() - -# Configuration for the Kafka consumer -consumer_config = { - 'bootstrap.servers': 'localhost:9093', - 'group.id': 'example_group', - 'auto.offset.reset': 'earliest' -} - -class KafkaConsumerService: + +class Producer(threading.Thread): def __init__(self): - logger.info("Creating Kafka consumer") - self.consumer = Consumer(consumer_config) - self.consumer.subscribe([topic]) - - def fetch_message(self): - try: - msg = self.consumer.poll(timeout=1.0) - if msg is None: - return {'error': 'No message received'} - if msg.error(): - if msg.error().code() == KafkaException._PARTITION_EOF: - logger.info(f"Reached end of partition: {msg.topic()} [{msg.partition()}]") - return {'error': 'Reached end of partition'} - else: - raise KafkaException(msg.error()) - else: - message = json.loads(msg.value().decode('utf-8')) - return message - except Exception as e: - logger.error(f"Error consuming message: {e}") - return {'error': str(e)} + threading.Thread.__init__(self) + self.stop_event = threading.Event() + + def stop(self): + self.stop_event.set() + + def run(self): + while True: + try: + producer = KafkaProducer(bootstrap_servers='kafka:9092') + + while not self.stop_event.is_set(): + producer.send('my-topic', b"test") + producer.send('my-topic', b"\xc2Hola, mundo!") + time.sleep(1) + + producer.close() + break + except Exception as e: + print(f"Producer error occurred: {e}") + time.sleep(1) + + +class Consumer(threading.Thread): + def __init__(self): + threading.Thread.__init__(self) + self.stop_event = threading.Event() -# Create an instance of the Kafka consumer service -kafka_service = KafkaConsumerService() + def stop(self): + self.stop_event.set() + + def run(self): + while True: + try: + consumer = KafkaConsumer(bootstrap_servers='kafka:9092', + auto_offset_reset='latest', + group_id='1', + consumer_timeout_ms=1000) + consumer.subscribe(['my-topic']) + + while not self.stop_event.is_set(): + for message in consumer: + print(message) + if self.stop_event.is_set(): + break + + consumer.close() + break + except Exception as e: + print(f"Consumer error occurred: {e}") + time.sleep(1) class RequestHandler(BaseHTTPRequestHandler): def do_GET(self): if self.path == '/message': self.send_response(200) - self.send_header('Content-type', 'application/json') - self.end_headers() - message = kafka_service.fetch_message() - logger.info(f"Sending message: {message}") - self.wfile.write(json.dumps(message).encode('utf-8')) - elif self.path == '/produce': - produce_messages() - message = kafka_service.fetch_message() - self.send_response(204) self.end_headers() else: self.send_response(404) @@ -86,9 +73,37 @@ def do_GET(self): def run_server(server_class=HTTPServer, handler_class=RequestHandler, port=8080): server_address = ('', port) httpd = server_class(server_address, handler_class) - logger.info(f'Starting httpd server on port {port}') + print(f'Starting httpd server on port {port}') httpd.serve_forever() +def main(): + # Create 'my-topic' Kafka topic + while True: + try: + admin = KafkaAdminClient(bootstrap_servers='kafka:9092') + + topic = NewTopic(name='my-topic', + num_partitions=1, + replication_factor=1) + admin.create_topics([topic]) + break + except Errors.TopicAlreadyExistsError: + break + except Exception as e: + print(f"Admin error occurred: {e}") + time.sleep(1) + + tasks = [ + Producer(), + Consumer() + ] + + # Start threads of a publisher/producer and a subscriber/consumer to 'my-topic' Kafka topic + for t in tasks: + t.start() + + run_server() + -if __name__ == '__main__': - run_server() \ No newline at end of file +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/test/oats/kafka_other_langs/configs/grafana-datasources.yaml b/test/oats/kafka/configs/grafana-datasources.yaml similarity index 100% rename from test/oats/kafka_other_langs/configs/grafana-datasources.yaml rename to test/oats/kafka/configs/grafana-datasources.yaml diff --git a/test/oats/kafka_other_langs/configs/instrumenter-config-traces.yml b/test/oats/kafka/configs/instrumenter-config-traces.yml similarity index 100% rename from test/oats/kafka_other_langs/configs/instrumenter-config-traces.yml rename to test/oats/kafka/configs/instrumenter-config-traces.yml diff --git a/test/oats/kafka_other_langs/configs/otelcol-config.yaml b/test/oats/kafka/configs/otelcol-config.yaml similarity index 100% rename from test/oats/kafka_other_langs/configs/otelcol-config.yaml rename to test/oats/kafka/configs/otelcol-config.yaml diff --git a/test/oats/kafka_other_langs/configs/prometheus-config.yml b/test/oats/kafka/configs/prometheus-config.yml similarity index 100% rename from test/oats/kafka_other_langs/configs/prometheus-config.yml rename to test/oats/kafka/configs/prometheus-config.yml diff --git a/test/oats/kafka_other_langs/configs/tempo-config.yaml b/test/oats/kafka/configs/tempo-config.yaml similarity index 100% rename from test/oats/kafka_other_langs/configs/tempo-config.yaml rename to test/oats/kafka/configs/tempo-config.yaml diff --git a/test/oats/kafka_other_langs/docker-compose-beyla-kafka.yml b/test/oats/kafka/docker-compose-beyla-kafka.yml similarity index 100% rename from test/oats/kafka_other_langs/docker-compose-beyla-kafka.yml rename to test/oats/kafka/docker-compose-beyla-kafka.yml diff --git a/test/oats/kafka_other_langs/docker-compose-generic-template.yml b/test/oats/kafka/docker-compose-generic-template.yml similarity index 100% rename from test/oats/kafka_other_langs/docker-compose-generic-template.yml rename to test/oats/kafka/docker-compose-generic-template.yml diff --git a/test/oats/kafka_other_langs/docker-compose-include-base.yml b/test/oats/kafka/docker-compose-include-base.yml similarity index 100% rename from test/oats/kafka_other_langs/docker-compose-include-base.yml rename to test/oats/kafka/docker-compose-include-base.yml diff --git a/test/oats/kafka_other_langs/go.mod b/test/oats/kafka/go.mod similarity index 100% rename from test/oats/kafka_other_langs/go.mod rename to test/oats/kafka/go.mod diff --git a/test/oats/kafka_other_langs/go.sum b/test/oats/kafka/go.sum similarity index 100% rename from test/oats/kafka_other_langs/go.sum rename to test/oats/kafka/go.sum diff --git a/test/oats/kafka_other_langs/oats_test.go b/test/oats/kafka/oats_test.go similarity index 100% rename from test/oats/kafka_other_langs/oats_test.go rename to test/oats/kafka/oats_test.go diff --git a/test/oats/kafka/yaml/oats_kafka.yaml b/test/oats/kafka/yaml/oats_kafka.yaml new file mode 100644 index 000000000..45f4f3a62 --- /dev/null +++ b/test/oats/kafka/yaml/oats_kafka.yaml @@ -0,0 +1,41 @@ +docker-compose: + generator: generic + files: + - ../docker-compose-beyla-kafka.yml +input: + - path: '/message' + +interval: 2s +expected: + traces: + - traceql: '{ .messaging.operation.type = "process" }' + spans: + - name: 'my-topic process' + attributes: + messaging.destination.name: my-topic + messaging.operation.type: process + messaging.system: kafka + - traceql: '{ .messaging.operation.type = "publish" }' + spans: + - name: 'my-topic publish' + attributes: + messaging.destination.name: my-topic + messaging.operation.type: publish + messaging.system: kafka + metrics: + - promql: 'messaging_publish_duration_count' + value: "> 0" + - promql: 'messaging_publish_duration_bucket{le="0"}' + value: "== 0" + - promql: 'messaging_publish_duration_bucket{le="10"}' + value: "> 0" + - promql: 'messaging_publish_duration_count' + value: "> 0" + - promql: 'messaging_process_duration_count' + value: "> 0" + - promql: 'messaging_process_duration_bucket{le="0"}' + value: "== 0" + - promql: 'messaging_process_duration_bucket{le="10"}' + value: "> 0" + - promql: 'messaging_process_duration_count' + value: "> 0" diff --git a/test/oats/kafka_other_langs/yaml/oats_kafka.yaml b/test/oats/kafka_other_langs/yaml/oats_kafka.yaml deleted file mode 100644 index 79fa39c7f..000000000 --- a/test/oats/kafka_other_langs/yaml/oats_kafka.yaml +++ /dev/null @@ -1,26 +0,0 @@ -docker-compose: - generator: generic - files: - - ../docker-compose-beyla-kafka.yml -input: - - path: '/message' - -interval: 2s -expected: - traces: - - traceql: '{ .messaging.operation = "receive" }' - spans: - - name: 'example_topic receive' - attributes: - messaging.destination.name: example_topic - messaging.operation: receive - messaging.system: kafka - # metrics: - # - promql: 'sql_client_duration_sum' - # value: "> 0" - # - promql: 'sql_client_duration_bucket{le="0"}' - # value: "== 0" - # - promql: 'sql_client_duration_bucket{le="10"}' - # value: "> 0" - # - promql: 'sql_client_duration_count' - # value: "> 0" From d19d8c332fad8821f8d0e67d7bf2574d38808b33 Mon Sep 17 00:00:00 2001 From: Nikola Grcevski Date: Fri, 31 May 2024 15:49:26 -0400 Subject: [PATCH 12/16] Fix test --- pkg/internal/export/otel/metrics.go | 1 + pkg/internal/export/otel/traces_test.go | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/pkg/internal/export/otel/metrics.go b/pkg/internal/export/otel/metrics.go index 890c2fa43..28d44032e 100644 --- a/pkg/internal/export/otel/metrics.go +++ b/pkg/internal/export/otel/metrics.go @@ -664,6 +664,7 @@ func withAttributes(span *request.Span, getters []attributes.Field[*request.Span return instrument.WithAttributeSet(attribute.NewSet(attributes...)) } +// nolint:cyclop func (r *Metrics) record(span *request.Span, mr *MetricsReporter) { t := span.Timings() duration := t.End.Sub(t.RequestStart).Seconds() diff --git a/pkg/internal/export/otel/traces_test.go b/pkg/internal/export/otel/traces_test.go index 4c312d5d0..e5a8afde0 100644 --- a/pkg/internal/export/otel/traces_test.go +++ b/pkg/internal/export/otel/traces_test.go @@ -552,7 +552,7 @@ func TestGenerateTracesAttributes(t *testing.T) { ensureTraceStrAttr(t, attrs, attribute.Key(attr.DBQueryText), "SELECT password FROM credentials WHERE username=\"bill\"") }) t.Run("test Kafka trace generation", func(t *testing.T) { - span := request.Span{Type: request.EventTypeKafkaClient, Method: "receive", Path: "important-topic", OtherNamespace: "test"} + span := request.Span{Type: request.EventTypeKafkaClient, Method: "process", Path: "important-topic", OtherNamespace: "test"} traces := GenerateTraces(&span, map[attr.Name]struct{}{}) assert.Equal(t, 1, traces.ResourceSpans().Len()) @@ -564,7 +564,7 @@ func TestGenerateTracesAttributes(t *testing.T) { assert.NotEmpty(t, spans.At(0).TraceID().String()) attrs := spans.At(0).Attributes() - ensureTraceStrAttr(t, attrs, semconv.MessagingOperationKey, "receive") + ensureTraceStrAttr(t, attrs, attribute.Key(attr.MessagingOpType), "process") ensureTraceStrAttr(t, attrs, semconv.MessagingDestinationNameKey, "important-topic") ensureTraceStrAttr(t, attrs, semconv.MessagingClientIDKey, "test") From 06eaefad29a2a22286b88a4a3dd706ce7981da44 Mon Sep 17 00:00:00 2001 From: Nikola Grcevski Date: Fri, 31 May 2024 15:51:45 -0400 Subject: [PATCH 13/16] update bpfs --- pkg/internal/ebpf/common/bpf_bpfel_arm64.o | Bin 3832 -> 4120 bytes pkg/internal/ebpf/common/bpf_bpfel_x86.o | Bin 3832 -> 4120 bytes pkg/internal/ebpf/httpfltr/bpf_bpfel_arm64.o | Bin 340128 -> 340128 bytes pkg/internal/ebpf/httpfltr/bpf_bpfel_x86.o | Bin 339816 -> 339816 bytes .../ebpf/httpfltr/bpf_debug_bpfel_arm64.o | Bin 368592 -> 368592 bytes .../ebpf/httpfltr/bpf_debug_bpfel_x86.o | Bin 368280 -> 368280 bytes .../ebpf/httpfltr/bpf_tp_bpfel_arm64.o | Bin 364592 -> 364592 bytes pkg/internal/ebpf/httpfltr/bpf_tp_bpfel_x86.o | Bin 364280 -> 364280 bytes .../ebpf/httpfltr/bpf_tp_debug_bpfel_arm64.o | Bin 394016 -> 394016 bytes .../ebpf/httpfltr/bpf_tp_debug_bpfel_x86.o | Bin 393704 -> 393704 bytes pkg/internal/ebpf/httpssl/bpf_bpfel_arm64.o | Bin 364672 -> 364672 bytes pkg/internal/ebpf/httpssl/bpf_bpfel_x86.o | Bin 365928 -> 365928 bytes .../ebpf/httpssl/bpf_debug_bpfel_arm64.o | Bin 390752 -> 390752 bytes .../ebpf/httpssl/bpf_debug_bpfel_x86.o | Bin 392016 -> 392016 bytes .../ebpf/httpssl/bpf_tp_bpfel_arm64.o | Bin 410456 -> 410456 bytes pkg/internal/ebpf/httpssl/bpf_tp_bpfel_x86.o | Bin 411720 -> 411720 bytes .../ebpf/httpssl/bpf_tp_debug_bpfel_arm64.o | Bin 438360 -> 438360 bytes .../ebpf/httpssl/bpf_tp_debug_bpfel_x86.o | Bin 439624 -> 439624 bytes 18 files changed, 0 insertions(+), 0 deletions(-) diff --git a/pkg/internal/ebpf/common/bpf_bpfel_arm64.o b/pkg/internal/ebpf/common/bpf_bpfel_arm64.o index 92a64b5cf31256a850feabbfb3d918ebace797c5..2cb134e6099880bb447ec46e8651db524cdcf75c 100644 GIT binary patch delta 554 zcmZ8dJxc>Y5S_c6xsSbD6x4hnhE#`G1Pc?ZG*Q!tv9J(?Q_KlL33$0c8cAxa$TX=0 zEyPy*0k+mw2{u9OY{bT3_?PBWCYaNd|W zgE4h(ld~295QhfDP2vPzq$H*+kXG?l-Q^`wCy*Z`BTwJzublPVO118soLAkN?|ANo ztaY-g~pafM@g4QIz^-CFDMQ}4TAa_W=vPg zVasgd(2VOPi>ibxOjyrS9{W~7zG0Z;>-vj1+G^tg&&jVAN^B7yxUGND=L__(&zJuI D1cFU% delta 336 zcmbQC@I!Wj2Gb6niCRWn3)mSLK=>om#t_sKn$`s1BuTJY5S_c6xsSbD6x4hnhE#`G1Pc?ZG*Q!tv9J(?Q_KlL33$0c8cAxa$TX=0 zEyPy*0k+mw2{u9OY{bT3_?PBWCYaNd|W zgE4h(ld~295QhfDP2vPzq$H*+kXG?l-Q^`wCy*Z`BTwJzublPVO118soLAkN?|ANo ztaY-g~pafM@g4QIz^-CFDMQ}4TAa_W=vPg zVasgd(2VOPi>ibxOjyrS9{W~7zG0Z;>-vj1+G^tg&&jVAN^B7yxUGND=L__(&zJuI D1cFU% delta 336 zcmbQC@I!Wj2Gb6niCRWn3)mSLK=>om#t_sKn$`s1BuTJu&X=2l!57yxPCFQ+)UCW+5^gMF1?D=XBy|;3~ z`P{%gJ@MSc4PWmYb$~?=$*)6|iZKg-uSCH8{5i@+_d7>b&mMvB_y+ zlhb1j&i;|?xcC0DsylDkGA6oTvCK3)sE>TNRi%2a-L$yS>Btan2;Fd#^4LJl>LpVm02$7?M z;Tvm<79GXKY)M)QT%@UUpXbE6Z*cg7{@(ZQwbGAP`qAR$M8k7E+^hk_762X!05ACQ zVaKVv*i#LF6m{qvAY=pVi?;0M+tAYrI!?mnQ2#sB|Bh(Oe(I{0S2MW{lgU#vQ>JF7 zA{ys>O{(6kb~4ANlci>-NX<@JG&+HKbr8@_HefnAYId%u*|`&qPIXCrTG|1Z<99jB z;&=L(lcM!8uc>e6d}=f1o;o$}X;br_chTtlCe)*IU8}A={5*Ct;`w?HzqfYL`Pia8 z1J|A(*Pd`>yqEXHMWYkhRohYL-sjBs%2V^6GBrDO(dgVCsSBTW>WijhQ?t{dW@jK8 zox>B=bMF0l-E>~5*%?r?GZKwX;gtT*;gspbsM$$Uv$G=_otraNTG8*-o;IBhH9I3} VcKpHd_jOx#DP2{~bk)0e`v-rj^3?zU diff --git a/pkg/internal/ebpf/httpfltr/bpf_bpfel_x86.o b/pkg/internal/ebpf/httpfltr/bpf_bpfel_x86.o index aa402265de29c69152d4aaa55e11a0763e8e4667..2c6c93da7021866bf5698a33253edc444a440ba8 100644 GIT binary patch delta 1024 zcmZ9~KS%;m9Ki9{J+sb){vhEXBtbL<*&tDi)sQr`)e=ZFxFrz;4J8p2K_N|z+EPS= zM4`kDLCbAAI_cQqQs8o9zjych9lv*j!x!}Pe((Ksx(TP7C|?e}8=1k{s}RWQ(V=V5;idv zY+|acVVwJ6*_&3*?!N96u*oT7lT%?0&Ra_E#FSHr=}r-woNH`y9$163H7|cm<+!Hq zh>(+Jzf;e=$XY#fM*e#5Q=QbEXKb3s#-@2XtigHA$|rwa=m%>L&68v2duwM6&dmnS z(+xWJ*D5PgiTHbo9n}w8bVmuKJ>IB#6D}oX`T%ttwi8tLk{-H!5%rR4d>%VwxWtDZ0bxAn;09L zmX}zrt7p#0-{5^Jv$|8mrg>a!ny14WoR_S89j*)g(b_}vSnT{@?X1Ch*ui<) zp?T;$n#X77D`#?UIKP??oX?!xHG{pU^m`St$+5BNUUk;sY#+(%m~!e%y5nGz)4?Xk zV+~H^MD~Kce{JZFi%pJ)O^(kRoW)c8KhIdYlf))x9h;mSYjD=i<;9A+mpi39ZESM> Wu*ngL;rCS=&RxGMoBe9^s{9XJ1_YY` diff --git a/pkg/internal/ebpf/httpfltr/bpf_debug_bpfel_arm64.o b/pkg/internal/ebpf/httpfltr/bpf_debug_bpfel_arm64.o index d195c66f7c2d2e01c679b5fc9ccbf758dd6f4a06..fe06e19d6f2a1365e2a5c87b65f4814190cd6a49 100644 GIT binary patch delta 1027 zcmZA0ze_@46vpv4k7Zs8Bgr5rYBF4c94hFCHAMeJv|ge?YDijgFp{Q=Q{&x|Xb=*- zgP^o@M`?1it(z{6j-6M}q4VCs;XC+wpZ8wvv{Ic`s#uyTMe6Xoef*}By`fa3sMH#M zX0Y?rJJ>N#DTn$BJJD3i6&-IjGFiBv*G_HEbUbQyy436hqS5K+pcmCn?#Oh`sM)cp z*(r!d$2x_JW$n1O=~SuN@u}JAibm)49DXeAv@O%|so4pr*%^sO=gWrJ*eQn`C*;(` z_w;k-bG3`k$_*r@^`7#gxyPaAJvD0H(-w`+WdT0twBv>L@OkWfhxQCbqjUX0d;HLz zPH4|ioUiYtl9T;(ua76VUDA8Ayg4{Jw&H(-~5;vvBZ#4}Gt7(dbz3^n12XOeasxjzi6RT+!%cJVIaJUOYl!}dXg$I~YDijgFp{Rjsqwa?Nl5TE zrKKCC$<4MdU2b&j`Ren~^S#00J@~rM-B*$G6WGc3R$uARb(>0D5=V^gzJ z7LAT|4p*z%ac$FSP_yGx7wN9PXms8#;m6WW*D@WSnw@}}ov~b_=Oly{EQp?s2GjPm`MWbVZ|cU53vE?Rb$r{5*EPBYQ&8=-fQg9zU|D z7ugev=j*#vdb*$P`gn%B6}_jlZr)X<<~=Xed{;v>?zwkiCo%cHvZmuxvlCFWGZu}` z@D&D=?<+VoosgQHrKA5l^j({x(Xrm?_iUe;PKlZwhnn}eqS48Dkj?A6_;cg`>3n+X Wva?Oi&c5iR_f#K2yFQ8^xBdVEiqS3r diff --git a/pkg/internal/ebpf/httpfltr/bpf_debug_bpfel_x86.o b/pkg/internal/ebpf/httpfltr/bpf_debug_bpfel_x86.o index aa9f6d5c81de6e6865f956a89f7fbe7b2737fb5a..69a50f1c03480cc269184fbcb3960021b8302230 100644 GIT binary patch delta 1027 zcmZ9~F-XHu5P;#+R}C#nrD6+$P+f#BN}UA7DhSSkqqqhKDJ~Y5W~f-4YNw9b%-~R} zkPIz|iu8{hV@L0$cW^J`Psn%oUeX&Cd!wS$T4*hPs@Ll2JAl0nFl_=@4!|;Y zow|%|1ppoDEA0Fbz!jYx`s1ojG7u4+7)a*1w zqcb>HHzn=3w&{4(?1a?pM558TyjH(C?R@1-C!}U4redwR-p47J`?RTfACH>%2}Gk)XsDl+nV$tZ_zNm){y-$71JXeF7ogOux%M*>xj;r>pxFSW;%6hb~@DTxT4V+`>J%H&oxWkGpx^DcFNT3?2FD0 NpDR=4SEiY}kAG@*|Kb1u delta 1027 zcmZ9~F-XHu5P;#+R}C#nrD6+$P+f#BN}UA7DhSSkqqqhK2`&bgW~f-4YNw9b%vfrn zSqkD}=1$o<8tCHK(R=9~+{^eA^4-0c^v31hxa_r-TFXQAUOx{2>|KCa6TtESRZ-Y}o&K@ugw*WB)a)dp(djnSG^d@$ndw|nvtv`UkLsM(1{qjP<$ehb?9Dws}0%}zqi&RjG)&$hBs$ICeFj1!3W^gV~7 z(fNK<#TC7eS2Fi$Q}aFnHSZIOMyKSepSARUGW+m+b|Nuf?-PqgXZwZr>1X!gdF;eu zzIGDP=-j`lr!BpYvtypirDmr`&F2b4qqFC$11tSr`=%37vy)J>GZ&3c_d`w7@0FaG z&L1^98>frs>{LagGZ@hSY+sm;L(NWynjK#>I+KyA9O-k-GxrRe3zwZLH9Lo*^Wkf4 Lrbe|{?&0$vJ8=HW diff --git a/pkg/internal/ebpf/httpfltr/bpf_tp_bpfel_arm64.o b/pkg/internal/ebpf/httpfltr/bpf_tp_bpfel_arm64.o index 9ed357cab330deba47f4629dd6f261d25975708f..fedde5ef85de19936702772bd3762cc6c561d833 100644 GIT binary patch delta 1027 zcmZ9~F-QVY9LMojPfShFGQ=V3AOyFX#A>lAYlxsBCkcXZ3YQ>i$U&%vz)@(qC2EMc zq0r%mnrc!+%n_k%0y-IS>D7p9)(CO3UPNP z#2bA4&<1uFda5Br7CUk-M8pALQe zvB@#9$+1|2Gf2wiCD%FjIM`zcd+e|Vr?4gWL&`Y_=}r-woGWZ{YOKNe+mqixS563!C<|v1!j2YjAcB<-Pm9Ry=#?dF15T^VJ?Yw{pQr zmvE2c+4Jk!6P+FHr9B2~aE?yo=A62p;=F#Y5;pCrVv}RB24`?BFZ{}}lDgBtCZ~f< zj>8(9r>gvP-}~#D?tEaA<6x6BWDQR97XQ!DtnMVR$;n`olVc4|&y?@0>Rjz<-RWSH YGsGq*5FUMBblAYlxsBCkcXZ3YQ>i$U&%vz%gjKC31=z z3~#KdCUuk>tjTV&rf}^4&i`Nj?*@l2=;wa#otBxj%w)ATRhw?gyTn#Qh}5zWj~7C` z!6yi9U^~z=O(F8wu}dLhwh;TQ!*;8kke#SbCQX-^%S9E&wL!&`Y3RF0L_9UGgR9yU2H zYjB?H^3!|ouN%7aflZE!P0ollIPC}gKgaXBlfot^hfPj_H8_1!zOSoub!T;_hfU51 Wo19Q|{C(A7`+DHW*1!quzWf6goc0I+ diff --git a/pkg/internal/ebpf/httpfltr/bpf_tp_bpfel_x86.o b/pkg/internal/ebpf/httpfltr/bpf_tp_bpfel_x86.o index 895efe53d889bf4d20fb4be125676b2312414832..43a5d628a5797bc54b721704144a1152d5493103 100644 GIT binary patch delta 1027 zcmZ9~JxD@P6u|LYN33Vkmmv;84?<|GrRZa^DcgdeT7qbDs+J@i%t0)daFQSlw;~$e zAn4!_1mUKmIMkS1P4ULgeV!xdzTpjjc<*=5z4y75s9TBV@+0}t8mvaPUzLh2D0P=n z>II)5woUzxJ=RbvLG5BsHI>>EZ8huZ2(-i6vDZvziJF}xH9JS5(J9!_4ru3U%XD(o z>{O}QaYUn2j>Gbz=bZT*>Y+nDbVQ>Q+=auCc1}X3lcHwlmYSV=(dazx!?&d!*D@XD zb8PXQKIawD=zJW*k9R)R8Pj>D=6PDwJWp3NI)A6|+w9USYJEivxE8deCSMG!p@vNpVYj$uM28+O4PhBM>IO+B3uWx$aLV*&fuhy+Ee+56*)J=Kufz delta 1027 zcmZ9~KS%;m9Ki8cKe5iFe}*^&9fZ(UOVOXjrfds>Y6+srsale7FbA<*!byTK+>#~- z!5f1hZqrd5YRs*sxUt_me?R%X8*cc*-RJ$@d*{{SUM*fIjuppSupZlOD3w@J>LI7p zD?VXtoBADlqNP-d+QXi4lsXV?Iqhr=I#KP|8>X{D%}$z{ofFaMlx*mPv~#m#It6NW z>eTEsMWa(q!s@c`Tm&5IkwZOlM57blhvSHL&LXChp=Rfvnw>|{=sX|7x1}A=G949g zZ1J5w=QYvje4N6Me?Ij&(`iuiJT5iQ(-V!(-#NVa_mv=jbnk(AQeu7o-bJJHc}eqh z1M~2DJdY>V*UsepaDF`>I@8y%x1i4_vuN(?ikh7YHSen_8l7qxZo}GXCQZkoW~WEZ z&OkIeM-}+;@BMAtbX;n72Gs0$qS47d(f>S~GMxl9JDb$(q(!4sszZBA@5`Msoh~&y Wztrrg=>55@0F$IJ(tvcuc~O+cQlF*}JCWP_y$%&CWYow&}rpPHSKXmH-n^)QG|I%7Hq)a;y5 zvtx+{XK<-c*U>pCnogFQ9gCVBTQoSuJ6(#R(~g=>mzte1H9LQz!P$Dy;i*&gIgZb9 z#rN!p0Y~i6xc~qF diff --git a/pkg/internal/ebpf/httpfltr/bpf_tp_debug_bpfel_x86.o b/pkg/internal/ebpf/httpfltr/bpf_tp_debug_bpfel_x86.o index 35d19103e8addf042b5d254de68b33590b424811..c0e984923ea2f08e1ddd73fb47910575ab039382 100644 GIT binary patch delta 1027 zcmZ9~F-QV&6vy#bf9+5T!3bOei!g9WnhXM~snNl}t#Zjx8ZufuRLG&hDH^pQ92$gz zyFsEYX^58KsKHv|psmTV_qX@p{crpZ_xb<+cjq?}ej{Nwr<&9E>aehV3s7DH_^AO{ zHoy#ag*u6Cxd3hIJ?z*3pd&gmaIOogHm9B5hUxUF*?FaA=TkH~rIH$jw3E%5&K5O0 z2h{9TM59wbQu`~~**!6xJT*HNYIbbV=qz8TYE(OqQPUYxv*S~u6>?~BibidS8-)bl z6m3aEv;wZlhnk%u zYIZ83!Kt6mF&uk}8%}#}y9al6st5>=jMdvYUJ40%Ad}?+kqQQB;*3Q&%15PX8 zc;Y#H&qg%v>FQV*_qcI;Pm7xOc+|Ydhz95MPCw0~(+TY1^Vu1S^Ks8eG&mRcw5J!? z!{@Ox66d4iiw5V}=;{*g$uHaYDpIp^PR;jfi3X?sqBk6L+UvG+L(Pt%W@jiGoZmM+ zo_??1w(S^dc1G0f_@cpyf6@P(*|VK2H9JLWcFLl`+5Fan9NudZc+YC_-(@FB%}z#i P#9XFRp+Pzoe)#wU)t>#4 diff --git a/pkg/internal/ebpf/httpssl/bpf_bpfel_arm64.o b/pkg/internal/ebpf/httpssl/bpf_bpfel_arm64.o index ffec321b98aa0986760ce22d193226fc8152aa2d..48c8081ed331339e35fc481d5d5ec209efc07803 100644 GIT binary patch delta 1385 zcmb`HJxD@P6o7Bu%Ja6!X>CChrp;n z2eB<2g2bU(gr;l?Cvof?-#K>PT?^hDzUAZGk8^MCYBC4k(a3|K+o5*+tVdxPY}+F=Vnh-FnZps7Y};ub+;!$%$_tcd$NMT<851= zDfEP?8+Yce?6E~x?3@$~p2fbkKY^YMbz@JKm_0?&6+I=v;CUU>PUno#Icsz-imn5X zVDRKa+UcC2ZahztnCHoeuIR}LM$e3PI+u*jw?^lt=!%{X!QeTc)#Z8Y^T$2RZ|U-2 z4`W83xY1`v^uT%2f?=M+ZR+DQ`taUypP1-@9$PSacB#*v(TDerJtv|EdWwRvb4o8Q z{KNkAPN`49=)?QM^HfC-oTnie=J`CMK53&5?+behq6c~|1*7MJ`ZSC_yf5tOiXP}u l_V4`%Pw!eg_q1uehwsGf;rEj7yU%q`k0W(miPSx*)(@~JD(wIO delta 1385 zcmb`HJxD@P6o7BK}eKH5Y$qR_5;0^5L%?EB?yu%Ja6!X>aKH=_id zYzv1Vai|udDVxGc9J|MNj-7Ybg7=1R`8fCE+?&6d$(!$VqGomPw<}5w14?z)mHIZn z*RTpY?AuVvS5qp6ylHr_HxT7#q*v*?J6u=WEUF=_8XTWX=ocCQpnpc;2iR4|wb?wP%h9W3#T%ImOs`R)*HmG*4d@weis|8(MfK}E ijc0JHoqO6A@8LT#dFZ{Q`|fw$)3az(*P~5Oy7L3BHz{!d diff --git a/pkg/internal/ebpf/httpssl/bpf_bpfel_x86.o b/pkg/internal/ebpf/httpssl/bpf_bpfel_x86.o index 9e137bec92b96d30950fdd02fd8a8e0a76ef2509..daab9ae635c8b3a568f5caaead07f5a403f42998 100644 GIT binary patch delta 1385 zcmb`HF-QVY7=T~*#MC7-5Q&B`0-KU1i>Pb6u{LQ68oDj1#WsncMsvC`YB?mbA@C5P z!9{Awnp%Qz(b2Ib=>2#9Z~wh5Xt?3y;NyQE|9iuFdRR|a&L$p=6L0HQh*4aKjddY* z)fZL#g?y}d(i0++2>!c@r`kf~7{}YqmS+r7;7QJfJsD*36p+bdF;<@bvvC;pJ&T$L zdF(+Rdl)NE?ag>hfM>WG_Kc9plUxg*Yo0N9K8%+Lc+AbP$3iBLjZE{D87t3q-x$pL z=fZB(nYxmvz`8{rSL;FIWD(eBBE5_it!9HEB5A6$iMyv;T mg!y~_m8a&);GXuh_wZeN59xiR`yLD3)ALqGHd~#@-Rlo%gAFtQ delta 1385 zcmb`HF-QVo6oCKk#MC7-5Q&B`0-KU1izwS}tWBDNhHgu0u}vbV(VT9KS`LS75IkHO zT%?AqsU-*(9UWVO{&)ADy?a~GaKp#J$NN9t|Bo8!Q6pWwm}(hk-j1u(IIh&zrc(R* zi)#KtKGi(kQYw=O{=1rIJf(7s<6gVt8N(EKk_%x^2AMnsWb#;ywP)~b97lc6vhW~J zJjfFdW9_NG8IK9@jMl@RF*13Q8{u;;G6v6w@e%<~aXaj>kjY~s(>xW%+H*TFhV%Zp zup4!zuH-4OuF%1y7YRc$Undvnx73h|Yc16+EAewP!77HgkSw(dUnQnB6m*{vPH< zpMvO9Vm)9Uo3WlJRl+_o(TDbq`s7&;@Dv$?=MeiGh(5G;E>j55B{JsC$ hQ+Lhap7zCi_%7Z#iHh-$razv@$8Kp*N zl^QU-&YU(JYA97<-Y`7WRH`a?uzB_M7T6pi&uhZ=d@{om9q;}QPg1b)9Q*~+A@YP% zwkOIAkH-v8R`I=3-T7&W zJEJS^C+c+eL|5`;1)IH|R=6{|!gK6&Zi%ksxfg6aziWD8k~%k>J}qYS=`iDa;ZBK- zXLVN}`FDuB!#wB(Pe$~hdGdmdXL^tOphwTc`}aJ|m?tloJcs(jzeC&=JlG$ePtk+s zQ48HW;k}9{`poYW=X-z$_X1B=+zWXMf~n6f_bKtd@RXV1sfixssSBpP9=K15_w9L{ zJ~h$9_Xs9WoBO1AUwAxb%u^6O$g?ikc#6;Z#eb)s^G-9)JH`JczSoxZPIvZ$m;3#9 F-~U=YEUf?l delta 1383 zcmZ9MKS)AR6o+qKOLIvIQV7dYTzt?X{QcoNL;qy>{_R=54+sb$@sIx{>rGdz!ijVBq=Zwurp zdpcJm<5AQ$rFk_yaVDen(FXs+%SMXqecm|>e z&7(F)cfxy>uJw)6C(8E#5AFq?jJOx_wvuAj`rPPt&(N?3@8{U~9&sRF^=`zEUm>&EOPe!ouERN`fD0yPp zuqVL`kIM{CUa;|8j_Lb2d6YS?oGZo*PnH>;oM7@K^?QUo^_8&agc+VDGdz!ijpt!X zzf6*6*XmrhI@d*4>U=KPc;0fl<9Gf`htH$9BhDkclE)2qc8c6NWp&P2on=?@l){}W zYup)Ku|El`vn#riCokB{RoURq=nBud)wwOYlE)KlJjYvlW{x^Htv+pL^!Z@M`@)_Q z8&AKc&-^{a-r+px1y4@&pz{<28_)AG_d$=qW1d5M8F-j+o`PWVT<9Nv53yJ9V19VI zq6eKvtqz{Ub2(S~*6)+zeSio10#9D-3wcU{sm~MlDf7JWRGHy95k1IrEtuwd`??aIXiQ59ggo KW8N8={rv}Ljv@X4 delta 1385 zcmZ9MAxJ|}6o#+f`8GvxVAw#XVj70|lB@_*%gSKEVACLKToR**plO(7U{H&$Sp?Ty z65}k2MGb;t(FKRmd*1$kocF@Q$Agb^zIWbQom8un+THKF?k}|$>c*6ZjMa-uG0BTvGcs-?MKl0FB6`}pd;teUB%;vJ9{N`PNN&&`xKZS-BmngJeNJ) zJlo6Y%&zn#(UBfsbrnxRv3OR|nO*5Qi*#PNoQeB?Xj|0CZQzw2)2gPa$; J$$10QzyD>PAc6n@ diff --git a/pkg/internal/ebpf/httpssl/bpf_tp_bpfel_arm64.o b/pkg/internal/ebpf/httpssl/bpf_tp_bpfel_arm64.o index 4ab8c30432bc72fa370476211c3072d5e4c22197..2bbbbe61ee97f8048d3949137426f9ff5c2d8b40 100644 GIT binary patch delta 1388 zcmbu9JxD@P6o60Omp^Y&ia@PFf^c;S%!FQ3;^Y*KwUk?qjt*gMNs~iE*wPRc^rM5& z>XtM))>IjUV;DsDJkPQ7?&@%dZ}~X)Pv6@NdLj#6Pn4KFX=3)|1Zz+J*SGI?Jxhj%c`>rP@kgFhxdg&HPHh-XM)l5Lw!0%AKn-C3`7s~fb;+UL+$&x hHF~C9<2&pTvxdJ*e(pifGd*l1Eq$h&jimo!{ttjsC;tEd delta 1388 zcmbu9ElfgD6o9YXCqJ*ibZ&qK=H{prH$*m{Nk$?$qZXw}BoZ9jWF~^aVIirTD6d&* zG80jgikl-k+?@A3&cX9eHQex(Z})yX=ML(LK|N7Bn&|{yhMR4rz9LFJ<&^p~CumsN z6ArB_73wIJLe3kGx=LjjN8Il6N8oi1Jh3IeCyq>>EHZftjE$%G6F3Zdo)zIio_dg{ z9>&Hqw)BGyp0_o>XM{|in0YU}n>;DT;EC!-3p~z--%~&)PZ^m!RmR3+FX*i_c;eWN zI#XBjIIJslE-^Nqv%Ef-2Tw(Gu8Pi0))hQ$#>SH?=}G5`=v)<@o2;wnVQf6ZZR}jY zZuG7aGQF$9x`L<17(9E}xh*>1h|Yc16+F+3jc2^CqpQ&8zjJu5ue~|Uh(1}-XNUEG z`;-|&=S%Dp7JX>$s85FV0FT2MJXhFfSM;H|BhLxz0iGsf<0;eH+9rbl diff --git a/pkg/internal/ebpf/httpssl/bpf_tp_bpfel_x86.o b/pkg/internal/ebpf/httpssl/bpf_tp_bpfel_x86.o index 62e5e6d28777fd3f7216cdc2fe95d7a03b0a2c57..cc7493ad389d42a6bf2a862fe21141ed1fe4e3d1 100644 GIT binary patch delta 1388 zcmbu9F-QVo6oCKyPg57A2(%hnq834dz#__Ay0ImQXlTiq^RX26_{8iTFXto@bMo=c$UW=&1`vPnkNqM(10jb5C?d&zoTITN3EqdTQ6~Wlqr9N?^5APlK$%`K7DGEl<9rf8W`taVd=T!7SPeU+x`fYt4^!exh zbUvw%WAx#D;d$Dk2hQUOhIyJ_)Td(f;eBC`BYL3cQgEXC(6k2E)HCw%y0FFR7%){klMe5^!00Wx{AtI>1KF$T|+ezw3<-iUf^Wb)LIX`TjS<7rRpt%dMh z*o`_k6JX#>R7Xs58r9XVK@cdw8R7!#ymDJ|)p- zm-T>oYK)eeQ58@=X^n5bI6QA+FhbJxAcutpeHbS0g zCg_PX!{ai;QxI%Cu{GU~kw>irJyB+OGR*Mg1(Rn(zc}P+uLeCGW_Wtc@H_}Mp1Cc( zpCM1p>Rh)vcSKj}+!bs*Plx)=>-?Jv&ZD>^=8;{=;|4qb9dqY|)j4f-mR-qH4tB1b zaA$PI{lu-#uINghf?%^(<$^n-D?H~`=X=qWJdc8n=jc-RbJV$K^|@z8pCL1TFWf0H zd7kx|cZaw;%!6L=z(5N62I3$;GMQY ORmXhBZ$s7acJUvhfhx`b delta 1391 zcmZ9MKS)AR6o+r#SDH&g5F!+AibKB1q(7hq;Z#BpjShj)qNC8_AP6qCB`rluu7Tj& za%_yIrgEybtRcdwd)_-gIqwY(AHv5u-#fRLQQ~EkXtrirp}xLP6?;k@MU|RtD7Cby z)STf8bJlRUuT+!y*zkg*)P>-AXYiBK)kX4rF8e)WW_V&N-tX`v1sl)RhR%k`6G{6$ zF=lvdW_SvMjVHRJAEM+@TYgW38J;vVJbA(7+0$=(ohRqqInLei-IL7l$gbom^Y65$ zndkJ9JEJQ+u|Q{AbR|zgFnMmdGrGca6X-k?UCHw#*myd3`XNW1oj{)isq96X$z?2loO`LEH;@%7V>2nN`c{Q|Eo*X)wdn6+Ot)6Kp)uoaMdK zI`2F61p0JE57#4@JVndvljeQlv6(SXS@a-JMX>R#?^-5I<4*L%K@Ab;${H;>Kuu>ay zN*$QTHC$#sGd$Q*YL~fdc;rE;Bf&!t&ErYEIZB?7Y|``13{QGI`W>E}VB^Wp>#0HV zq`agj%?yvv3{O$8@m!Vk<1l%YnOB}G#SD+f3{OEYdDircL!R0~(o<)Kr^O6UN3ij< z%X-rz&z9A>Vs);GuGINbu<>l~>-VtpZ#FrP;*OX{b|sIW?0kB{oikSFoYh%&B~Os- z?4EOHbjALpt{XA@&L$oFATV z(Sznui_v@dT=_q}IzxRjybthTU*IWz?BO5#I~< SI_g|)>^SBbXf}4-o8mvXSRuOr delta 1391 zcmZ9MF-QVo6vw~%E;W~gmJkf5xJ5b$Oo%`WLWt;~rLifS!oi`jBB&`^3L!Elk)TcR zHl4z;skMfnkRZ1j8v5Sd`^&o`5`h<1oWh6l^@LvhF3xqs+W=uLLtZHZwd0!Q|P|uNHZ(*211TGdvzMJOjbT^R%lg zHhB&rovV?~SE4I*ZVEP@!xR1CcmBxu zw5ORTcE_F36`mA#gvSwG$x{?eo;G(zS9qF{&VA99JkNrSXW>!z^3>VOg!}ZFG0z(_ zz8B6Z@3ru*@BMR#bBB4*3!Z}LLGzRa(_UZP2R+6f-hb?2#yn-gNzqBt+)aRr-so|dejPnGwD=ZG1ey68ckwqWCF ztysZ5t@6HOPoz&>^zc1`$+KYveQe$r9)}t8xS|Jn_5>Tx%cgbi-%}@YPYaQIivJ_N U7w&b?`MgoH%rn(()M5|Cf3SEUKL7v# From d9deeda477a07c6c7ccabe9a5cfa5dd2bbd2e396 Mon Sep 17 00:00:00 2001 From: Nikola Grcevski Date: Fri, 31 May 2024 15:58:45 -0400 Subject: [PATCH 14/16] Fix makefile --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index b0beaf703..18f00e1bc 100644 --- a/Makefile +++ b/Makefile @@ -293,7 +293,7 @@ oats-test-kafka: oats-prereq cd test/oats/kafka && TESTCASE_TIMEOUT=120s TESTCASE_BASE_PATH=./yaml $(GINKGO) -v -r .PHONY: oats-test -oats-test: oats-test-sql oats-test-sql-statement oats-test-sql-other-langs oats-test-redis-other-langs oats-test-kafka-other-langs +oats-test: oats-test-sql oats-test-sql-statement oats-test-sql-other-langs oats-test-redis-other-langs oats-test-kafka $(MAKE) itest-coverage-data .PHONY: oats-test-debug From 26ff3d8050ba9e9d083c033c52f1a5a8eb9a7b46 Mon Sep 17 00:00:00 2001 From: Marc Tuduri Date: Mon, 3 Jun 2024 11:20:18 +0200 Subject: [PATCH 15/16] Fix attrs generation --- pkg/internal/request/span_getters.go | 14 ++++++++++++++ .../kafka/configs/instrumenter-config-traces.yml | 5 ----- test/oats/kafka/yaml/oats_kafka.yaml | 8 ++------ 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/pkg/internal/request/span_getters.go b/pkg/internal/request/span_getters.go index dde0529a1..4a84af943 100644 --- a/pkg/internal/request/span_getters.go +++ b/pkg/internal/request/span_getters.go @@ -40,6 +40,20 @@ func SpanOTELGetters(name attr.Name) (attributes.Getter[*Span, attribute.KeyValu getter = func(s *Span) attribute.KeyValue { return semconv.ServiceName(s.ServiceID.Name) } case attr.DBOperation: getter = func(span *Span) attribute.KeyValue { return DBOperationName(span.Method) } + case attr.MessagingSystem: + getter = func(span *Span) attribute.KeyValue { + if span.Type == EventTypeKafkaClient { + return semconv.MessagingSystem("kafka") + } + return semconv.MessagingSystem("unknown") + } + case attr.MessagingDestination: + getter = func(span *Span) attribute.KeyValue { + if span.Type == EventTypeKafkaClient { + return semconv.MessagingDestinationName(span.Path) + } + return semconv.MessagingDestinationName("") + } } // default: unlike the Prometheus getters, we don't check here for service name nor k8s metadata // because they are already attributes of the Resource instead of the attributes. diff --git a/test/oats/kafka/configs/instrumenter-config-traces.yml b/test/oats/kafka/configs/instrumenter-config-traces.yml index b8346b54e..a58cbf63b 100644 --- a/test/oats/kafka/configs/instrumenter-config-traces.yml +++ b/test/oats/kafka/configs/instrumenter-config-traces.yml @@ -5,8 +5,3 @@ routes: - /greeting - /sqltest unmatched: path -attributes: - select: - traces: - include: - - db.statement diff --git a/test/oats/kafka/yaml/oats_kafka.yaml b/test/oats/kafka/yaml/oats_kafka.yaml index 45f4f3a62..57ba7c947 100644 --- a/test/oats/kafka/yaml/oats_kafka.yaml +++ b/test/oats/kafka/yaml/oats_kafka.yaml @@ -23,19 +23,15 @@ expected: messaging.operation.type: publish messaging.system: kafka metrics: - - promql: 'messaging_publish_duration_count' + - promql: 'messaging_publish_duration_count{messaging_system="kafka", messaging_destination_name="my-topic"}' value: "> 0" - promql: 'messaging_publish_duration_bucket{le="0"}' value: "== 0" - promql: 'messaging_publish_duration_bucket{le="10"}' value: "> 0" - - promql: 'messaging_publish_duration_count' - value: "> 0" - - promql: 'messaging_process_duration_count' + - promql: 'messaging_process_duration_count{messaging_system="kafka", messaging_destination_name="my-topic"}' value: "> 0" - promql: 'messaging_process_duration_bucket{le="0"}' value: "== 0" - promql: 'messaging_process_duration_bucket{le="10"}' value: "> 0" - - promql: 'messaging_process_duration_count' - value: "> 0" From d4c9563c46940b8aa8632641fa9305083c3283eb Mon Sep 17 00:00:00 2001 From: Marc Tuduri Date: Mon, 3 Jun 2024 12:11:50 +0200 Subject: [PATCH 16/16] Add docs --- docs/sources/metrics.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/docs/sources/metrics.md b/docs/sources/metrics.md index ad8b1efa0..6a9e8c452 100644 --- a/docs/sources/metrics.md +++ b/docs/sources/metrics.md @@ -25,25 +25,25 @@ The following table describes the exported metrics in both OpenTelemetry and Pro | Application | `rpc.server.duration` | `rpc_server_duration_seconds` | Histogram | seconds | Duration of RPC service calls from the server side | | Application | `sql.client.duration` | `sql_client_duration_seconds` | Histogram | seconds | Duration of SQL client operations (Experimental) | | Application | `redis.client.duration` | `redis_client_duration_seconds` | Histogram | seconds | Duration of Redis client operations (Experimental) | +| Application | `messaging.publish.duration` | `messaging_publish_duration` | Histogram | seconds | Duration of Messaging (Kafka) publish operations (Experimental) | +| Application | `messaging.process.duration` | `messaging_process_duration` | Histogram | seconds | Duration of Messaging (Kafka) process operations (Experimental) | | Network | `beyla.network.flow.bytes` | `beyla_network_flow_bytes` | Counter | bytes | Bytes submitted from a source network endpoint to a destination network endpoint | Beyla can also export [Span metrics](/docs/tempo/latest/metrics-generator/span_metrics/) and -[Service graph metrics](/docs/tempo/latest/metrics-generator/service-graph-view/), which can be enabled via the +[Service graph metrics](/docs/tempo/latest/metrics-generator/service-graph-view/), which you can enable via the [features]({{< relref "./configure/options.md" >}}) configuration option. ## Attributes of Beyla metrics -For the sake of brevity, only the OTEL `dot.notation` of the metrics and attributes is listed, but -the metrics and attributes are exposed `underscore_notation` when a Prometheus exporter is used. +For the sake of brevity, the metrics and attributes in this list use the OTEL `dot.notation`. When using the Prometheus exporter, the metrics use `underscore_notation`. -In order to hide attributes that are shown by default, or show attributes that are hidden by -default, check the `attributes`->`select` section in the [configuration documentation]({{< relref "./configure/options.md" >}}). +In order to configure which attributes to show or which attributes to hide, check the `attributes`->`select` section in the [configuration documentation]({{< relref "./configure/options.md" >}}). | Metrics | Name | Default | |--------------------------------|-----------------------------|-----------------------------------------------| | Application (all) | `http.request.method` | shown | | Application (all) | `http.response.status_code` | shown | -| Application (all) | `http.route` | shown if `routes` configuration is defined | +| Application (all) | `http.route` | shown if `routes` configuration section exists | | Application (all) | `k8s.daemonset.name` | shown if `attributes.kubernetes.enable` | | Application (all) | `k8s.deployment.name` | shown if `attributes.kubernetes.enable` | | Application (all) | `k8s.namespace.name` | shown if `attributes.kubernetes.enable` | @@ -66,9 +66,11 @@ default, check the `attributes`->`select` section in the [configuration document | `beyla.network.flow.bytes` | `beyla.ip` | hidden | | `db.client.operation.duration` | `db.operation.name` | shown | | `db.client.operation.duration` | `db.collection.name` | hidden | +| `message.publish.duration` | `messaging.system` | shown | +| `message.publish.duration` | `messaging.destination.name`| shown | | `beyla.network.flow.bytes` | `direction` | hidden | | `beyla.network.flow.bytes` | `dst.address` | hidden | -| `beyla.network.flow.bytes` | `dst.cidr` | shown if the `cidrs` configuration is defined | +| `beyla.network.flow.bytes` | `dst.cidr` | shown if the `cidrs` configuration section exists | | `beyla.network.flow.bytes` | `dst.name` | hidden | | `beyla.network.flow.bytes` | `dst.port` | hidden | | `beyla.network.flow.bytes` | `iface` | hidden | @@ -87,7 +89,7 @@ default, check the `attributes`->`select` section in the [configuration document | `beyla.network.flow.bytes` | `k8s.src.owner.type` | hidden | | `beyla.network.flow.bytes` | `k8s.src.type` | hidden | | `beyla.network.flow.bytes` | `src.address` | hidden | -| `beyla.network.flow.bytes` | `src.cidr` | shown if the `cidrs` configuration is defined | +| `beyla.network.flow.bytes` | `src.cidr` | shown if the `cidrs` configuration section exists | | `beyla.network.flow.bytes` | `src.name` | hidden | | `beyla.network.flow.bytes` | `src.port` | hidden | | `beyla.network.flow.bytes` | `transport` | hidden |