|
|
|
@ -147,6 +147,12 @@ |
|
|
|
|
|
|
|
|
|
#if defined(__GNUC__) || defined(__clang__) |
|
|
|
|
#define UPB_UNREACHABLE() do { assert(0); __builtin_unreachable(); } while(0) |
|
|
|
|
#elif defined(_MSC_VER) |
|
|
|
|
#define UPB_UNREACHABLE() \ |
|
|
|
|
do { \
|
|
|
|
|
assert(0); \
|
|
|
|
|
__assume(0); \
|
|
|
|
|
} while (0) |
|
|
|
|
#else |
|
|
|
|
#define UPB_UNREACHABLE() do { assert(0); } while(0) |
|
|
|
|
#endif |
|
|
|
@ -972,18 +978,19 @@ static const upb_MiniTableSub google_protobuf_MessageOptions_submsgs[1] = { |
|
|
|
|
{.submsg = &google_protobuf_UninterpretedOption_msg_init}, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
static const upb_MiniTableField google_protobuf_MessageOptions__fields[5] = { |
|
|
|
|
static const upb_MiniTableField google_protobuf_MessageOptions__fields[6] = { |
|
|
|
|
{1, 1, 1, kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, |
|
|
|
|
{2, 2, 2, kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, |
|
|
|
|
{3, 3, 3, kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, |
|
|
|
|
{7, 4, 4, kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, |
|
|
|
|
{11, 5, 5, kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, |
|
|
|
|
{999, 8, 0, 0, 11, kUpb_FieldMode_Array | (UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
const upb_MiniTable google_protobuf_MessageOptions_msg_init = { |
|
|
|
|
&google_protobuf_MessageOptions_submsgs[0], |
|
|
|
|
&google_protobuf_MessageOptions__fields[0], |
|
|
|
|
16, 5, kUpb_ExtMode_Extendable, 3, 255, 0, |
|
|
|
|
16, 6, kUpb_ExtMode_Extendable, 3, 255, 0, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
static const upb_MiniTableSub google_protobuf_FieldOptions_submsgs[3] = { |
|
|
|
@ -1027,16 +1034,17 @@ static const upb_MiniTableSub google_protobuf_EnumOptions_submsgs[1] = { |
|
|
|
|
{.submsg = &google_protobuf_UninterpretedOption_msg_init}, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
static const upb_MiniTableField google_protobuf_EnumOptions__fields[3] = { |
|
|
|
|
static const upb_MiniTableField google_protobuf_EnumOptions__fields[4] = { |
|
|
|
|
{2, 1, 1, kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, |
|
|
|
|
{3, 2, 2, kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, |
|
|
|
|
{6, 3, 3, kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)}, |
|
|
|
|
{999, UPB_SIZE(4, 8), 0, 0, 11, kUpb_FieldMode_Array | (UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)}, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
const upb_MiniTable google_protobuf_EnumOptions_msg_init = { |
|
|
|
|
&google_protobuf_EnumOptions_submsgs[0], |
|
|
|
|
&google_protobuf_EnumOptions__fields[0], |
|
|
|
|
UPB_SIZE(8, 16), 3, kUpb_ExtMode_Extendable, 0, 255, 0, |
|
|
|
|
UPB_SIZE(8, 16), 4, kUpb_ExtMode_Extendable, 0, 255, 0, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
static const upb_MiniTableSub google_protobuf_EnumValueOptions_submsgs[1] = { |
|
|
|
@ -1299,7 +1307,7 @@ const upb_MiniTableFile google_protobuf_descriptor_proto_upb_file_layout = { |
|
|
|
|
* regenerated. */ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static const char descriptor[7820] = {'\n', ' ', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 'd', 'e', 's', 'c', 'r', 'i', 'p',
|
|
|
|
|
static const char descriptor[7996] = {'\n', ' ', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 'd', 'e', 's', 'c', 'r', 'i', 'p',
|
|
|
|
|
't', 'o', 'r', '.', 'p', 'r', 'o', 't', 'o', '\022', '\017', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u',
|
|
|
|
|
'f', '\"', 'M', '\n', '\021', 'F', 'i', 'l', 'e', 'D', 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', 'S', 'e', 't', '\022', '8', '\n',
|
|
|
|
|
'\004', 'f', 'i', 'l', 'e', '\030', '\001', ' ', '\003', '(', '\013', '2', '$', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't',
|
|
|
|
@ -1489,7 +1497,7 @@ static const char descriptor[7820] = {'\n', ' ', 'g', 'o', 'o', 'g', 'l', 'e', ' |
|
|
|
|
'p', 'r', 'e', 't', 'e', 'd', 'O', 'p', 't', 'i', 'o', 'n', '\"', ':', '\n', '\014', 'O', 'p', 't', 'i', 'm', 'i', 'z', 'e', 'M',
|
|
|
|
|
'o', 'd', 'e', '\022', '\t', '\n', '\005', 'S', 'P', 'E', 'E', 'D', '\020', '\001', '\022', '\r', '\n', '\t', 'C', 'O', 'D', 'E', '_', 'S', 'I',
|
|
|
|
|
'Z', 'E', '\020', '\002', '\022', '\020', '\n', '\014', 'L', 'I', 'T', 'E', '_', 'R', 'U', 'N', 'T', 'I', 'M', 'E', '\020', '\003', '*', '\t', '\010',
|
|
|
|
|
'\350', '\007', '\020', '\200', '\200', '\200', '\200', '\002', 'J', '\004', '\010', '&', '\020', '\'', '\"', '\343', '\002', '\n', '\016', 'M', 'e', 's', 's', 'a', 'g',
|
|
|
|
|
'\350', '\007', '\020', '\200', '\200', '\200', '\200', '\002', 'J', '\004', '\010', '&', '\020', '\'', '\"', '\273', '\003', '\n', '\016', 'M', 'e', 's', 's', 'a', 'g',
|
|
|
|
|
'e', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', '<', '\n', '\027', 'm', 'e', 's', 's', 'a', 'g', 'e', '_', 's', 'e', 't', '_', 'w',
|
|
|
|
|
'i', 'r', 'e', '_', 'f', 'o', 'r', 'm', 'a', 't', '\030', '\001', ' ', '\001', '(', '\010', ':', '\005', 'f', 'a', 'l', 's', 'e', 'R', '\024',
|
|
|
|
|
'm', 'e', 's', 's', 'a', 'g', 'e', 'S', 'e', 't', 'W', 'i', 'r', 'e', 'F', 'o', 'r', 'm', 'a', 't', '\022', 'L', '\n', '\037', 'n',
|
|
|
|
@ -1498,120 +1506,127 @@ static const char descriptor[7820] = {'\n', ' ', 'g', 'o', 'o', 'g', 'l', 'e', ' |
|
|
|
|
'n', 'd', 'a', 'r', 'd', 'D', 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', 'A', 'c', 'c', 'e', 's', 's', 'o', 'r', '\022', '%',
|
|
|
|
|
'\n', '\n', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', '\030', '\003', ' ', '\001', '(', '\010', ':', '\005', 'f', 'a', 'l', 's', 'e',
|
|
|
|
|
'R', '\n', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', '\022', '\033', '\n', '\t', 'm', 'a', 'p', '_', 'e', 'n', 't', 'r', 'y',
|
|
|
|
|
'\030', '\007', ' ', '\001', '(', '\010', 'R', '\010', 'm', 'a', 'p', 'E', 'n', 't', 'r', 'y', '\022', 'X', '\n', '\024', 'u', 'n', 'i', 'n', 't',
|
|
|
|
|
'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', '_', 'o', 'p', 't', 'i', 'o', 'n', '\030', '\347', '\007', ' ', '\003', '(', '\013', '2', '$', '.',
|
|
|
|
|
'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r',
|
|
|
|
|
'e', 't', 'e', 'd', 'O', 'p', 't', 'i', 'o', 'n', 'R', '\023', 'u', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd',
|
|
|
|
|
'O', 'p', 't', 'i', 'o', 'n', '*', '\t', '\010', '\350', '\007', '\020', '\200', '\200', '\200', '\200', '\002', 'J', '\004', '\010', '\004', '\020', '\005', 'J', '\004',
|
|
|
|
|
'\010', '\005', '\020', '\006', 'J', '\004', '\010', '\006', '\020', '\007', 'J', '\004', '\010', '\010', '\020', '\t', 'J', '\004', '\010', '\t', '\020', '\n', '\"', '\222', '\004',
|
|
|
|
|
'\n', '\014', 'F', 'i', 'e', 'l', 'd', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', 'A', '\n', '\005', 'c', 't', 'y', 'p', 'e', '\030', '\001',
|
|
|
|
|
' ', '\001', '(', '\016', '2', '#', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'F', 'i',
|
|
|
|
|
'e', 'l', 'd', 'O', 'p', 't', 'i', 'o', 'n', 's', '.', 'C', 'T', 'y', 'p', 'e', ':', '\006', 'S', 'T', 'R', 'I', 'N', 'G', 'R',
|
|
|
|
|
'\005', 'c', 't', 'y', 'p', 'e', '\022', '\026', '\n', '\006', 'p', 'a', 'c', 'k', 'e', 'd', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\006', 'p',
|
|
|
|
|
'a', 'c', 'k', 'e', 'd', '\022', 'G', '\n', '\006', 'j', 's', 't', 'y', 'p', 'e', '\030', '\006', ' ', '\001', '(', '\016', '2', '$', '.', 'g',
|
|
|
|
|
'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'F', 'i', 'e', 'l', 'd', 'O', 'p', 't', 'i', 'o',
|
|
|
|
|
'n', 's', '.', 'J', 'S', 'T', 'y', 'p', 'e', ':', '\t', 'J', 'S', '_', 'N', 'O', 'R', 'M', 'A', 'L', 'R', '\006', 'j', 's', 't',
|
|
|
|
|
'y', 'p', 'e', '\022', '\031', '\n', '\004', 'l', 'a', 'z', 'y', '\030', '\005', ' ', '\001', '(', '\010', ':', '\005', 'f', 'a', 'l', 's', 'e', 'R',
|
|
|
|
|
'\004', 'l', 'a', 'z', 'y', '\022', '.', '\n', '\017', 'u', 'n', 'v', 'e', 'r', 'i', 'f', 'i', 'e', 'd', '_', 'l', 'a', 'z', 'y', '\030',
|
|
|
|
|
'\017', ' ', '\001', '(', '\010', ':', '\005', 'f', 'a', 'l', 's', 'e', 'R', '\016', 'u', 'n', 'v', 'e', 'r', 'i', 'f', 'i', 'e', 'd', 'L',
|
|
|
|
|
'a', 'z', 'y', '\022', '%', '\n', '\n', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', '\030', '\003', ' ', '\001', '(', '\010', ':', '\005',
|
|
|
|
|
'f', 'a', 'l', 's', 'e', 'R', '\n', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', '\022', '\031', '\n', '\004', 'w', 'e', 'a', 'k',
|
|
|
|
|
'\030', '\n', ' ', '\001', '(', '\010', ':', '\005', 'f', 'a', 'l', 's', 'e', 'R', '\004', 'w', 'e', 'a', 'k', '\022', 'X', '\n', '\024', 'u', 'n',
|
|
|
|
|
'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', '_', 'o', 'p', 't', 'i', 'o', 'n', '\030', '\347', '\007', ' ', '\003', '(', '\013',
|
|
|
|
|
'2', '$', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'n', 'i', 'n', 't', 'e',
|
|
|
|
|
'r', 'p', 'r', 'e', 't', 'e', 'd', 'O', 'p', 't', 'i', 'o', 'n', 'R', '\023', 'u', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e',
|
|
|
|
|
't', 'e', 'd', 'O', 'p', 't', 'i', 'o', 'n', '\"', '/', '\n', '\005', 'C', 'T', 'y', 'p', 'e', '\022', '\n', '\n', '\006', 'S', 'T', 'R',
|
|
|
|
|
'I', 'N', 'G', '\020', '\000', '\022', '\010', '\n', '\004', 'C', 'O', 'R', 'D', '\020', '\001', '\022', '\020', '\n', '\014', 'S', 'T', 'R', 'I', 'N', 'G',
|
|
|
|
|
'_', 'P', 'I', 'E', 'C', 'E', '\020', '\002', '\"', '5', '\n', '\006', 'J', 'S', 'T', 'y', 'p', 'e', '\022', '\r', '\n', '\t', 'J', 'S', '_',
|
|
|
|
|
'N', 'O', 'R', 'M', 'A', 'L', '\020', '\000', '\022', '\r', '\n', '\t', 'J', 'S', '_', 'S', 'T', 'R', 'I', 'N', 'G', '\020', '\001', '\022', '\r',
|
|
|
|
|
'\n', '\t', 'J', 'S', '_', 'N', 'U', 'M', 'B', 'E', 'R', '\020', '\002', '*', '\t', '\010', '\350', '\007', '\020', '\200', '\200', '\200', '\200', '\002', 'J',
|
|
|
|
|
'\004', '\010', '\004', '\020', '\005', '\"', 's', '\n', '\014', 'O', 'n', 'e', 'o', 'f', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', 'X', '\n', '\024',
|
|
|
|
|
'u', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', '_', 'o', 'p', 't', 'i', 'o', 'n', '\030', '\347', '\007', ' ', '\003',
|
|
|
|
|
'(', '\013', '2', '$', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'n', 'i', 'n',
|
|
|
|
|
't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O', 'p', 't', 'i', 'o', 'n', 'R', '\023', 'u', 'n', 'i', 'n', 't', 'e', 'r', 'p',
|
|
|
|
|
'r', 'e', 't', 'e', 'd', 'O', 'p', 't', 'i', 'o', 'n', '*', '\t', '\010', '\350', '\007', '\020', '\200', '\200', '\200', '\200', '\002', '\"', '\300', '\001',
|
|
|
|
|
'\n', '\013', 'E', 'n', 'u', 'm', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', '\037', '\n', '\013', 'a', 'l', 'l', 'o', 'w', '_', 'a', 'l',
|
|
|
|
|
'i', 'a', 's', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\n', 'a', 'l', 'l', 'o', 'w', 'A', 'l', 'i', 'a', 's', '\022', '%', '\n', '\n',
|
|
|
|
|
'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', '\030', '\003', ' ', '\001', '(', '\010', ':', '\005', 'f', 'a', 'l', 's', 'e', 'R', '\n',
|
|
|
|
|
'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', '\022', 'X', '\n', '\024', 'u', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't',
|
|
|
|
|
'e', 'd', '_', 'o', 'p', 't', 'i', 'o', 'n', '\030', '\347', '\007', ' ', '\003', '(', '\013', '2', '$', '.', 'g', 'o', 'o', 'g', 'l', 'e',
|
|
|
|
|
'.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O', 'p',
|
|
|
|
|
't', 'i', 'o', 'n', 'R', '\023', 'u', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O', 'p', 't', 'i', 'o', 'n',
|
|
|
|
|
'*', '\t', '\010', '\350', '\007', '\020', '\200', '\200', '\200', '\200', '\002', 'J', '\004', '\010', '\005', '\020', '\006', '\"', '\236', '\001', '\n', '\020', 'E', 'n', 'u',
|
|
|
|
|
'm', 'V', 'a', 'l', 'u', 'e', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', '%', '\n', '\n', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't',
|
|
|
|
|
'e', 'd', '\030', '\001', ' ', '\001', '(', '\010', ':', '\005', 'f', 'a', 'l', 's', 'e', 'R', '\n', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't',
|
|
|
|
|
'e', 'd', '\022', 'X', '\n', '\024', 'u', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', '_', 'o', 'p', 't', 'i', 'o',
|
|
|
|
|
'n', '\030', '\347', '\007', ' ', '\003', '(', '\013', '2', '$', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u',
|
|
|
|
|
'f', '.', 'U', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O', 'p', 't', 'i', 'o', 'n', 'R', '\023', 'u', 'n',
|
|
|
|
|
'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O', 'p', 't', 'i', 'o', 'n', '*', '\t', '\010', '\350', '\007', '\020', '\200', '\200',
|
|
|
|
|
'\200', '\200', '\002', '\"', '\234', '\001', '\n', '\016', 'S', 'e', 'r', 'v', 'i', 'c', 'e', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', '%', '\n',
|
|
|
|
|
'\n', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', '\030', '!', ' ', '\001', '(', '\010', ':', '\005', 'f', 'a', 'l', 's', 'e', 'R',
|
|
|
|
|
'\n', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', '\022', 'X', '\n', '\024', 'u', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e',
|
|
|
|
|
'\030', '\007', ' ', '\001', '(', '\010', 'R', '\010', 'm', 'a', 'p', 'E', 'n', 't', 'r', 'y', '\022', 'V', '\n', '&', 'd', 'e', 'p', 'r', 'e',
|
|
|
|
|
'c', 'a', 't', 'e', 'd', '_', 'l', 'e', 'g', 'a', 'c', 'y', '_', 'j', 's', 'o', 'n', '_', 'f', 'i', 'e', 'l', 'd', '_', 'c',
|
|
|
|
|
'o', 'n', 'f', 'l', 'i', 'c', 't', 's', '\030', '\013', ' ', '\001', '(', '\010', 'B', '\002', '\030', '\001', 'R', '\"', 'd', 'e', 'p', 'r', 'e',
|
|
|
|
|
'c', 'a', 't', 'e', 'd', 'L', 'e', 'g', 'a', 'c', 'y', 'J', 's', 'o', 'n', 'F', 'i', 'e', 'l', 'd', 'C', 'o', 'n', 'f', 'l',
|
|
|
|
|
'i', 'c', 't', 's', '\022', 'X', '\n', '\024', 'u', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', '_', 'o', 'p', 't',
|
|
|
|
|
'i', 'o', 'n', '\030', '\347', '\007', ' ', '\003', '(', '\013', '2', '$', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o',
|
|
|
|
|
'b', 'u', 'f', '.', 'U', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O', 'p', 't', 'i', 'o', 'n', 'R', '\023',
|
|
|
|
|
'u', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O', 'p', 't', 'i', 'o', 'n', '*', '\t', '\010', '\350', '\007', '\020',
|
|
|
|
|
'\200', '\200', '\200', '\200', '\002', 'J', '\004', '\010', '\004', '\020', '\005', 'J', '\004', '\010', '\005', '\020', '\006', 'J', '\004', '\010', '\006', '\020', '\007', 'J', '\004',
|
|
|
|
|
'\010', '\010', '\020', '\t', 'J', '\004', '\010', '\t', '\020', '\n', '\"', '\222', '\004', '\n', '\014', 'F', 'i', 'e', 'l', 'd', 'O', 'p', 't', 'i', 'o',
|
|
|
|
|
'n', 's', '\022', 'A', '\n', '\005', 'c', 't', 'y', 'p', 'e', '\030', '\001', ' ', '\001', '(', '\016', '2', '#', '.', 'g', 'o', 'o', 'g', 'l',
|
|
|
|
|
'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'F', 'i', 'e', 'l', 'd', 'O', 'p', 't', 'i', 'o', 'n', 's', '.', 'C',
|
|
|
|
|
'T', 'y', 'p', 'e', ':', '\006', 'S', 'T', 'R', 'I', 'N', 'G', 'R', '\005', 'c', 't', 'y', 'p', 'e', '\022', '\026', '\n', '\006', 'p', 'a',
|
|
|
|
|
'c', 'k', 'e', 'd', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\006', 'p', 'a', 'c', 'k', 'e', 'd', '\022', 'G', '\n', '\006', 'j', 's', 't',
|
|
|
|
|
'y', 'p', 'e', '\030', '\006', ' ', '\001', '(', '\016', '2', '$', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b',
|
|
|
|
|
'u', 'f', '.', 'F', 'i', 'e', 'l', 'd', 'O', 'p', 't', 'i', 'o', 'n', 's', '.', 'J', 'S', 'T', 'y', 'p', 'e', ':', '\t', 'J',
|
|
|
|
|
'S', '_', 'N', 'O', 'R', 'M', 'A', 'L', 'R', '\006', 'j', 's', 't', 'y', 'p', 'e', '\022', '\031', '\n', '\004', 'l', 'a', 'z', 'y', '\030',
|
|
|
|
|
'\005', ' ', '\001', '(', '\010', ':', '\005', 'f', 'a', 'l', 's', 'e', 'R', '\004', 'l', 'a', 'z', 'y', '\022', '.', '\n', '\017', 'u', 'n', 'v',
|
|
|
|
|
'e', 'r', 'i', 'f', 'i', 'e', 'd', '_', 'l', 'a', 'z', 'y', '\030', '\017', ' ', '\001', '(', '\010', ':', '\005', 'f', 'a', 'l', 's', 'e',
|
|
|
|
|
'R', '\016', 'u', 'n', 'v', 'e', 'r', 'i', 'f', 'i', 'e', 'd', 'L', 'a', 'z', 'y', '\022', '%', '\n', '\n', 'd', 'e', 'p', 'r', 'e',
|
|
|
|
|
'c', 'a', 't', 'e', 'd', '\030', '\003', ' ', '\001', '(', '\010', ':', '\005', 'f', 'a', 'l', 's', 'e', 'R', '\n', 'd', 'e', 'p', 'r', 'e',
|
|
|
|
|
'c', 'a', 't', 'e', 'd', '\022', '\031', '\n', '\004', 'w', 'e', 'a', 'k', '\030', '\n', ' ', '\001', '(', '\010', ':', '\005', 'f', 'a', 'l', 's',
|
|
|
|
|
'e', 'R', '\004', 'w', 'e', 'a', 'k', '\022', 'X', '\n', '\024', 'u', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', '_',
|
|
|
|
|
'o', 'p', 't', 'i', 'o', 'n', '\030', '\347', '\007', ' ', '\003', '(', '\013', '2', '$', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r',
|
|
|
|
|
'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O', 'p', 't', 'i', 'o',
|
|
|
|
|
'n', 'R', '\023', 'u', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O', 'p', 't', 'i', 'o', 'n', '\"', '/', '\n',
|
|
|
|
|
'\005', 'C', 'T', 'y', 'p', 'e', '\022', '\n', '\n', '\006', 'S', 'T', 'R', 'I', 'N', 'G', '\020', '\000', '\022', '\010', '\n', '\004', 'C', 'O', 'R',
|
|
|
|
|
'D', '\020', '\001', '\022', '\020', '\n', '\014', 'S', 'T', 'R', 'I', 'N', 'G', '_', 'P', 'I', 'E', 'C', 'E', '\020', '\002', '\"', '5', '\n', '\006',
|
|
|
|
|
'J', 'S', 'T', 'y', 'p', 'e', '\022', '\r', '\n', '\t', 'J', 'S', '_', 'N', 'O', 'R', 'M', 'A', 'L', '\020', '\000', '\022', '\r', '\n', '\t',
|
|
|
|
|
'J', 'S', '_', 'S', 'T', 'R', 'I', 'N', 'G', '\020', '\001', '\022', '\r', '\n', '\t', 'J', 'S', '_', 'N', 'U', 'M', 'B', 'E', 'R', '\020',
|
|
|
|
|
'\002', '*', '\t', '\010', '\350', '\007', '\020', '\200', '\200', '\200', '\200', '\002', 'J', '\004', '\010', '\004', '\020', '\005', '\"', 's', '\n', '\014', 'O', 'n', 'e',
|
|
|
|
|
'o', 'f', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', 'X', '\n', '\024', 'u', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e',
|
|
|
|
|
'd', '_', 'o', 'p', 't', 'i', 'o', 'n', '\030', '\347', '\007', ' ', '\003', '(', '\013', '2', '$', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.',
|
|
|
|
|
'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O', 'p', 't',
|
|
|
|
|
'i', 'o', 'n', 'R', '\023', 'u', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O', 'p', 't', 'i', 'o', 'n', '*',
|
|
|
|
|
'\t', '\010', '\350', '\007', '\020', '\200', '\200', '\200', '\200', '\002', '\"', '\230', '\002', '\n', '\013', 'E', 'n', 'u', 'm', 'O', 'p', 't', 'i', 'o', 'n',
|
|
|
|
|
's', '\022', '\037', '\n', '\013', 'a', 'l', 'l', 'o', 'w', '_', 'a', 'l', 'i', 'a', 's', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\n', 'a',
|
|
|
|
|
'l', 'l', 'o', 'w', 'A', 'l', 'i', 'a', 's', '\022', '%', '\n', '\n', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', '\030', '\003',
|
|
|
|
|
' ', '\001', '(', '\010', ':', '\005', 'f', 'a', 'l', 's', 'e', 'R', '\n', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', '\022', 'V',
|
|
|
|
|
'\n', '&', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', '_', 'l', 'e', 'g', 'a', 'c', 'y', '_', 'j', 's', 'o', 'n', '_',
|
|
|
|
|
'f', 'i', 'e', 'l', 'd', '_', 'c', 'o', 'n', 'f', 'l', 'i', 'c', 't', 's', '\030', '\006', ' ', '\001', '(', '\010', 'B', '\002', '\030', '\001',
|
|
|
|
|
'R', '\"', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', 'L', 'e', 'g', 'a', 'c', 'y', 'J', 's', 'o', 'n', 'F', 'i', 'e',
|
|
|
|
|
'l', 'd', 'C', 'o', 'n', 'f', 'l', 'i', 'c', 't', 's', '\022', 'X', '\n', '\024', 'u', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e',
|
|
|
|
|
't', 'e', 'd', '_', 'o', 'p', 't', 'i', 'o', 'n', '\030', '\347', '\007', ' ', '\003', '(', '\013', '2', '$', '.', 'g', 'o', 'o', 'g', 'l',
|
|
|
|
|
'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O',
|
|
|
|
|
'p', 't', 'i', 'o', 'n', 'R', '\023', 'u', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O', 'p', 't', 'i', 'o',
|
|
|
|
|
'n', '*', '\t', '\010', '\350', '\007', '\020', '\200', '\200', '\200', '\200', '\002', '\"', '\340', '\002', '\n', '\r', 'M', 'e', 't', 'h', 'o', 'd', 'O', 'p',
|
|
|
|
|
't', 'i', 'o', 'n', 's', '\022', '%', '\n', '\n', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', '\030', '!', ' ', '\001', '(', '\010',
|
|
|
|
|
':', '\005', 'f', 'a', 'l', 's', 'e', 'R', '\n', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', '\022', 'q', '\n', '\021', 'i', 'd',
|
|
|
|
|
'e', 'm', 'p', 'o', 't', 'e', 'n', 'c', 'y', '_', 'l', 'e', 'v', 'e', 'l', '\030', '\"', ' ', '\001', '(', '\016', '2', '/', '.', 'g',
|
|
|
|
|
'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'M', 'e', 't', 'h', 'o', 'd', 'O', 'p', 't', 'i',
|
|
|
|
|
'o', 'n', 's', '.', 'I', 'd', 'e', 'm', 'p', 'o', 't', 'e', 'n', 'c', 'y', 'L', 'e', 'v', 'e', 'l', ':', '\023', 'I', 'D', 'E',
|
|
|
|
|
'M', 'P', 'O', 'T', 'E', 'N', 'C', 'Y', '_', 'U', 'N', 'K', 'N', 'O', 'W', 'N', 'R', '\020', 'i', 'd', 'e', 'm', 'p', 'o', 't',
|
|
|
|
|
'e', 'n', 'c', 'y', 'L', 'e', 'v', 'e', 'l', '\022', 'X', '\n', '\024', 'u', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e',
|
|
|
|
|
'd', '_', 'o', 'p', 't', 'i', 'o', 'n', '\030', '\347', '\007', ' ', '\003', '(', '\013', '2', '$', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.',
|
|
|
|
|
'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O', 'p', 't',
|
|
|
|
|
'i', 'o', 'n', 'R', '\023', 'u', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O', 'p', 't', 'i', 'o', 'n', '\"',
|
|
|
|
|
'P', '\n', '\020', 'I', 'd', 'e', 'm', 'p', 'o', 't', 'e', 'n', 'c', 'y', 'L', 'e', 'v', 'e', 'l', '\022', '\027', '\n', '\023', 'I', 'D',
|
|
|
|
|
'E', 'M', 'P', 'O', 'T', 'E', 'N', 'C', 'Y', '_', 'U', 'N', 'K', 'N', 'O', 'W', 'N', '\020', '\000', '\022', '\023', '\n', '\017', 'N', 'O',
|
|
|
|
|
'_', 'S', 'I', 'D', 'E', '_', 'E', 'F', 'F', 'E', 'C', 'T', 'S', '\020', '\001', '\022', '\016', '\n', '\n', 'I', 'D', 'E', 'M', 'P', 'O',
|
|
|
|
|
'T', 'E', 'N', 'T', '\020', '\002', '*', '\t', '\010', '\350', '\007', '\020', '\200', '\200', '\200', '\200', '\002', '\"', '\232', '\003', '\n', '\023', 'U', 'n', 'i',
|
|
|
|
|
'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O', 'p', 't', 'i', 'o', 'n', '\022', 'A', '\n', '\004', 'n', 'a', 'm', 'e', '\030',
|
|
|
|
|
'\002', ' ', '\003', '(', '\013', '2', '-', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U',
|
|
|
|
|
'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O', 'p', 't', 'i', 'o', 'n', '.', 'N', 'a', 'm', 'e', 'P', 'a',
|
|
|
|
|
'r', 't', 'R', '\004', 'n', 'a', 'm', 'e', '\022', ')', '\n', '\020', 'i', 'd', 'e', 'n', 't', 'i', 'f', 'i', 'e', 'r', '_', 'v', 'a',
|
|
|
|
|
'l', 'u', 'e', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\017', 'i', 'd', 'e', 'n', 't', 'i', 'f', 'i', 'e', 'r', 'V', 'a', 'l', 'u',
|
|
|
|
|
'e', '\022', ',', '\n', '\022', 'p', 'o', 's', 'i', 't', 'i', 'v', 'e', '_', 'i', 'n', 't', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\004',
|
|
|
|
|
' ', '\001', '(', '\004', 'R', '\020', 'p', 'o', 's', 'i', 't', 'i', 'v', 'e', 'I', 'n', 't', 'V', 'a', 'l', 'u', 'e', '\022', ',', '\n',
|
|
|
|
|
'\022', 'n', 'e', 'g', 'a', 't', 'i', 'v', 'e', '_', 'i', 'n', 't', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\005', ' ', '\001', '(', '\003',
|
|
|
|
|
'R', '\020', 'n', 'e', 'g', 'a', 't', 'i', 'v', 'e', 'I', 'n', 't', 'V', 'a', 'l', 'u', 'e', '\022', '!', '\n', '\014', 'd', 'o', 'u',
|
|
|
|
|
'b', 'l', 'e', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\006', ' ', '\001', '(', '\001', 'R', '\013', 'd', 'o', 'u', 'b', 'l', 'e', 'V', 'a',
|
|
|
|
|
'l', 'u', 'e', '\022', '!', '\n', '\014', 's', 't', 'r', 'i', 'n', 'g', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\007', ' ', '\001', '(', '\014',
|
|
|
|
|
'R', '\013', 's', 't', 'r', 'i', 'n', 'g', 'V', 'a', 'l', 'u', 'e', '\022', '\'', '\n', '\017', 'a', 'g', 'g', 'r', 'e', 'g', 'a', 't',
|
|
|
|
|
'e', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\010', ' ', '\001', '(', '\t', 'R', '\016', 'a', 'g', 'g', 'r', 'e', 'g', 'a', 't', 'e', 'V',
|
|
|
|
|
'a', 'l', 'u', 'e', '\032', 'J', '\n', '\010', 'N', 'a', 'm', 'e', 'P', 'a', 'r', 't', '\022', '\033', '\n', '\t', 'n', 'a', 'm', 'e', '_',
|
|
|
|
|
'p', 'a', 'r', 't', '\030', '\001', ' ', '\002', '(', '\t', 'R', '\010', 'n', 'a', 'm', 'e', 'P', 'a', 'r', 't', '\022', '!', '\n', '\014', 'i',
|
|
|
|
|
's', '_', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '\030', '\002', ' ', '\002', '(', '\010', 'R', '\013', 'i', 's', 'E', 'x', 't', 'e',
|
|
|
|
|
'n', 's', 'i', 'o', 'n', '\"', '\247', '\002', '\n', '\016', 'S', 'o', 'u', 'r', 'c', 'e', 'C', 'o', 'd', 'e', 'I', 'n', 'f', 'o', '\022',
|
|
|
|
|
'D', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\001', ' ', '\003', '(', '\013', '2', '(', '.', 'g', 'o', 'o', 'g', 'l',
|
|
|
|
|
'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'S', 'o', 'u', 'r', 'c', 'e', 'C', 'o', 'd', 'e', 'I', 'n', 'f', 'o',
|
|
|
|
|
'.', 'L', 'o', 'c', 'a', 't', 'i', 'o', 'n', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\032', '\316', '\001', '\n', '\010', 'L',
|
|
|
|
|
'o', 'c', 'a', 't', 'i', 'o', 'n', '\022', '\026', '\n', '\004', 'p', 'a', 't', 'h', '\030', '\001', ' ', '\003', '(', '\005', 'B', '\002', '\020', '\001',
|
|
|
|
|
'R', '\004', 'p', 'a', 't', 'h', '\022', '\026', '\n', '\004', 's', 'p', 'a', 'n', '\030', '\002', ' ', '\003', '(', '\005', 'B', '\002', '\020', '\001', 'R',
|
|
|
|
|
'\004', 's', 'p', 'a', 'n', '\022', ')', '\n', '\020', 'l', 'e', 'a', 'd', 'i', 'n', 'g', '_', 'c', 'o', 'm', 'm', 'e', 'n', 't', 's',
|
|
|
|
|
'\030', '\003', ' ', '\001', '(', '\t', 'R', '\017', 'l', 'e', 'a', 'd', 'i', 'n', 'g', 'C', 'o', 'm', 'm', 'e', 'n', 't', 's', '\022', '+',
|
|
|
|
|
'\n', '\021', 't', 'r', 'a', 'i', 'l', 'i', 'n', 'g', '_', 'c', 'o', 'm', 'm', 'e', 'n', 't', 's', '\030', '\004', ' ', '\001', '(', '\t',
|
|
|
|
|
'R', '\020', 't', 'r', 'a', 'i', 'l', 'i', 'n', 'g', 'C', 'o', 'm', 'm', 'e', 'n', 't', 's', '\022', ':', '\n', '\031', 'l', 'e', 'a',
|
|
|
|
|
'd', 'i', 'n', 'g', '_', 'd', 'e', 't', 'a', 'c', 'h', 'e', 'd', '_', 'c', 'o', 'm', 'm', 'e', 'n', 't', 's', '\030', '\006', ' ',
|
|
|
|
|
'\003', '(', '\t', 'R', '\027', 'l', 'e', 'a', 'd', 'i', 'n', 'g', 'D', 'e', 't', 'a', 'c', 'h', 'e', 'd', 'C', 'o', 'm', 'm', 'e',
|
|
|
|
|
'n', 't', 's', '\"', '\320', '\002', '\n', '\021', 'G', 'e', 'n', 'e', 'r', 'a', 't', 'e', 'd', 'C', 'o', 'd', 'e', 'I', 'n', 'f', 'o',
|
|
|
|
|
'\022', 'M', '\n', '\n', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', '\030', '\001', ' ', '\003', '(', '\013', '2', '-', '.', 'g', 'o',
|
|
|
|
|
'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'G', 'e', 'n', 'e', 'r', 'a', 't', 'e', 'd', 'C', 'o',
|
|
|
|
|
'd', 'e', 'I', 'n', 'f', 'o', '.', 'A', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 'R', '\n', 'a', 'n', 'n', 'o', 't', 'a',
|
|
|
|
|
't', 'i', 'o', 'n', '\032', '\353', '\001', '\n', '\n', 'A', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', '\022', '\026', '\n', '\004', 'p', 'a',
|
|
|
|
|
't', 'h', '\030', '\001', ' ', '\003', '(', '\005', 'B', '\002', '\020', '\001', 'R', '\004', 'p', 'a', 't', 'h', '\022', '\037', '\n', '\013', 's', 'o', 'u',
|
|
|
|
|
'r', 'c', 'e', '_', 'f', 'i', 'l', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\n', 's', 'o', 'u', 'r', 'c', 'e', 'F', 'i', 'l',
|
|
|
|
|
'e', '\022', '\024', '\n', '\005', 'b', 'e', 'g', 'i', 'n', '\030', '\003', ' ', '\001', '(', '\005', 'R', '\005', 'b', 'e', 'g', 'i', 'n', '\022', '\020',
|
|
|
|
|
'\n', '\003', 'e', 'n', 'd', '\030', '\004', ' ', '\001', '(', '\005', 'R', '\003', 'e', 'n', 'd', '\022', 'R', '\n', '\010', 's', 'e', 'm', 'a', 'n',
|
|
|
|
|
't', 'i', 'c', '\030', '\005', ' ', '\001', '(', '\016', '2', '6', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b',
|
|
|
|
|
'u', 'f', '.', 'G', 'e', 'n', 'e', 'r', 'a', 't', 'e', 'd', 'C', 'o', 'd', 'e', 'I', 'n', 'f', 'o', '.', 'A', 'n', 'n', 'o',
|
|
|
|
|
't', 'a', 't', 'i', 'o', 'n', '.', 'S', 'e', 'm', 'a', 'n', 't', 'i', 'c', 'R', '\010', 's', 'e', 'm', 'a', 'n', 't', 'i', 'c',
|
|
|
|
|
'\"', '(', '\n', '\010', 'S', 'e', 'm', 'a', 'n', 't', 'i', 'c', '\022', '\010', '\n', '\004', 'N', 'O', 'N', 'E', '\020', '\000', '\022', '\007', '\n',
|
|
|
|
|
'\003', 'S', 'E', 'T', '\020', '\001', '\022', '\t', '\n', '\005', 'A', 'L', 'I', 'A', 'S', '\020', '\002', 'B', '~', '\n', '\023', 'c', 'o', 'm', '.',
|
|
|
|
|
'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', 'B', '\020', 'D', 'e', 's', 'c', 'r', 'i', 'p', 't',
|
|
|
|
|
'o', 'r', 'P', 'r', 'o', 't', 'o', 's', 'H', '\001', 'Z', '-', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'g', 'o', 'l', 'a', 'n', 'g',
|
|
|
|
|
'.', 'o', 'r', 'g', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 't', 'y', 'p', 'e', 's', '/', 'd', 'e', 's', 'c', 'r',
|
|
|
|
|
'i', 'p', 't', 'o', 'r', 'p', 'b', '\370', '\001', '\001', '\242', '\002', '\003', 'G', 'P', 'B', '\252', '\002', '\032', 'G', 'o', 'o', 'g', 'l', 'e',
|
|
|
|
|
'.', 'P', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'R', 'e', 'f', 'l', 'e', 'c', 't', 'i', 'o', 'n',
|
|
|
|
|
'n', '*', '\t', '\010', '\350', '\007', '\020', '\200', '\200', '\200', '\200', '\002', 'J', '\004', '\010', '\005', '\020', '\006', '\"', '\236', '\001', '\n', '\020', 'E', 'n',
|
|
|
|
|
'u', 'm', 'V', 'a', 'l', 'u', 'e', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', '%', '\n', '\n', 'd', 'e', 'p', 'r', 'e', 'c', 'a',
|
|
|
|
|
't', 'e', 'd', '\030', '\001', ' ', '\001', '(', '\010', ':', '\005', 'f', 'a', 'l', 's', 'e', 'R', '\n', 'd', 'e', 'p', 'r', 'e', 'c', 'a',
|
|
|
|
|
't', 'e', 'd', '\022', 'X', '\n', '\024', 'u', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', '_', 'o', 'p', 't', 'i',
|
|
|
|
|
'o', 'n', '\030', '\347', '\007', ' ', '\003', '(', '\013', '2', '$', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b',
|
|
|
|
|
'u', 'f', '.', 'U', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O', 'p', 't', 'i', 'o', 'n', 'R', '\023', 'u',
|
|
|
|
|
'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O', 'p', 't', 'i', 'o', 'n', '*', '\t', '\010', '\350', '\007', '\020', '\200',
|
|
|
|
|
'\200', '\200', '\200', '\002', '\"', '\234', '\001', '\n', '\016', 'S', 'e', 'r', 'v', 'i', 'c', 'e', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', '%',
|
|
|
|
|
'\n', '\n', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', '\030', '!', ' ', '\001', '(', '\010', ':', '\005', 'f', 'a', 'l', 's', 'e',
|
|
|
|
|
'R', '\n', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', '\022', 'X', '\n', '\024', 'u', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r',
|
|
|
|
|
'e', 't', 'e', 'd', '_', 'o', 'p', 't', 'i', 'o', 'n', '\030', '\347', '\007', ' ', '\003', '(', '\013', '2', '$', '.', 'g', 'o', 'o', 'g',
|
|
|
|
|
'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd',
|
|
|
|
|
'O', 'p', 't', 'i', 'o', 'n', 'R', '\023', 'u', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O', 'p', 't', 'i',
|
|
|
|
|
'o', 'n', '*', '\t', '\010', '\350', '\007', '\020', '\200', '\200', '\200', '\200', '\002', '\"', '\340', '\002', '\n', '\r', 'M', 'e', 't', 'h', 'o', 'd', 'O',
|
|
|
|
|
'p', 't', 'i', 'o', 'n', 's', '\022', '%', '\n', '\n', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', '\030', '!', ' ', '\001', '(',
|
|
|
|
|
'\010', ':', '\005', 'f', 'a', 'l', 's', 'e', 'R', '\n', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', '\022', 'q', '\n', '\021', 'i',
|
|
|
|
|
'd', 'e', 'm', 'p', 'o', 't', 'e', 'n', 'c', 'y', '_', 'l', 'e', 'v', 'e', 'l', '\030', '\"', ' ', '\001', '(', '\016', '2', '/', '.',
|
|
|
|
|
'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'M', 'e', 't', 'h', 'o', 'd', 'O', 'p', 't',
|
|
|
|
|
'i', 'o', 'n', 's', '.', 'I', 'd', 'e', 'm', 'p', 'o', 't', 'e', 'n', 'c', 'y', 'L', 'e', 'v', 'e', 'l', ':', '\023', 'I', 'D',
|
|
|
|
|
'E', 'M', 'P', 'O', 'T', 'E', 'N', 'C', 'Y', '_', 'U', 'N', 'K', 'N', 'O', 'W', 'N', 'R', '\020', 'i', 'd', 'e', 'm', 'p', 'o',
|
|
|
|
|
't', 'e', 'n', 'c', 'y', 'L', 'e', 'v', 'e', 'l', '\022', 'X', '\n', '\024', 'u', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't',
|
|
|
|
|
'e', 'd', '_', 'o', 'p', 't', 'i', 'o', 'n', '\030', '\347', '\007', ' ', '\003', '(', '\013', '2', '$', '.', 'g', 'o', 'o', 'g', 'l', 'e',
|
|
|
|
|
'.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O', 'p',
|
|
|
|
|
't', 'i', 'o', 'n', 'R', '\023', 'u', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O', 'p', 't', 'i', 'o', 'n',
|
|
|
|
|
'\"', 'P', '\n', '\020', 'I', 'd', 'e', 'm', 'p', 'o', 't', 'e', 'n', 'c', 'y', 'L', 'e', 'v', 'e', 'l', '\022', '\027', '\n', '\023', 'I',
|
|
|
|
|
'D', 'E', 'M', 'P', 'O', 'T', 'E', 'N', 'C', 'Y', '_', 'U', 'N', 'K', 'N', 'O', 'W', 'N', '\020', '\000', '\022', '\023', '\n', '\017', 'N',
|
|
|
|
|
'O', '_', 'S', 'I', 'D', 'E', '_', 'E', 'F', 'F', 'E', 'C', 'T', 'S', '\020', '\001', '\022', '\016', '\n', '\n', 'I', 'D', 'E', 'M', 'P',
|
|
|
|
|
'O', 'T', 'E', 'N', 'T', '\020', '\002', '*', '\t', '\010', '\350', '\007', '\020', '\200', '\200', '\200', '\200', '\002', '\"', '\232', '\003', '\n', '\023', 'U', 'n',
|
|
|
|
|
'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O', 'p', 't', 'i', 'o', 'n', '\022', 'A', '\n', '\004', 'n', 'a', 'm', 'e',
|
|
|
|
|
'\030', '\002', ' ', '\003', '(', '\013', '2', '-', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.',
|
|
|
|
|
'U', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O', 'p', 't', 'i', 'o', 'n', '.', 'N', 'a', 'm', 'e', 'P',
|
|
|
|
|
'a', 'r', 't', 'R', '\004', 'n', 'a', 'm', 'e', '\022', ')', '\n', '\020', 'i', 'd', 'e', 'n', 't', 'i', 'f', 'i', 'e', 'r', '_', 'v',
|
|
|
|
|
'a', 'l', 'u', 'e', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\017', 'i', 'd', 'e', 'n', 't', 'i', 'f', 'i', 'e', 'r', 'V', 'a', 'l',
|
|
|
|
|
'u', 'e', '\022', ',', '\n', '\022', 'p', 'o', 's', 'i', 't', 'i', 'v', 'e', '_', 'i', 'n', 't', '_', 'v', 'a', 'l', 'u', 'e', '\030',
|
|
|
|
|
'\004', ' ', '\001', '(', '\004', 'R', '\020', 'p', 'o', 's', 'i', 't', 'i', 'v', 'e', 'I', 'n', 't', 'V', 'a', 'l', 'u', 'e', '\022', ',',
|
|
|
|
|
'\n', '\022', 'n', 'e', 'g', 'a', 't', 'i', 'v', 'e', '_', 'i', 'n', 't', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\005', ' ', '\001', '(',
|
|
|
|
|
'\003', 'R', '\020', 'n', 'e', 'g', 'a', 't', 'i', 'v', 'e', 'I', 'n', 't', 'V', 'a', 'l', 'u', 'e', '\022', '!', '\n', '\014', 'd', 'o',
|
|
|
|
|
'u', 'b', 'l', 'e', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\006', ' ', '\001', '(', '\001', 'R', '\013', 'd', 'o', 'u', 'b', 'l', 'e', 'V',
|
|
|
|
|
'a', 'l', 'u', 'e', '\022', '!', '\n', '\014', 's', 't', 'r', 'i', 'n', 'g', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\007', ' ', '\001', '(',
|
|
|
|
|
'\014', 'R', '\013', 's', 't', 'r', 'i', 'n', 'g', 'V', 'a', 'l', 'u', 'e', '\022', '\'', '\n', '\017', 'a', 'g', 'g', 'r', 'e', 'g', 'a',
|
|
|
|
|
't', 'e', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\010', ' ', '\001', '(', '\t', 'R', '\016', 'a', 'g', 'g', 'r', 'e', 'g', 'a', 't', 'e',
|
|
|
|
|
'V', 'a', 'l', 'u', 'e', '\032', 'J', '\n', '\010', 'N', 'a', 'm', 'e', 'P', 'a', 'r', 't', '\022', '\033', '\n', '\t', 'n', 'a', 'm', 'e',
|
|
|
|
|
'_', 'p', 'a', 'r', 't', '\030', '\001', ' ', '\002', '(', '\t', 'R', '\010', 'n', 'a', 'm', 'e', 'P', 'a', 'r', 't', '\022', '!', '\n', '\014',
|
|
|
|
|
'i', 's', '_', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '\030', '\002', ' ', '\002', '(', '\010', 'R', '\013', 'i', 's', 'E', 'x', 't',
|
|
|
|
|
'e', 'n', 's', 'i', 'o', 'n', '\"', '\247', '\002', '\n', '\016', 'S', 'o', 'u', 'r', 'c', 'e', 'C', 'o', 'd', 'e', 'I', 'n', 'f', 'o',
|
|
|
|
|
'\022', 'D', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\001', ' ', '\003', '(', '\013', '2', '(', '.', 'g', 'o', 'o', 'g',
|
|
|
|
|
'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'S', 'o', 'u', 'r', 'c', 'e', 'C', 'o', 'd', 'e', 'I', 'n', 'f',
|
|
|
|
|
'o', '.', 'L', 'o', 'c', 'a', 't', 'i', 'o', 'n', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\032', '\316', '\001', '\n', '\010',
|
|
|
|
|
'L', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\022', '\026', '\n', '\004', 'p', 'a', 't', 'h', '\030', '\001', ' ', '\003', '(', '\005', 'B', '\002', '\020',
|
|
|
|
|
'\001', 'R', '\004', 'p', 'a', 't', 'h', '\022', '\026', '\n', '\004', 's', 'p', 'a', 'n', '\030', '\002', ' ', '\003', '(', '\005', 'B', '\002', '\020', '\001',
|
|
|
|
|
'R', '\004', 's', 'p', 'a', 'n', '\022', ')', '\n', '\020', 'l', 'e', 'a', 'd', 'i', 'n', 'g', '_', 'c', 'o', 'm', 'm', 'e', 'n', 't',
|
|
|
|
|
's', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\017', 'l', 'e', 'a', 'd', 'i', 'n', 'g', 'C', 'o', 'm', 'm', 'e', 'n', 't', 's', '\022',
|
|
|
|
|
'+', '\n', '\021', 't', 'r', 'a', 'i', 'l', 'i', 'n', 'g', '_', 'c', 'o', 'm', 'm', 'e', 'n', 't', 's', '\030', '\004', ' ', '\001', '(',
|
|
|
|
|
'\t', 'R', '\020', 't', 'r', 'a', 'i', 'l', 'i', 'n', 'g', 'C', 'o', 'm', 'm', 'e', 'n', 't', 's', '\022', ':', '\n', '\031', 'l', 'e',
|
|
|
|
|
'a', 'd', 'i', 'n', 'g', '_', 'd', 'e', 't', 'a', 'c', 'h', 'e', 'd', '_', 'c', 'o', 'm', 'm', 'e', 'n', 't', 's', '\030', '\006',
|
|
|
|
|
' ', '\003', '(', '\t', 'R', '\027', 'l', 'e', 'a', 'd', 'i', 'n', 'g', 'D', 'e', 't', 'a', 'c', 'h', 'e', 'd', 'C', 'o', 'm', 'm',
|
|
|
|
|
'e', 'n', 't', 's', '\"', '\320', '\002', '\n', '\021', 'G', 'e', 'n', 'e', 'r', 'a', 't', 'e', 'd', 'C', 'o', 'd', 'e', 'I', 'n', 'f',
|
|
|
|
|
'o', '\022', 'M', '\n', '\n', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', '\030', '\001', ' ', '\003', '(', '\013', '2', '-', '.', 'g',
|
|
|
|
|
'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'G', 'e', 'n', 'e', 'r', 'a', 't', 'e', 'd', 'C',
|
|
|
|
|
'o', 'd', 'e', 'I', 'n', 'f', 'o', '.', 'A', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 'R', '\n', 'a', 'n', 'n', 'o', 't',
|
|
|
|
|
'a', 't', 'i', 'o', 'n', '\032', '\353', '\001', '\n', '\n', 'A', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', '\022', '\026', '\n', '\004', 'p',
|
|
|
|
|
'a', 't', 'h', '\030', '\001', ' ', '\003', '(', '\005', 'B', '\002', '\020', '\001', 'R', '\004', 'p', 'a', 't', 'h', '\022', '\037', '\n', '\013', 's', 'o',
|
|
|
|
|
'u', 'r', 'c', 'e', '_', 'f', 'i', 'l', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\n', 's', 'o', 'u', 'r', 'c', 'e', 'F', 'i',
|
|
|
|
|
'l', 'e', '\022', '\024', '\n', '\005', 'b', 'e', 'g', 'i', 'n', '\030', '\003', ' ', '\001', '(', '\005', 'R', '\005', 'b', 'e', 'g', 'i', 'n', '\022',
|
|
|
|
|
'\020', '\n', '\003', 'e', 'n', 'd', '\030', '\004', ' ', '\001', '(', '\005', 'R', '\003', 'e', 'n', 'd', '\022', 'R', '\n', '\010', 's', 'e', 'm', 'a',
|
|
|
|
|
'n', 't', 'i', 'c', '\030', '\005', ' ', '\001', '(', '\016', '2', '6', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o',
|
|
|
|
|
'b', 'u', 'f', '.', 'G', 'e', 'n', 'e', 'r', 'a', 't', 'e', 'd', 'C', 'o', 'd', 'e', 'I', 'n', 'f', 'o', '.', 'A', 'n', 'n',
|
|
|
|
|
'o', 't', 'a', 't', 'i', 'o', 'n', '.', 'S', 'e', 'm', 'a', 'n', 't', 'i', 'c', 'R', '\010', 's', 'e', 'm', 'a', 'n', 't', 'i',
|
|
|
|
|
'c', '\"', '(', '\n', '\010', 'S', 'e', 'm', 'a', 'n', 't', 'i', 'c', '\022', '\010', '\n', '\004', 'N', 'O', 'N', 'E', '\020', '\000', '\022', '\007',
|
|
|
|
|
'\n', '\003', 'S', 'E', 'T', '\020', '\001', '\022', '\t', '\n', '\005', 'A', 'L', 'I', 'A', 'S', '\020', '\002', 'B', '~', '\n', '\023', 'c', 'o', 'm',
|
|
|
|
|
'.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', 'B', '\020', 'D', 'e', 's', 'c', 'r', 'i', 'p',
|
|
|
|
|
't', 'o', 'r', 'P', 'r', 'o', 't', 'o', 's', 'H', '\001', 'Z', '-', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'g', 'o', 'l', 'a', 'n',
|
|
|
|
|
'g', '.', 'o', 'r', 'g', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 't', 'y', 'p', 'e', 's', '/', 'd', 'e', 's', 'c',
|
|
|
|
|
'r', 'i', 'p', 't', 'o', 'r', 'p', 'b', '\370', '\001', '\001', '\242', '\002', '\003', 'G', 'P', 'B', '\252', '\002', '\032', 'G', 'o', 'o', 'g', 'l',
|
|
|
|
|
'e', '.', 'P', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'R', 'e', 'f', 'l', 'e', 'c', 't', 'i', 'o', 'n',
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
static _upb_DefPool_Init *deps[1] = { |
|
|
|
@ -1622,7 +1637,7 @@ _upb_DefPool_Init google_protobuf_descriptor_proto_upbdefinit = { |
|
|
|
|
deps, |
|
|
|
|
&google_protobuf_descriptor_proto_upb_file_layout, |
|
|
|
|
"google/protobuf/descriptor.proto", |
|
|
|
|
UPB_STRINGVIEW_INIT(descriptor, 7820) |
|
|
|
|
UPB_STRINGVIEW_INIT(descriptor, 7996) |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
@ -5508,6 +5523,11 @@ upb_UnknownToMessage_Status upb_MiniTable_PromoteUnknownToMessageArray( |
|
|
|
|
if (ret.status == kUpb_UnknownToMessage_Ok) { |
|
|
|
|
upb_MessageValue value; |
|
|
|
|
value.msg_val = ret.message; |
|
|
|
|
// Allocate array on demand before append.
|
|
|
|
|
if (!repeated_messages) { |
|
|
|
|
upb_MiniTable_ResizeArray(msg, field, 0, arena); |
|
|
|
|
repeated_messages = upb_MiniTable_GetMutableArray(msg, field); |
|
|
|
|
} |
|
|
|
|
if (!upb_Array_Append(repeated_messages, value, arena)) { |
|
|
|
|
return kUpb_UnknownToMessage_OutOfMemory; |
|
|
|
|
} |
|
|
|
@ -5650,20 +5670,6 @@ const upb_Message_Extension* _upb_Message_Getext( |
|
|
|
|
return NULL; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void _upb_Message_Clearext(upb_Message* msg, |
|
|
|
|
const upb_MiniTableExtension* ext_l) { |
|
|
|
|
upb_Message_Internal* in = upb_Message_Getinternal(msg); |
|
|
|
|
if (!in->internal) return; |
|
|
|
|
const upb_Message_Extension* base = |
|
|
|
|
UPB_PTR_AT(in->internal, in->internal->ext_begin, void); |
|
|
|
|
upb_Message_Extension* ext = |
|
|
|
|
(upb_Message_Extension*)_upb_Message_Getext(msg, ext_l); |
|
|
|
|
if (ext) { |
|
|
|
|
*ext = *base; |
|
|
|
|
in->internal->ext_begin += sizeof(upb_Message_Extension); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
upb_Message_Extension* _upb_Message_GetOrCreateExtension( |
|
|
|
|
upb_Message* msg, const upb_MiniTableExtension* e, upb_Arena* arena) { |
|
|
|
|
upb_Message_Extension* ext = |
|
|
|
@ -6391,6 +6397,21 @@ static void upb_MtDecoder_ParseMap(upb_MtDecoder* d, const char* data, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
upb_MtDecoder_ParseMessage(d, data, len); |
|
|
|
|
if (UPB_UNLIKELY(d->table->field_count != 2)) { |
|
|
|
|
upb_MtDecoder_ErrorFormat(d, "%hu fields in map", d->table->field_count); |
|
|
|
|
UPB_UNREACHABLE(); |
|
|
|
|
} |
|
|
|
|
if (UPB_UNLIKELY(d->table->fields[0].number != 1)) { |
|
|
|
|
upb_MtDecoder_ErrorFormat(d, "field %d in map key", |
|
|
|
|
d->table->fields[0].number); |
|
|
|
|
UPB_UNREACHABLE(); |
|
|
|
|
} |
|
|
|
|
if (UPB_UNLIKELY(d->table->fields[1].number != 2)) { |
|
|
|
|
upb_MtDecoder_ErrorFormat(d, "field %d in map val", |
|
|
|
|
d->table->fields[1].number); |
|
|
|
|
UPB_UNREACHABLE(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
upb_MtDecoder_AssignHasbits(d->table); |
|
|
|
|
|
|
|
|
|
// Map entries have a pre-determined layout, regardless of types.
|
|
|
|
@ -8079,7 +8100,6 @@ upb_EnumReservedRange* _upb_EnumReservedRanges_New( |
|
|
|
|
google_protobuf_EnumDescriptorProto_EnumReservedRange_start(protos[i]); |
|
|
|
|
const int32_t end = |
|
|
|
|
google_protobuf_EnumDescriptorProto_EnumReservedRange_end(protos[i]); |
|
|
|
|
const int32_t max = kUpb_MaxFieldNumber + 1; |
|
|
|
|
|
|
|
|
|
// A full validation would also check that each range is disjoint, and that
|
|
|
|
|
// none of the fields overlap with the extension ranges, but we are just
|
|
|
|
@ -8087,7 +8107,7 @@ upb_EnumReservedRange* _upb_EnumReservedRanges_New( |
|
|
|
|
|
|
|
|
|
// Note: Not a typo! Unlike extension ranges and message reserved ranges,
|
|
|
|
|
// the end value of an enum reserved range is *inclusive*!
|
|
|
|
|
if (start < 1 || end < start || end > max) { |
|
|
|
|
if (end < start) { |
|
|
|
|
_upb_DefBuilder_Errf(ctx, "Reserved range (%d, %d) is invalid, enum=%s\n", |
|
|
|
|
(int)start, (int)end, upb_EnumDef_FullName(e)); |
|
|
|
|
} |
|
|
|
@ -9482,7 +9502,7 @@ void _upb_FileDef_Create(upb_DefBuilder* ctx, |
|
|
|
|
|
|
|
|
|
bool upb_Message_HasFieldByDef(const upb_Message* msg, const upb_FieldDef* f) { |
|
|
|
|
UPB_ASSERT(upb_FieldDef_HasPresence(f)); |
|
|
|
|
return _upb_MiniTable_HasField(msg, upb_FieldDef_MiniTable(f)); |
|
|
|
|
return upb_Message_HasField(msg, upb_FieldDef_MiniTable(f)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
const upb_FieldDef* upb_Message_WhichOneof(const upb_Message* msg, |
|
|
|
@ -9504,7 +9524,7 @@ upb_MessageValue upb_Message_GetFieldByDef(const upb_Message* msg, |
|
|
|
|
const upb_FieldDef* f) { |
|
|
|
|
upb_MessageValue default_val = upb_FieldDef_Default(f); |
|
|
|
|
upb_MessageValue ret; |
|
|
|
|
_upb_MiniTable_GetField(msg, upb_FieldDef_MiniTable(f), &default_val, &ret); |
|
|
|
|
_upb_Message_GetField(msg, upb_FieldDef_MiniTable(f), &default_val, &ret); |
|
|
|
|
return ret; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -9549,11 +9569,11 @@ make: |
|
|
|
|
|
|
|
|
|
bool upb_Message_SetFieldByDef(upb_Message* msg, const upb_FieldDef* f, |
|
|
|
|
upb_MessageValue val, upb_Arena* a) { |
|
|
|
|
return _upb_MiniTable_SetField(msg, upb_FieldDef_MiniTable(f), &val, a); |
|
|
|
|
return _upb_Message_SetField(msg, upb_FieldDef_MiniTable(f), &val, a); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void upb_Message_ClearFieldByDef(upb_Message* msg, const upb_FieldDef* f) { |
|
|
|
|
_upb_MiniTable_ClearField(msg, upb_FieldDef_MiniTable(f)); |
|
|
|
|
upb_Message_ClearField(msg, upb_FieldDef_MiniTable(f)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void upb_Message_ClearByDef(upb_Message* msg, const upb_MessageDef* m) { |
|
|
|
@ -10788,6 +10808,7 @@ const char* _upb_FastDecoder_ErrorJmp(upb_Decoder* d, int status) { |
|
|
|
|
UPB_LONGJMP(d->err, status); |
|
|
|
|
return NULL; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void _upb_Decoder_VerifyUtf8(upb_Decoder* d, const char* buf, int len) { |
|
|
|
|
if (!_upb_Decoder_VerifyUtf8Inline(buf, len)) { |
|
|
|
|
_upb_Decoder_ErrorJmp(d, kUpb_DecodeStatus_BadUtf8); |
|
|
|
@ -10863,7 +10884,8 @@ static const char* upb_Decoder_DecodeSize(upb_Decoder* d, const char* ptr, |
|
|
|
|
uint32_t* size) { |
|
|
|
|
uint64_t size64; |
|
|
|
|
ptr = _upb_Decoder_DecodeVarint(d, ptr, &size64); |
|
|
|
|
if (size64 >= INT32_MAX || ptr - d->end + (int)size64 > d->limit) { |
|
|
|
|
if (size64 >= INT32_MAX || |
|
|
|
|
!upb_EpsCopyInputStream_CheckSize(&d->input, ptr, (int)size64)) { |
|
|
|
|
_upb_Decoder_ErrorJmp(d, kUpb_DecodeStatus_Malformed); |
|
|
|
|
} |
|
|
|
|
*size = size64; |
|
|
|
@ -10910,15 +10932,6 @@ static upb_Message* _upb_Decoder_NewSubMessage( |
|
|
|
|
return msg; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
UPB_NOINLINE |
|
|
|
|
const char* _upb_Decoder_IsDoneFallback(upb_Decoder* d, const char* ptr, |
|
|
|
|
int overrun) { |
|
|
|
|
int status; |
|
|
|
|
ptr = _upb_Decoder_IsDoneFallbackInline(d, ptr, overrun, &status); |
|
|
|
|
if (ptr == NULL) _upb_Decoder_ErrorJmp(d, status); |
|
|
|
|
return ptr; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static const char* _upb_Decoder_ReadString(upb_Decoder* d, const char* ptr, |
|
|
|
|
int size, upb_StringView* str) { |
|
|
|
|
if (d->options & kUpb_DecodeOption_AliasString) { |
|
|
|
@ -10954,11 +10967,11 @@ UPB_FORCEINLINE |
|
|
|
|
static const char* _upb_Decoder_DecodeSubMessage( |
|
|
|
|
upb_Decoder* d, const char* ptr, upb_Message* submsg, |
|
|
|
|
const upb_MiniTableSub* subs, const upb_MiniTableField* field, int size) { |
|
|
|
|
int saved_delta = _upb_Decoder_PushLimit(d, ptr, size); |
|
|
|
|
int saved_delta = upb_EpsCopyInputStream_PushLimit(&d->input, ptr, size); |
|
|
|
|
const upb_MiniTable* subl = subs[field->submsg_index].submsg; |
|
|
|
|
UPB_ASSERT(subl); |
|
|
|
|
ptr = _upb_Decoder_RecurseSubMessage(d, ptr, submsg, subl, DECODE_NOGROUP); |
|
|
|
|
_upb_Decoder_PopLimit(d, ptr, saved_delta); |
|
|
|
|
upb_EpsCopyInputStream_PopLimit(&d->input, ptr, saved_delta); |
|
|
|
|
return ptr; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -11105,7 +11118,7 @@ static const char* _upb_Decoder_DecodeVarintPacked( |
|
|
|
|
upb_Decoder* d, const char* ptr, upb_Array* arr, wireval* val, |
|
|
|
|
const upb_MiniTableField* field, int lg2) { |
|
|
|
|
int scale = 1 << lg2; |
|
|
|
|
int saved_limit = _upb_Decoder_PushLimit(d, ptr, val->size); |
|
|
|
|
int saved_limit = upb_EpsCopyInputStream_PushLimit(&d->input, ptr, val->size); |
|
|
|
|
char* out = UPB_PTR_AT(_upb_array_ptr(arr), arr->size << lg2, void); |
|
|
|
|
while (!_upb_Decoder_IsDone(d, &ptr)) { |
|
|
|
|
wireval elem; |
|
|
|
@ -11118,7 +11131,7 @@ static const char* _upb_Decoder_DecodeVarintPacked( |
|
|
|
|
memcpy(out, &elem, scale); |
|
|
|
|
out += scale; |
|
|
|
|
} |
|
|
|
|
_upb_Decoder_PopLimit(d, ptr, saved_limit); |
|
|
|
|
upb_EpsCopyInputStream_PopLimit(&d->input, ptr, saved_limit); |
|
|
|
|
return ptr; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -11128,7 +11141,7 @@ static const char* _upb_Decoder_DecodeEnumPacked( |
|
|
|
|
const upb_MiniTableSub* subs, const upb_MiniTableField* field, |
|
|
|
|
wireval* val) { |
|
|
|
|
const upb_MiniTableEnum* e = subs[field->submsg_index].subenum; |
|
|
|
|
int saved_limit = _upb_Decoder_PushLimit(d, ptr, val->size); |
|
|
|
|
int saved_limit = upb_EpsCopyInputStream_PushLimit(&d->input, ptr, val->size); |
|
|
|
|
char* out = UPB_PTR_AT(_upb_array_ptr(arr), arr->size * 4, void); |
|
|
|
|
while (!_upb_Decoder_IsDone(d, &ptr)) { |
|
|
|
|
wireval elem; |
|
|
|
@ -11144,7 +11157,7 @@ static const char* _upb_Decoder_DecodeEnumPacked( |
|
|
|
|
memcpy(out, &elem, 4); |
|
|
|
|
out += 4; |
|
|
|
|
} |
|
|
|
|
_upb_Decoder_PopLimit(d, ptr, saved_limit); |
|
|
|
|
upb_EpsCopyInputStream_PopLimit(&d->input, ptr, saved_limit); |
|
|
|
|
return ptr; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -11892,7 +11905,7 @@ static const char* _upb_Decoder_DecodeMessage(upb_Decoder* d, const char* ptr, |
|
|
|
|
d->debug_tagstart = ptr; |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
UPB_ASSERT(ptr < d->limit_ptr); |
|
|
|
|
UPB_ASSERT(ptr < d->input.limit_ptr); |
|
|
|
|
ptr = _upb_Decoder_DecodeTag(d, ptr, &tag); |
|
|
|
|
field_number = tag >> 3; |
|
|
|
|
wire_type = tag & 7; |
|
|
|
@ -11950,6 +11963,13 @@ static upb_DecodeStatus _upb_Decoder_DecodeTop(struct upb_Decoder* d, |
|
|
|
|
return kUpb_DecodeStatus_Ok; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
UPB_NOINLINE |
|
|
|
|
const char* _upb_Decoder_IsDoneFallback(upb_EpsCopyInputStream* e, |
|
|
|
|
const char* ptr, int overrun) { |
|
|
|
|
return _upb_EpsCopyInputStream_IsDoneFallbackInline( |
|
|
|
|
e, ptr, overrun, _upb_Decoder_BufferFlipCallback); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
upb_DecodeStatus upb_Decode(const char* buf, size_t size, void* msg, |
|
|
|
|
const upb_MiniTable* l, |
|
|
|
|
const upb_ExtensionRegistry* extreg, int options, |
|
|
|
@ -11957,20 +11977,11 @@ upb_DecodeStatus upb_Decode(const char* buf, size_t size, void* msg, |
|
|
|
|
upb_Decoder state; |
|
|
|
|
unsigned depth = (unsigned)options >> 16; |
|
|
|
|
|
|
|
|
|
if (size <= 16) { |
|
|
|
|
memset(&state.patch, 0, 32); |
|
|
|
|
if (size) memcpy(&state.patch, buf, size); |
|
|
|
|
buf = state.patch; |
|
|
|
|
state.end = buf + size; |
|
|
|
|
state.limit = 0; |
|
|
|
|
if (upb_EpsCopyInputStream_Init(&state.input, &buf, size)) { |
|
|
|
|
options &= ~kUpb_DecodeOption_AliasString; // Can't alias patch buf.
|
|
|
|
|
} else { |
|
|
|
|
state.end = buf + size - 16; |
|
|
|
|
state.limit = 16; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
state.extreg = extreg; |
|
|
|
|
state.limit_ptr = state.end; |
|
|
|
|
state.unknown = NULL; |
|
|
|
|
state.depth = depth ? depth : 64; |
|
|
|
|
state.end_group = DECODE_NOGROUP; |
|
|
|
@ -12035,28 +12046,27 @@ typedef enum { |
|
|
|
|
UPB_NOINLINE |
|
|
|
|
static const char* fastdecode_isdonefallback(UPB_PARSE_PARAMS) { |
|
|
|
|
int overrun = data; |
|
|
|
|
int status; |
|
|
|
|
ptr = _upb_Decoder_IsDoneFallbackInline(d, ptr, overrun, &status); |
|
|
|
|
if (ptr == NULL) _upb_FastDecoder_ErrorJmp(d, status); |
|
|
|
|
ptr = _upb_EpsCopyInputStream_IsDoneFallbackInline( |
|
|
|
|
&d->input, ptr, overrun, _upb_Decoder_BufferFlipCallback); |
|
|
|
|
data = _upb_FastDecoder_LoadTag(ptr); |
|
|
|
|
UPB_MUSTTAIL return _upb_FastDecoder_TagDispatch(UPB_PARSE_ARGS); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
UPB_FORCEINLINE |
|
|
|
|
static const char* fastdecode_dispatch(UPB_PARSE_PARAMS) { |
|
|
|
|
if (UPB_UNLIKELY(ptr >= d->limit_ptr)) { |
|
|
|
|
int overrun = ptr - d->end; |
|
|
|
|
if (UPB_LIKELY(overrun == d->limit)) { |
|
|
|
|
// Parse is finished.
|
|
|
|
|
int overrun; |
|
|
|
|
switch (upb_EpsCopyInputStream_IsDoneStatus(&d->input, ptr, &overrun)) { |
|
|
|
|
case kUpb_IsDoneStatus_Done: |
|
|
|
|
*(uint32_t*)msg |= hasbits; // Sync hasbits.
|
|
|
|
|
const upb_MiniTable* l = decode_totablep(table); |
|
|
|
|
return UPB_UNLIKELY(l->required_count) |
|
|
|
|
? _upb_Decoder_CheckRequired(d, ptr, msg, l) |
|
|
|
|
: ptr; |
|
|
|
|
} else { |
|
|
|
|
case kUpb_IsDoneStatus_NotDone: |
|
|
|
|
break; |
|
|
|
|
case kUpb_IsDoneStatus_NeedFallback: |
|
|
|
|
data = overrun; |
|
|
|
|
UPB_MUSTTAIL return fastdecode_isdonefallback(UPB_PARSE_ARGS); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Read two bytes of tag data (for a one-byte tag, the high byte is junk).
|
|
|
|
@ -12094,37 +12104,17 @@ static const char* fastdecode_longsize(const char* ptr, int* size) { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
UPB_FORCEINLINE |
|
|
|
|
static bool fastdecode_boundscheck(const char* ptr, size_t len, |
|
|
|
|
const char* end) { |
|
|
|
|
uintptr_t uptr = (uintptr_t)ptr; |
|
|
|
|
uintptr_t uend = (uintptr_t)end + 16; |
|
|
|
|
uintptr_t res = uptr + len; |
|
|
|
|
return res < uptr || res > uend; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
UPB_FORCEINLINE |
|
|
|
|
static bool fastdecode_boundscheck2(const char* ptr, size_t len, |
|
|
|
|
const char* end) { |
|
|
|
|
// This is one extra branch compared to the more normal:
|
|
|
|
|
// return (size_t)(end - ptr) < size;
|
|
|
|
|
// However it is one less computation if we are just about to use "ptr + len":
|
|
|
|
|
// https://godbolt.org/z/35YGPz
|
|
|
|
|
// In microbenchmarks this shows an overall 4% improvement.
|
|
|
|
|
uintptr_t uptr = (uintptr_t)ptr; |
|
|
|
|
uintptr_t uend = (uintptr_t)end; |
|
|
|
|
uintptr_t res = uptr + len; |
|
|
|
|
return res < uptr || res > uend; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
typedef const char* fastdecode_delimfunc(upb_Decoder* d, const char* ptr, |
|
|
|
|
void* ctx); |
|
|
|
|
|
|
|
|
|
UPB_FORCEINLINE |
|
|
|
|
static const char* fastdecode_delimited(upb_Decoder* d, const char* ptr, |
|
|
|
|
fastdecode_delimfunc* func, void* ctx) { |
|
|
|
|
static const char* fastdecode_delimited( |
|
|
|
|
upb_Decoder* d, const char* ptr, |
|
|
|
|
upb_EpsCopyInputStream_ParseDelimitedFunc* func, void* ctx) { |
|
|
|
|
ptr++; |
|
|
|
|
|
|
|
|
|
// Sign-extend so varint greater than one byte becomes negative, causing
|
|
|
|
|
// fast delimited parse to fail.
|
|
|
|
|
int len = (int8_t)ptr[-1]; |
|
|
|
|
if (fastdecode_boundscheck2(ptr, len, d->limit_ptr)) { |
|
|
|
|
|
|
|
|
|
if (!upb_EpsCopyInputStream_TryParseDelimitedFast(&d->input, &ptr, len, func, |
|
|
|
|
ctx)) { |
|
|
|
|
// Slow case: Sub-message is >=128 bytes and/or exceeds the current buffer.
|
|
|
|
|
// If it exceeds the buffer limit, limit/limit_ptr will change during
|
|
|
|
|
// sub-message parsing, so we need to preserve delta, not limit.
|
|
|
|
@ -12136,25 +12126,13 @@ static const char* fastdecode_delimited(upb_Decoder* d, const char* ptr, |
|
|
|
|
return NULL; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if (ptr - d->end + (int)len > d->limit) { |
|
|
|
|
if (!upb_EpsCopyInputStream_CheckSize(&d->input, ptr, len)) { |
|
|
|
|
// Corrupt wire format: invalid limit.
|
|
|
|
|
return NULL; |
|
|
|
|
} |
|
|
|
|
int delta = _upb_Decoder_PushLimit(d, ptr, len); |
|
|
|
|
ptr = func(d, ptr, ctx); |
|
|
|
|
_upb_Decoder_PopLimit(d, ptr, delta); |
|
|
|
|
} else { |
|
|
|
|
// Fast case: Sub-message is <128 bytes and fits in the current buffer.
|
|
|
|
|
// This means we can preserve limit/limit_ptr verbatim.
|
|
|
|
|
const char* saved_limit_ptr = d->limit_ptr; |
|
|
|
|
int saved_limit = d->limit; |
|
|
|
|
d->limit_ptr = ptr + len; |
|
|
|
|
d->limit = d->limit_ptr - d->end; |
|
|
|
|
UPB_ASSERT(d->limit_ptr == d->end + UPB_MIN(0, d->limit)); |
|
|
|
|
ptr = func(d, ptr, ctx); |
|
|
|
|
d->limit_ptr = saved_limit_ptr; |
|
|
|
|
d->limit = saved_limit; |
|
|
|
|
UPB_ASSERT(d->limit_ptr == d->end + UPB_MIN(0, d->limit)); |
|
|
|
|
int delta = upb_EpsCopyInputStream_PushLimit(&d->input, ptr, len); |
|
|
|
|
ptr = func(&d->input, ptr, ctx); |
|
|
|
|
upb_EpsCopyInputStream_PopLimit(&d->input, ptr, delta); |
|
|
|
|
} |
|
|
|
|
return ptr; |
|
|
|
|
} |
|
|
|
@ -12395,8 +12373,9 @@ typedef struct { |
|
|
|
|
} fastdecode_varintdata; |
|
|
|
|
|
|
|
|
|
UPB_FORCEINLINE |
|
|
|
|
static const char* fastdecode_topackedvarint(upb_Decoder* d, const char* ptr, |
|
|
|
|
void* ctx) { |
|
|
|
|
static const char* fastdecode_topackedvarint(upb_EpsCopyInputStream* e, |
|
|
|
|
const char* ptr, void* ctx) { |
|
|
|
|
upb_Decoder* d = (upb_Decoder*)e; |
|
|
|
|
fastdecode_varintdata* data = ctx; |
|
|
|
|
void* dst = data->dst; |
|
|
|
|
uint64_t val; |
|
|
|
@ -12544,7 +12523,8 @@ TAGBYTES(p) |
|
|
|
|
ptr = fastdecode_longsize(ptr, &size); \
|
|
|
|
|
} \
|
|
|
|
|
\
|
|
|
|
|
if (UPB_UNLIKELY(fastdecode_boundscheck(ptr, size, d->limit_ptr) || \
|
|
|
|
|
if (UPB_UNLIKELY(!upb_EpsCopyInputStream_CheckDataSizeAvailable( \
|
|
|
|
|
&d->input, ptr, size) || \
|
|
|
|
|
(size % valbytes) != 0)) { \
|
|
|
|
|
_upb_FastDecoder_ErrorJmp(d, kUpb_DecodeStatus_Malformed); \
|
|
|
|
|
} \
|
|
|
|
@ -12636,7 +12616,8 @@ static const char* fastdecode_verifyutf8(upb_Decoder* d, const char* ptr, |
|
|
|
|
ptr = fastdecode_longsize(ptr, &size); \
|
|
|
|
|
} \
|
|
|
|
|
\
|
|
|
|
|
if (UPB_UNLIKELY(fastdecode_boundscheck(ptr, size, d->limit_ptr))) { \
|
|
|
|
|
if (UPB_UNLIKELY(!upb_EpsCopyInputStream_CheckDataSizeAvailable( \
|
|
|
|
|
&d->input, ptr, size))) { \
|
|
|
|
|
dst->size = 0; \
|
|
|
|
|
_upb_FastDecoder_ErrorJmp(d, kUpb_DecodeStatus_Malformed); \
|
|
|
|
|
} \
|
|
|
|
@ -12689,91 +12670,92 @@ static void fastdecode_docopy(upb_Decoder* d, const char* ptr, uint32_t size, |
|
|
|
|
UPB_POISON_MEMORY_REGION(data + size, copy - size); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#define FASTDECODE_COPYSTRING(d, ptr, msg, table, hasbits, data, tagbytes, \ |
|
|
|
|
card, validate_utf8) \
|
|
|
|
|
upb_StringView* dst; \
|
|
|
|
|
fastdecode_arr farr; \
|
|
|
|
|
int64_t size; \
|
|
|
|
|
size_t arena_has; \
|
|
|
|
|
size_t common_has; \
|
|
|
|
|
char* buf; \
|
|
|
|
|
\
|
|
|
|
|
UPB_ASSERT((d->options & kUpb_DecodeOption_AliasString) == 0); \
|
|
|
|
|
UPB_ASSERT(fastdecode_checktag(data, tagbytes)); \
|
|
|
|
|
\
|
|
|
|
|
dst = fastdecode_getfield(d, ptr, msg, &data, &hasbits, &farr, \
|
|
|
|
|
sizeof(upb_StringView), card); \
|
|
|
|
|
\
|
|
|
|
|
again: \
|
|
|
|
|
if (card == CARD_r) { \
|
|
|
|
|
dst = fastdecode_resizearr(d, dst, &farr, sizeof(upb_StringView)); \
|
|
|
|
|
} \
|
|
|
|
|
\
|
|
|
|
|
size = (uint8_t)ptr[tagbytes]; \
|
|
|
|
|
ptr += tagbytes + 1; \
|
|
|
|
|
dst->size = size; \
|
|
|
|
|
\
|
|
|
|
|
buf = d->arena.head.ptr; \
|
|
|
|
|
arena_has = _upb_ArenaHas(&d->arena); \
|
|
|
|
|
common_has = UPB_MIN(arena_has, (d->end - ptr) + 16); \
|
|
|
|
|
\
|
|
|
|
|
if (UPB_LIKELY(size <= 15 - tagbytes)) { \
|
|
|
|
|
if (arena_has < 16) goto longstr; \
|
|
|
|
|
d->arena.head.ptr += 16; \
|
|
|
|
|
memcpy(buf, ptr - tagbytes - 1, 16); \
|
|
|
|
|
dst->data = buf + tagbytes + 1; \
|
|
|
|
|
} else if (UPB_LIKELY(size <= 32)) { \
|
|
|
|
|
if (UPB_UNLIKELY(common_has < 32)) goto longstr; \
|
|
|
|
|
fastdecode_docopy(d, ptr, size, 32, buf, dst); \
|
|
|
|
|
} else if (UPB_LIKELY(size <= 64)) { \
|
|
|
|
|
if (UPB_UNLIKELY(common_has < 64)) goto longstr; \
|
|
|
|
|
fastdecode_docopy(d, ptr, size, 64, buf, dst); \
|
|
|
|
|
} else if (UPB_LIKELY(size < 128)) { \
|
|
|
|
|
if (UPB_UNLIKELY(common_has < 128)) goto longstr; \
|
|
|
|
|
fastdecode_docopy(d, ptr, size, 128, buf, dst); \
|
|
|
|
|
} else { \
|
|
|
|
|
goto longstr; \
|
|
|
|
|
} \
|
|
|
|
|
\
|
|
|
|
|
ptr += size; \
|
|
|
|
|
\
|
|
|
|
|
if (card == CARD_r) { \
|
|
|
|
|
if (validate_utf8 && \
|
|
|
|
|
!_upb_Decoder_VerifyUtf8Inline(dst->data, dst->size)) { \
|
|
|
|
|
_upb_FastDecoder_ErrorJmp(d, kUpb_DecodeStatus_BadUtf8); \
|
|
|
|
|
} \
|
|
|
|
|
fastdecode_nextret ret = fastdecode_nextrepeated( \
|
|
|
|
|
d, dst, &ptr, &farr, data, tagbytes, sizeof(upb_StringView)); \
|
|
|
|
|
switch (ret.next) { \
|
|
|
|
|
case FD_NEXT_SAMEFIELD: \
|
|
|
|
|
dst = ret.dst; \
|
|
|
|
|
goto again; \
|
|
|
|
|
case FD_NEXT_OTHERFIELD: \
|
|
|
|
|
data = ret.tag; \
|
|
|
|
|
UPB_MUSTTAIL return _upb_FastDecoder_TagDispatch(UPB_PARSE_ARGS); \
|
|
|
|
|
case FD_NEXT_ATLIMIT: \
|
|
|
|
|
return ptr; \
|
|
|
|
|
} \
|
|
|
|
|
} \
|
|
|
|
|
\
|
|
|
|
|
if (card != CARD_r && validate_utf8) { \
|
|
|
|
|
data = (uint64_t)dst; \
|
|
|
|
|
UPB_MUSTTAIL return fastdecode_verifyutf8(UPB_PARSE_ARGS); \
|
|
|
|
|
} \
|
|
|
|
|
\
|
|
|
|
|
UPB_MUSTTAIL return fastdecode_dispatch(UPB_PARSE_ARGS); \
|
|
|
|
|
\
|
|
|
|
|
longstr: \
|
|
|
|
|
if (card == CARD_r) { \
|
|
|
|
|
fastdecode_commitarr(dst + 1, &farr, sizeof(upb_StringView)); \
|
|
|
|
|
} \
|
|
|
|
|
ptr--; \
|
|
|
|
|
if (validate_utf8) { \
|
|
|
|
|
UPB_MUSTTAIL return fastdecode_longstring_utf8(d, ptr, msg, table, \
|
|
|
|
|
hasbits, (uint64_t)dst); \
|
|
|
|
|
} else { \
|
|
|
|
|
UPB_MUSTTAIL return fastdecode_longstring_noutf8(d, ptr, msg, table, \
|
|
|
|
|
hasbits, (uint64_t)dst); \
|
|
|
|
|
#define FASTDECODE_COPYSTRING(d, ptr, msg, table, hasbits, data, tagbytes, \ |
|
|
|
|
card, validate_utf8) \
|
|
|
|
|
upb_StringView* dst; \
|
|
|
|
|
fastdecode_arr farr; \
|
|
|
|
|
int64_t size; \
|
|
|
|
|
size_t arena_has; \
|
|
|
|
|
size_t common_has; \
|
|
|
|
|
char* buf; \
|
|
|
|
|
\
|
|
|
|
|
UPB_ASSERT((d->options & kUpb_DecodeOption_AliasString) == 0); \
|
|
|
|
|
UPB_ASSERT(fastdecode_checktag(data, tagbytes)); \
|
|
|
|
|
\
|
|
|
|
|
dst = fastdecode_getfield(d, ptr, msg, &data, &hasbits, &farr, \
|
|
|
|
|
sizeof(upb_StringView), card); \
|
|
|
|
|
\
|
|
|
|
|
again: \
|
|
|
|
|
if (card == CARD_r) { \
|
|
|
|
|
dst = fastdecode_resizearr(d, dst, &farr, sizeof(upb_StringView)); \
|
|
|
|
|
} \
|
|
|
|
|
\
|
|
|
|
|
size = (uint8_t)ptr[tagbytes]; \
|
|
|
|
|
ptr += tagbytes + 1; \
|
|
|
|
|
dst->size = size; \
|
|
|
|
|
\
|
|
|
|
|
buf = d->arena.head.ptr; \
|
|
|
|
|
arena_has = _upb_ArenaHas(&d->arena); \
|
|
|
|
|
common_has = UPB_MIN(arena_has, \
|
|
|
|
|
upb_EpsCopyInputStream_BytesAvailable(&d->input, ptr)); \
|
|
|
|
|
\
|
|
|
|
|
if (UPB_LIKELY(size <= 15 - tagbytes)) { \
|
|
|
|
|
if (arena_has < 16) goto longstr; \
|
|
|
|
|
d->arena.head.ptr += 16; \
|
|
|
|
|
memcpy(buf, ptr - tagbytes - 1, 16); \
|
|
|
|
|
dst->data = buf + tagbytes + 1; \
|
|
|
|
|
} else if (UPB_LIKELY(size <= 32)) { \
|
|
|
|
|
if (UPB_UNLIKELY(common_has < 32)) goto longstr; \
|
|
|
|
|
fastdecode_docopy(d, ptr, size, 32, buf, dst); \
|
|
|
|
|
} else if (UPB_LIKELY(size <= 64)) { \
|
|
|
|
|
if (UPB_UNLIKELY(common_has < 64)) goto longstr; \
|
|
|
|
|
fastdecode_docopy(d, ptr, size, 64, buf, dst); \
|
|
|
|
|
} else if (UPB_LIKELY(size < 128)) { \
|
|
|
|
|
if (UPB_UNLIKELY(common_has < 128)) goto longstr; \
|
|
|
|
|
fastdecode_docopy(d, ptr, size, 128, buf, dst); \
|
|
|
|
|
} else { \
|
|
|
|
|
goto longstr; \
|
|
|
|
|
} \
|
|
|
|
|
\
|
|
|
|
|
ptr += size; \
|
|
|
|
|
\
|
|
|
|
|
if (card == CARD_r) { \
|
|
|
|
|
if (validate_utf8 && \
|
|
|
|
|
!_upb_Decoder_VerifyUtf8Inline(dst->data, dst->size)) { \
|
|
|
|
|
_upb_FastDecoder_ErrorJmp(d, kUpb_DecodeStatus_BadUtf8); \
|
|
|
|
|
} \
|
|
|
|
|
fastdecode_nextret ret = fastdecode_nextrepeated( \
|
|
|
|
|
d, dst, &ptr, &farr, data, tagbytes, sizeof(upb_StringView)); \
|
|
|
|
|
switch (ret.next) { \
|
|
|
|
|
case FD_NEXT_SAMEFIELD: \
|
|
|
|
|
dst = ret.dst; \
|
|
|
|
|
goto again; \
|
|
|
|
|
case FD_NEXT_OTHERFIELD: \
|
|
|
|
|
data = ret.tag; \
|
|
|
|
|
UPB_MUSTTAIL return _upb_FastDecoder_TagDispatch(UPB_PARSE_ARGS); \
|
|
|
|
|
case FD_NEXT_ATLIMIT: \
|
|
|
|
|
return ptr; \
|
|
|
|
|
} \
|
|
|
|
|
} \
|
|
|
|
|
\
|
|
|
|
|
if (card != CARD_r && validate_utf8) { \
|
|
|
|
|
data = (uint64_t)dst; \
|
|
|
|
|
UPB_MUSTTAIL return fastdecode_verifyutf8(UPB_PARSE_ARGS); \
|
|
|
|
|
} \
|
|
|
|
|
\
|
|
|
|
|
UPB_MUSTTAIL return fastdecode_dispatch(UPB_PARSE_ARGS); \
|
|
|
|
|
\
|
|
|
|
|
longstr: \
|
|
|
|
|
if (card == CARD_r) { \
|
|
|
|
|
fastdecode_commitarr(dst + 1, &farr, sizeof(upb_StringView)); \
|
|
|
|
|
} \
|
|
|
|
|
ptr--; \
|
|
|
|
|
if (validate_utf8) { \
|
|
|
|
|
UPB_MUSTTAIL return fastdecode_longstring_utf8(d, ptr, msg, table, \
|
|
|
|
|
hasbits, (uint64_t)dst); \
|
|
|
|
|
} else { \
|
|
|
|
|
UPB_MUSTTAIL return fastdecode_longstring_noutf8(d, ptr, msg, table, \
|
|
|
|
|
hasbits, (uint64_t)dst); \
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#define FASTDECODE_STRING(d, ptr, msg, table, hasbits, data, tagbytes, card, \ |
|
|
|
@ -12803,7 +12785,8 @@ static void fastdecode_docopy(upb_Decoder* d, const char* ptr, uint32_t size, |
|
|
|
|
dst->data = ptr; \
|
|
|
|
|
dst->size = size; \
|
|
|
|
|
\
|
|
|
|
|
if (UPB_UNLIKELY(fastdecode_boundscheck(ptr, size, d->end))) { \
|
|
|
|
|
if (UPB_UNLIKELY(!upb_EpsCopyInputStream_CheckDataSizeAvailable( \
|
|
|
|
|
&d->input, ptr, size))) { \
|
|
|
|
|
ptr--; \
|
|
|
|
|
if (validate_utf8) { \
|
|
|
|
|
return fastdecode_longstring_utf8(d, ptr, msg, table, hasbits, \
|
|
|
|
@ -12916,8 +12899,9 @@ typedef struct { |
|
|
|
|
} fastdecode_submsgdata; |
|
|
|
|
|
|
|
|
|
UPB_FORCEINLINE |
|
|
|
|
static const char* fastdecode_tosubmsg(upb_Decoder* d, const char* ptr, |
|
|
|
|
void* ctx) { |
|
|
|
|
static const char* fastdecode_tosubmsg(upb_EpsCopyInputStream* e, |
|
|
|
|
const char* ptr, void* ctx) { |
|
|
|
|
upb_Decoder* d = (upb_Decoder*)e; |
|
|
|
|
fastdecode_submsgdata* submsg = ctx; |
|
|
|
|
ptr = fastdecode_dispatch(d, ptr, submsg->msg, submsg->table, 0, 0); |
|
|
|
|
UPB_ASSUME(ptr != NULL); |
|
|
|
|