// Copyright 2022 The Pigweed Authors
//
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy of
// the License at
//
//     https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations under
// the License.

pw.protobuf.test.Pigweed.error_message max_size:64
pw.protobuf.test.Pigweed.data max_size:8 fixed_size:true
pw.protobuf.test.Pigweed.special_property use_callback:true

pw.protobuf.test.Pigweed.device_info use_callback:true
pw.protobuf.test.DeviceInfo.device_name max_size:32

pw.protobuf.test.Pigweed.Protobuf.Compiler.file_name max_size:48

pw.protobuf.test.Function.Message.content max_size:128

pw.protobuf.test.KeyValuePair.* max_size:32
