Skip to main content

gf_metadata/
fonts_public.rs

1// This file is generated by rust-protobuf 3.7.2. Do not edit
2// .proto file is parsed by protoc --rs_out=...
3// @generated
4
5// https://github.com/rust-lang/rust-clippy/issues/702
6#![allow(unknown_lints)]
7#![allow(clippy::all)]
8
9#![allow(unused_attributes)]
10#![cfg_attr(rustfmt, rustfmt::skip)]
11
12#![allow(dead_code)]
13#![allow(missing_docs)]
14#![allow(non_camel_case_types)]
15#![allow(non_snake_case)]
16#![allow(non_upper_case_globals)]
17#![allow(trivial_casts)]
18#![allow(unused_results)]
19#![allow(unused_mut)]
20
21//! Generated file from `fonts_public.proto`
22
23/// Generated files are compatible only with the same version
24/// of protobuf runtime.
25const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_3_7_2;
26
27// @@protoc_insertion_point(message:google.fonts_public.FamilyProto)
28#[derive(PartialEq,Clone,Default,Debug)]
29pub struct FamilyProto {
30    // message fields
31    // @@protoc_insertion_point(field:google.fonts_public.FamilyProto.name)
32    pub name: ::std::option::Option<::std::string::String>,
33    // @@protoc_insertion_point(field:google.fonts_public.FamilyProto.designer)
34    pub designer: ::std::option::Option<::std::string::String>,
35    // @@protoc_insertion_point(field:google.fonts_public.FamilyProto.license)
36    pub license: ::std::option::Option<::std::string::String>,
37    ///  A mutually-exclusive category for each font. The categories are: Serif,
38    ///  Sans Serif, Display, Handwriting and Monospace. Being mutually exclusive is
39    ///  a significant deficiency as, for example, most Display fonts are typically
40    ///  Serif or Sans Serif and that is not captured.
41    ///
42    ///  For searching, this field is replaced by stroke and classifications (see
43    ///  below), however, this field persists (it's required after all) and will
44    ///  continue to be populated in the onboarding process.
45    ///
46    ///  This is repeated field, yet Google Fonts only uses the last entry so
47    ///  multiple entries should be avoided.
48    // @@protoc_insertion_point(field:google.fonts_public.FamilyProto.category)
49    pub category: ::std::vec::Vec<::std::string::String>,
50    // @@protoc_insertion_point(field:google.fonts_public.FamilyProto.date_added)
51    pub date_added: ::std::option::Option<::std::string::String>,
52    // @@protoc_insertion_point(field:google.fonts_public.FamilyProto.fonts)
53    pub fonts: ::std::vec::Vec<FontProto>,
54    // @@protoc_insertion_point(field:google.fonts_public.FamilyProto.aliases)
55    pub aliases: ::std::vec::Vec<::std::string::String>,
56    // @@protoc_insertion_point(field:google.fonts_public.FamilyProto.subsets)
57    pub subsets: ::std::vec::Vec<::std::string::String>,
58    // @@protoc_insertion_point(field:google.fonts_public.FamilyProto.ttf_autohint_args)
59    pub ttf_autohint_args: ::std::option::Option<::std::string::String>,
60    // @@protoc_insertion_point(field:google.fonts_public.FamilyProto.axes)
61    pub axes: ::std::vec::Vec<AxisSegmentProto>,
62    // @@protoc_insertion_point(field:google.fonts_public.FamilyProto.registry_default_overrides)
63    pub registry_default_overrides: ::std::collections::HashMap<::std::string::String, f32>,
64    // @@protoc_insertion_point(field:google.fonts_public.FamilyProto.source)
65    pub source: ::protobuf::MessageField<SourceProto>,
66    // @@protoc_insertion_point(field:google.fonts_public.FamilyProto.is_noto)
67    pub is_noto: ::std::option::Option<bool>,
68    // @@protoc_insertion_point(field:google.fonts_public.FamilyProto.languages)
69    pub languages: ::std::vec::Vec<::std::string::String>,
70    // @@protoc_insertion_point(field:google.fonts_public.FamilyProto.fallbacks)
71    pub fallbacks: ::std::vec::Vec<FamilyFallbackProto>,
72    // @@protoc_insertion_point(field:google.fonts_public.FamilyProto.sample_glyphs)
73    pub sample_glyphs: ::std::collections::HashMap<::std::string::String, ::std::string::String>,
74    // @@protoc_insertion_point(field:google.fonts_public.FamilyProto.sample_text)
75    pub sample_text: ::protobuf::MessageField<SampleTextProto>,
76    // @@protoc_insertion_point(field:google.fonts_public.FamilyProto.display_name)
77    pub display_name: ::std::option::Option<::std::string::String>,
78    // @@protoc_insertion_point(field:google.fonts_public.FamilyProto.ordered_sample_glyphs)
79    pub ordered_sample_glyphs: ::std::vec::Vec<GlyphGroupProto>,
80    ///  Optional url for more info about the font.
81    // @@protoc_insertion_point(field:google.fonts_public.FamilyProto.minisite_url)
82    pub minisite_url: ::std::option::Option<::std::string::String>,
83    ///  The script to use when picking sample text. See the Script spanner table.
84    // @@protoc_insertion_point(field:google.fonts_public.FamilyProto.primary_script)
85    pub primary_script: ::std::option::Option<::std::string::String>,
86    // @@protoc_insertion_point(field:google.fonts_public.FamilyProto.primary_language)
87    pub primary_language: ::std::option::Option<::std::string::String>,
88    ///  Stroke of the letter forms: serif, sans serif, etc. Stroke is mutually
89    ///  exclusive. The values are the string names from the Stroke enum or the
90    ///  empty string.
91    // @@protoc_insertion_point(field:google.fonts_public.FamilyProto.stroke)
92    pub stroke: ::std::option::Option<::std::string::String>,
93    ///  A family's broad classifications: display, handwriting, monospace, etc.
94    ///  The values are the string names from the Classification enum.
95    // @@protoc_insertion_point(field:google.fonts_public.FamilyProto.classifications)
96    pub classifications: ::std::vec::Vec<::std::string::String>,
97    // special fields
98    // @@protoc_insertion_point(special_field:google.fonts_public.FamilyProto.special_fields)
99    pub special_fields: ::protobuf::SpecialFields,
100}
101
102impl<'a> ::std::default::Default for &'a FamilyProto {
103    fn default() -> &'a FamilyProto {
104        <FamilyProto as ::protobuf::Message>::default_instance()
105    }
106}
107
108impl FamilyProto {
109    pub fn new() -> FamilyProto {
110        ::std::default::Default::default()
111    }
112
113    // required string name = 1;
114
115    pub fn name(&self) -> &str {
116        match self.name.as_ref() {
117            Some(v) => v,
118            None => "",
119        }
120    }
121
122    pub fn clear_name(&mut self) {
123        self.name = ::std::option::Option::None;
124    }
125
126    pub fn has_name(&self) -> bool {
127        self.name.is_some()
128    }
129
130    // Param is passed by value, moved
131    pub fn set_name(&mut self, v: ::std::string::String) {
132        self.name = ::std::option::Option::Some(v);
133    }
134
135    // Mutable pointer to the field.
136    // If field is not initialized, it is initialized with default value first.
137    pub fn mut_name(&mut self) -> &mut ::std::string::String {
138        if self.name.is_none() {
139            self.name = ::std::option::Option::Some(::std::string::String::new());
140        }
141        self.name.as_mut().unwrap()
142    }
143
144    // Take field
145    pub fn take_name(&mut self) -> ::std::string::String {
146        self.name.take().unwrap_or_else(|| ::std::string::String::new())
147    }
148
149    // required string designer = 2;
150
151    pub fn designer(&self) -> &str {
152        match self.designer.as_ref() {
153            Some(v) => v,
154            None => "",
155        }
156    }
157
158    pub fn clear_designer(&mut self) {
159        self.designer = ::std::option::Option::None;
160    }
161
162    pub fn has_designer(&self) -> bool {
163        self.designer.is_some()
164    }
165
166    // Param is passed by value, moved
167    pub fn set_designer(&mut self, v: ::std::string::String) {
168        self.designer = ::std::option::Option::Some(v);
169    }
170
171    // Mutable pointer to the field.
172    // If field is not initialized, it is initialized with default value first.
173    pub fn mut_designer(&mut self) -> &mut ::std::string::String {
174        if self.designer.is_none() {
175            self.designer = ::std::option::Option::Some(::std::string::String::new());
176        }
177        self.designer.as_mut().unwrap()
178    }
179
180    // Take field
181    pub fn take_designer(&mut self) -> ::std::string::String {
182        self.designer.take().unwrap_or_else(|| ::std::string::String::new())
183    }
184
185    // required string license = 3;
186
187    pub fn license(&self) -> &str {
188        match self.license.as_ref() {
189            Some(v) => v,
190            None => "",
191        }
192    }
193
194    pub fn clear_license(&mut self) {
195        self.license = ::std::option::Option::None;
196    }
197
198    pub fn has_license(&self) -> bool {
199        self.license.is_some()
200    }
201
202    // Param is passed by value, moved
203    pub fn set_license(&mut self, v: ::std::string::String) {
204        self.license = ::std::option::Option::Some(v);
205    }
206
207    // Mutable pointer to the field.
208    // If field is not initialized, it is initialized with default value first.
209    pub fn mut_license(&mut self) -> &mut ::std::string::String {
210        if self.license.is_none() {
211            self.license = ::std::option::Option::Some(::std::string::String::new());
212        }
213        self.license.as_mut().unwrap()
214    }
215
216    // Take field
217    pub fn take_license(&mut self) -> ::std::string::String {
218        self.license.take().unwrap_or_else(|| ::std::string::String::new())
219    }
220
221    // required string date_added = 5;
222
223    pub fn date_added(&self) -> &str {
224        match self.date_added.as_ref() {
225            Some(v) => v,
226            None => "",
227        }
228    }
229
230    pub fn clear_date_added(&mut self) {
231        self.date_added = ::std::option::Option::None;
232    }
233
234    pub fn has_date_added(&self) -> bool {
235        self.date_added.is_some()
236    }
237
238    // Param is passed by value, moved
239    pub fn set_date_added(&mut self, v: ::std::string::String) {
240        self.date_added = ::std::option::Option::Some(v);
241    }
242
243    // Mutable pointer to the field.
244    // If field is not initialized, it is initialized with default value first.
245    pub fn mut_date_added(&mut self) -> &mut ::std::string::String {
246        if self.date_added.is_none() {
247            self.date_added = ::std::option::Option::Some(::std::string::String::new());
248        }
249        self.date_added.as_mut().unwrap()
250    }
251
252    // Take field
253    pub fn take_date_added(&mut self) -> ::std::string::String {
254        self.date_added.take().unwrap_or_else(|| ::std::string::String::new())
255    }
256
257    // optional string ttf_autohint_args = 9;
258
259    pub fn ttf_autohint_args(&self) -> &str {
260        match self.ttf_autohint_args.as_ref() {
261            Some(v) => v,
262            None => "",
263        }
264    }
265
266    pub fn clear_ttf_autohint_args(&mut self) {
267        self.ttf_autohint_args = ::std::option::Option::None;
268    }
269
270    pub fn has_ttf_autohint_args(&self) -> bool {
271        self.ttf_autohint_args.is_some()
272    }
273
274    // Param is passed by value, moved
275    pub fn set_ttf_autohint_args(&mut self, v: ::std::string::String) {
276        self.ttf_autohint_args = ::std::option::Option::Some(v);
277    }
278
279    // Mutable pointer to the field.
280    // If field is not initialized, it is initialized with default value first.
281    pub fn mut_ttf_autohint_args(&mut self) -> &mut ::std::string::String {
282        if self.ttf_autohint_args.is_none() {
283            self.ttf_autohint_args = ::std::option::Option::Some(::std::string::String::new());
284        }
285        self.ttf_autohint_args.as_mut().unwrap()
286    }
287
288    // Take field
289    pub fn take_ttf_autohint_args(&mut self) -> ::std::string::String {
290        self.ttf_autohint_args.take().unwrap_or_else(|| ::std::string::String::new())
291    }
292
293    // optional bool is_noto = 13;
294
295    pub fn is_noto(&self) -> bool {
296        self.is_noto.unwrap_or(false)
297    }
298
299    pub fn clear_is_noto(&mut self) {
300        self.is_noto = ::std::option::Option::None;
301    }
302
303    pub fn has_is_noto(&self) -> bool {
304        self.is_noto.is_some()
305    }
306
307    // Param is passed by value, moved
308    pub fn set_is_noto(&mut self, v: bool) {
309        self.is_noto = ::std::option::Option::Some(v);
310    }
311
312    // optional string display_name = 18;
313
314    pub fn display_name(&self) -> &str {
315        match self.display_name.as_ref() {
316            Some(v) => v,
317            None => "",
318        }
319    }
320
321    pub fn clear_display_name(&mut self) {
322        self.display_name = ::std::option::Option::None;
323    }
324
325    pub fn has_display_name(&self) -> bool {
326        self.display_name.is_some()
327    }
328
329    // Param is passed by value, moved
330    pub fn set_display_name(&mut self, v: ::std::string::String) {
331        self.display_name = ::std::option::Option::Some(v);
332    }
333
334    // Mutable pointer to the field.
335    // If field is not initialized, it is initialized with default value first.
336    pub fn mut_display_name(&mut self) -> &mut ::std::string::String {
337        if self.display_name.is_none() {
338            self.display_name = ::std::option::Option::Some(::std::string::String::new());
339        }
340        self.display_name.as_mut().unwrap()
341    }
342
343    // Take field
344    pub fn take_display_name(&mut self) -> ::std::string::String {
345        self.display_name.take().unwrap_or_else(|| ::std::string::String::new())
346    }
347
348    // optional string minisite_url = 20;
349
350    pub fn minisite_url(&self) -> &str {
351        match self.minisite_url.as_ref() {
352            Some(v) => v,
353            None => "",
354        }
355    }
356
357    pub fn clear_minisite_url(&mut self) {
358        self.minisite_url = ::std::option::Option::None;
359    }
360
361    pub fn has_minisite_url(&self) -> bool {
362        self.minisite_url.is_some()
363    }
364
365    // Param is passed by value, moved
366    pub fn set_minisite_url(&mut self, v: ::std::string::String) {
367        self.minisite_url = ::std::option::Option::Some(v);
368    }
369
370    // Mutable pointer to the field.
371    // If field is not initialized, it is initialized with default value first.
372    pub fn mut_minisite_url(&mut self) -> &mut ::std::string::String {
373        if self.minisite_url.is_none() {
374            self.minisite_url = ::std::option::Option::Some(::std::string::String::new());
375        }
376        self.minisite_url.as_mut().unwrap()
377    }
378
379    // Take field
380    pub fn take_minisite_url(&mut self) -> ::std::string::String {
381        self.minisite_url.take().unwrap_or_else(|| ::std::string::String::new())
382    }
383
384    // optional string primary_script = 21;
385
386    pub fn primary_script(&self) -> &str {
387        match self.primary_script.as_ref() {
388            Some(v) => v,
389            None => "",
390        }
391    }
392
393    pub fn clear_primary_script(&mut self) {
394        self.primary_script = ::std::option::Option::None;
395    }
396
397    pub fn has_primary_script(&self) -> bool {
398        self.primary_script.is_some()
399    }
400
401    // Param is passed by value, moved
402    pub fn set_primary_script(&mut self, v: ::std::string::String) {
403        self.primary_script = ::std::option::Option::Some(v);
404    }
405
406    // Mutable pointer to the field.
407    // If field is not initialized, it is initialized with default value first.
408    pub fn mut_primary_script(&mut self) -> &mut ::std::string::String {
409        if self.primary_script.is_none() {
410            self.primary_script = ::std::option::Option::Some(::std::string::String::new());
411        }
412        self.primary_script.as_mut().unwrap()
413    }
414
415    // Take field
416    pub fn take_primary_script(&mut self) -> ::std::string::String {
417        self.primary_script.take().unwrap_or_else(|| ::std::string::String::new())
418    }
419
420    // optional string primary_language = 22;
421
422    pub fn primary_language(&self) -> &str {
423        match self.primary_language.as_ref() {
424            Some(v) => v,
425            None => "",
426        }
427    }
428
429    pub fn clear_primary_language(&mut self) {
430        self.primary_language = ::std::option::Option::None;
431    }
432
433    pub fn has_primary_language(&self) -> bool {
434        self.primary_language.is_some()
435    }
436
437    // Param is passed by value, moved
438    pub fn set_primary_language(&mut self, v: ::std::string::String) {
439        self.primary_language = ::std::option::Option::Some(v);
440    }
441
442    // Mutable pointer to the field.
443    // If field is not initialized, it is initialized with default value first.
444    pub fn mut_primary_language(&mut self) -> &mut ::std::string::String {
445        if self.primary_language.is_none() {
446            self.primary_language = ::std::option::Option::Some(::std::string::String::new());
447        }
448        self.primary_language.as_mut().unwrap()
449    }
450
451    // Take field
452    pub fn take_primary_language(&mut self) -> ::std::string::String {
453        self.primary_language.take().unwrap_or_else(|| ::std::string::String::new())
454    }
455
456    // optional string stroke = 23;
457
458    pub fn stroke(&self) -> &str {
459        match self.stroke.as_ref() {
460            Some(v) => v,
461            None => "",
462        }
463    }
464
465    pub fn clear_stroke(&mut self) {
466        self.stroke = ::std::option::Option::None;
467    }
468
469    pub fn has_stroke(&self) -> bool {
470        self.stroke.is_some()
471    }
472
473    // Param is passed by value, moved
474    pub fn set_stroke(&mut self, v: ::std::string::String) {
475        self.stroke = ::std::option::Option::Some(v);
476    }
477
478    // Mutable pointer to the field.
479    // If field is not initialized, it is initialized with default value first.
480    pub fn mut_stroke(&mut self) -> &mut ::std::string::String {
481        if self.stroke.is_none() {
482            self.stroke = ::std::option::Option::Some(::std::string::String::new());
483        }
484        self.stroke.as_mut().unwrap()
485    }
486
487    // Take field
488    pub fn take_stroke(&mut self) -> ::std::string::String {
489        self.stroke.take().unwrap_or_else(|| ::std::string::String::new())
490    }
491
492    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
493        let mut fields = ::std::vec::Vec::with_capacity(24);
494        let mut oneofs = ::std::vec::Vec::with_capacity(0);
495        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
496            "name",
497            |m: &FamilyProto| { &m.name },
498            |m: &mut FamilyProto| { &mut m.name },
499        ));
500        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
501            "designer",
502            |m: &FamilyProto| { &m.designer },
503            |m: &mut FamilyProto| { &mut m.designer },
504        ));
505        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
506            "license",
507            |m: &FamilyProto| { &m.license },
508            |m: &mut FamilyProto| { &mut m.license },
509        ));
510        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
511            "category",
512            |m: &FamilyProto| { &m.category },
513            |m: &mut FamilyProto| { &mut m.category },
514        ));
515        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
516            "date_added",
517            |m: &FamilyProto| { &m.date_added },
518            |m: &mut FamilyProto| { &mut m.date_added },
519        ));
520        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
521            "fonts",
522            |m: &FamilyProto| { &m.fonts },
523            |m: &mut FamilyProto| { &mut m.fonts },
524        ));
525        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
526            "aliases",
527            |m: &FamilyProto| { &m.aliases },
528            |m: &mut FamilyProto| { &mut m.aliases },
529        ));
530        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
531            "subsets",
532            |m: &FamilyProto| { &m.subsets },
533            |m: &mut FamilyProto| { &mut m.subsets },
534        ));
535        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
536            "ttf_autohint_args",
537            |m: &FamilyProto| { &m.ttf_autohint_args },
538            |m: &mut FamilyProto| { &mut m.ttf_autohint_args },
539        ));
540        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
541            "axes",
542            |m: &FamilyProto| { &m.axes },
543            |m: &mut FamilyProto| { &mut m.axes },
544        ));
545        fields.push(::protobuf::reflect::rt::v2::make_map_simpler_accessor_new::<_, _>(
546            "registry_default_overrides",
547            |m: &FamilyProto| { &m.registry_default_overrides },
548            |m: &mut FamilyProto| { &mut m.registry_default_overrides },
549        ));
550        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, SourceProto>(
551            "source",
552            |m: &FamilyProto| { &m.source },
553            |m: &mut FamilyProto| { &mut m.source },
554        ));
555        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
556            "is_noto",
557            |m: &FamilyProto| { &m.is_noto },
558            |m: &mut FamilyProto| { &mut m.is_noto },
559        ));
560        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
561            "languages",
562            |m: &FamilyProto| { &m.languages },
563            |m: &mut FamilyProto| { &mut m.languages },
564        ));
565        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
566            "fallbacks",
567            |m: &FamilyProto| { &m.fallbacks },
568            |m: &mut FamilyProto| { &mut m.fallbacks },
569        ));
570        fields.push(::protobuf::reflect::rt::v2::make_map_simpler_accessor_new::<_, _>(
571            "sample_glyphs",
572            |m: &FamilyProto| { &m.sample_glyphs },
573            |m: &mut FamilyProto| { &mut m.sample_glyphs },
574        ));
575        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, SampleTextProto>(
576            "sample_text",
577            |m: &FamilyProto| { &m.sample_text },
578            |m: &mut FamilyProto| { &mut m.sample_text },
579        ));
580        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
581            "display_name",
582            |m: &FamilyProto| { &m.display_name },
583            |m: &mut FamilyProto| { &mut m.display_name },
584        ));
585        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
586            "ordered_sample_glyphs",
587            |m: &FamilyProto| { &m.ordered_sample_glyphs },
588            |m: &mut FamilyProto| { &mut m.ordered_sample_glyphs },
589        ));
590        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
591            "minisite_url",
592            |m: &FamilyProto| { &m.minisite_url },
593            |m: &mut FamilyProto| { &mut m.minisite_url },
594        ));
595        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
596            "primary_script",
597            |m: &FamilyProto| { &m.primary_script },
598            |m: &mut FamilyProto| { &mut m.primary_script },
599        ));
600        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
601            "primary_language",
602            |m: &FamilyProto| { &m.primary_language },
603            |m: &mut FamilyProto| { &mut m.primary_language },
604        ));
605        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
606            "stroke",
607            |m: &FamilyProto| { &m.stroke },
608            |m: &mut FamilyProto| { &mut m.stroke },
609        ));
610        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
611            "classifications",
612            |m: &FamilyProto| { &m.classifications },
613            |m: &mut FamilyProto| { &mut m.classifications },
614        ));
615        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<FamilyProto>(
616            "FamilyProto",
617            fields,
618            oneofs,
619        )
620    }
621}
622
623impl ::protobuf::Message for FamilyProto {
624    const NAME: &'static str = "FamilyProto";
625
626    fn is_initialized(&self) -> bool {
627        if self.name.is_none() {
628            return false;
629        }
630        if self.designer.is_none() {
631            return false;
632        }
633        if self.license.is_none() {
634            return false;
635        }
636        if self.date_added.is_none() {
637            return false;
638        }
639        for v in &self.fonts {
640            if !v.is_initialized() {
641                return false;
642            }
643        };
644        for v in &self.axes {
645            if !v.is_initialized() {
646                return false;
647            }
648        };
649        // TODO: check map values are initialized
650        for v in &self.source {
651            if !v.is_initialized() {
652                return false;
653            }
654        };
655        for v in &self.fallbacks {
656            if !v.is_initialized() {
657                return false;
658            }
659        };
660        // TODO: check map values are initialized
661        for v in &self.sample_text {
662            if !v.is_initialized() {
663                return false;
664            }
665        };
666        for v in &self.ordered_sample_glyphs {
667            if !v.is_initialized() {
668                return false;
669            }
670        };
671        true
672    }
673
674    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
675        while let Some(tag) = is.read_raw_tag_or_eof()? {
676            match tag {
677                10 => {
678                    self.name = ::std::option::Option::Some(is.read_string()?);
679                },
680                18 => {
681                    self.designer = ::std::option::Option::Some(is.read_string()?);
682                },
683                26 => {
684                    self.license = ::std::option::Option::Some(is.read_string()?);
685                },
686                34 => {
687                    self.category.push(is.read_string()?);
688                },
689                42 => {
690                    self.date_added = ::std::option::Option::Some(is.read_string()?);
691                },
692                50 => {
693                    self.fonts.push(is.read_message()?);
694                },
695                58 => {
696                    self.aliases.push(is.read_string()?);
697                },
698                66 => {
699                    self.subsets.push(is.read_string()?);
700                },
701                74 => {
702                    self.ttf_autohint_args = ::std::option::Option::Some(is.read_string()?);
703                },
704                82 => {
705                    self.axes.push(is.read_message()?);
706                },
707                90 => {
708                    let len = is.read_raw_varint32()?;
709                    let old_limit = is.push_limit(len as u64)?;
710                    let mut key = ::std::default::Default::default();
711                    let mut value = ::std::default::Default::default();
712                    while let Some(tag) = is.read_raw_tag_or_eof()? {
713                        match tag {
714                            10 => key = is.read_string()?,
715                            21 => value = is.read_float()?,
716                            _ => ::protobuf::rt::skip_field_for_tag(tag, is)?,
717                        };
718                    }
719                    is.pop_limit(old_limit);
720                    self.registry_default_overrides.insert(key, value);
721                },
722                98 => {
723                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.source)?;
724                },
725                104 => {
726                    self.is_noto = ::std::option::Option::Some(is.read_bool()?);
727                },
728                114 => {
729                    self.languages.push(is.read_string()?);
730                },
731                122 => {
732                    self.fallbacks.push(is.read_message()?);
733                },
734                130 => {
735                    let len = is.read_raw_varint32()?;
736                    let old_limit = is.push_limit(len as u64)?;
737                    let mut key = ::std::default::Default::default();
738                    let mut value = ::std::default::Default::default();
739                    while let Some(tag) = is.read_raw_tag_or_eof()? {
740                        match tag {
741                            10 => key = is.read_string()?,
742                            18 => value = is.read_string()?,
743                            _ => ::protobuf::rt::skip_field_for_tag(tag, is)?,
744                        };
745                    }
746                    is.pop_limit(old_limit);
747                    self.sample_glyphs.insert(key, value);
748                },
749                138 => {
750                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.sample_text)?;
751                },
752                146 => {
753                    self.display_name = ::std::option::Option::Some(is.read_string()?);
754                },
755                154 => {
756                    self.ordered_sample_glyphs.push(is.read_message()?);
757                },
758                162 => {
759                    self.minisite_url = ::std::option::Option::Some(is.read_string()?);
760                },
761                170 => {
762                    self.primary_script = ::std::option::Option::Some(is.read_string()?);
763                },
764                178 => {
765                    self.primary_language = ::std::option::Option::Some(is.read_string()?);
766                },
767                186 => {
768                    self.stroke = ::std::option::Option::Some(is.read_string()?);
769                },
770                202 => {
771                    self.classifications.push(is.read_string()?);
772                },
773                tag => {
774                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
775                },
776            };
777        }
778        ::std::result::Result::Ok(())
779    }
780
781    // Compute sizes of nested messages
782    #[allow(unused_variables)]
783    fn compute_size(&self) -> u64 {
784        let mut my_size = 0;
785        if let Some(v) = self.name.as_ref() {
786            my_size += ::protobuf::rt::string_size(1, &v);
787        }
788        if let Some(v) = self.designer.as_ref() {
789            my_size += ::protobuf::rt::string_size(2, &v);
790        }
791        if let Some(v) = self.license.as_ref() {
792            my_size += ::protobuf::rt::string_size(3, &v);
793        }
794        for value in &self.category {
795            my_size += ::protobuf::rt::string_size(4, &value);
796        };
797        if let Some(v) = self.date_added.as_ref() {
798            my_size += ::protobuf::rt::string_size(5, &v);
799        }
800        for value in &self.fonts {
801            let len = value.compute_size();
802            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
803        };
804        for value in &self.aliases {
805            my_size += ::protobuf::rt::string_size(7, &value);
806        };
807        for value in &self.subsets {
808            my_size += ::protobuf::rt::string_size(8, &value);
809        };
810        if let Some(v) = self.ttf_autohint_args.as_ref() {
811            my_size += ::protobuf::rt::string_size(9, &v);
812        }
813        for value in &self.axes {
814            let len = value.compute_size();
815            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
816        };
817        for (k, v) in &self.registry_default_overrides {
818            let mut entry_size = 0;
819            entry_size += ::protobuf::rt::string_size(1, &k);
820            entry_size += 1 + 4;
821            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(entry_size) + entry_size
822        };
823        if let Some(v) = self.source.as_ref() {
824            let len = v.compute_size();
825            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
826        }
827        if let Some(v) = self.is_noto {
828            my_size += 1 + 1;
829        }
830        for value in &self.languages {
831            my_size += ::protobuf::rt::string_size(14, &value);
832        };
833        for value in &self.fallbacks {
834            let len = value.compute_size();
835            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
836        };
837        for (k, v) in &self.sample_glyphs {
838            let mut entry_size = 0;
839            entry_size += ::protobuf::rt::string_size(1, &k);
840            entry_size += ::protobuf::rt::string_size(2, &v);
841            my_size += 2 + ::protobuf::rt::compute_raw_varint64_size(entry_size) + entry_size
842        };
843        if let Some(v) = self.sample_text.as_ref() {
844            let len = v.compute_size();
845            my_size += 2 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
846        }
847        if let Some(v) = self.display_name.as_ref() {
848            my_size += ::protobuf::rt::string_size(18, &v);
849        }
850        for value in &self.ordered_sample_glyphs {
851            let len = value.compute_size();
852            my_size += 2 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
853        };
854        if let Some(v) = self.minisite_url.as_ref() {
855            my_size += ::protobuf::rt::string_size(20, &v);
856        }
857        if let Some(v) = self.primary_script.as_ref() {
858            my_size += ::protobuf::rt::string_size(21, &v);
859        }
860        if let Some(v) = self.primary_language.as_ref() {
861            my_size += ::protobuf::rt::string_size(22, &v);
862        }
863        if let Some(v) = self.stroke.as_ref() {
864            my_size += ::protobuf::rt::string_size(23, &v);
865        }
866        for value in &self.classifications {
867            my_size += ::protobuf::rt::string_size(25, &value);
868        };
869        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
870        self.special_fields.cached_size().set(my_size as u32);
871        my_size
872    }
873
874    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
875        if let Some(v) = self.name.as_ref() {
876            os.write_string(1, v)?;
877        }
878        if let Some(v) = self.designer.as_ref() {
879            os.write_string(2, v)?;
880        }
881        if let Some(v) = self.license.as_ref() {
882            os.write_string(3, v)?;
883        }
884        for v in &self.category {
885            os.write_string(4, &v)?;
886        };
887        if let Some(v) = self.date_added.as_ref() {
888            os.write_string(5, v)?;
889        }
890        for v in &self.fonts {
891            ::protobuf::rt::write_message_field_with_cached_size(6, v, os)?;
892        };
893        for v in &self.aliases {
894            os.write_string(7, &v)?;
895        };
896        for v in &self.subsets {
897            os.write_string(8, &v)?;
898        };
899        if let Some(v) = self.ttf_autohint_args.as_ref() {
900            os.write_string(9, v)?;
901        }
902        for v in &self.axes {
903            ::protobuf::rt::write_message_field_with_cached_size(10, v, os)?;
904        };
905        for (k, v) in &self.registry_default_overrides {
906            let mut entry_size = 0;
907            entry_size += ::protobuf::rt::string_size(1, &k);
908            entry_size += 1 + 4;
909            os.write_raw_varint32(90)?; // Tag.
910            os.write_raw_varint32(entry_size as u32)?;
911            os.write_string(1, &k)?;
912            os.write_float(2, *v)?;
913        };
914        if let Some(v) = self.source.as_ref() {
915            ::protobuf::rt::write_message_field_with_cached_size(12, v, os)?;
916        }
917        if let Some(v) = self.is_noto {
918            os.write_bool(13, v)?;
919        }
920        for v in &self.languages {
921            os.write_string(14, &v)?;
922        };
923        for v in &self.fallbacks {
924            ::protobuf::rt::write_message_field_with_cached_size(15, v, os)?;
925        };
926        for (k, v) in &self.sample_glyphs {
927            let mut entry_size = 0;
928            entry_size += ::protobuf::rt::string_size(1, &k);
929            entry_size += ::protobuf::rt::string_size(2, &v);
930            os.write_raw_varint32(130)?; // Tag.
931            os.write_raw_varint32(entry_size as u32)?;
932            os.write_string(1, &k)?;
933            os.write_string(2, &v)?;
934        };
935        if let Some(v) = self.sample_text.as_ref() {
936            ::protobuf::rt::write_message_field_with_cached_size(17, v, os)?;
937        }
938        if let Some(v) = self.display_name.as_ref() {
939            os.write_string(18, v)?;
940        }
941        for v in &self.ordered_sample_glyphs {
942            ::protobuf::rt::write_message_field_with_cached_size(19, v, os)?;
943        };
944        if let Some(v) = self.minisite_url.as_ref() {
945            os.write_string(20, v)?;
946        }
947        if let Some(v) = self.primary_script.as_ref() {
948            os.write_string(21, v)?;
949        }
950        if let Some(v) = self.primary_language.as_ref() {
951            os.write_string(22, v)?;
952        }
953        if let Some(v) = self.stroke.as_ref() {
954            os.write_string(23, v)?;
955        }
956        for v in &self.classifications {
957            os.write_string(25, &v)?;
958        };
959        os.write_unknown_fields(self.special_fields.unknown_fields())?;
960        ::std::result::Result::Ok(())
961    }
962
963    fn special_fields(&self) -> &::protobuf::SpecialFields {
964        &self.special_fields
965    }
966
967    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
968        &mut self.special_fields
969    }
970
971    fn new() -> FamilyProto {
972        FamilyProto::new()
973    }
974
975    fn clear(&mut self) {
976        self.name = ::std::option::Option::None;
977        self.designer = ::std::option::Option::None;
978        self.license = ::std::option::Option::None;
979        self.category.clear();
980        self.date_added = ::std::option::Option::None;
981        self.fonts.clear();
982        self.aliases.clear();
983        self.subsets.clear();
984        self.ttf_autohint_args = ::std::option::Option::None;
985        self.axes.clear();
986        self.registry_default_overrides.clear();
987        self.source.clear();
988        self.is_noto = ::std::option::Option::None;
989        self.languages.clear();
990        self.fallbacks.clear();
991        self.sample_glyphs.clear();
992        self.sample_text.clear();
993        self.display_name = ::std::option::Option::None;
994        self.ordered_sample_glyphs.clear();
995        self.minisite_url = ::std::option::Option::None;
996        self.primary_script = ::std::option::Option::None;
997        self.primary_language = ::std::option::Option::None;
998        self.stroke = ::std::option::Option::None;
999        self.classifications.clear();
1000        self.special_fields.clear();
1001    }
1002
1003    fn default_instance() -> &'static FamilyProto {
1004        static instance: ::protobuf::rt::Lazy<FamilyProto> = ::protobuf::rt::Lazy::new();
1005        instance.get(FamilyProto::new)
1006    }
1007}
1008
1009impl ::protobuf::MessageFull for FamilyProto {
1010    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
1011        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
1012        descriptor.get(|| file_descriptor().message_by_package_relative_name("FamilyProto").unwrap()).clone()
1013    }
1014}
1015
1016impl ::std::fmt::Display for FamilyProto {
1017    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1018        ::protobuf::text_format::fmt(self, f)
1019    }
1020}
1021
1022impl ::protobuf::reflect::ProtobufValue for FamilyProto {
1023    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
1024}
1025
1026// @@protoc_insertion_point(message:google.fonts_public.FontProto)
1027#[derive(PartialEq,Clone,Default,Debug)]
1028pub struct FontProto {
1029    // message fields
1030    // @@protoc_insertion_point(field:google.fonts_public.FontProto.name)
1031    pub name: ::std::option::Option<::std::string::String>,
1032    // @@protoc_insertion_point(field:google.fonts_public.FontProto.style)
1033    pub style: ::std::option::Option<::std::string::String>,
1034    // @@protoc_insertion_point(field:google.fonts_public.FontProto.weight)
1035    pub weight: ::std::option::Option<i32>,
1036    // @@protoc_insertion_point(field:google.fonts_public.FontProto.filename)
1037    pub filename: ::std::option::Option<::std::string::String>,
1038    // @@protoc_insertion_point(field:google.fonts_public.FontProto.post_script_name)
1039    pub post_script_name: ::std::option::Option<::std::string::String>,
1040    // @@protoc_insertion_point(field:google.fonts_public.FontProto.full_name)
1041    pub full_name: ::std::option::Option<::std::string::String>,
1042    // @@protoc_insertion_point(field:google.fonts_public.FontProto.copyright)
1043    pub copyright: ::std::option::Option<::std::string::String>,
1044    // special fields
1045    // @@protoc_insertion_point(special_field:google.fonts_public.FontProto.special_fields)
1046    pub special_fields: ::protobuf::SpecialFields,
1047}
1048
1049impl<'a> ::std::default::Default for &'a FontProto {
1050    fn default() -> &'a FontProto {
1051        <FontProto as ::protobuf::Message>::default_instance()
1052    }
1053}
1054
1055impl FontProto {
1056    pub fn new() -> FontProto {
1057        ::std::default::Default::default()
1058    }
1059
1060    // required string name = 1;
1061
1062    pub fn name(&self) -> &str {
1063        match self.name.as_ref() {
1064            Some(v) => v,
1065            None => "",
1066        }
1067    }
1068
1069    pub fn clear_name(&mut self) {
1070        self.name = ::std::option::Option::None;
1071    }
1072
1073    pub fn has_name(&self) -> bool {
1074        self.name.is_some()
1075    }
1076
1077    // Param is passed by value, moved
1078    pub fn set_name(&mut self, v: ::std::string::String) {
1079        self.name = ::std::option::Option::Some(v);
1080    }
1081
1082    // Mutable pointer to the field.
1083    // If field is not initialized, it is initialized with default value first.
1084    pub fn mut_name(&mut self) -> &mut ::std::string::String {
1085        if self.name.is_none() {
1086            self.name = ::std::option::Option::Some(::std::string::String::new());
1087        }
1088        self.name.as_mut().unwrap()
1089    }
1090
1091    // Take field
1092    pub fn take_name(&mut self) -> ::std::string::String {
1093        self.name.take().unwrap_or_else(|| ::std::string::String::new())
1094    }
1095
1096    // required string style = 2;
1097
1098    pub fn style(&self) -> &str {
1099        match self.style.as_ref() {
1100            Some(v) => v,
1101            None => "",
1102        }
1103    }
1104
1105    pub fn clear_style(&mut self) {
1106        self.style = ::std::option::Option::None;
1107    }
1108
1109    pub fn has_style(&self) -> bool {
1110        self.style.is_some()
1111    }
1112
1113    // Param is passed by value, moved
1114    pub fn set_style(&mut self, v: ::std::string::String) {
1115        self.style = ::std::option::Option::Some(v);
1116    }
1117
1118    // Mutable pointer to the field.
1119    // If field is not initialized, it is initialized with default value first.
1120    pub fn mut_style(&mut self) -> &mut ::std::string::String {
1121        if self.style.is_none() {
1122            self.style = ::std::option::Option::Some(::std::string::String::new());
1123        }
1124        self.style.as_mut().unwrap()
1125    }
1126
1127    // Take field
1128    pub fn take_style(&mut self) -> ::std::string::String {
1129        self.style.take().unwrap_or_else(|| ::std::string::String::new())
1130    }
1131
1132    // required int32 weight = 3;
1133
1134    pub fn weight(&self) -> i32 {
1135        self.weight.unwrap_or(0)
1136    }
1137
1138    pub fn clear_weight(&mut self) {
1139        self.weight = ::std::option::Option::None;
1140    }
1141
1142    pub fn has_weight(&self) -> bool {
1143        self.weight.is_some()
1144    }
1145
1146    // Param is passed by value, moved
1147    pub fn set_weight(&mut self, v: i32) {
1148        self.weight = ::std::option::Option::Some(v);
1149    }
1150
1151    // required string filename = 4;
1152
1153    pub fn filename(&self) -> &str {
1154        match self.filename.as_ref() {
1155            Some(v) => v,
1156            None => "",
1157        }
1158    }
1159
1160    pub fn clear_filename(&mut self) {
1161        self.filename = ::std::option::Option::None;
1162    }
1163
1164    pub fn has_filename(&self) -> bool {
1165        self.filename.is_some()
1166    }
1167
1168    // Param is passed by value, moved
1169    pub fn set_filename(&mut self, v: ::std::string::String) {
1170        self.filename = ::std::option::Option::Some(v);
1171    }
1172
1173    // Mutable pointer to the field.
1174    // If field is not initialized, it is initialized with default value first.
1175    pub fn mut_filename(&mut self) -> &mut ::std::string::String {
1176        if self.filename.is_none() {
1177            self.filename = ::std::option::Option::Some(::std::string::String::new());
1178        }
1179        self.filename.as_mut().unwrap()
1180    }
1181
1182    // Take field
1183    pub fn take_filename(&mut self) -> ::std::string::String {
1184        self.filename.take().unwrap_or_else(|| ::std::string::String::new())
1185    }
1186
1187    // required string post_script_name = 5;
1188
1189    pub fn post_script_name(&self) -> &str {
1190        match self.post_script_name.as_ref() {
1191            Some(v) => v,
1192            None => "",
1193        }
1194    }
1195
1196    pub fn clear_post_script_name(&mut self) {
1197        self.post_script_name = ::std::option::Option::None;
1198    }
1199
1200    pub fn has_post_script_name(&self) -> bool {
1201        self.post_script_name.is_some()
1202    }
1203
1204    // Param is passed by value, moved
1205    pub fn set_post_script_name(&mut self, v: ::std::string::String) {
1206        self.post_script_name = ::std::option::Option::Some(v);
1207    }
1208
1209    // Mutable pointer to the field.
1210    // If field is not initialized, it is initialized with default value first.
1211    pub fn mut_post_script_name(&mut self) -> &mut ::std::string::String {
1212        if self.post_script_name.is_none() {
1213            self.post_script_name = ::std::option::Option::Some(::std::string::String::new());
1214        }
1215        self.post_script_name.as_mut().unwrap()
1216    }
1217
1218    // Take field
1219    pub fn take_post_script_name(&mut self) -> ::std::string::String {
1220        self.post_script_name.take().unwrap_or_else(|| ::std::string::String::new())
1221    }
1222
1223    // required string full_name = 6;
1224
1225    pub fn full_name(&self) -> &str {
1226        match self.full_name.as_ref() {
1227            Some(v) => v,
1228            None => "",
1229        }
1230    }
1231
1232    pub fn clear_full_name(&mut self) {
1233        self.full_name = ::std::option::Option::None;
1234    }
1235
1236    pub fn has_full_name(&self) -> bool {
1237        self.full_name.is_some()
1238    }
1239
1240    // Param is passed by value, moved
1241    pub fn set_full_name(&mut self, v: ::std::string::String) {
1242        self.full_name = ::std::option::Option::Some(v);
1243    }
1244
1245    // Mutable pointer to the field.
1246    // If field is not initialized, it is initialized with default value first.
1247    pub fn mut_full_name(&mut self) -> &mut ::std::string::String {
1248        if self.full_name.is_none() {
1249            self.full_name = ::std::option::Option::Some(::std::string::String::new());
1250        }
1251        self.full_name.as_mut().unwrap()
1252    }
1253
1254    // Take field
1255    pub fn take_full_name(&mut self) -> ::std::string::String {
1256        self.full_name.take().unwrap_or_else(|| ::std::string::String::new())
1257    }
1258
1259    // optional string copyright = 7;
1260
1261    pub fn copyright(&self) -> &str {
1262        match self.copyright.as_ref() {
1263            Some(v) => v,
1264            None => "",
1265        }
1266    }
1267
1268    pub fn clear_copyright(&mut self) {
1269        self.copyright = ::std::option::Option::None;
1270    }
1271
1272    pub fn has_copyright(&self) -> bool {
1273        self.copyright.is_some()
1274    }
1275
1276    // Param is passed by value, moved
1277    pub fn set_copyright(&mut self, v: ::std::string::String) {
1278        self.copyright = ::std::option::Option::Some(v);
1279    }
1280
1281    // Mutable pointer to the field.
1282    // If field is not initialized, it is initialized with default value first.
1283    pub fn mut_copyright(&mut self) -> &mut ::std::string::String {
1284        if self.copyright.is_none() {
1285            self.copyright = ::std::option::Option::Some(::std::string::String::new());
1286        }
1287        self.copyright.as_mut().unwrap()
1288    }
1289
1290    // Take field
1291    pub fn take_copyright(&mut self) -> ::std::string::String {
1292        self.copyright.take().unwrap_or_else(|| ::std::string::String::new())
1293    }
1294
1295    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
1296        let mut fields = ::std::vec::Vec::with_capacity(7);
1297        let mut oneofs = ::std::vec::Vec::with_capacity(0);
1298        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1299            "name",
1300            |m: &FontProto| { &m.name },
1301            |m: &mut FontProto| { &mut m.name },
1302        ));
1303        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1304            "style",
1305            |m: &FontProto| { &m.style },
1306            |m: &mut FontProto| { &mut m.style },
1307        ));
1308        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1309            "weight",
1310            |m: &FontProto| { &m.weight },
1311            |m: &mut FontProto| { &mut m.weight },
1312        ));
1313        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1314            "filename",
1315            |m: &FontProto| { &m.filename },
1316            |m: &mut FontProto| { &mut m.filename },
1317        ));
1318        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1319            "post_script_name",
1320            |m: &FontProto| { &m.post_script_name },
1321            |m: &mut FontProto| { &mut m.post_script_name },
1322        ));
1323        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1324            "full_name",
1325            |m: &FontProto| { &m.full_name },
1326            |m: &mut FontProto| { &mut m.full_name },
1327        ));
1328        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1329            "copyright",
1330            |m: &FontProto| { &m.copyright },
1331            |m: &mut FontProto| { &mut m.copyright },
1332        ));
1333        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<FontProto>(
1334            "FontProto",
1335            fields,
1336            oneofs,
1337        )
1338    }
1339}
1340
1341impl ::protobuf::Message for FontProto {
1342    const NAME: &'static str = "FontProto";
1343
1344    fn is_initialized(&self) -> bool {
1345        if self.name.is_none() {
1346            return false;
1347        }
1348        if self.style.is_none() {
1349            return false;
1350        }
1351        if self.weight.is_none() {
1352            return false;
1353        }
1354        if self.filename.is_none() {
1355            return false;
1356        }
1357        if self.post_script_name.is_none() {
1358            return false;
1359        }
1360        if self.full_name.is_none() {
1361            return false;
1362        }
1363        true
1364    }
1365
1366    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
1367        while let Some(tag) = is.read_raw_tag_or_eof()? {
1368            match tag {
1369                10 => {
1370                    self.name = ::std::option::Option::Some(is.read_string()?);
1371                },
1372                18 => {
1373                    self.style = ::std::option::Option::Some(is.read_string()?);
1374                },
1375                24 => {
1376                    self.weight = ::std::option::Option::Some(is.read_int32()?);
1377                },
1378                34 => {
1379                    self.filename = ::std::option::Option::Some(is.read_string()?);
1380                },
1381                42 => {
1382                    self.post_script_name = ::std::option::Option::Some(is.read_string()?);
1383                },
1384                50 => {
1385                    self.full_name = ::std::option::Option::Some(is.read_string()?);
1386                },
1387                58 => {
1388                    self.copyright = ::std::option::Option::Some(is.read_string()?);
1389                },
1390                tag => {
1391                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
1392                },
1393            };
1394        }
1395        ::std::result::Result::Ok(())
1396    }
1397
1398    // Compute sizes of nested messages
1399    #[allow(unused_variables)]
1400    fn compute_size(&self) -> u64 {
1401        let mut my_size = 0;
1402        if let Some(v) = self.name.as_ref() {
1403            my_size += ::protobuf::rt::string_size(1, &v);
1404        }
1405        if let Some(v) = self.style.as_ref() {
1406            my_size += ::protobuf::rt::string_size(2, &v);
1407        }
1408        if let Some(v) = self.weight {
1409            my_size += ::protobuf::rt::int32_size(3, v);
1410        }
1411        if let Some(v) = self.filename.as_ref() {
1412            my_size += ::protobuf::rt::string_size(4, &v);
1413        }
1414        if let Some(v) = self.post_script_name.as_ref() {
1415            my_size += ::protobuf::rt::string_size(5, &v);
1416        }
1417        if let Some(v) = self.full_name.as_ref() {
1418            my_size += ::protobuf::rt::string_size(6, &v);
1419        }
1420        if let Some(v) = self.copyright.as_ref() {
1421            my_size += ::protobuf::rt::string_size(7, &v);
1422        }
1423        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
1424        self.special_fields.cached_size().set(my_size as u32);
1425        my_size
1426    }
1427
1428    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
1429        if let Some(v) = self.name.as_ref() {
1430            os.write_string(1, v)?;
1431        }
1432        if let Some(v) = self.style.as_ref() {
1433            os.write_string(2, v)?;
1434        }
1435        if let Some(v) = self.weight {
1436            os.write_int32(3, v)?;
1437        }
1438        if let Some(v) = self.filename.as_ref() {
1439            os.write_string(4, v)?;
1440        }
1441        if let Some(v) = self.post_script_name.as_ref() {
1442            os.write_string(5, v)?;
1443        }
1444        if let Some(v) = self.full_name.as_ref() {
1445            os.write_string(6, v)?;
1446        }
1447        if let Some(v) = self.copyright.as_ref() {
1448            os.write_string(7, v)?;
1449        }
1450        os.write_unknown_fields(self.special_fields.unknown_fields())?;
1451        ::std::result::Result::Ok(())
1452    }
1453
1454    fn special_fields(&self) -> &::protobuf::SpecialFields {
1455        &self.special_fields
1456    }
1457
1458    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
1459        &mut self.special_fields
1460    }
1461
1462    fn new() -> FontProto {
1463        FontProto::new()
1464    }
1465
1466    fn clear(&mut self) {
1467        self.name = ::std::option::Option::None;
1468        self.style = ::std::option::Option::None;
1469        self.weight = ::std::option::Option::None;
1470        self.filename = ::std::option::Option::None;
1471        self.post_script_name = ::std::option::Option::None;
1472        self.full_name = ::std::option::Option::None;
1473        self.copyright = ::std::option::Option::None;
1474        self.special_fields.clear();
1475    }
1476
1477    fn default_instance() -> &'static FontProto {
1478        static instance: FontProto = FontProto {
1479            name: ::std::option::Option::None,
1480            style: ::std::option::Option::None,
1481            weight: ::std::option::Option::None,
1482            filename: ::std::option::Option::None,
1483            post_script_name: ::std::option::Option::None,
1484            full_name: ::std::option::Option::None,
1485            copyright: ::std::option::Option::None,
1486            special_fields: ::protobuf::SpecialFields::new(),
1487        };
1488        &instance
1489    }
1490}
1491
1492impl ::protobuf::MessageFull for FontProto {
1493    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
1494        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
1495        descriptor.get(|| file_descriptor().message_by_package_relative_name("FontProto").unwrap()).clone()
1496    }
1497}
1498
1499impl ::std::fmt::Display for FontProto {
1500    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1501        ::protobuf::text_format::fmt(self, f)
1502    }
1503}
1504
1505impl ::protobuf::reflect::ProtobufValue for FontProto {
1506    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
1507}
1508
1509// @@protoc_insertion_point(message:google.fonts_public.AxisSegmentProto)
1510#[derive(PartialEq,Clone,Default,Debug)]
1511pub struct AxisSegmentProto {
1512    // message fields
1513    // @@protoc_insertion_point(field:google.fonts_public.AxisSegmentProto.tag)
1514    pub tag: ::std::option::Option<::std::string::String>,
1515    // @@protoc_insertion_point(field:google.fonts_public.AxisSegmentProto.min_value)
1516    pub min_value: ::std::option::Option<f32>,
1517    // @@protoc_insertion_point(field:google.fonts_public.AxisSegmentProto.max_value)
1518    pub max_value: ::std::option::Option<f32>,
1519    // special fields
1520    // @@protoc_insertion_point(special_field:google.fonts_public.AxisSegmentProto.special_fields)
1521    pub special_fields: ::protobuf::SpecialFields,
1522}
1523
1524impl<'a> ::std::default::Default for &'a AxisSegmentProto {
1525    fn default() -> &'a AxisSegmentProto {
1526        <AxisSegmentProto as ::protobuf::Message>::default_instance()
1527    }
1528}
1529
1530impl AxisSegmentProto {
1531    pub fn new() -> AxisSegmentProto {
1532        ::std::default::Default::default()
1533    }
1534
1535    // optional string tag = 1;
1536
1537    pub fn tag(&self) -> &str {
1538        match self.tag.as_ref() {
1539            Some(v) => v,
1540            None => "",
1541        }
1542    }
1543
1544    pub fn clear_tag(&mut self) {
1545        self.tag = ::std::option::Option::None;
1546    }
1547
1548    pub fn has_tag(&self) -> bool {
1549        self.tag.is_some()
1550    }
1551
1552    // Param is passed by value, moved
1553    pub fn set_tag(&mut self, v: ::std::string::String) {
1554        self.tag = ::std::option::Option::Some(v);
1555    }
1556
1557    // Mutable pointer to the field.
1558    // If field is not initialized, it is initialized with default value first.
1559    pub fn mut_tag(&mut self) -> &mut ::std::string::String {
1560        if self.tag.is_none() {
1561            self.tag = ::std::option::Option::Some(::std::string::String::new());
1562        }
1563        self.tag.as_mut().unwrap()
1564    }
1565
1566    // Take field
1567    pub fn take_tag(&mut self) -> ::std::string::String {
1568        self.tag.take().unwrap_or_else(|| ::std::string::String::new())
1569    }
1570
1571    // optional float min_value = 2;
1572
1573    pub fn min_value(&self) -> f32 {
1574        self.min_value.unwrap_or(0.)
1575    }
1576
1577    pub fn clear_min_value(&mut self) {
1578        self.min_value = ::std::option::Option::None;
1579    }
1580
1581    pub fn has_min_value(&self) -> bool {
1582        self.min_value.is_some()
1583    }
1584
1585    // Param is passed by value, moved
1586    pub fn set_min_value(&mut self, v: f32) {
1587        self.min_value = ::std::option::Option::Some(v);
1588    }
1589
1590    // optional float max_value = 4;
1591
1592    pub fn max_value(&self) -> f32 {
1593        self.max_value.unwrap_or(0.)
1594    }
1595
1596    pub fn clear_max_value(&mut self) {
1597        self.max_value = ::std::option::Option::None;
1598    }
1599
1600    pub fn has_max_value(&self) -> bool {
1601        self.max_value.is_some()
1602    }
1603
1604    // Param is passed by value, moved
1605    pub fn set_max_value(&mut self, v: f32) {
1606        self.max_value = ::std::option::Option::Some(v);
1607    }
1608
1609    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
1610        let mut fields = ::std::vec::Vec::with_capacity(3);
1611        let mut oneofs = ::std::vec::Vec::with_capacity(0);
1612        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1613            "tag",
1614            |m: &AxisSegmentProto| { &m.tag },
1615            |m: &mut AxisSegmentProto| { &mut m.tag },
1616        ));
1617        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1618            "min_value",
1619            |m: &AxisSegmentProto| { &m.min_value },
1620            |m: &mut AxisSegmentProto| { &mut m.min_value },
1621        ));
1622        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1623            "max_value",
1624            |m: &AxisSegmentProto| { &m.max_value },
1625            |m: &mut AxisSegmentProto| { &mut m.max_value },
1626        ));
1627        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<AxisSegmentProto>(
1628            "AxisSegmentProto",
1629            fields,
1630            oneofs,
1631        )
1632    }
1633}
1634
1635impl ::protobuf::Message for AxisSegmentProto {
1636    const NAME: &'static str = "AxisSegmentProto";
1637
1638    fn is_initialized(&self) -> bool {
1639        true
1640    }
1641
1642    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
1643        while let Some(tag) = is.read_raw_tag_or_eof()? {
1644            match tag {
1645                10 => {
1646                    self.tag = ::std::option::Option::Some(is.read_string()?);
1647                },
1648                21 => {
1649                    self.min_value = ::std::option::Option::Some(is.read_float()?);
1650                },
1651                37 => {
1652                    self.max_value = ::std::option::Option::Some(is.read_float()?);
1653                },
1654                tag => {
1655                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
1656                },
1657            };
1658        }
1659        ::std::result::Result::Ok(())
1660    }
1661
1662    // Compute sizes of nested messages
1663    #[allow(unused_variables)]
1664    fn compute_size(&self) -> u64 {
1665        let mut my_size = 0;
1666        if let Some(v) = self.tag.as_ref() {
1667            my_size += ::protobuf::rt::string_size(1, &v);
1668        }
1669        if let Some(v) = self.min_value {
1670            my_size += 1 + 4;
1671        }
1672        if let Some(v) = self.max_value {
1673            my_size += 1 + 4;
1674        }
1675        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
1676        self.special_fields.cached_size().set(my_size as u32);
1677        my_size
1678    }
1679
1680    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
1681        if let Some(v) = self.tag.as_ref() {
1682            os.write_string(1, v)?;
1683        }
1684        if let Some(v) = self.min_value {
1685            os.write_float(2, v)?;
1686        }
1687        if let Some(v) = self.max_value {
1688            os.write_float(4, v)?;
1689        }
1690        os.write_unknown_fields(self.special_fields.unknown_fields())?;
1691        ::std::result::Result::Ok(())
1692    }
1693
1694    fn special_fields(&self) -> &::protobuf::SpecialFields {
1695        &self.special_fields
1696    }
1697
1698    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
1699        &mut self.special_fields
1700    }
1701
1702    fn new() -> AxisSegmentProto {
1703        AxisSegmentProto::new()
1704    }
1705
1706    fn clear(&mut self) {
1707        self.tag = ::std::option::Option::None;
1708        self.min_value = ::std::option::Option::None;
1709        self.max_value = ::std::option::Option::None;
1710        self.special_fields.clear();
1711    }
1712
1713    fn default_instance() -> &'static AxisSegmentProto {
1714        static instance: AxisSegmentProto = AxisSegmentProto {
1715            tag: ::std::option::Option::None,
1716            min_value: ::std::option::Option::None,
1717            max_value: ::std::option::Option::None,
1718            special_fields: ::protobuf::SpecialFields::new(),
1719        };
1720        &instance
1721    }
1722}
1723
1724impl ::protobuf::MessageFull for AxisSegmentProto {
1725    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
1726        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
1727        descriptor.get(|| file_descriptor().message_by_package_relative_name("AxisSegmentProto").unwrap()).clone()
1728    }
1729}
1730
1731impl ::std::fmt::Display for AxisSegmentProto {
1732    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1733        ::protobuf::text_format::fmt(self, f)
1734    }
1735}
1736
1737impl ::protobuf::reflect::ProtobufValue for AxisSegmentProto {
1738    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
1739}
1740
1741// @@protoc_insertion_point(message:google.fonts_public.SourceProto)
1742#[derive(PartialEq,Clone,Default,Debug)]
1743pub struct SourceProto {
1744    // message fields
1745    // @@protoc_insertion_point(field:google.fonts_public.SourceProto.repository_url)
1746    pub repository_url: ::std::option::Option<::std::string::String>,
1747    // @@protoc_insertion_point(field:google.fonts_public.SourceProto.branch)
1748    pub branch: ::std::option::Option<::std::string::String>,
1749    // @@protoc_insertion_point(field:google.fonts_public.SourceProto.commit)
1750    pub commit: ::std::option::Option<::std::string::String>,
1751    // @@protoc_insertion_point(field:google.fonts_public.SourceProto.archive_url)
1752    pub archive_url: ::std::option::Option<::std::string::String>,
1753    // @@protoc_insertion_point(field:google.fonts_public.SourceProto.config_yaml)
1754    pub config_yaml: ::std::option::Option<::std::string::String>,
1755    // @@protoc_insertion_point(field:google.fonts_public.SourceProto.files)
1756    pub files: ::std::vec::Vec<SourceFileProto>,
1757    // special fields
1758    // @@protoc_insertion_point(special_field:google.fonts_public.SourceProto.special_fields)
1759    pub special_fields: ::protobuf::SpecialFields,
1760}
1761
1762impl<'a> ::std::default::Default for &'a SourceProto {
1763    fn default() -> &'a SourceProto {
1764        <SourceProto as ::protobuf::Message>::default_instance()
1765    }
1766}
1767
1768impl SourceProto {
1769    pub fn new() -> SourceProto {
1770        ::std::default::Default::default()
1771    }
1772
1773    // optional string repository_url = 1;
1774
1775    pub fn repository_url(&self) -> &str {
1776        match self.repository_url.as_ref() {
1777            Some(v) => v,
1778            None => "",
1779        }
1780    }
1781
1782    pub fn clear_repository_url(&mut self) {
1783        self.repository_url = ::std::option::Option::None;
1784    }
1785
1786    pub fn has_repository_url(&self) -> bool {
1787        self.repository_url.is_some()
1788    }
1789
1790    // Param is passed by value, moved
1791    pub fn set_repository_url(&mut self, v: ::std::string::String) {
1792        self.repository_url = ::std::option::Option::Some(v);
1793    }
1794
1795    // Mutable pointer to the field.
1796    // If field is not initialized, it is initialized with default value first.
1797    pub fn mut_repository_url(&mut self) -> &mut ::std::string::String {
1798        if self.repository_url.is_none() {
1799            self.repository_url = ::std::option::Option::Some(::std::string::String::new());
1800        }
1801        self.repository_url.as_mut().unwrap()
1802    }
1803
1804    // Take field
1805    pub fn take_repository_url(&mut self) -> ::std::string::String {
1806        self.repository_url.take().unwrap_or_else(|| ::std::string::String::new())
1807    }
1808
1809    // optional string branch = 5;
1810
1811    pub fn branch(&self) -> &str {
1812        match self.branch.as_ref() {
1813            Some(v) => v,
1814            None => "",
1815        }
1816    }
1817
1818    pub fn clear_branch(&mut self) {
1819        self.branch = ::std::option::Option::None;
1820    }
1821
1822    pub fn has_branch(&self) -> bool {
1823        self.branch.is_some()
1824    }
1825
1826    // Param is passed by value, moved
1827    pub fn set_branch(&mut self, v: ::std::string::String) {
1828        self.branch = ::std::option::Option::Some(v);
1829    }
1830
1831    // Mutable pointer to the field.
1832    // If field is not initialized, it is initialized with default value first.
1833    pub fn mut_branch(&mut self) -> &mut ::std::string::String {
1834        if self.branch.is_none() {
1835            self.branch = ::std::option::Option::Some(::std::string::String::new());
1836        }
1837        self.branch.as_mut().unwrap()
1838    }
1839
1840    // Take field
1841    pub fn take_branch(&mut self) -> ::std::string::String {
1842        self.branch.take().unwrap_or_else(|| ::std::string::String::new())
1843    }
1844
1845    // optional string commit = 2;
1846
1847    pub fn commit(&self) -> &str {
1848        match self.commit.as_ref() {
1849            Some(v) => v,
1850            None => "",
1851        }
1852    }
1853
1854    pub fn clear_commit(&mut self) {
1855        self.commit = ::std::option::Option::None;
1856    }
1857
1858    pub fn has_commit(&self) -> bool {
1859        self.commit.is_some()
1860    }
1861
1862    // Param is passed by value, moved
1863    pub fn set_commit(&mut self, v: ::std::string::String) {
1864        self.commit = ::std::option::Option::Some(v);
1865    }
1866
1867    // Mutable pointer to the field.
1868    // If field is not initialized, it is initialized with default value first.
1869    pub fn mut_commit(&mut self) -> &mut ::std::string::String {
1870        if self.commit.is_none() {
1871            self.commit = ::std::option::Option::Some(::std::string::String::new());
1872        }
1873        self.commit.as_mut().unwrap()
1874    }
1875
1876    // Take field
1877    pub fn take_commit(&mut self) -> ::std::string::String {
1878        self.commit.take().unwrap_or_else(|| ::std::string::String::new())
1879    }
1880
1881    // optional string archive_url = 3;
1882
1883    pub fn archive_url(&self) -> &str {
1884        match self.archive_url.as_ref() {
1885            Some(v) => v,
1886            None => "",
1887        }
1888    }
1889
1890    pub fn clear_archive_url(&mut self) {
1891        self.archive_url = ::std::option::Option::None;
1892    }
1893
1894    pub fn has_archive_url(&self) -> bool {
1895        self.archive_url.is_some()
1896    }
1897
1898    // Param is passed by value, moved
1899    pub fn set_archive_url(&mut self, v: ::std::string::String) {
1900        self.archive_url = ::std::option::Option::Some(v);
1901    }
1902
1903    // Mutable pointer to the field.
1904    // If field is not initialized, it is initialized with default value first.
1905    pub fn mut_archive_url(&mut self) -> &mut ::std::string::String {
1906        if self.archive_url.is_none() {
1907            self.archive_url = ::std::option::Option::Some(::std::string::String::new());
1908        }
1909        self.archive_url.as_mut().unwrap()
1910    }
1911
1912    // Take field
1913    pub fn take_archive_url(&mut self) -> ::std::string::String {
1914        self.archive_url.take().unwrap_or_else(|| ::std::string::String::new())
1915    }
1916
1917    // optional string config_yaml = 6;
1918
1919    pub fn config_yaml(&self) -> &str {
1920        match self.config_yaml.as_ref() {
1921            Some(v) => v,
1922            None => "",
1923        }
1924    }
1925
1926    pub fn clear_config_yaml(&mut self) {
1927        self.config_yaml = ::std::option::Option::None;
1928    }
1929
1930    pub fn has_config_yaml(&self) -> bool {
1931        self.config_yaml.is_some()
1932    }
1933
1934    // Param is passed by value, moved
1935    pub fn set_config_yaml(&mut self, v: ::std::string::String) {
1936        self.config_yaml = ::std::option::Option::Some(v);
1937    }
1938
1939    // Mutable pointer to the field.
1940    // If field is not initialized, it is initialized with default value first.
1941    pub fn mut_config_yaml(&mut self) -> &mut ::std::string::String {
1942        if self.config_yaml.is_none() {
1943            self.config_yaml = ::std::option::Option::Some(::std::string::String::new());
1944        }
1945        self.config_yaml.as_mut().unwrap()
1946    }
1947
1948    // Take field
1949    pub fn take_config_yaml(&mut self) -> ::std::string::String {
1950        self.config_yaml.take().unwrap_or_else(|| ::std::string::String::new())
1951    }
1952
1953    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
1954        let mut fields = ::std::vec::Vec::with_capacity(6);
1955        let mut oneofs = ::std::vec::Vec::with_capacity(0);
1956        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1957            "repository_url",
1958            |m: &SourceProto| { &m.repository_url },
1959            |m: &mut SourceProto| { &mut m.repository_url },
1960        ));
1961        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1962            "branch",
1963            |m: &SourceProto| { &m.branch },
1964            |m: &mut SourceProto| { &mut m.branch },
1965        ));
1966        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1967            "commit",
1968            |m: &SourceProto| { &m.commit },
1969            |m: &mut SourceProto| { &mut m.commit },
1970        ));
1971        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1972            "archive_url",
1973            |m: &SourceProto| { &m.archive_url },
1974            |m: &mut SourceProto| { &mut m.archive_url },
1975        ));
1976        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1977            "config_yaml",
1978            |m: &SourceProto| { &m.config_yaml },
1979            |m: &mut SourceProto| { &mut m.config_yaml },
1980        ));
1981        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
1982            "files",
1983            |m: &SourceProto| { &m.files },
1984            |m: &mut SourceProto| { &mut m.files },
1985        ));
1986        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<SourceProto>(
1987            "SourceProto",
1988            fields,
1989            oneofs,
1990        )
1991    }
1992}
1993
1994impl ::protobuf::Message for SourceProto {
1995    const NAME: &'static str = "SourceProto";
1996
1997    fn is_initialized(&self) -> bool {
1998        true
1999    }
2000
2001    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
2002        while let Some(tag) = is.read_raw_tag_or_eof()? {
2003            match tag {
2004                10 => {
2005                    self.repository_url = ::std::option::Option::Some(is.read_string()?);
2006                },
2007                42 => {
2008                    self.branch = ::std::option::Option::Some(is.read_string()?);
2009                },
2010                18 => {
2011                    self.commit = ::std::option::Option::Some(is.read_string()?);
2012                },
2013                26 => {
2014                    self.archive_url = ::std::option::Option::Some(is.read_string()?);
2015                },
2016                50 => {
2017                    self.config_yaml = ::std::option::Option::Some(is.read_string()?);
2018                },
2019                34 => {
2020                    self.files.push(is.read_message()?);
2021                },
2022                tag => {
2023                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
2024                },
2025            };
2026        }
2027        ::std::result::Result::Ok(())
2028    }
2029
2030    // Compute sizes of nested messages
2031    #[allow(unused_variables)]
2032    fn compute_size(&self) -> u64 {
2033        let mut my_size = 0;
2034        if let Some(v) = self.repository_url.as_ref() {
2035            my_size += ::protobuf::rt::string_size(1, &v);
2036        }
2037        if let Some(v) = self.branch.as_ref() {
2038            my_size += ::protobuf::rt::string_size(5, &v);
2039        }
2040        if let Some(v) = self.commit.as_ref() {
2041            my_size += ::protobuf::rt::string_size(2, &v);
2042        }
2043        if let Some(v) = self.archive_url.as_ref() {
2044            my_size += ::protobuf::rt::string_size(3, &v);
2045        }
2046        if let Some(v) = self.config_yaml.as_ref() {
2047            my_size += ::protobuf::rt::string_size(6, &v);
2048        }
2049        for value in &self.files {
2050            let len = value.compute_size();
2051            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
2052        };
2053        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
2054        self.special_fields.cached_size().set(my_size as u32);
2055        my_size
2056    }
2057
2058    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
2059        if let Some(v) = self.repository_url.as_ref() {
2060            os.write_string(1, v)?;
2061        }
2062        if let Some(v) = self.branch.as_ref() {
2063            os.write_string(5, v)?;
2064        }
2065        if let Some(v) = self.commit.as_ref() {
2066            os.write_string(2, v)?;
2067        }
2068        if let Some(v) = self.archive_url.as_ref() {
2069            os.write_string(3, v)?;
2070        }
2071        if let Some(v) = self.config_yaml.as_ref() {
2072            os.write_string(6, v)?;
2073        }
2074        for v in &self.files {
2075            ::protobuf::rt::write_message_field_with_cached_size(4, v, os)?;
2076        };
2077        os.write_unknown_fields(self.special_fields.unknown_fields())?;
2078        ::std::result::Result::Ok(())
2079    }
2080
2081    fn special_fields(&self) -> &::protobuf::SpecialFields {
2082        &self.special_fields
2083    }
2084
2085    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
2086        &mut self.special_fields
2087    }
2088
2089    fn new() -> SourceProto {
2090        SourceProto::new()
2091    }
2092
2093    fn clear(&mut self) {
2094        self.repository_url = ::std::option::Option::None;
2095        self.branch = ::std::option::Option::None;
2096        self.commit = ::std::option::Option::None;
2097        self.archive_url = ::std::option::Option::None;
2098        self.config_yaml = ::std::option::Option::None;
2099        self.files.clear();
2100        self.special_fields.clear();
2101    }
2102
2103    fn default_instance() -> &'static SourceProto {
2104        static instance: SourceProto = SourceProto {
2105            repository_url: ::std::option::Option::None,
2106            branch: ::std::option::Option::None,
2107            commit: ::std::option::Option::None,
2108            archive_url: ::std::option::Option::None,
2109            config_yaml: ::std::option::Option::None,
2110            files: ::std::vec::Vec::new(),
2111            special_fields: ::protobuf::SpecialFields::new(),
2112        };
2113        &instance
2114    }
2115}
2116
2117impl ::protobuf::MessageFull for SourceProto {
2118    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
2119        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
2120        descriptor.get(|| file_descriptor().message_by_package_relative_name("SourceProto").unwrap()).clone()
2121    }
2122}
2123
2124impl ::std::fmt::Display for SourceProto {
2125    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2126        ::protobuf::text_format::fmt(self, f)
2127    }
2128}
2129
2130impl ::protobuf::reflect::ProtobufValue for SourceProto {
2131    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
2132}
2133
2134///  A file to take from source and where to put it in dest
2135///  Ex web/split/Roboto[wdth,wght].ttf => Roboto[wdth,wght].ttf
2136// @@protoc_insertion_point(message:google.fonts_public.SourceFileProto)
2137#[derive(PartialEq,Clone,Default,Debug)]
2138pub struct SourceFileProto {
2139    // message fields
2140    // @@protoc_insertion_point(field:google.fonts_public.SourceFileProto.source_file)
2141    pub source_file: ::std::option::Option<::std::string::String>,
2142    // @@protoc_insertion_point(field:google.fonts_public.SourceFileProto.dest_file)
2143    pub dest_file: ::std::option::Option<::std::string::String>,
2144    // special fields
2145    // @@protoc_insertion_point(special_field:google.fonts_public.SourceFileProto.special_fields)
2146    pub special_fields: ::protobuf::SpecialFields,
2147}
2148
2149impl<'a> ::std::default::Default for &'a SourceFileProto {
2150    fn default() -> &'a SourceFileProto {
2151        <SourceFileProto as ::protobuf::Message>::default_instance()
2152    }
2153}
2154
2155impl SourceFileProto {
2156    pub fn new() -> SourceFileProto {
2157        ::std::default::Default::default()
2158    }
2159
2160    // optional string source_file = 1;
2161
2162    pub fn source_file(&self) -> &str {
2163        match self.source_file.as_ref() {
2164            Some(v) => v,
2165            None => "",
2166        }
2167    }
2168
2169    pub fn clear_source_file(&mut self) {
2170        self.source_file = ::std::option::Option::None;
2171    }
2172
2173    pub fn has_source_file(&self) -> bool {
2174        self.source_file.is_some()
2175    }
2176
2177    // Param is passed by value, moved
2178    pub fn set_source_file(&mut self, v: ::std::string::String) {
2179        self.source_file = ::std::option::Option::Some(v);
2180    }
2181
2182    // Mutable pointer to the field.
2183    // If field is not initialized, it is initialized with default value first.
2184    pub fn mut_source_file(&mut self) -> &mut ::std::string::String {
2185        if self.source_file.is_none() {
2186            self.source_file = ::std::option::Option::Some(::std::string::String::new());
2187        }
2188        self.source_file.as_mut().unwrap()
2189    }
2190
2191    // Take field
2192    pub fn take_source_file(&mut self) -> ::std::string::String {
2193        self.source_file.take().unwrap_or_else(|| ::std::string::String::new())
2194    }
2195
2196    // optional string dest_file = 2;
2197
2198    pub fn dest_file(&self) -> &str {
2199        match self.dest_file.as_ref() {
2200            Some(v) => v,
2201            None => "",
2202        }
2203    }
2204
2205    pub fn clear_dest_file(&mut self) {
2206        self.dest_file = ::std::option::Option::None;
2207    }
2208
2209    pub fn has_dest_file(&self) -> bool {
2210        self.dest_file.is_some()
2211    }
2212
2213    // Param is passed by value, moved
2214    pub fn set_dest_file(&mut self, v: ::std::string::String) {
2215        self.dest_file = ::std::option::Option::Some(v);
2216    }
2217
2218    // Mutable pointer to the field.
2219    // If field is not initialized, it is initialized with default value first.
2220    pub fn mut_dest_file(&mut self) -> &mut ::std::string::String {
2221        if self.dest_file.is_none() {
2222            self.dest_file = ::std::option::Option::Some(::std::string::String::new());
2223        }
2224        self.dest_file.as_mut().unwrap()
2225    }
2226
2227    // Take field
2228    pub fn take_dest_file(&mut self) -> ::std::string::String {
2229        self.dest_file.take().unwrap_or_else(|| ::std::string::String::new())
2230    }
2231
2232    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
2233        let mut fields = ::std::vec::Vec::with_capacity(2);
2234        let mut oneofs = ::std::vec::Vec::with_capacity(0);
2235        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
2236            "source_file",
2237            |m: &SourceFileProto| { &m.source_file },
2238            |m: &mut SourceFileProto| { &mut m.source_file },
2239        ));
2240        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
2241            "dest_file",
2242            |m: &SourceFileProto| { &m.dest_file },
2243            |m: &mut SourceFileProto| { &mut m.dest_file },
2244        ));
2245        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<SourceFileProto>(
2246            "SourceFileProto",
2247            fields,
2248            oneofs,
2249        )
2250    }
2251}
2252
2253impl ::protobuf::Message for SourceFileProto {
2254    const NAME: &'static str = "SourceFileProto";
2255
2256    fn is_initialized(&self) -> bool {
2257        true
2258    }
2259
2260    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
2261        while let Some(tag) = is.read_raw_tag_or_eof()? {
2262            match tag {
2263                10 => {
2264                    self.source_file = ::std::option::Option::Some(is.read_string()?);
2265                },
2266                18 => {
2267                    self.dest_file = ::std::option::Option::Some(is.read_string()?);
2268                },
2269                tag => {
2270                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
2271                },
2272            };
2273        }
2274        ::std::result::Result::Ok(())
2275    }
2276
2277    // Compute sizes of nested messages
2278    #[allow(unused_variables)]
2279    fn compute_size(&self) -> u64 {
2280        let mut my_size = 0;
2281        if let Some(v) = self.source_file.as_ref() {
2282            my_size += ::protobuf::rt::string_size(1, &v);
2283        }
2284        if let Some(v) = self.dest_file.as_ref() {
2285            my_size += ::protobuf::rt::string_size(2, &v);
2286        }
2287        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
2288        self.special_fields.cached_size().set(my_size as u32);
2289        my_size
2290    }
2291
2292    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
2293        if let Some(v) = self.source_file.as_ref() {
2294            os.write_string(1, v)?;
2295        }
2296        if let Some(v) = self.dest_file.as_ref() {
2297            os.write_string(2, v)?;
2298        }
2299        os.write_unknown_fields(self.special_fields.unknown_fields())?;
2300        ::std::result::Result::Ok(())
2301    }
2302
2303    fn special_fields(&self) -> &::protobuf::SpecialFields {
2304        &self.special_fields
2305    }
2306
2307    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
2308        &mut self.special_fields
2309    }
2310
2311    fn new() -> SourceFileProto {
2312        SourceFileProto::new()
2313    }
2314
2315    fn clear(&mut self) {
2316        self.source_file = ::std::option::Option::None;
2317        self.dest_file = ::std::option::Option::None;
2318        self.special_fields.clear();
2319    }
2320
2321    fn default_instance() -> &'static SourceFileProto {
2322        static instance: SourceFileProto = SourceFileProto {
2323            source_file: ::std::option::Option::None,
2324            dest_file: ::std::option::Option::None,
2325            special_fields: ::protobuf::SpecialFields::new(),
2326        };
2327        &instance
2328    }
2329}
2330
2331impl ::protobuf::MessageFull for SourceFileProto {
2332    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
2333        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
2334        descriptor.get(|| file_descriptor().message_by_package_relative_name("SourceFileProto").unwrap()).clone()
2335    }
2336}
2337
2338impl ::std::fmt::Display for SourceFileProto {
2339    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2340        ::protobuf::text_format::fmt(self, f)
2341    }
2342}
2343
2344impl ::protobuf::reflect::ProtobufValue for SourceFileProto {
2345    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
2346}
2347
2348///  Message so we can add additional fields like value in future
2349// @@protoc_insertion_point(message:google.fonts_public.TargetProto)
2350#[derive(PartialEq,Clone,Default,Debug)]
2351pub struct TargetProto {
2352    // message fields
2353    // @@protoc_insertion_point(field:google.fonts_public.TargetProto.target_type)
2354    pub target_type: ::std::option::Option<::protobuf::EnumOrUnknown<TargetTypeProto>>,
2355    // special fields
2356    // @@protoc_insertion_point(special_field:google.fonts_public.TargetProto.special_fields)
2357    pub special_fields: ::protobuf::SpecialFields,
2358}
2359
2360impl<'a> ::std::default::Default for &'a TargetProto {
2361    fn default() -> &'a TargetProto {
2362        <TargetProto as ::protobuf::Message>::default_instance()
2363    }
2364}
2365
2366impl TargetProto {
2367    pub fn new() -> TargetProto {
2368        ::std::default::Default::default()
2369    }
2370
2371    // optional .google.fonts_public.TargetTypeProto target_type = 1;
2372
2373    pub fn target_type(&self) -> TargetTypeProto {
2374        match self.target_type {
2375            Some(e) => e.enum_value_or(TargetTypeProto::TARGET_UNSPECIFIED),
2376            None => TargetTypeProto::TARGET_UNSPECIFIED,
2377        }
2378    }
2379
2380    pub fn clear_target_type(&mut self) {
2381        self.target_type = ::std::option::Option::None;
2382    }
2383
2384    pub fn has_target_type(&self) -> bool {
2385        self.target_type.is_some()
2386    }
2387
2388    // Param is passed by value, moved
2389    pub fn set_target_type(&mut self, v: TargetTypeProto) {
2390        self.target_type = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
2391    }
2392
2393    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
2394        let mut fields = ::std::vec::Vec::with_capacity(1);
2395        let mut oneofs = ::std::vec::Vec::with_capacity(0);
2396        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
2397            "target_type",
2398            |m: &TargetProto| { &m.target_type },
2399            |m: &mut TargetProto| { &mut m.target_type },
2400        ));
2401        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<TargetProto>(
2402            "TargetProto",
2403            fields,
2404            oneofs,
2405        )
2406    }
2407}
2408
2409impl ::protobuf::Message for TargetProto {
2410    const NAME: &'static str = "TargetProto";
2411
2412    fn is_initialized(&self) -> bool {
2413        true
2414    }
2415
2416    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
2417        while let Some(tag) = is.read_raw_tag_or_eof()? {
2418            match tag {
2419                8 => {
2420                    self.target_type = ::std::option::Option::Some(is.read_enum_or_unknown()?);
2421                },
2422                tag => {
2423                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
2424                },
2425            };
2426        }
2427        ::std::result::Result::Ok(())
2428    }
2429
2430    // Compute sizes of nested messages
2431    #[allow(unused_variables)]
2432    fn compute_size(&self) -> u64 {
2433        let mut my_size = 0;
2434        if let Some(v) = self.target_type {
2435            my_size += ::protobuf::rt::int32_size(1, v.value());
2436        }
2437        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
2438        self.special_fields.cached_size().set(my_size as u32);
2439        my_size
2440    }
2441
2442    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
2443        if let Some(v) = self.target_type {
2444            os.write_enum(1, ::protobuf::EnumOrUnknown::value(&v))?;
2445        }
2446        os.write_unknown_fields(self.special_fields.unknown_fields())?;
2447        ::std::result::Result::Ok(())
2448    }
2449
2450    fn special_fields(&self) -> &::protobuf::SpecialFields {
2451        &self.special_fields
2452    }
2453
2454    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
2455        &mut self.special_fields
2456    }
2457
2458    fn new() -> TargetProto {
2459        TargetProto::new()
2460    }
2461
2462    fn clear(&mut self) {
2463        self.target_type = ::std::option::Option::None;
2464        self.special_fields.clear();
2465    }
2466
2467    fn default_instance() -> &'static TargetProto {
2468        static instance: TargetProto = TargetProto {
2469            target_type: ::std::option::Option::None,
2470            special_fields: ::protobuf::SpecialFields::new(),
2471        };
2472        &instance
2473    }
2474}
2475
2476impl ::protobuf::MessageFull for TargetProto {
2477    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
2478        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
2479        descriptor.get(|| file_descriptor().message_by_package_relative_name("TargetProto").unwrap()).clone()
2480    }
2481}
2482
2483impl ::std::fmt::Display for TargetProto {
2484    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2485        ::protobuf::text_format::fmt(self, f)
2486    }
2487}
2488
2489impl ::protobuf::reflect::ProtobufValue for TargetProto {
2490    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
2491}
2492
2493// @@protoc_insertion_point(message:google.fonts_public.FamilyFallbackProto)
2494#[derive(PartialEq,Clone,Default,Debug)]
2495pub struct FamilyFallbackProto {
2496    // message fields
2497    // @@protoc_insertion_point(field:google.fonts_public.FamilyFallbackProto.axis_target)
2498    pub axis_target: ::std::vec::Vec<AxisSegmentProto>,
2499    // @@protoc_insertion_point(field:google.fonts_public.FamilyFallbackProto.target)
2500    pub target: ::std::vec::Vec<TargetProto>,
2501    // @@protoc_insertion_point(field:google.fonts_public.FamilyFallbackProto.size_adjust_pct)
2502    pub size_adjust_pct: ::std::option::Option<f32>,
2503    // @@protoc_insertion_point(field:google.fonts_public.FamilyFallbackProto.ascent_override_pct)
2504    pub ascent_override_pct: ::std::option::Option<f32>,
2505    // @@protoc_insertion_point(field:google.fonts_public.FamilyFallbackProto.local_src)
2506    pub local_src: ::std::vec::Vec<::std::string::String>,
2507    // special fields
2508    // @@protoc_insertion_point(special_field:google.fonts_public.FamilyFallbackProto.special_fields)
2509    pub special_fields: ::protobuf::SpecialFields,
2510}
2511
2512impl<'a> ::std::default::Default for &'a FamilyFallbackProto {
2513    fn default() -> &'a FamilyFallbackProto {
2514        <FamilyFallbackProto as ::protobuf::Message>::default_instance()
2515    }
2516}
2517
2518impl FamilyFallbackProto {
2519    pub fn new() -> FamilyFallbackProto {
2520        ::std::default::Default::default()
2521    }
2522
2523    // optional float size_adjust_pct = 3;
2524
2525    pub fn size_adjust_pct(&self) -> f32 {
2526        self.size_adjust_pct.unwrap_or(0.)
2527    }
2528
2529    pub fn clear_size_adjust_pct(&mut self) {
2530        self.size_adjust_pct = ::std::option::Option::None;
2531    }
2532
2533    pub fn has_size_adjust_pct(&self) -> bool {
2534        self.size_adjust_pct.is_some()
2535    }
2536
2537    // Param is passed by value, moved
2538    pub fn set_size_adjust_pct(&mut self, v: f32) {
2539        self.size_adjust_pct = ::std::option::Option::Some(v);
2540    }
2541
2542    // optional float ascent_override_pct = 5;
2543
2544    pub fn ascent_override_pct(&self) -> f32 {
2545        self.ascent_override_pct.unwrap_or(0.)
2546    }
2547
2548    pub fn clear_ascent_override_pct(&mut self) {
2549        self.ascent_override_pct = ::std::option::Option::None;
2550    }
2551
2552    pub fn has_ascent_override_pct(&self) -> bool {
2553        self.ascent_override_pct.is_some()
2554    }
2555
2556    // Param is passed by value, moved
2557    pub fn set_ascent_override_pct(&mut self, v: f32) {
2558        self.ascent_override_pct = ::std::option::Option::Some(v);
2559    }
2560
2561    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
2562        let mut fields = ::std::vec::Vec::with_capacity(5);
2563        let mut oneofs = ::std::vec::Vec::with_capacity(0);
2564        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
2565            "axis_target",
2566            |m: &FamilyFallbackProto| { &m.axis_target },
2567            |m: &mut FamilyFallbackProto| { &mut m.axis_target },
2568        ));
2569        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
2570            "target",
2571            |m: &FamilyFallbackProto| { &m.target },
2572            |m: &mut FamilyFallbackProto| { &mut m.target },
2573        ));
2574        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
2575            "size_adjust_pct",
2576            |m: &FamilyFallbackProto| { &m.size_adjust_pct },
2577            |m: &mut FamilyFallbackProto| { &mut m.size_adjust_pct },
2578        ));
2579        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
2580            "ascent_override_pct",
2581            |m: &FamilyFallbackProto| { &m.ascent_override_pct },
2582            |m: &mut FamilyFallbackProto| { &mut m.ascent_override_pct },
2583        ));
2584        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
2585            "local_src",
2586            |m: &FamilyFallbackProto| { &m.local_src },
2587            |m: &mut FamilyFallbackProto| { &mut m.local_src },
2588        ));
2589        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<FamilyFallbackProto>(
2590            "FamilyFallbackProto",
2591            fields,
2592            oneofs,
2593        )
2594    }
2595}
2596
2597impl ::protobuf::Message for FamilyFallbackProto {
2598    const NAME: &'static str = "FamilyFallbackProto";
2599
2600    fn is_initialized(&self) -> bool {
2601        true
2602    }
2603
2604    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
2605        while let Some(tag) = is.read_raw_tag_or_eof()? {
2606            match tag {
2607                10 => {
2608                    self.axis_target.push(is.read_message()?);
2609                },
2610                18 => {
2611                    self.target.push(is.read_message()?);
2612                },
2613                29 => {
2614                    self.size_adjust_pct = ::std::option::Option::Some(is.read_float()?);
2615                },
2616                45 => {
2617                    self.ascent_override_pct = ::std::option::Option::Some(is.read_float()?);
2618                },
2619                34 => {
2620                    self.local_src.push(is.read_string()?);
2621                },
2622                tag => {
2623                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
2624                },
2625            };
2626        }
2627        ::std::result::Result::Ok(())
2628    }
2629
2630    // Compute sizes of nested messages
2631    #[allow(unused_variables)]
2632    fn compute_size(&self) -> u64 {
2633        let mut my_size = 0;
2634        for value in &self.axis_target {
2635            let len = value.compute_size();
2636            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
2637        };
2638        for value in &self.target {
2639            let len = value.compute_size();
2640            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
2641        };
2642        if let Some(v) = self.size_adjust_pct {
2643            my_size += 1 + 4;
2644        }
2645        if let Some(v) = self.ascent_override_pct {
2646            my_size += 1 + 4;
2647        }
2648        for value in &self.local_src {
2649            my_size += ::protobuf::rt::string_size(4, &value);
2650        };
2651        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
2652        self.special_fields.cached_size().set(my_size as u32);
2653        my_size
2654    }
2655
2656    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
2657        for v in &self.axis_target {
2658            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
2659        };
2660        for v in &self.target {
2661            ::protobuf::rt::write_message_field_with_cached_size(2, v, os)?;
2662        };
2663        if let Some(v) = self.size_adjust_pct {
2664            os.write_float(3, v)?;
2665        }
2666        if let Some(v) = self.ascent_override_pct {
2667            os.write_float(5, v)?;
2668        }
2669        for v in &self.local_src {
2670            os.write_string(4, &v)?;
2671        };
2672        os.write_unknown_fields(self.special_fields.unknown_fields())?;
2673        ::std::result::Result::Ok(())
2674    }
2675
2676    fn special_fields(&self) -> &::protobuf::SpecialFields {
2677        &self.special_fields
2678    }
2679
2680    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
2681        &mut self.special_fields
2682    }
2683
2684    fn new() -> FamilyFallbackProto {
2685        FamilyFallbackProto::new()
2686    }
2687
2688    fn clear(&mut self) {
2689        self.axis_target.clear();
2690        self.target.clear();
2691        self.size_adjust_pct = ::std::option::Option::None;
2692        self.ascent_override_pct = ::std::option::Option::None;
2693        self.local_src.clear();
2694        self.special_fields.clear();
2695    }
2696
2697    fn default_instance() -> &'static FamilyFallbackProto {
2698        static instance: FamilyFallbackProto = FamilyFallbackProto {
2699            axis_target: ::std::vec::Vec::new(),
2700            target: ::std::vec::Vec::new(),
2701            size_adjust_pct: ::std::option::Option::None,
2702            ascent_override_pct: ::std::option::Option::None,
2703            local_src: ::std::vec::Vec::new(),
2704            special_fields: ::protobuf::SpecialFields::new(),
2705        };
2706        &instance
2707    }
2708}
2709
2710impl ::protobuf::MessageFull for FamilyFallbackProto {
2711    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
2712        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
2713        descriptor.get(|| file_descriptor().message_by_package_relative_name("FamilyFallbackProto").unwrap()).clone()
2714    }
2715}
2716
2717impl ::std::fmt::Display for FamilyFallbackProto {
2718    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2719        ::protobuf::text_format::fmt(self, f)
2720    }
2721}
2722
2723impl ::protobuf::reflect::ProtobufValue for FamilyFallbackProto {
2724    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
2725}
2726
2727///  Corresponds to SampleTextProto in
2728///  google3/java/com/google/fonts/backend/spanner/google_fonts_proto.proto
2729// @@protoc_insertion_point(message:google.fonts_public.SampleTextProto)
2730#[derive(PartialEq,Clone,Default,Debug)]
2731pub struct SampleTextProto {
2732    // message fields
2733    // @@protoc_insertion_point(field:google.fonts_public.SampleTextProto.masthead_full)
2734    pub masthead_full: ::std::option::Option<::std::string::String>,
2735    // @@protoc_insertion_point(field:google.fonts_public.SampleTextProto.masthead_partial)
2736    pub masthead_partial: ::std::option::Option<::std::string::String>,
2737    // @@protoc_insertion_point(field:google.fonts_public.SampleTextProto.styles)
2738    pub styles: ::std::option::Option<::std::string::String>,
2739    // @@protoc_insertion_point(field:google.fonts_public.SampleTextProto.tester)
2740    pub tester: ::std::option::Option<::std::string::String>,
2741    // @@protoc_insertion_point(field:google.fonts_public.SampleTextProto.poster_sm)
2742    pub poster_sm: ::std::option::Option<::std::string::String>,
2743    // @@protoc_insertion_point(field:google.fonts_public.SampleTextProto.poster_md)
2744    pub poster_md: ::std::option::Option<::std::string::String>,
2745    // @@protoc_insertion_point(field:google.fonts_public.SampleTextProto.poster_lg)
2746    pub poster_lg: ::std::option::Option<::std::string::String>,
2747    // @@protoc_insertion_point(field:google.fonts_public.SampleTextProto.specimen_48)
2748    pub specimen_48: ::std::option::Option<::std::string::String>,
2749    // @@protoc_insertion_point(field:google.fonts_public.SampleTextProto.specimen_36)
2750    pub specimen_36: ::std::option::Option<::std::string::String>,
2751    // @@protoc_insertion_point(field:google.fonts_public.SampleTextProto.specimen_32)
2752    pub specimen_32: ::std::option::Option<::std::string::String>,
2753    // @@protoc_insertion_point(field:google.fonts_public.SampleTextProto.specimen_21)
2754    pub specimen_21: ::std::option::Option<::std::string::String>,
2755    // @@protoc_insertion_point(field:google.fonts_public.SampleTextProto.specimen_16)
2756    pub specimen_16: ::std::option::Option<::std::string::String>,
2757    // @@protoc_insertion_point(field:google.fonts_public.SampleTextProto.note)
2758    pub note: ::std::option::Option<::std::string::String>,
2759    // special fields
2760    // @@protoc_insertion_point(special_field:google.fonts_public.SampleTextProto.special_fields)
2761    pub special_fields: ::protobuf::SpecialFields,
2762}
2763
2764impl<'a> ::std::default::Default for &'a SampleTextProto {
2765    fn default() -> &'a SampleTextProto {
2766        <SampleTextProto as ::protobuf::Message>::default_instance()
2767    }
2768}
2769
2770impl SampleTextProto {
2771    pub fn new() -> SampleTextProto {
2772        ::std::default::Default::default()
2773    }
2774
2775    // optional string masthead_full = 1;
2776
2777    pub fn masthead_full(&self) -> &str {
2778        match self.masthead_full.as_ref() {
2779            Some(v) => v,
2780            None => "",
2781        }
2782    }
2783
2784    pub fn clear_masthead_full(&mut self) {
2785        self.masthead_full = ::std::option::Option::None;
2786    }
2787
2788    pub fn has_masthead_full(&self) -> bool {
2789        self.masthead_full.is_some()
2790    }
2791
2792    // Param is passed by value, moved
2793    pub fn set_masthead_full(&mut self, v: ::std::string::String) {
2794        self.masthead_full = ::std::option::Option::Some(v);
2795    }
2796
2797    // Mutable pointer to the field.
2798    // If field is not initialized, it is initialized with default value first.
2799    pub fn mut_masthead_full(&mut self) -> &mut ::std::string::String {
2800        if self.masthead_full.is_none() {
2801            self.masthead_full = ::std::option::Option::Some(::std::string::String::new());
2802        }
2803        self.masthead_full.as_mut().unwrap()
2804    }
2805
2806    // Take field
2807    pub fn take_masthead_full(&mut self) -> ::std::string::String {
2808        self.masthead_full.take().unwrap_or_else(|| ::std::string::String::new())
2809    }
2810
2811    // optional string masthead_partial = 2;
2812
2813    pub fn masthead_partial(&self) -> &str {
2814        match self.masthead_partial.as_ref() {
2815            Some(v) => v,
2816            None => "",
2817        }
2818    }
2819
2820    pub fn clear_masthead_partial(&mut self) {
2821        self.masthead_partial = ::std::option::Option::None;
2822    }
2823
2824    pub fn has_masthead_partial(&self) -> bool {
2825        self.masthead_partial.is_some()
2826    }
2827
2828    // Param is passed by value, moved
2829    pub fn set_masthead_partial(&mut self, v: ::std::string::String) {
2830        self.masthead_partial = ::std::option::Option::Some(v);
2831    }
2832
2833    // Mutable pointer to the field.
2834    // If field is not initialized, it is initialized with default value first.
2835    pub fn mut_masthead_partial(&mut self) -> &mut ::std::string::String {
2836        if self.masthead_partial.is_none() {
2837            self.masthead_partial = ::std::option::Option::Some(::std::string::String::new());
2838        }
2839        self.masthead_partial.as_mut().unwrap()
2840    }
2841
2842    // Take field
2843    pub fn take_masthead_partial(&mut self) -> ::std::string::String {
2844        self.masthead_partial.take().unwrap_or_else(|| ::std::string::String::new())
2845    }
2846
2847    // optional string styles = 3;
2848
2849    pub fn styles(&self) -> &str {
2850        match self.styles.as_ref() {
2851            Some(v) => v,
2852            None => "",
2853        }
2854    }
2855
2856    pub fn clear_styles(&mut self) {
2857        self.styles = ::std::option::Option::None;
2858    }
2859
2860    pub fn has_styles(&self) -> bool {
2861        self.styles.is_some()
2862    }
2863
2864    // Param is passed by value, moved
2865    pub fn set_styles(&mut self, v: ::std::string::String) {
2866        self.styles = ::std::option::Option::Some(v);
2867    }
2868
2869    // Mutable pointer to the field.
2870    // If field is not initialized, it is initialized with default value first.
2871    pub fn mut_styles(&mut self) -> &mut ::std::string::String {
2872        if self.styles.is_none() {
2873            self.styles = ::std::option::Option::Some(::std::string::String::new());
2874        }
2875        self.styles.as_mut().unwrap()
2876    }
2877
2878    // Take field
2879    pub fn take_styles(&mut self) -> ::std::string::String {
2880        self.styles.take().unwrap_or_else(|| ::std::string::String::new())
2881    }
2882
2883    // optional string tester = 4;
2884
2885    pub fn tester(&self) -> &str {
2886        match self.tester.as_ref() {
2887            Some(v) => v,
2888            None => "",
2889        }
2890    }
2891
2892    pub fn clear_tester(&mut self) {
2893        self.tester = ::std::option::Option::None;
2894    }
2895
2896    pub fn has_tester(&self) -> bool {
2897        self.tester.is_some()
2898    }
2899
2900    // Param is passed by value, moved
2901    pub fn set_tester(&mut self, v: ::std::string::String) {
2902        self.tester = ::std::option::Option::Some(v);
2903    }
2904
2905    // Mutable pointer to the field.
2906    // If field is not initialized, it is initialized with default value first.
2907    pub fn mut_tester(&mut self) -> &mut ::std::string::String {
2908        if self.tester.is_none() {
2909            self.tester = ::std::option::Option::Some(::std::string::String::new());
2910        }
2911        self.tester.as_mut().unwrap()
2912    }
2913
2914    // Take field
2915    pub fn take_tester(&mut self) -> ::std::string::String {
2916        self.tester.take().unwrap_or_else(|| ::std::string::String::new())
2917    }
2918
2919    // optional string poster_sm = 5;
2920
2921    pub fn poster_sm(&self) -> &str {
2922        match self.poster_sm.as_ref() {
2923            Some(v) => v,
2924            None => "",
2925        }
2926    }
2927
2928    pub fn clear_poster_sm(&mut self) {
2929        self.poster_sm = ::std::option::Option::None;
2930    }
2931
2932    pub fn has_poster_sm(&self) -> bool {
2933        self.poster_sm.is_some()
2934    }
2935
2936    // Param is passed by value, moved
2937    pub fn set_poster_sm(&mut self, v: ::std::string::String) {
2938        self.poster_sm = ::std::option::Option::Some(v);
2939    }
2940
2941    // Mutable pointer to the field.
2942    // If field is not initialized, it is initialized with default value first.
2943    pub fn mut_poster_sm(&mut self) -> &mut ::std::string::String {
2944        if self.poster_sm.is_none() {
2945            self.poster_sm = ::std::option::Option::Some(::std::string::String::new());
2946        }
2947        self.poster_sm.as_mut().unwrap()
2948    }
2949
2950    // Take field
2951    pub fn take_poster_sm(&mut self) -> ::std::string::String {
2952        self.poster_sm.take().unwrap_or_else(|| ::std::string::String::new())
2953    }
2954
2955    // optional string poster_md = 6;
2956
2957    pub fn poster_md(&self) -> &str {
2958        match self.poster_md.as_ref() {
2959            Some(v) => v,
2960            None => "",
2961        }
2962    }
2963
2964    pub fn clear_poster_md(&mut self) {
2965        self.poster_md = ::std::option::Option::None;
2966    }
2967
2968    pub fn has_poster_md(&self) -> bool {
2969        self.poster_md.is_some()
2970    }
2971
2972    // Param is passed by value, moved
2973    pub fn set_poster_md(&mut self, v: ::std::string::String) {
2974        self.poster_md = ::std::option::Option::Some(v);
2975    }
2976
2977    // Mutable pointer to the field.
2978    // If field is not initialized, it is initialized with default value first.
2979    pub fn mut_poster_md(&mut self) -> &mut ::std::string::String {
2980        if self.poster_md.is_none() {
2981            self.poster_md = ::std::option::Option::Some(::std::string::String::new());
2982        }
2983        self.poster_md.as_mut().unwrap()
2984    }
2985
2986    // Take field
2987    pub fn take_poster_md(&mut self) -> ::std::string::String {
2988        self.poster_md.take().unwrap_or_else(|| ::std::string::String::new())
2989    }
2990
2991    // optional string poster_lg = 7;
2992
2993    pub fn poster_lg(&self) -> &str {
2994        match self.poster_lg.as_ref() {
2995            Some(v) => v,
2996            None => "",
2997        }
2998    }
2999
3000    pub fn clear_poster_lg(&mut self) {
3001        self.poster_lg = ::std::option::Option::None;
3002    }
3003
3004    pub fn has_poster_lg(&self) -> bool {
3005        self.poster_lg.is_some()
3006    }
3007
3008    // Param is passed by value, moved
3009    pub fn set_poster_lg(&mut self, v: ::std::string::String) {
3010        self.poster_lg = ::std::option::Option::Some(v);
3011    }
3012
3013    // Mutable pointer to the field.
3014    // If field is not initialized, it is initialized with default value first.
3015    pub fn mut_poster_lg(&mut self) -> &mut ::std::string::String {
3016        if self.poster_lg.is_none() {
3017            self.poster_lg = ::std::option::Option::Some(::std::string::String::new());
3018        }
3019        self.poster_lg.as_mut().unwrap()
3020    }
3021
3022    // Take field
3023    pub fn take_poster_lg(&mut self) -> ::std::string::String {
3024        self.poster_lg.take().unwrap_or_else(|| ::std::string::String::new())
3025    }
3026
3027    // optional string specimen_48 = 8;
3028
3029    pub fn specimen_48(&self) -> &str {
3030        match self.specimen_48.as_ref() {
3031            Some(v) => v,
3032            None => "",
3033        }
3034    }
3035
3036    pub fn clear_specimen_48(&mut self) {
3037        self.specimen_48 = ::std::option::Option::None;
3038    }
3039
3040    pub fn has_specimen_48(&self) -> bool {
3041        self.specimen_48.is_some()
3042    }
3043
3044    // Param is passed by value, moved
3045    pub fn set_specimen_48(&mut self, v: ::std::string::String) {
3046        self.specimen_48 = ::std::option::Option::Some(v);
3047    }
3048
3049    // Mutable pointer to the field.
3050    // If field is not initialized, it is initialized with default value first.
3051    pub fn mut_specimen_48(&mut self) -> &mut ::std::string::String {
3052        if self.specimen_48.is_none() {
3053            self.specimen_48 = ::std::option::Option::Some(::std::string::String::new());
3054        }
3055        self.specimen_48.as_mut().unwrap()
3056    }
3057
3058    // Take field
3059    pub fn take_specimen_48(&mut self) -> ::std::string::String {
3060        self.specimen_48.take().unwrap_or_else(|| ::std::string::String::new())
3061    }
3062
3063    // optional string specimen_36 = 9;
3064
3065    pub fn specimen_36(&self) -> &str {
3066        match self.specimen_36.as_ref() {
3067            Some(v) => v,
3068            None => "",
3069        }
3070    }
3071
3072    pub fn clear_specimen_36(&mut self) {
3073        self.specimen_36 = ::std::option::Option::None;
3074    }
3075
3076    pub fn has_specimen_36(&self) -> bool {
3077        self.specimen_36.is_some()
3078    }
3079
3080    // Param is passed by value, moved
3081    pub fn set_specimen_36(&mut self, v: ::std::string::String) {
3082        self.specimen_36 = ::std::option::Option::Some(v);
3083    }
3084
3085    // Mutable pointer to the field.
3086    // If field is not initialized, it is initialized with default value first.
3087    pub fn mut_specimen_36(&mut self) -> &mut ::std::string::String {
3088        if self.specimen_36.is_none() {
3089            self.specimen_36 = ::std::option::Option::Some(::std::string::String::new());
3090        }
3091        self.specimen_36.as_mut().unwrap()
3092    }
3093
3094    // Take field
3095    pub fn take_specimen_36(&mut self) -> ::std::string::String {
3096        self.specimen_36.take().unwrap_or_else(|| ::std::string::String::new())
3097    }
3098
3099    // optional string specimen_32 = 10;
3100
3101    pub fn specimen_32(&self) -> &str {
3102        match self.specimen_32.as_ref() {
3103            Some(v) => v,
3104            None => "",
3105        }
3106    }
3107
3108    pub fn clear_specimen_32(&mut self) {
3109        self.specimen_32 = ::std::option::Option::None;
3110    }
3111
3112    pub fn has_specimen_32(&self) -> bool {
3113        self.specimen_32.is_some()
3114    }
3115
3116    // Param is passed by value, moved
3117    pub fn set_specimen_32(&mut self, v: ::std::string::String) {
3118        self.specimen_32 = ::std::option::Option::Some(v);
3119    }
3120
3121    // Mutable pointer to the field.
3122    // If field is not initialized, it is initialized with default value first.
3123    pub fn mut_specimen_32(&mut self) -> &mut ::std::string::String {
3124        if self.specimen_32.is_none() {
3125            self.specimen_32 = ::std::option::Option::Some(::std::string::String::new());
3126        }
3127        self.specimen_32.as_mut().unwrap()
3128    }
3129
3130    // Take field
3131    pub fn take_specimen_32(&mut self) -> ::std::string::String {
3132        self.specimen_32.take().unwrap_or_else(|| ::std::string::String::new())
3133    }
3134
3135    // optional string specimen_21 = 11;
3136
3137    pub fn specimen_21(&self) -> &str {
3138        match self.specimen_21.as_ref() {
3139            Some(v) => v,
3140            None => "",
3141        }
3142    }
3143
3144    pub fn clear_specimen_21(&mut self) {
3145        self.specimen_21 = ::std::option::Option::None;
3146    }
3147
3148    pub fn has_specimen_21(&self) -> bool {
3149        self.specimen_21.is_some()
3150    }
3151
3152    // Param is passed by value, moved
3153    pub fn set_specimen_21(&mut self, v: ::std::string::String) {
3154        self.specimen_21 = ::std::option::Option::Some(v);
3155    }
3156
3157    // Mutable pointer to the field.
3158    // If field is not initialized, it is initialized with default value first.
3159    pub fn mut_specimen_21(&mut self) -> &mut ::std::string::String {
3160        if self.specimen_21.is_none() {
3161            self.specimen_21 = ::std::option::Option::Some(::std::string::String::new());
3162        }
3163        self.specimen_21.as_mut().unwrap()
3164    }
3165
3166    // Take field
3167    pub fn take_specimen_21(&mut self) -> ::std::string::String {
3168        self.specimen_21.take().unwrap_or_else(|| ::std::string::String::new())
3169    }
3170
3171    // optional string specimen_16 = 12;
3172
3173    pub fn specimen_16(&self) -> &str {
3174        match self.specimen_16.as_ref() {
3175            Some(v) => v,
3176            None => "",
3177        }
3178    }
3179
3180    pub fn clear_specimen_16(&mut self) {
3181        self.specimen_16 = ::std::option::Option::None;
3182    }
3183
3184    pub fn has_specimen_16(&self) -> bool {
3185        self.specimen_16.is_some()
3186    }
3187
3188    // Param is passed by value, moved
3189    pub fn set_specimen_16(&mut self, v: ::std::string::String) {
3190        self.specimen_16 = ::std::option::Option::Some(v);
3191    }
3192
3193    // Mutable pointer to the field.
3194    // If field is not initialized, it is initialized with default value first.
3195    pub fn mut_specimen_16(&mut self) -> &mut ::std::string::String {
3196        if self.specimen_16.is_none() {
3197            self.specimen_16 = ::std::option::Option::Some(::std::string::String::new());
3198        }
3199        self.specimen_16.as_mut().unwrap()
3200    }
3201
3202    // Take field
3203    pub fn take_specimen_16(&mut self) -> ::std::string::String {
3204        self.specimen_16.take().unwrap_or_else(|| ::std::string::String::new())
3205    }
3206
3207    // optional string note = 13;
3208
3209    pub fn note(&self) -> &str {
3210        match self.note.as_ref() {
3211            Some(v) => v,
3212            None => "",
3213        }
3214    }
3215
3216    pub fn clear_note(&mut self) {
3217        self.note = ::std::option::Option::None;
3218    }
3219
3220    pub fn has_note(&self) -> bool {
3221        self.note.is_some()
3222    }
3223
3224    // Param is passed by value, moved
3225    pub fn set_note(&mut self, v: ::std::string::String) {
3226        self.note = ::std::option::Option::Some(v);
3227    }
3228
3229    // Mutable pointer to the field.
3230    // If field is not initialized, it is initialized with default value first.
3231    pub fn mut_note(&mut self) -> &mut ::std::string::String {
3232        if self.note.is_none() {
3233            self.note = ::std::option::Option::Some(::std::string::String::new());
3234        }
3235        self.note.as_mut().unwrap()
3236    }
3237
3238    // Take field
3239    pub fn take_note(&mut self) -> ::std::string::String {
3240        self.note.take().unwrap_or_else(|| ::std::string::String::new())
3241    }
3242
3243    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
3244        let mut fields = ::std::vec::Vec::with_capacity(13);
3245        let mut oneofs = ::std::vec::Vec::with_capacity(0);
3246        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3247            "masthead_full",
3248            |m: &SampleTextProto| { &m.masthead_full },
3249            |m: &mut SampleTextProto| { &mut m.masthead_full },
3250        ));
3251        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3252            "masthead_partial",
3253            |m: &SampleTextProto| { &m.masthead_partial },
3254            |m: &mut SampleTextProto| { &mut m.masthead_partial },
3255        ));
3256        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3257            "styles",
3258            |m: &SampleTextProto| { &m.styles },
3259            |m: &mut SampleTextProto| { &mut m.styles },
3260        ));
3261        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3262            "tester",
3263            |m: &SampleTextProto| { &m.tester },
3264            |m: &mut SampleTextProto| { &mut m.tester },
3265        ));
3266        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3267            "poster_sm",
3268            |m: &SampleTextProto| { &m.poster_sm },
3269            |m: &mut SampleTextProto| { &mut m.poster_sm },
3270        ));
3271        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3272            "poster_md",
3273            |m: &SampleTextProto| { &m.poster_md },
3274            |m: &mut SampleTextProto| { &mut m.poster_md },
3275        ));
3276        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3277            "poster_lg",
3278            |m: &SampleTextProto| { &m.poster_lg },
3279            |m: &mut SampleTextProto| { &mut m.poster_lg },
3280        ));
3281        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3282            "specimen_48",
3283            |m: &SampleTextProto| { &m.specimen_48 },
3284            |m: &mut SampleTextProto| { &mut m.specimen_48 },
3285        ));
3286        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3287            "specimen_36",
3288            |m: &SampleTextProto| { &m.specimen_36 },
3289            |m: &mut SampleTextProto| { &mut m.specimen_36 },
3290        ));
3291        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3292            "specimen_32",
3293            |m: &SampleTextProto| { &m.specimen_32 },
3294            |m: &mut SampleTextProto| { &mut m.specimen_32 },
3295        ));
3296        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3297            "specimen_21",
3298            |m: &SampleTextProto| { &m.specimen_21 },
3299            |m: &mut SampleTextProto| { &mut m.specimen_21 },
3300        ));
3301        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3302            "specimen_16",
3303            |m: &SampleTextProto| { &m.specimen_16 },
3304            |m: &mut SampleTextProto| { &mut m.specimen_16 },
3305        ));
3306        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3307            "note",
3308            |m: &SampleTextProto| { &m.note },
3309            |m: &mut SampleTextProto| { &mut m.note },
3310        ));
3311        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<SampleTextProto>(
3312            "SampleTextProto",
3313            fields,
3314            oneofs,
3315        )
3316    }
3317}
3318
3319impl ::protobuf::Message for SampleTextProto {
3320    const NAME: &'static str = "SampleTextProto";
3321
3322    fn is_initialized(&self) -> bool {
3323        true
3324    }
3325
3326    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
3327        while let Some(tag) = is.read_raw_tag_or_eof()? {
3328            match tag {
3329                10 => {
3330                    self.masthead_full = ::std::option::Option::Some(is.read_string()?);
3331                },
3332                18 => {
3333                    self.masthead_partial = ::std::option::Option::Some(is.read_string()?);
3334                },
3335                26 => {
3336                    self.styles = ::std::option::Option::Some(is.read_string()?);
3337                },
3338                34 => {
3339                    self.tester = ::std::option::Option::Some(is.read_string()?);
3340                },
3341                42 => {
3342                    self.poster_sm = ::std::option::Option::Some(is.read_string()?);
3343                },
3344                50 => {
3345                    self.poster_md = ::std::option::Option::Some(is.read_string()?);
3346                },
3347                58 => {
3348                    self.poster_lg = ::std::option::Option::Some(is.read_string()?);
3349                },
3350                66 => {
3351                    self.specimen_48 = ::std::option::Option::Some(is.read_string()?);
3352                },
3353                74 => {
3354                    self.specimen_36 = ::std::option::Option::Some(is.read_string()?);
3355                },
3356                82 => {
3357                    self.specimen_32 = ::std::option::Option::Some(is.read_string()?);
3358                },
3359                90 => {
3360                    self.specimen_21 = ::std::option::Option::Some(is.read_string()?);
3361                },
3362                98 => {
3363                    self.specimen_16 = ::std::option::Option::Some(is.read_string()?);
3364                },
3365                106 => {
3366                    self.note = ::std::option::Option::Some(is.read_string()?);
3367                },
3368                tag => {
3369                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
3370                },
3371            };
3372        }
3373        ::std::result::Result::Ok(())
3374    }
3375
3376    // Compute sizes of nested messages
3377    #[allow(unused_variables)]
3378    fn compute_size(&self) -> u64 {
3379        let mut my_size = 0;
3380        if let Some(v) = self.masthead_full.as_ref() {
3381            my_size += ::protobuf::rt::string_size(1, &v);
3382        }
3383        if let Some(v) = self.masthead_partial.as_ref() {
3384            my_size += ::protobuf::rt::string_size(2, &v);
3385        }
3386        if let Some(v) = self.styles.as_ref() {
3387            my_size += ::protobuf::rt::string_size(3, &v);
3388        }
3389        if let Some(v) = self.tester.as_ref() {
3390            my_size += ::protobuf::rt::string_size(4, &v);
3391        }
3392        if let Some(v) = self.poster_sm.as_ref() {
3393            my_size += ::protobuf::rt::string_size(5, &v);
3394        }
3395        if let Some(v) = self.poster_md.as_ref() {
3396            my_size += ::protobuf::rt::string_size(6, &v);
3397        }
3398        if let Some(v) = self.poster_lg.as_ref() {
3399            my_size += ::protobuf::rt::string_size(7, &v);
3400        }
3401        if let Some(v) = self.specimen_48.as_ref() {
3402            my_size += ::protobuf::rt::string_size(8, &v);
3403        }
3404        if let Some(v) = self.specimen_36.as_ref() {
3405            my_size += ::protobuf::rt::string_size(9, &v);
3406        }
3407        if let Some(v) = self.specimen_32.as_ref() {
3408            my_size += ::protobuf::rt::string_size(10, &v);
3409        }
3410        if let Some(v) = self.specimen_21.as_ref() {
3411            my_size += ::protobuf::rt::string_size(11, &v);
3412        }
3413        if let Some(v) = self.specimen_16.as_ref() {
3414            my_size += ::protobuf::rt::string_size(12, &v);
3415        }
3416        if let Some(v) = self.note.as_ref() {
3417            my_size += ::protobuf::rt::string_size(13, &v);
3418        }
3419        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
3420        self.special_fields.cached_size().set(my_size as u32);
3421        my_size
3422    }
3423
3424    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
3425        if let Some(v) = self.masthead_full.as_ref() {
3426            os.write_string(1, v)?;
3427        }
3428        if let Some(v) = self.masthead_partial.as_ref() {
3429            os.write_string(2, v)?;
3430        }
3431        if let Some(v) = self.styles.as_ref() {
3432            os.write_string(3, v)?;
3433        }
3434        if let Some(v) = self.tester.as_ref() {
3435            os.write_string(4, v)?;
3436        }
3437        if let Some(v) = self.poster_sm.as_ref() {
3438            os.write_string(5, v)?;
3439        }
3440        if let Some(v) = self.poster_md.as_ref() {
3441            os.write_string(6, v)?;
3442        }
3443        if let Some(v) = self.poster_lg.as_ref() {
3444            os.write_string(7, v)?;
3445        }
3446        if let Some(v) = self.specimen_48.as_ref() {
3447            os.write_string(8, v)?;
3448        }
3449        if let Some(v) = self.specimen_36.as_ref() {
3450            os.write_string(9, v)?;
3451        }
3452        if let Some(v) = self.specimen_32.as_ref() {
3453            os.write_string(10, v)?;
3454        }
3455        if let Some(v) = self.specimen_21.as_ref() {
3456            os.write_string(11, v)?;
3457        }
3458        if let Some(v) = self.specimen_16.as_ref() {
3459            os.write_string(12, v)?;
3460        }
3461        if let Some(v) = self.note.as_ref() {
3462            os.write_string(13, v)?;
3463        }
3464        os.write_unknown_fields(self.special_fields.unknown_fields())?;
3465        ::std::result::Result::Ok(())
3466    }
3467
3468    fn special_fields(&self) -> &::protobuf::SpecialFields {
3469        &self.special_fields
3470    }
3471
3472    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
3473        &mut self.special_fields
3474    }
3475
3476    fn new() -> SampleTextProto {
3477        SampleTextProto::new()
3478    }
3479
3480    fn clear(&mut self) {
3481        self.masthead_full = ::std::option::Option::None;
3482        self.masthead_partial = ::std::option::Option::None;
3483        self.styles = ::std::option::Option::None;
3484        self.tester = ::std::option::Option::None;
3485        self.poster_sm = ::std::option::Option::None;
3486        self.poster_md = ::std::option::Option::None;
3487        self.poster_lg = ::std::option::Option::None;
3488        self.specimen_48 = ::std::option::Option::None;
3489        self.specimen_36 = ::std::option::Option::None;
3490        self.specimen_32 = ::std::option::Option::None;
3491        self.specimen_21 = ::std::option::Option::None;
3492        self.specimen_16 = ::std::option::Option::None;
3493        self.note = ::std::option::Option::None;
3494        self.special_fields.clear();
3495    }
3496
3497    fn default_instance() -> &'static SampleTextProto {
3498        static instance: SampleTextProto = SampleTextProto {
3499            masthead_full: ::std::option::Option::None,
3500            masthead_partial: ::std::option::Option::None,
3501            styles: ::std::option::Option::None,
3502            tester: ::std::option::Option::None,
3503            poster_sm: ::std::option::Option::None,
3504            poster_md: ::std::option::Option::None,
3505            poster_lg: ::std::option::Option::None,
3506            specimen_48: ::std::option::Option::None,
3507            specimen_36: ::std::option::Option::None,
3508            specimen_32: ::std::option::Option::None,
3509            specimen_21: ::std::option::Option::None,
3510            specimen_16: ::std::option::Option::None,
3511            note: ::std::option::Option::None,
3512            special_fields: ::protobuf::SpecialFields::new(),
3513        };
3514        &instance
3515    }
3516}
3517
3518impl ::protobuf::MessageFull for SampleTextProto {
3519    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
3520        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
3521        descriptor.get(|| file_descriptor().message_by_package_relative_name("SampleTextProto").unwrap()).clone()
3522    }
3523}
3524
3525impl ::std::fmt::Display for SampleTextProto {
3526    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3527        ::protobuf::text_format::fmt(self, f)
3528    }
3529}
3530
3531impl ::protobuf::reflect::ProtobufValue for SampleTextProto {
3532    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
3533}
3534
3535// @@protoc_insertion_point(message:google.fonts_public.GlyphGroupProto)
3536#[derive(PartialEq,Clone,Default,Debug)]
3537pub struct GlyphGroupProto {
3538    // message fields
3539    // @@protoc_insertion_point(field:google.fonts_public.GlyphGroupProto.name)
3540    pub name: ::std::option::Option<::std::string::String>,
3541    // @@protoc_insertion_point(field:google.fonts_public.GlyphGroupProto.glyphs)
3542    pub glyphs: ::std::option::Option<::std::string::String>,
3543    // special fields
3544    // @@protoc_insertion_point(special_field:google.fonts_public.GlyphGroupProto.special_fields)
3545    pub special_fields: ::protobuf::SpecialFields,
3546}
3547
3548impl<'a> ::std::default::Default for &'a GlyphGroupProto {
3549    fn default() -> &'a GlyphGroupProto {
3550        <GlyphGroupProto as ::protobuf::Message>::default_instance()
3551    }
3552}
3553
3554impl GlyphGroupProto {
3555    pub fn new() -> GlyphGroupProto {
3556        ::std::default::Default::default()
3557    }
3558
3559    // optional string name = 1;
3560
3561    pub fn name(&self) -> &str {
3562        match self.name.as_ref() {
3563            Some(v) => v,
3564            None => "",
3565        }
3566    }
3567
3568    pub fn clear_name(&mut self) {
3569        self.name = ::std::option::Option::None;
3570    }
3571
3572    pub fn has_name(&self) -> bool {
3573        self.name.is_some()
3574    }
3575
3576    // Param is passed by value, moved
3577    pub fn set_name(&mut self, v: ::std::string::String) {
3578        self.name = ::std::option::Option::Some(v);
3579    }
3580
3581    // Mutable pointer to the field.
3582    // If field is not initialized, it is initialized with default value first.
3583    pub fn mut_name(&mut self) -> &mut ::std::string::String {
3584        if self.name.is_none() {
3585            self.name = ::std::option::Option::Some(::std::string::String::new());
3586        }
3587        self.name.as_mut().unwrap()
3588    }
3589
3590    // Take field
3591    pub fn take_name(&mut self) -> ::std::string::String {
3592        self.name.take().unwrap_or_else(|| ::std::string::String::new())
3593    }
3594
3595    // optional string glyphs = 2;
3596
3597    pub fn glyphs(&self) -> &str {
3598        match self.glyphs.as_ref() {
3599            Some(v) => v,
3600            None => "",
3601        }
3602    }
3603
3604    pub fn clear_glyphs(&mut self) {
3605        self.glyphs = ::std::option::Option::None;
3606    }
3607
3608    pub fn has_glyphs(&self) -> bool {
3609        self.glyphs.is_some()
3610    }
3611
3612    // Param is passed by value, moved
3613    pub fn set_glyphs(&mut self, v: ::std::string::String) {
3614        self.glyphs = ::std::option::Option::Some(v);
3615    }
3616
3617    // Mutable pointer to the field.
3618    // If field is not initialized, it is initialized with default value first.
3619    pub fn mut_glyphs(&mut self) -> &mut ::std::string::String {
3620        if self.glyphs.is_none() {
3621            self.glyphs = ::std::option::Option::Some(::std::string::String::new());
3622        }
3623        self.glyphs.as_mut().unwrap()
3624    }
3625
3626    // Take field
3627    pub fn take_glyphs(&mut self) -> ::std::string::String {
3628        self.glyphs.take().unwrap_or_else(|| ::std::string::String::new())
3629    }
3630
3631    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
3632        let mut fields = ::std::vec::Vec::with_capacity(2);
3633        let mut oneofs = ::std::vec::Vec::with_capacity(0);
3634        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3635            "name",
3636            |m: &GlyphGroupProto| { &m.name },
3637            |m: &mut GlyphGroupProto| { &mut m.name },
3638        ));
3639        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3640            "glyphs",
3641            |m: &GlyphGroupProto| { &m.glyphs },
3642            |m: &mut GlyphGroupProto| { &mut m.glyphs },
3643        ));
3644        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<GlyphGroupProto>(
3645            "GlyphGroupProto",
3646            fields,
3647            oneofs,
3648        )
3649    }
3650}
3651
3652impl ::protobuf::Message for GlyphGroupProto {
3653    const NAME: &'static str = "GlyphGroupProto";
3654
3655    fn is_initialized(&self) -> bool {
3656        true
3657    }
3658
3659    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
3660        while let Some(tag) = is.read_raw_tag_or_eof()? {
3661            match tag {
3662                10 => {
3663                    self.name = ::std::option::Option::Some(is.read_string()?);
3664                },
3665                18 => {
3666                    self.glyphs = ::std::option::Option::Some(is.read_string()?);
3667                },
3668                tag => {
3669                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
3670                },
3671            };
3672        }
3673        ::std::result::Result::Ok(())
3674    }
3675
3676    // Compute sizes of nested messages
3677    #[allow(unused_variables)]
3678    fn compute_size(&self) -> u64 {
3679        let mut my_size = 0;
3680        if let Some(v) = self.name.as_ref() {
3681            my_size += ::protobuf::rt::string_size(1, &v);
3682        }
3683        if let Some(v) = self.glyphs.as_ref() {
3684            my_size += ::protobuf::rt::string_size(2, &v);
3685        }
3686        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
3687        self.special_fields.cached_size().set(my_size as u32);
3688        my_size
3689    }
3690
3691    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
3692        if let Some(v) = self.name.as_ref() {
3693            os.write_string(1, v)?;
3694        }
3695        if let Some(v) = self.glyphs.as_ref() {
3696            os.write_string(2, v)?;
3697        }
3698        os.write_unknown_fields(self.special_fields.unknown_fields())?;
3699        ::std::result::Result::Ok(())
3700    }
3701
3702    fn special_fields(&self) -> &::protobuf::SpecialFields {
3703        &self.special_fields
3704    }
3705
3706    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
3707        &mut self.special_fields
3708    }
3709
3710    fn new() -> GlyphGroupProto {
3711        GlyphGroupProto::new()
3712    }
3713
3714    fn clear(&mut self) {
3715        self.name = ::std::option::Option::None;
3716        self.glyphs = ::std::option::Option::None;
3717        self.special_fields.clear();
3718    }
3719
3720    fn default_instance() -> &'static GlyphGroupProto {
3721        static instance: GlyphGroupProto = GlyphGroupProto {
3722            name: ::std::option::Option::None,
3723            glyphs: ::std::option::Option::None,
3724            special_fields: ::protobuf::SpecialFields::new(),
3725        };
3726        &instance
3727    }
3728}
3729
3730impl ::protobuf::MessageFull for GlyphGroupProto {
3731    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
3732        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
3733        descriptor.get(|| file_descriptor().message_by_package_relative_name("GlyphGroupProto").unwrap()).clone()
3734    }
3735}
3736
3737impl ::std::fmt::Display for GlyphGroupProto {
3738    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3739        ::protobuf::text_format::fmt(self, f)
3740    }
3741}
3742
3743impl ::protobuf::reflect::ProtobufValue for GlyphGroupProto {
3744    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
3745}
3746
3747#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
3748// @@protoc_insertion_point(enum:google.fonts_public.TargetTypeProto)
3749pub enum TargetTypeProto {
3750    // @@protoc_insertion_point(enum_value:google.fonts_public.TargetTypeProto.TARGET_UNSPECIFIED)
3751    TARGET_UNSPECIFIED = 0,
3752    // @@protoc_insertion_point(enum_value:google.fonts_public.TargetTypeProto.TARGET_OS_WINDOWS)
3753    TARGET_OS_WINDOWS = 1,
3754    // @@protoc_insertion_point(enum_value:google.fonts_public.TargetTypeProto.TARGET_OS_MAC)
3755    TARGET_OS_MAC = 2,
3756    // @@protoc_insertion_point(enum_value:google.fonts_public.TargetTypeProto.TARGET_OS_LINUX)
3757    TARGET_OS_LINUX = 3,
3758    // @@protoc_insertion_point(enum_value:google.fonts_public.TargetTypeProto.TARGET_OS_ANDROID)
3759    TARGET_OS_ANDROID = 4,
3760    // @@protoc_insertion_point(enum_value:google.fonts_public.TargetTypeProto.TARGET_OS_IOS)
3761    TARGET_OS_IOS = 5,
3762}
3763
3764impl ::protobuf::Enum for TargetTypeProto {
3765    const NAME: &'static str = "TargetTypeProto";
3766
3767    fn value(&self) -> i32 {
3768        *self as i32
3769    }
3770
3771    fn from_i32(value: i32) -> ::std::option::Option<TargetTypeProto> {
3772        match value {
3773            0 => ::std::option::Option::Some(TargetTypeProto::TARGET_UNSPECIFIED),
3774            1 => ::std::option::Option::Some(TargetTypeProto::TARGET_OS_WINDOWS),
3775            2 => ::std::option::Option::Some(TargetTypeProto::TARGET_OS_MAC),
3776            3 => ::std::option::Option::Some(TargetTypeProto::TARGET_OS_LINUX),
3777            4 => ::std::option::Option::Some(TargetTypeProto::TARGET_OS_ANDROID),
3778            5 => ::std::option::Option::Some(TargetTypeProto::TARGET_OS_IOS),
3779            _ => ::std::option::Option::None
3780        }
3781    }
3782
3783    fn from_str(str: &str) -> ::std::option::Option<TargetTypeProto> {
3784        match str {
3785            "TARGET_UNSPECIFIED" => ::std::option::Option::Some(TargetTypeProto::TARGET_UNSPECIFIED),
3786            "TARGET_OS_WINDOWS" => ::std::option::Option::Some(TargetTypeProto::TARGET_OS_WINDOWS),
3787            "TARGET_OS_MAC" => ::std::option::Option::Some(TargetTypeProto::TARGET_OS_MAC),
3788            "TARGET_OS_LINUX" => ::std::option::Option::Some(TargetTypeProto::TARGET_OS_LINUX),
3789            "TARGET_OS_ANDROID" => ::std::option::Option::Some(TargetTypeProto::TARGET_OS_ANDROID),
3790            "TARGET_OS_IOS" => ::std::option::Option::Some(TargetTypeProto::TARGET_OS_IOS),
3791            _ => ::std::option::Option::None
3792        }
3793    }
3794
3795    const VALUES: &'static [TargetTypeProto] = &[
3796        TargetTypeProto::TARGET_UNSPECIFIED,
3797        TargetTypeProto::TARGET_OS_WINDOWS,
3798        TargetTypeProto::TARGET_OS_MAC,
3799        TargetTypeProto::TARGET_OS_LINUX,
3800        TargetTypeProto::TARGET_OS_ANDROID,
3801        TargetTypeProto::TARGET_OS_IOS,
3802    ];
3803}
3804
3805impl ::protobuf::EnumFull for TargetTypeProto {
3806    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
3807        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
3808        descriptor.get(|| file_descriptor().enum_by_package_relative_name("TargetTypeProto").unwrap()).clone()
3809    }
3810
3811    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
3812        let index = *self as usize;
3813        Self::enum_descriptor().value_by_index(index)
3814    }
3815}
3816
3817impl ::std::default::Default for TargetTypeProto {
3818    fn default() -> Self {
3819        TargetTypeProto::TARGET_UNSPECIFIED
3820    }
3821}
3822
3823impl TargetTypeProto {
3824    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
3825        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<TargetTypeProto>("TargetTypeProto")
3826    }
3827}
3828
3829static file_descriptor_proto_data: &'static [u8] = b"\
3830    \n\x12fonts_public.proto\x12\x13google.fonts_public\"\xfc\t\n\x0bFamilyP\
3831    roto\x12\x12\n\x04name\x18\x01\x20\x02(\tR\x04name\x12\x1a\n\x08designer\
3832    \x18\x02\x20\x02(\tR\x08designer\x12\x18\n\x07license\x18\x03\x20\x02(\t\
3833    R\x07license\x12\x1a\n\x08category\x18\x04\x20\x03(\tR\x08category\x12\
3834    \x1d\n\ndate_added\x18\x05\x20\x02(\tR\tdateAdded\x124\n\x05fonts\x18\
3835    \x06\x20\x03(\x0b2\x1e.google.fonts_public.FontProtoR\x05fonts\x12\x18\n\
3836    \x07aliases\x18\x07\x20\x03(\tR\x07aliases\x12\x18\n\x07subsets\x18\x08\
3837    \x20\x03(\tR\x07subsets\x12*\n\x11ttf_autohint_args\x18\t\x20\x01(\tR\
3838    \x0fttfAutohintArgs\x129\n\x04axes\x18\n\x20\x03(\x0b2%.google.fonts_pub\
3839    lic.AxisSegmentProtoR\x04axes\x12|\n\x1aregistry_default_overrides\x18\
3840    \x0b\x20\x03(\x0b2>.google.fonts_public.FamilyProto.RegistryDefaultOverr\
3841    idesEntryR\x18registryDefaultOverrides\x128\n\x06source\x18\x0c\x20\x01(\
3842    \x0b2\x20.google.fonts_public.SourceProtoR\x06source\x12\x17\n\x07is_not\
3843    o\x18\r\x20\x01(\x08R\x06isNoto\x12\x1c\n\tlanguages\x18\x0e\x20\x03(\tR\
3844    \tlanguages\x12F\n\tfallbacks\x18\x0f\x20\x03(\x0b2(.google.fonts_public\
3845    .FamilyFallbackProtoR\tfallbacks\x12W\n\rsample_glyphs\x18\x10\x20\x03(\
3846    \x0b22.google.fonts_public.FamilyProto.SampleGlyphsEntryR\x0csampleGlyph\
3847    s\x12E\n\x0bsample_text\x18\x11\x20\x01(\x0b2$.google.fonts_public.Sampl\
3848    eTextProtoR\nsampleText\x12!\n\x0cdisplay_name\x18\x12\x20\x01(\tR\x0bdi\
3849    splayName\x12X\n\x15ordered_sample_glyphs\x18\x13\x20\x03(\x0b2$.google.\
3850    fonts_public.GlyphGroupProtoR\x13orderedSampleGlyphs\x12!\n\x0cminisite_\
3851    url\x18\x14\x20\x01(\tR\x0bminisiteUrl\x12%\n\x0eprimary_script\x18\x15\
3852    \x20\x01(\tR\rprimaryScript\x12)\n\x10primary_language\x18\x16\x20\x01(\
3853    \tR\x0fprimaryLanguage\x12\x16\n\x06stroke\x18\x17\x20\x01(\tR\x06stroke\
3854    \x12(\n\x0fclassifications\x18\x19\x20\x03(\tR\x0fclassifications\x1aK\n\
3855    \x1dRegistryDefaultOverridesEntry\x12\x10\n\x03key\x18\x01\x20\x01(\tR\
3856    \x03key\x12\x14\n\x05value\x18\x02\x20\x01(\x02R\x05value:\x028\x01\x1a?\
3857    \n\x11SampleGlyphsEntry\x12\x10\n\x03key\x18\x01\x20\x01(\tR\x03key\x12\
3858    \x14\n\x05value\x18\x02\x20\x01(\tR\x05value:\x028\x01\"\xce\x01\n\tFont\
3859    Proto\x12\x12\n\x04name\x18\x01\x20\x02(\tR\x04name\x12\x14\n\x05style\
3860    \x18\x02\x20\x02(\tR\x05style\x12\x16\n\x06weight\x18\x03\x20\x02(\x05R\
3861    \x06weight\x12\x1a\n\x08filename\x18\x04\x20\x02(\tR\x08filename\x12(\n\
3862    \x10post_script_name\x18\x05\x20\x02(\tR\x0epostScriptName\x12\x1b\n\tfu\
3863    ll_name\x18\x06\x20\x02(\tR\x08fullName\x12\x1c\n\tcopyright\x18\x07\x20\
3864    \x01(\tR\tcopyright\"s\n\x10AxisSegmentProto\x12\x10\n\x03tag\x18\x01\
3865    \x20\x01(\tR\x03tag\x12\x1b\n\tmin_value\x18\x02\x20\x01(\x02R\x08minVal\
3866    ue\x12\x1b\n\tmax_value\x18\x04\x20\x01(\x02R\x08maxValueJ\x04\x08\x03\
3867    \x10\x04R\rdefault_value\"\xe2\x01\n\x0bSourceProto\x12%\n\x0erepository\
3868    _url\x18\x01\x20\x01(\tR\rrepositoryUrl\x12\x16\n\x06branch\x18\x05\x20\
3869    \x01(\tR\x06branch\x12\x16\n\x06commit\x18\x02\x20\x01(\tR\x06commit\x12\
3870    \x1f\n\x0barchive_url\x18\x03\x20\x01(\tR\narchiveUrl\x12\x1f\n\x0bconfi\
3871    g_yaml\x18\x06\x20\x01(\tR\nconfigYaml\x12:\n\x05files\x18\x04\x20\x03(\
3872    \x0b2$.google.fonts_public.SourceFileProtoR\x05files\"O\n\x0fSourceFileP\
3873    roto\x12\x1f\n\x0bsource_file\x18\x01\x20\x01(\tR\nsourceFile\x12\x1b\n\
3874    \tdest_file\x18\x02\x20\x01(\tR\x08destFile\"T\n\x0bTargetProto\x12E\n\
3875    \x0btarget_type\x18\x01\x20\x01(\x0e2$.google.fonts_public.TargetTypePro\
3876    toR\ntargetType\"\x8c\x02\n\x13FamilyFallbackProto\x12F\n\x0baxis_target\
3877    \x18\x01\x20\x03(\x0b2%.google.fonts_public.AxisSegmentProtoR\naxisTarge\
3878    t\x128\n\x06target\x18\x02\x20\x03(\x0b2\x20.google.fonts_public.TargetP\
3879    rotoR\x06target\x12&\n\x0fsize_adjust_pct\x18\x03\x20\x01(\x02R\rsizeAdj\
3880    ustPct\x12.\n\x13ascent_override_pct\x18\x05\x20\x01(\x02R\x11ascentOver\
3881    ridePct\x12\x1b\n\tlocal_src\x18\x04\x20\x03(\tR\x08localSrc\"\xa1\x03\n\
3882    \x0fSampleTextProto\x12#\n\rmasthead_full\x18\x01\x20\x01(\tR\x0cmasthea\
3883    dFull\x12)\n\x10masthead_partial\x18\x02\x20\x01(\tR\x0fmastheadPartial\
3884    \x12\x16\n\x06styles\x18\x03\x20\x01(\tR\x06styles\x12\x16\n\x06tester\
3885    \x18\x04\x20\x01(\tR\x06tester\x12\x1b\n\tposter_sm\x18\x05\x20\x01(\tR\
3886    \x08posterSm\x12\x1b\n\tposter_md\x18\x06\x20\x01(\tR\x08posterMd\x12\
3887    \x1b\n\tposter_lg\x18\x07\x20\x01(\tR\x08posterLg\x12\x1f\n\x0bspecimen_\
3888    48\x18\x08\x20\x01(\tR\nspecimen48\x12\x1f\n\x0bspecimen_36\x18\t\x20\
3889    \x01(\tR\nspecimen36\x12\x1f\n\x0bspecimen_32\x18\n\x20\x01(\tR\nspecime\
3890    n32\x12\x1f\n\x0bspecimen_21\x18\x0b\x20\x01(\tR\nspecimen21\x12\x1f\n\
3891    \x0bspecimen_16\x18\x0c\x20\x01(\tR\nspecimen16\x12\x12\n\x04note\x18\r\
3892    \x20\x01(\tR\x04note\"=\n\x0fGlyphGroupProto\x12\x12\n\x04name\x18\x01\
3893    \x20\x01(\tR\x04name\x12\x16\n\x06glyphs\x18\x02\x20\x01(\tR\x06glyphs*\
3894    \x92\x01\n\x0fTargetTypeProto\x12\x16\n\x12TARGET_UNSPECIFIED\x10\0\x12\
3895    \x15\n\x11TARGET_OS_WINDOWS\x10\x01\x12\x11\n\rTARGET_OS_MAC\x10\x02\x12\
3896    \x13\n\x0fTARGET_OS_LINUX\x10\x03\x12\x15\n\x11TARGET_OS_ANDROID\x10\x04\
3897    \x12\x11\n\rTARGET_OS_IOS\x10\x05B%\n\x16com.google.fonts.protoB\x0bFont\
3898    sPublicJ\xe63\n\x07\x12\x05\0\0\x8e\x01\x01\n\x08\n\x01\x0c\x12\x03\0\0\
3899    \x12\n8\n\x01\x02\x12\x03\x05\0\x1c\x1a.*\n\x20Open\x20Source'd\x20font\
3900    \x20metadata\x20proto\x20formats.\n\n\x08\n\x01\x08\x12\x03\x07\0/\n\t\n\
3901    \x02\x08\x01\x12\x03\x07\0/\n\x08\n\x01\x08\x12\x03\x08\0,\n\t\n\x02\x08\
3902    \x08\x12\x03\x08\0,\n\n\n\x02\x04\0\x12\x04\n\0:\x01\n\n\n\x03\x04\0\x01\
3903    \x12\x03\n\x08\x13\n\x0b\n\x04\x04\0\x02\0\x12\x03\x0b\x02\x1b\n\x0c\n\
3904    \x05\x04\0\x02\0\x04\x12\x03\x0b\x02\n\n\x0c\n\x05\x04\0\x02\0\x05\x12\
3905    \x03\x0b\x0b\x11\n\x0c\n\x05\x04\0\x02\0\x01\x12\x03\x0b\x12\x16\n\x0c\n\
3906    \x05\x04\0\x02\0\x03\x12\x03\x0b\x19\x1a\n\x0b\n\x04\x04\0\x02\x01\x12\
3907    \x03\x0c\x02\x1f\n\x0c\n\x05\x04\0\x02\x01\x04\x12\x03\x0c\x02\n\n\x0c\n\
3908    \x05\x04\0\x02\x01\x05\x12\x03\x0c\x0b\x11\n\x0c\n\x05\x04\0\x02\x01\x01\
3909    \x12\x03\x0c\x12\x1a\n\x0c\n\x05\x04\0\x02\x01\x03\x12\x03\x0c\x1d\x1e\n\
3910    \x0b\n\x04\x04\0\x02\x02\x12\x03\r\x02\x1e\n\x0c\n\x05\x04\0\x02\x02\x04\
3911    \x12\x03\r\x02\n\n\x0c\n\x05\x04\0\x02\x02\x05\x12\x03\r\x0b\x11\n\x0c\n\
3912    \x05\x04\0\x02\x02\x01\x12\x03\r\x12\x19\n\x0c\n\x05\x04\0\x02\x02\x03\
3913    \x12\x03\r\x1c\x1d\n\x83\x05\n\x04\x04\0\x02\x03\x12\x03\x1a\x02\x1f\x1a\
3914    \xc6\x04\x20A\x20mutually-exclusive\x20category\x20for\x20each\x20font.\
3915    \x20The\x20categories\x20are:\x20Serif,\n\x20Sans\x20Serif,\x20Display,\
3916    \x20Handwriting\x20and\x20Monospace.\x20Being\x20mutually\x20exclusive\
3917    \x20is\n\x20a\x20significant\x20deficiency\x20as,\x20for\x20example,\x20\
3918    most\x20Display\x20fonts\x20are\x20typically\n\x20Serif\x20or\x20Sans\
3919    \x20Serif\x20and\x20that\x20is\x20not\x20captured.\n\n\x20For\x20searchi\
3920    ng,\x20this\x20field\x20is\x20replaced\x20by\x20stroke\x20and\x20classif\
3921    ications\x20(see\n\x20below),\x20however,\x20this\x20field\x20persists\
3922    \x20(it's\x20required\x20after\x20all)\x20and\x20will\n\x20continue\x20t\
3923    o\x20be\x20populated\x20in\x20the\x20onboarding\x20process.\n\n\x20This\
3924    \x20is\x20repeated\x20field,\x20yet\x20Google\x20Fonts\x20only\x20uses\
3925    \x20the\x20last\x20entry\x20so\n\x20multiple\x20entries\x20should\x20be\
3926    \x20avoided.\n\"-\x20Only\x20the\x20LAST\x20value\x20is\x20used\x20by\
3927    \x20Google\x20Fonts\n\n\x0c\n\x05\x04\0\x02\x03\x04\x12\x03\x1a\x02\n\n\
3928    \x0c\n\x05\x04\0\x02\x03\x05\x12\x03\x1a\x0b\x11\n\x0c\n\x05\x04\0\x02\
3929    \x03\x01\x12\x03\x1a\x12\x1a\n\x0c\n\x05\x04\0\x02\x03\x03\x12\x03\x1a\
3930    \x1d\x1e\n\x0b\n\x04\x04\0\x02\x04\x12\x03\x1b\x02!\n\x0c\n\x05\x04\0\
3931    \x02\x04\x04\x12\x03\x1b\x02\n\n\x0c\n\x05\x04\0\x02\x04\x05\x12\x03\x1b\
3932    \x0b\x11\n\x0c\n\x05\x04\0\x02\x04\x01\x12\x03\x1b\x12\x1c\n\x0c\n\x05\
3933    \x04\0\x02\x04\x03\x12\x03\x1b\x1f\x20\n\x0b\n\x04\x04\0\x02\x05\x12\x03\
3934    \x1c\x02\x1f\n\x0c\n\x05\x04\0\x02\x05\x04\x12\x03\x1c\x02\n\n\x0c\n\x05\
3935    \x04\0\x02\x05\x06\x12\x03\x1c\x0b\x14\n\x0c\n\x05\x04\0\x02\x05\x01\x12\
3936    \x03\x1c\x15\x1a\n\x0c\n\x05\x04\0\x02\x05\x03\x12\x03\x1c\x1d\x1e\n\x0b\
3937    \n\x04\x04\0\x02\x06\x12\x03\x1d\x02\x1e\n\x0c\n\x05\x04\0\x02\x06\x04\
3938    \x12\x03\x1d\x02\n\n\x0c\n\x05\x04\0\x02\x06\x05\x12\x03\x1d\x0b\x11\n\
3939    \x0c\n\x05\x04\0\x02\x06\x01\x12\x03\x1d\x12\x19\n\x0c\n\x05\x04\0\x02\
3940    \x06\x03\x12\x03\x1d\x1c\x1d\n\x0b\n\x04\x04\0\x02\x07\x12\x03\x1e\x02\
3941    \x1e\n\x0c\n\x05\x04\0\x02\x07\x04\x12\x03\x1e\x02\n\n\x0c\n\x05\x04\0\
3942    \x02\x07\x05\x12\x03\x1e\x0b\x11\n\x0c\n\x05\x04\0\x02\x07\x01\x12\x03\
3943    \x1e\x12\x19\n\x0c\n\x05\x04\0\x02\x07\x03\x12\x03\x1e\x1c\x1d\n\x0b\n\
3944    \x04\x04\0\x02\x08\x12\x03\x1f\x02(\n\x0c\n\x05\x04\0\x02\x08\x04\x12\
3945    \x03\x1f\x02\n\n\x0c\n\x05\x04\0\x02\x08\x05\x12\x03\x1f\x0b\x11\n\x0c\n\
3946    \x05\x04\0\x02\x08\x01\x12\x03\x1f\x12#\n\x0c\n\x05\x04\0\x02\x08\x03\
3947    \x12\x03\x1f&'\n\x0b\n\x04\x04\0\x02\t\x12\x03\x20\x02&\n\x0c\n\x05\x04\
3948    \0\x02\t\x04\x12\x03\x20\x02\n\n\x0c\n\x05\x04\0\x02\t\x06\x12\x03\x20\
3949    \x0b\x1b\n\x0c\n\x05\x04\0\x02\t\x01\x12\x03\x20\x1c\x20\n\x0c\n\x05\x04\
3950    \0\x02\t\x03\x12\x03\x20#%\n\x0b\n\x04\x04\0\x02\n\x12\x03!\x025\n\x0c\n\
3951    \x05\x04\0\x02\n\x06\x12\x03!\x02\x14\n\x0c\n\x05\x04\0\x02\n\x01\x12\
3952    \x03!\x15/\n\x0c\n\x05\x04\0\x02\n\x03\x12\x03!24\n\x0b\n\x04\x04\0\x02\
3953    \x0b\x12\x03\"\x02#\n\x0c\n\x05\x04\0\x02\x0b\x04\x12\x03\"\x02\n\n\x0c\
3954    \n\x05\x04\0\x02\x0b\x06\x12\x03\"\x0b\x16\n\x0c\n\x05\x04\0\x02\x0b\x01\
3955    \x12\x03\"\x17\x1d\n\x0c\n\x05\x04\0\x02\x0b\x03\x12\x03\"\x20\"\n\x0b\n\
3956    \x04\x04\0\x02\x0c\x12\x03#\x02\x1d\n\x0c\n\x05\x04\0\x02\x0c\x04\x12\
3957    \x03#\x02\n\n\x0c\n\x05\x04\0\x02\x0c\x05\x12\x03#\x0b\x0f\n\x0c\n\x05\
3958    \x04\0\x02\x0c\x01\x12\x03#\x10\x17\n\x0c\n\x05\x04\0\x02\x0c\x03\x12\
3959    \x03#\x1a\x1c\n\x0b\n\x04\x04\0\x02\r\x12\x03$\x02!\n\x0c\n\x05\x04\0\
3960    \x02\r\x04\x12\x03$\x02\n\n\x0c\n\x05\x04\0\x02\r\x05\x12\x03$\x0b\x11\n\
3961    \x0c\n\x05\x04\0\x02\r\x01\x12\x03$\x12\x1b\n\x0c\n\x05\x04\0\x02\r\x03\
3962    \x12\x03$\x1e\x20\n\x0b\n\x04\x04\0\x02\x0e\x12\x03%\x02.\n\x0c\n\x05\
3963    \x04\0\x02\x0e\x04\x12\x03%\x02\n\n\x0c\n\x05\x04\0\x02\x0e\x06\x12\x03%\
3964    \x0b\x1e\n\x0c\n\x05\x04\0\x02\x0e\x01\x12\x03%\x1f(\n\x0c\n\x05\x04\0\
3965    \x02\x0e\x03\x12\x03%+-\n\x0b\n\x04\x04\0\x02\x0f\x12\x03&\x02)\n\x0c\n\
3966    \x05\x04\0\x02\x0f\x06\x12\x03&\x02\x15\n\x0c\n\x05\x04\0\x02\x0f\x01\
3967    \x12\x03&\x16#\n\x0c\n\x05\x04\0\x02\x0f\x03\x12\x03&&(\n\x0b\n\x04\x04\
3968    \0\x02\x10\x12\x03'\x02,\n\x0c\n\x05\x04\0\x02\x10\x04\x12\x03'\x02\n\n\
3969    \x0c\n\x05\x04\0\x02\x10\x06\x12\x03'\x0b\x1a\n\x0c\n\x05\x04\0\x02\x10\
3970    \x01\x12\x03'\x1b&\n\x0c\n\x05\x04\0\x02\x10\x03\x12\x03')+\n\x0b\n\x04\
3971    \x04\0\x02\x11\x12\x03(\x02$\n\x0c\n\x05\x04\0\x02\x11\x04\x12\x03(\x02\
3972    \n\n\x0c\n\x05\x04\0\x02\x11\x05\x12\x03(\x0b\x11\n\x0c\n\x05\x04\0\x02\
3973    \x11\x01\x12\x03(\x12\x1e\n\x0c\n\x05\x04\0\x02\x11\x03\x12\x03(!#\n\x0b\
3974    \n\x04\x04\0\x02\x12\x12\x03)\x026\n\x0c\n\x05\x04\0\x02\x12\x04\x12\x03\
3975    )\x02\n\n\x0c\n\x05\x04\0\x02\x12\x06\x12\x03)\x0b\x1a\n\x0c\n\x05\x04\0\
3976    \x02\x12\x01\x12\x03)\x1b0\n\x0c\n\x05\x04\0\x02\x12\x03\x12\x03)35\n9\n\
3977    \x04\x04\0\x02\x13\x12\x03+\x02$\x1a,\x20Optional\x20url\x20for\x20more\
3978    \x20info\x20about\x20the\x20font.\n\n\x0c\n\x05\x04\0\x02\x13\x04\x12\
3979    \x03+\x02\n\n\x0c\n\x05\x04\0\x02\x13\x05\x12\x03+\x0b\x11\n\x0c\n\x05\
3980    \x04\0\x02\x13\x01\x12\x03+\x12\x1e\n\x0c\n\x05\x04\0\x02\x13\x03\x12\
3981    \x03+!#\nX\n\x04\x04\0\x02\x14\x12\x03-\x02&\x1aK\x20The\x20script\x20to\
3982    \x20use\x20when\x20picking\x20sample\x20text.\x20See\x20the\x20Script\
3983    \x20spanner\x20table.\n\n\x0c\n\x05\x04\0\x02\x14\x04\x12\x03-\x02\n\n\
3984    \x0c\n\x05\x04\0\x02\x14\x05\x12\x03-\x0b\x11\n\x0c\n\x05\x04\0\x02\x14\
3985    \x01\x12\x03-\x12\x20\n\x0c\n\x05\x04\0\x02\x14\x03\x12\x03-#%\n\x0b\n\
3986    \x04\x04\0\x02\x15\x12\x03/\x02(\n\x0c\n\x05\x04\0\x02\x15\x04\x12\x03/\
3987    \x02\n\n\x0c\n\x05\x04\0\x02\x15\x05\x12\x03/\x0b\x11\n\x0c\n\x05\x04\0\
3988    \x02\x15\x01\x12\x03/\x12\"\n\x0c\n\x05\x04\0\x02\x15\x03\x12\x03/%'\n\
3989    \xad\x01\n\x04\x04\0\x02\x16\x12\x034\x02\x1e\x1a\x9f\x01\x20Stroke\x20o\
3990    f\x20the\x20letter\x20forms:\x20serif,\x20sans\x20serif,\x20etc.\x20Stro\
3991    ke\x20is\x20mutually\n\x20exclusive.\x20The\x20values\x20are\x20the\x20s\
3992    tring\x20names\x20from\x20the\x20Stroke\x20enum\x20or\x20the\n\x20empty\
3993    \x20string.\n\n\x0c\n\x05\x04\0\x02\x16\x04\x12\x034\x02\n\n\x0c\n\x05\
3994    \x04\0\x02\x16\x05\x12\x034\x0b\x11\n\x0c\n\x05\x04\0\x02\x16\x01\x12\
3995    \x034\x12\x18\n\x0c\n\x05\x04\0\x02\x16\x03\x12\x034\x1b\x1d\n\xa3\x01\n\
3996    \x04\x04\0\x02\x17\x12\x038\x02'\x1a\x88\x01\x20A\x20family's\x20broad\
3997    \x20classifications:\x20display,\x20handwriting,\x20monospace,\x20etc.\n\
3998    \x20The\x20values\x20are\x20the\x20string\x20names\x20from\x20the\x20Cla\
3999    ssification\x20enum.\n\"\x0b\x20Next\x20=\x2025\n\n\x0c\n\x05\x04\0\x02\
4000    \x17\x04\x12\x038\x02\n\n\x0c\n\x05\x04\0\x02\x17\x05\x12\x038\x0b\x11\n\
4001    \x0c\n\x05\x04\0\x02\x17\x01\x12\x038\x12!\n\x0c\n\x05\x04\0\x02\x17\x03\
4002    \x12\x038$&\n\n\n\x02\x04\x01\x12\x04<\0D\x01\n\n\n\x03\x04\x01\x01\x12\
4003    \x03<\x08\x11\n\x0b\n\x04\x04\x01\x02\0\x12\x03=\x02\x1b\n\x0c\n\x05\x04\
4004    \x01\x02\0\x04\x12\x03=\x02\n\n\x0c\n\x05\x04\x01\x02\0\x05\x12\x03=\x0b\
4005    \x11\n\x0c\n\x05\x04\x01\x02\0\x01\x12\x03=\x12\x16\n\x0c\n\x05\x04\x01\
4006    \x02\0\x03\x12\x03=\x19\x1a\n\x0b\n\x04\x04\x01\x02\x01\x12\x03>\x02\x1c\
4007    \n\x0c\n\x05\x04\x01\x02\x01\x04\x12\x03>\x02\n\n\x0c\n\x05\x04\x01\x02\
4008    \x01\x05\x12\x03>\x0b\x11\n\x0c\n\x05\x04\x01\x02\x01\x01\x12\x03>\x12\
4009    \x17\n\x0c\n\x05\x04\x01\x02\x01\x03\x12\x03>\x1a\x1b\n\x0b\n\x04\x04\
4010    \x01\x02\x02\x12\x03?\x02\x1c\n\x0c\n\x05\x04\x01\x02\x02\x04\x12\x03?\
4011    \x02\n\n\x0c\n\x05\x04\x01\x02\x02\x05\x12\x03?\x0b\x10\n\x0c\n\x05\x04\
4012    \x01\x02\x02\x01\x12\x03?\x11\x17\n\x0c\n\x05\x04\x01\x02\x02\x03\x12\
4013    \x03?\x1a\x1b\n\x0b\n\x04\x04\x01\x02\x03\x12\x03@\x02\x1f\n\x0c\n\x05\
4014    \x04\x01\x02\x03\x04\x12\x03@\x02\n\n\x0c\n\x05\x04\x01\x02\x03\x05\x12\
4015    \x03@\x0b\x11\n\x0c\n\x05\x04\x01\x02\x03\x01\x12\x03@\x12\x1a\n\x0c\n\
4016    \x05\x04\x01\x02\x03\x03\x12\x03@\x1d\x1e\n\x0b\n\x04\x04\x01\x02\x04\
4017    \x12\x03A\x02'\n\x0c\n\x05\x04\x01\x02\x04\x04\x12\x03A\x02\n\n\x0c\n\
4018    \x05\x04\x01\x02\x04\x05\x12\x03A\x0b\x11\n\x0c\n\x05\x04\x01\x02\x04\
4019    \x01\x12\x03A\x12\"\n\x0c\n\x05\x04\x01\x02\x04\x03\x12\x03A%&\n\x0b\n\
4020    \x04\x04\x01\x02\x05\x12\x03B\x02\x20\n\x0c\n\x05\x04\x01\x02\x05\x04\
4021    \x12\x03B\x02\n\n\x0c\n\x05\x04\x01\x02\x05\x05\x12\x03B\x0b\x11\n\x0c\n\
4022    \x05\x04\x01\x02\x05\x01\x12\x03B\x12\x1b\n\x0c\n\x05\x04\x01\x02\x05\
4023    \x03\x12\x03B\x1e\x1f\n\x0b\n\x04\x04\x01\x02\x06\x12\x03C\x02\x20\n\x0c\
4024    \n\x05\x04\x01\x02\x06\x04\x12\x03C\x02\n\n\x0c\n\x05\x04\x01\x02\x06\
4025    \x05\x12\x03C\x0b\x11\n\x0c\n\x05\x04\x01\x02\x06\x01\x12\x03C\x12\x1b\n\
4026    \x0c\n\x05\x04\x01\x02\x06\x03\x12\x03C\x1e\x1f\n\n\n\x02\x04\x02\x12\
4027    \x04F\0M\x01\n\n\n\x03\x04\x02\x01\x12\x03F\x08\x18\n\x0b\n\x04\x04\x02\
4028    \x02\0\x12\x03G\x02\x1a\n\x0c\n\x05\x04\x02\x02\0\x04\x12\x03G\x02\n\n\
4029    \x0c\n\x05\x04\x02\x02\0\x05\x12\x03G\x0b\x11\n\x0c\n\x05\x04\x02\x02\0\
4030    \x01\x12\x03G\x12\x15\n\x0c\n\x05\x04\x02\x02\0\x03\x12\x03G\x18\x19\n\
4031    \x0b\n\x04\x04\x02\x02\x01\x12\x03H\x02\x1f\n\x0c\n\x05\x04\x02\x02\x01\
4032    \x04\x12\x03H\x02\n\n\x0c\n\x05\x04\x02\x02\x01\x05\x12\x03H\x0b\x10\n\
4033    \x0c\n\x05\x04\x02\x02\x01\x01\x12\x03H\x11\x1a\n\x0c\n\x05\x04\x02\x02\
4034    \x01\x03\x12\x03H\x1d\x1e\n\n\n\x03\x04\x02\t\x12\x03I\x02\r\n\x0b\n\x04\
4035    \x04\x02\t\0\x12\x03I\x0b\x0c\n\x0c\n\x05\x04\x02\t\0\x01\x12\x03I\x0b\
4036    \x0c\n\x0c\n\x05\x04\x02\t\0\x02\x12\x03I\x0b\x0c\n\n\n\x03\x04\x02\n\
4037    \x12\x03J\x02\x1b\n\x0b\n\x04\x04\x02\n\0\x12\x03J\x0b\x1a\n\x17\n\x04\
4038    \x04\x02\x02\x02\x12\x03K\x02\x1f\"\n\x20Next\x20=\x205\n\n\x0c\n\x05\
4039    \x04\x02\x02\x02\x04\x12\x03K\x02\n\n\x0c\n\x05\x04\x02\x02\x02\x05\x12\
4040    \x03K\x0b\x10\n\x0c\n\x05\x04\x02\x02\x02\x01\x12\x03K\x11\x1a\n\x0c\n\
4041    \x05\x04\x02\x02\x02\x03\x12\x03K\x1d\x1e\n\n\n\x02\x04\x03\x12\x04O\0Y\
4042    \x01\n\n\n\x03\x04\x03\x01\x12\x03O\x08\x13\n\x0b\n\x04\x04\x03\x02\0\
4043    \x12\x03P\x02%\n\x0c\n\x05\x04\x03\x02\0\x04\x12\x03P\x02\n\n\x0c\n\x05\
4044    \x04\x03\x02\0\x05\x12\x03P\x0b\x11\n\x0c\n\x05\x04\x03\x02\0\x01\x12\
4045    \x03P\x12\x20\n\x0c\n\x05\x04\x03\x02\0\x03\x12\x03P#$\n\x0b\n\x04\x04\
4046    \x03\x02\x01\x12\x03Q\x02\x1d\n\x0c\n\x05\x04\x03\x02\x01\x04\x12\x03Q\
4047    \x02\n\n\x0c\n\x05\x04\x03\x02\x01\x05\x12\x03Q\x0b\x11\n\x0c\n\x05\x04\
4048    \x03\x02\x01\x01\x12\x03Q\x12\x18\n\x0c\n\x05\x04\x03\x02\x01\x03\x12\
4049    \x03Q\x1b\x1c\n\x0b\n\x04\x04\x03\x02\x02\x12\x03R\x02\x1d\n\x0c\n\x05\
4050    \x04\x03\x02\x02\x04\x12\x03R\x02\n\n\x0c\n\x05\x04\x03\x02\x02\x05\x12\
4051    \x03R\x0b\x11\n\x0c\n\x05\x04\x03\x02\x02\x01\x12\x03R\x12\x18\n\x0c\n\
4052    \x05\x04\x03\x02\x02\x03\x12\x03R\x1b\x1c\n\x0b\n\x04\x04\x03\x02\x03\
4053    \x12\x03S\x02\"\n\x0c\n\x05\x04\x03\x02\x03\x04\x12\x03S\x02\n\n\x0c\n\
4054    \x05\x04\x03\x02\x03\x05\x12\x03S\x0b\x11\n\x0c\n\x05\x04\x03\x02\x03\
4055    \x01\x12\x03S\x12\x1d\n\x0c\n\x05\x04\x03\x02\x03\x03\x12\x03S\x20!\nD\n\
4056    \x04\x04\x03\x02\x04\x12\x04T\x02U\x08\"6\x20See\x20https://github.com/g\
4057    ooglefonts/fontc/issues/1124\n\n\x0c\n\x05\x04\x03\x02\x04\x04\x12\x03T\
4058    \x02\n\n\x0c\n\x05\x04\x03\x02\x04\x05\x12\x03T\x0b\x11\n\x0c\n\x05\x04\
4059    \x03\x02\x04\x01\x12\x03T\x12\x1d\n\x0c\n\x05\x04\x03\x02\x04\x03\x12\
4060    \x03U\x06\x07\n\x0b\n\x04\x04\x03\x02\x05\x12\x03V\x02%\n\x0c\n\x05\x04\
4061    \x03\x02\x05\x04\x12\x03V\x02\n\n\x0c\n\x05\x04\x03\x02\x05\x06\x12\x03V\
4062    \x0b\x1a\n\x0c\n\x05\x04\x03\x02\x05\x01\x12\x03V\x1b\x20\n\x0c\n\x05\
4063    \x04\x03\x02\x05\x03\x12\x03V#$\n\x81\x01\n\x02\x04\x04\x12\x04]\0`\x01\
4064    \x1au\x20A\x20file\x20to\x20take\x20from\x20source\x20and\x20where\x20to\
4065    \x20put\x20it\x20in\x20dest\n\x20Ex\x20web/split/Roboto[wdth,wght].ttf\
4066    \x20=>\x20Roboto[wdth,wght].ttf\n\n\n\n\x03\x04\x04\x01\x12\x03]\x08\x17\
4067    \n\x0b\n\x04\x04\x04\x02\0\x12\x03^\x02\"\n\x0c\n\x05\x04\x04\x02\0\x04\
4068    \x12\x03^\x02\n\n\x0c\n\x05\x04\x04\x02\0\x05\x12\x03^\x0b\x11\n\x0c\n\
4069    \x05\x04\x04\x02\0\x01\x12\x03^\x12\x1d\n\x0c\n\x05\x04\x04\x02\0\x03\
4070    \x12\x03^\x20!\n\x0b\n\x04\x04\x04\x02\x01\x12\x03_\x02\x20\n\x0c\n\x05\
4071    \x04\x04\x02\x01\x04\x12\x03_\x02\n\n\x0c\n\x05\x04\x04\x02\x01\x05\x12\
4072    \x03_\x0b\x11\n\x0c\n\x05\x04\x04\x02\x01\x01\x12\x03_\x12\x1b\n\x0c\n\
4073    \x05\x04\x04\x02\x01\x03\x12\x03_\x1e\x1f\n\n\n\x02\x05\0\x12\x04b\0i\
4074    \x01\n\n\n\x03\x05\0\x01\x12\x03b\x05\x14\n\x0b\n\x04\x05\0\x02\0\x12\
4075    \x03c\x02\x19\n\x0c\n\x05\x05\0\x02\0\x01\x12\x03c\x02\x14\n\x0c\n\x05\
4076    \x05\0\x02\0\x02\x12\x03c\x17\x18\n\x0b\n\x04\x05\0\x02\x01\x12\x03d\x02\
4077    \x18\n\x0c\n\x05\x05\0\x02\x01\x01\x12\x03d\x02\x13\n\x0c\n\x05\x05\0\
4078    \x02\x01\x02\x12\x03d\x16\x17\n\x0b\n\x04\x05\0\x02\x02\x12\x03e\x02\x14\
4079    \n\x0c\n\x05\x05\0\x02\x02\x01\x12\x03e\x02\x0f\n\x0c\n\x05\x05\0\x02\
4080    \x02\x02\x12\x03e\x12\x13\n\x0b\n\x04\x05\0\x02\x03\x12\x03f\x02\x16\n\
4081    \x0c\n\x05\x05\0\x02\x03\x01\x12\x03f\x02\x11\n\x0c\n\x05\x05\0\x02\x03\
4082    \x02\x12\x03f\x14\x15\n\x0b\n\x04\x05\0\x02\x04\x12\x03g\x02\x18\n\x0c\n\
4083    \x05\x05\0\x02\x04\x01\x12\x03g\x02\x13\n\x0c\n\x05\x05\0\x02\x04\x02\
4084    \x12\x03g\x16\x17\n\x0b\n\x04\x05\0\x02\x05\x12\x03h\x02\x14\n\x0c\n\x05\
4085    \x05\0\x02\x05\x01\x12\x03h\x02\x0f\n\x0c\n\x05\x05\0\x02\x05\x02\x12\
4086    \x03h\x12\x13\nJ\n\x02\x04\x05\x12\x04l\0n\x01\x1a>\x20Message\x20so\x20\
4087    we\x20can\x20add\x20additional\x20fields\x20like\x20value\x20in\x20futur\
4088    e\n\n\n\n\x03\x04\x05\x01\x12\x03l\x08\x13\n\x18\n\x04\x04\x05\x02\0\x12\
4089    \x03m\x02+\"\x0b\x20\x20e.g.,\x20OS\n\n\x0c\n\x05\x04\x05\x02\0\x04\x12\
4090    \x03m\x02\n\n\x0c\n\x05\x04\x05\x02\0\x06\x12\x03m\x0b\x1a\n\x0c\n\x05\
4091    \x04\x05\x02\0\x01\x12\x03m\x1b&\n\x0c\n\x05\x04\x05\x02\0\x03\x12\x03m)\
4092    *\n\n\n\x02\x04\x06\x12\x04p\0w\x01\n\n\n\x03\x04\x06\x01\x12\x03p\x08\
4093    \x1b\n'\n\x04\x04\x06\x02\0\x12\x03q\x02,\"\x1a\x20activate\x20for\x20th\
4094    is\x20region\n\n\x0c\n\x05\x04\x06\x02\0\x04\x12\x03q\x02\n\n\x0c\n\x05\
4095    \x04\x06\x02\0\x06\x12\x03q\x0b\x1b\n\x0c\n\x05\x04\x06\x02\0\x01\x12\
4096    \x03q\x1c'\n\x0c\n\x05\x04\x06\x02\0\x03\x12\x03q*+\n(\n\x04\x04\x06\x02\
4097    \x01\x12\x03r\x02\"\"\x1b\x20activate\x20for\x20any\x20of\x20these\n\n\
4098    \x0c\n\x05\x04\x06\x02\x01\x04\x12\x03r\x02\n\n\x0c\n\x05\x04\x06\x02\
4099    \x01\x06\x12\x03r\x0b\x16\n\x0c\n\x05\x04\x06\x02\x01\x01\x12\x03r\x17\
4100    \x1d\n\x0c\n\x05\x04\x06\x02\x01\x03\x12\x03r\x20!\n\x17\n\x04\x04\x06\
4101    \x02\x02\x12\x03s\x02%\"\n\x20e.g.\x2090%\n\n\x0c\n\x05\x04\x06\x02\x02\
4102    \x04\x12\x03s\x02\n\n\x0c\n\x05\x04\x06\x02\x02\x05\x12\x03s\x0b\x10\n\
4103    \x0c\n\x05\x04\x06\x02\x02\x01\x12\x03s\x11\x20\n\x0c\n\x05\x04\x06\x02\
4104    \x02\x03\x12\x03s#$\n\x18\n\x04\x04\x06\x02\x03\x12\x03t\x02)\"\x0b\x20e\
4105    .g.\x20110%\n\n\x0c\n\x05\x04\x06\x02\x03\x04\x12\x03t\x02\n\n\x0c\n\x05\
4106    \x04\x06\x02\x03\x05\x12\x03t\x0b\x10\n\x0c\n\x05\x04\x06\x02\x03\x01\
4107    \x12\x03t\x11$\n\x0c\n\x05\x04\x06\x02\x03\x03\x12\x03t'(\n3\n\x04\x04\
4108    \x06\x02\x04\x12\x03u\x02\x20\"&\x20e.g.\x20Impact;\x20the\x20local\x20f\
4109    amily\x20to\x20use\n\n\x0c\n\x05\x04\x06\x02\x04\x04\x12\x03u\x02\n\n\
4110    \x0c\n\x05\x04\x06\x02\x04\x05\x12\x03u\x0b\x11\n\x0c\n\x05\x04\x06\x02\
4111    \x04\x01\x12\x03u\x12\x1b\n\x0c\n\x05\x04\x06\x02\x04\x03\x12\x03u\x1e\
4112    \x1f\nx\n\x02\x04\x07\x12\x05{\0\x89\x01\x01\x1ak\x20Corresponds\x20to\
4113    \x20SampleTextProto\x20in\n\x20google3/java/com/google/fonts/backend/spa\
4114    nner/google_fonts_proto.proto\n\n\n\n\x03\x04\x07\x01\x12\x03{\x08\x17\n\
4115    \x0b\n\x04\x04\x07\x02\0\x12\x03|\x02$\n\x0c\n\x05\x04\x07\x02\0\x04\x12\
4116    \x03|\x02\n\n\x0c\n\x05\x04\x07\x02\0\x05\x12\x03|\x0b\x11\n\x0c\n\x05\
4117    \x04\x07\x02\0\x01\x12\x03|\x12\x1f\n\x0c\n\x05\x04\x07\x02\0\x03\x12\
4118    \x03|\"#\n\x0b\n\x04\x04\x07\x02\x01\x12\x03}\x02'\n\x0c\n\x05\x04\x07\
4119    \x02\x01\x04\x12\x03}\x02\n\n\x0c\n\x05\x04\x07\x02\x01\x05\x12\x03}\x0b\
4120    \x11\n\x0c\n\x05\x04\x07\x02\x01\x01\x12\x03}\x12\"\n\x0c\n\x05\x04\x07\
4121    \x02\x01\x03\x12\x03}%&\n\x0b\n\x04\x04\x07\x02\x02\x12\x03~\x02\x1d\n\
4122    \x0c\n\x05\x04\x07\x02\x02\x04\x12\x03~\x02\n\n\x0c\n\x05\x04\x07\x02\
4123    \x02\x05\x12\x03~\x0b\x11\n\x0c\n\x05\x04\x07\x02\x02\x01\x12\x03~\x12\
4124    \x18\n\x0c\n\x05\x04\x07\x02\x02\x03\x12\x03~\x1b\x1c\n\x0b\n\x04\x04\
4125    \x07\x02\x03\x12\x03\x7f\x02\x1d\n\x0c\n\x05\x04\x07\x02\x03\x04\x12\x03\
4126    \x7f\x02\n\n\x0c\n\x05\x04\x07\x02\x03\x05\x12\x03\x7f\x0b\x11\n\x0c\n\
4127    \x05\x04\x07\x02\x03\x01\x12\x03\x7f\x12\x18\n\x0c\n\x05\x04\x07\x02\x03\
4128    \x03\x12\x03\x7f\x1b\x1c\n\x0c\n\x04\x04\x07\x02\x04\x12\x04\x80\x01\x02\
4129    \x20\n\r\n\x05\x04\x07\x02\x04\x04\x12\x04\x80\x01\x02\n\n\r\n\x05\x04\
4130    \x07\x02\x04\x05\x12\x04\x80\x01\x0b\x11\n\r\n\x05\x04\x07\x02\x04\x01\
4131    \x12\x04\x80\x01\x12\x1b\n\r\n\x05\x04\x07\x02\x04\x03\x12\x04\x80\x01\
4132    \x1e\x1f\n\x0c\n\x04\x04\x07\x02\x05\x12\x04\x81\x01\x02\x20\n\r\n\x05\
4133    \x04\x07\x02\x05\x04\x12\x04\x81\x01\x02\n\n\r\n\x05\x04\x07\x02\x05\x05\
4134    \x12\x04\x81\x01\x0b\x11\n\r\n\x05\x04\x07\x02\x05\x01\x12\x04\x81\x01\
4135    \x12\x1b\n\r\n\x05\x04\x07\x02\x05\x03\x12\x04\x81\x01\x1e\x1f\n\x0c\n\
4136    \x04\x04\x07\x02\x06\x12\x04\x82\x01\x02\x20\n\r\n\x05\x04\x07\x02\x06\
4137    \x04\x12\x04\x82\x01\x02\n\n\r\n\x05\x04\x07\x02\x06\x05\x12\x04\x82\x01\
4138    \x0b\x11\n\r\n\x05\x04\x07\x02\x06\x01\x12\x04\x82\x01\x12\x1b\n\r\n\x05\
4139    \x04\x07\x02\x06\x03\x12\x04\x82\x01\x1e\x1f\n\x0c\n\x04\x04\x07\x02\x07\
4140    \x12\x04\x83\x01\x02\"\n\r\n\x05\x04\x07\x02\x07\x04\x12\x04\x83\x01\x02\
4141    \n\n\r\n\x05\x04\x07\x02\x07\x05\x12\x04\x83\x01\x0b\x11\n\r\n\x05\x04\
4142    \x07\x02\x07\x01\x12\x04\x83\x01\x12\x1d\n\r\n\x05\x04\x07\x02\x07\x03\
4143    \x12\x04\x83\x01\x20!\n\x0c\n\x04\x04\x07\x02\x08\x12\x04\x84\x01\x02\"\
4144    \n\r\n\x05\x04\x07\x02\x08\x04\x12\x04\x84\x01\x02\n\n\r\n\x05\x04\x07\
4145    \x02\x08\x05\x12\x04\x84\x01\x0b\x11\n\r\n\x05\x04\x07\x02\x08\x01\x12\
4146    \x04\x84\x01\x12\x1d\n\r\n\x05\x04\x07\x02\x08\x03\x12\x04\x84\x01\x20!\
4147    \n\x0c\n\x04\x04\x07\x02\t\x12\x04\x85\x01\x02#\n\r\n\x05\x04\x07\x02\t\
4148    \x04\x12\x04\x85\x01\x02\n\n\r\n\x05\x04\x07\x02\t\x05\x12\x04\x85\x01\
4149    \x0b\x11\n\r\n\x05\x04\x07\x02\t\x01\x12\x04\x85\x01\x12\x1d\n\r\n\x05\
4150    \x04\x07\x02\t\x03\x12\x04\x85\x01\x20\"\n\x0c\n\x04\x04\x07\x02\n\x12\
4151    \x04\x86\x01\x02#\n\r\n\x05\x04\x07\x02\n\x04\x12\x04\x86\x01\x02\n\n\r\
4152    \n\x05\x04\x07\x02\n\x05\x12\x04\x86\x01\x0b\x11\n\r\n\x05\x04\x07\x02\n\
4153    \x01\x12\x04\x86\x01\x12\x1d\n\r\n\x05\x04\x07\x02\n\x03\x12\x04\x86\x01\
4154    \x20\"\n\x0c\n\x04\x04\x07\x02\x0b\x12\x04\x87\x01\x02#\n\r\n\x05\x04\
4155    \x07\x02\x0b\x04\x12\x04\x87\x01\x02\n\n\r\n\x05\x04\x07\x02\x0b\x05\x12\
4156    \x04\x87\x01\x0b\x11\n\r\n\x05\x04\x07\x02\x0b\x01\x12\x04\x87\x01\x12\
4157    \x1d\n\r\n\x05\x04\x07\x02\x0b\x03\x12\x04\x87\x01\x20\"\n\x0c\n\x04\x04\
4158    \x07\x02\x0c\x12\x04\x88\x01\x02\x1c\n\r\n\x05\x04\x07\x02\x0c\x04\x12\
4159    \x04\x88\x01\x02\n\n\r\n\x05\x04\x07\x02\x0c\x05\x12\x04\x88\x01\x0b\x11\
4160    \n\r\n\x05\x04\x07\x02\x0c\x01\x12\x04\x88\x01\x12\x16\n\r\n\x05\x04\x07\
4161    \x02\x0c\x03\x12\x04\x88\x01\x19\x1b\n\x0c\n\x02\x04\x08\x12\x06\x8b\x01\
4162    \0\x8e\x01\x01\n\x0b\n\x03\x04\x08\x01\x12\x04\x8b\x01\x08\x17\n\x0c\n\
4163    \x04\x04\x08\x02\0\x12\x04\x8c\x01\x02\x1b\n\r\n\x05\x04\x08\x02\0\x04\
4164    \x12\x04\x8c\x01\x02\n\n\r\n\x05\x04\x08\x02\0\x05\x12\x04\x8c\x01\x0b\
4165    \x11\n\r\n\x05\x04\x08\x02\0\x01\x12\x04\x8c\x01\x12\x16\n\r\n\x05\x04\
4166    \x08\x02\0\x03\x12\x04\x8c\x01\x19\x1a\n\x0c\n\x04\x04\x08\x02\x01\x12\
4167    \x04\x8d\x01\x02\x1d\n\r\n\x05\x04\x08\x02\x01\x04\x12\x04\x8d\x01\x02\n\
4168    \n\r\n\x05\x04\x08\x02\x01\x05\x12\x04\x8d\x01\x0b\x11\n\r\n\x05\x04\x08\
4169    \x02\x01\x01\x12\x04\x8d\x01\x12\x18\n\r\n\x05\x04\x08\x02\x01\x03\x12\
4170    \x04\x8d\x01\x1b\x1c\
4171";
4172
4173/// `FileDescriptorProto` object which was a source for this generated file
4174fn file_descriptor_proto() -> &'static ::protobuf::descriptor::FileDescriptorProto {
4175    static file_descriptor_proto_lazy: ::protobuf::rt::Lazy<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::Lazy::new();
4176    file_descriptor_proto_lazy.get(|| {
4177        ::protobuf::Message::parse_from_bytes(file_descriptor_proto_data).unwrap()
4178    })
4179}
4180
4181/// `FileDescriptor` object which allows dynamic access to files
4182pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor {
4183    static generated_file_descriptor_lazy: ::protobuf::rt::Lazy<::protobuf::reflect::GeneratedFileDescriptor> = ::protobuf::rt::Lazy::new();
4184    static file_descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::FileDescriptor> = ::protobuf::rt::Lazy::new();
4185    file_descriptor.get(|| {
4186        let generated_file_descriptor = generated_file_descriptor_lazy.get(|| {
4187            let mut deps = ::std::vec::Vec::with_capacity(0);
4188            let mut messages = ::std::vec::Vec::with_capacity(9);
4189            messages.push(FamilyProto::generated_message_descriptor_data());
4190            messages.push(FontProto::generated_message_descriptor_data());
4191            messages.push(AxisSegmentProto::generated_message_descriptor_data());
4192            messages.push(SourceProto::generated_message_descriptor_data());
4193            messages.push(SourceFileProto::generated_message_descriptor_data());
4194            messages.push(TargetProto::generated_message_descriptor_data());
4195            messages.push(FamilyFallbackProto::generated_message_descriptor_data());
4196            messages.push(SampleTextProto::generated_message_descriptor_data());
4197            messages.push(GlyphGroupProto::generated_message_descriptor_data());
4198            let mut enums = ::std::vec::Vec::with_capacity(1);
4199            enums.push(TargetTypeProto::generated_enum_descriptor_data());
4200            ::protobuf::reflect::GeneratedFileDescriptor::new_generated(
4201                file_descriptor_proto(),
4202                deps,
4203                messages,
4204                enums,
4205            )
4206        });
4207        ::protobuf::reflect::FileDescriptor::new_generated_2(generated_file_descriptor)
4208    })
4209}