protovalidate 0.1.0.beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1827) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +8 -0
  3. data/CHANGELOG.md +5 -0
  4. data/LICENSE.txt +201 -0
  5. data/NOTICE.md +30 -0
  6. data/README.md +93 -0
  7. data/Rakefile +32 -0
  8. data/ext/protovalidate/Cargo.lock +342 -0
  9. data/ext/protovalidate/Cargo.toml +27 -0
  10. data/ext/protovalidate/build.rs +4 -0
  11. data/ext/protovalidate/extconf.rb +8 -0
  12. data/ext/protovalidate/src/lib.rs +161 -0
  13. data/ext/protovalidate/sys/Cargo.toml +11 -0
  14. data/ext/protovalidate/sys/build.rs +218 -0
  15. data/ext/protovalidate/sys/filelists/absl.txt +126 -0
  16. data/ext/protovalidate/sys/filelists/antlr4.txt +139 -0
  17. data/ext/protovalidate/sys/filelists/celcpp.txt +199 -0
  18. data/ext/protovalidate/sys/filelists/protobuf.txt +83 -0
  19. data/ext/protovalidate/sys/filelists/protovalidate.txt +14 -0
  20. data/ext/protovalidate/sys/filelists/re2.txt +25 -0
  21. data/ext/protovalidate/sys/gen/buf/validate/validate.pb.cc +23621 -0
  22. data/ext/protovalidate/sys/gen/buf/validate/validate.pb.h +27800 -0
  23. data/ext/protovalidate/sys/gen/cel/expr/checked.pb.cc +6286 -0
  24. data/ext/protovalidate/sys/gen/cel/expr/checked.pb.h +6412 -0
  25. data/ext/protovalidate/sys/gen/cel/expr/syntax.pb.cc +7423 -0
  26. data/ext/protovalidate/sys/gen/cel/expr/syntax.pb.h +7510 -0
  27. data/ext/protovalidate/sys/gen/cel/expr/value.pb.cc +2512 -0
  28. data/ext/protovalidate/sys/gen/cel/expr/value.pb.h +2589 -0
  29. data/ext/protovalidate/sys/gen/internal/empty_descriptor_set_embed.inc +1 -0
  30. data/ext/protovalidate/sys/gen/parser/internal/CelBaseVisitor.cpp +9 -0
  31. data/ext/protovalidate/sys/gen/parser/internal/CelBaseVisitor.h +167 -0
  32. data/ext/protovalidate/sys/gen/parser/internal/CelLexer.cpp +308 -0
  33. data/ext/protovalidate/sys/gen/parser/internal/CelLexer.h +57 -0
  34. data/ext/protovalidate/sys/gen/parser/internal/CelParser.cpp +2484 -0
  35. data/ext/protovalidate/sys/gen/parser/internal/CelParser.h +697 -0
  36. data/ext/protovalidate/sys/gen/parser/internal/CelVisitor.cpp +9 -0
  37. data/ext/protovalidate/sys/gen/parser/internal/CelVisitor.h +98 -0
  38. data/ext/protovalidate/sys/shim/pv_shim.cc +260 -0
  39. data/ext/protovalidate/sys/shim/pv_shim.h +84 -0
  40. data/ext/protovalidate/sys/src/lib.rs +176 -0
  41. data/ext/protovalidate/sys/third_party/abseil-cpp/LICENSE +203 -0
  42. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/algorithm/algorithm.h +96 -0
  43. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/algorithm/container.h +2011 -0
  44. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/attributes.h +1100 -0
  45. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/call_once.h +228 -0
  46. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/casts.cc +61 -0
  47. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/casts.h +313 -0
  48. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/config.h +898 -0
  49. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/const_init.h +76 -0
  50. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/dynamic_annotations.h +480 -0
  51. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/fast_type_id.h +73 -0
  52. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/atomic_hook.h +200 -0
  53. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/atomic_hook_test_helper.h +34 -0
  54. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +72 -0
  55. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/cycleclock.h +144 -0
  56. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/cycleclock_config.h +55 -0
  57. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +170 -0
  58. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +398 -0
  59. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/endian.h +279 -0
  60. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/errno_saver.h +43 -0
  61. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/exception_safety_testing.h +1112 -0
  62. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/exception_testing.h +42 -0
  63. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/hardening.h +136 -0
  64. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/hide_ptr.h +51 -0
  65. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/iterator_traits.h +75 -0
  66. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/iterator_traits_test_helper.h +97 -0
  67. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +667 -0
  68. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +133 -0
  69. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +196 -0
  70. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/nullability_traits.h +71 -0
  71. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/per_thread_tls.h +52 -0
  72. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/poison.h +59 -0
  73. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/pretty_function.h +33 -0
  74. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +279 -0
  75. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/raw_logging.h +217 -0
  76. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/scheduling_mode.h +58 -0
  77. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/scoped_set_env.h +45 -0
  78. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/spinlock.cc +225 -0
  79. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/spinlock.h +310 -0
  80. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +35 -0
  81. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +71 -0
  82. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +46 -0
  83. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/spinlock_wait.cc +81 -0
  84. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +95 -0
  85. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +40 -0
  86. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/strerror.cc +88 -0
  87. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/strerror.h +39 -0
  88. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +493 -0
  89. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/sysinfo.h +74 -0
  90. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +163 -0
  91. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/thread_identity.h +325 -0
  92. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/tracing.cc +39 -0
  93. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/tracing.h +81 -0
  94. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +68 -0
  95. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +89 -0
  96. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +134 -0
  97. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +118 -0
  98. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +62 -0
  99. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/log_severity.cc +56 -0
  100. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/log_severity.h +185 -0
  101. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/macros.h +259 -0
  102. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/no_destructor.h +191 -0
  103. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/nullability.h +318 -0
  104. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/optimization.h +311 -0
  105. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/options.h +212 -0
  106. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/policy_checks.h +115 -0
  107. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/port.h +25 -0
  108. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/prefetch.h +209 -0
  109. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/thread_annotations.h +333 -0
  110. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/throw_delegate.cc +205 -0
  111. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/throw_delegate.h +65 -0
  112. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/cleanup/cleanup.h +143 -0
  113. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
  114. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/btree_map.h +941 -0
  115. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/btree_set.h +872 -0
  116. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/chunked_queue.h +757 -0
  117. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/fixed_array.h +548 -0
  118. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/flat_hash_map.h +714 -0
  119. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/flat_hash_set.h +604 -0
  120. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/hash_container_defaults.h +45 -0
  121. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/inlined_vector.h +1025 -0
  122. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/btree.h +3157 -0
  123. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/btree_container.h +875 -0
  124. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/chunked_queue.h +173 -0
  125. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/common.h +302 -0
  126. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +151 -0
  127. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +275 -0
  128. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/container_memory.h +571 -0
  129. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +281 -0
  130. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/hash_generator_testing.h +172 -0
  131. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/hash_policy_testing.h +173 -0
  132. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +195 -0
  133. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +527 -0
  134. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/hashtable_debug.h +102 -0
  135. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/hashtable_debug_hooks.h +85 -0
  136. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +316 -0
  137. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +294 -0
  138. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +31 -0
  139. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/heterogeneous_lookup_testing.h +80 -0
  140. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +1094 -0
  141. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/layout.h +828 -0
  142. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/node_slot_policy.h +95 -0
  143. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +380 -0
  144. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +2110 -0
  145. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +4056 -0
  146. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +79 -0
  147. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/test_allocator.h +387 -0
  148. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/test_instance_tracker.h +274 -0
  149. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/tracked.h +83 -0
  150. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/linked_hash_map.h +666 -0
  151. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/linked_hash_set.h +527 -0
  152. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/node_hash_map.h +710 -0
  153. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/node_hash_set.h +603 -0
  154. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/crc32c.cc +95 -0
  155. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/crc32c.h +192 -0
  156. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +359 -0
  157. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/cpu_detect.h +69 -0
  158. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/crc.cc +435 -0
  159. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/crc.h +83 -0
  160. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +319 -0
  161. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/crc32c.h +39 -0
  162. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/crc32c_inline.h +72 -0
  163. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.cc +131 -0
  164. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.h +159 -0
  165. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/crc_internal.h +161 -0
  166. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/crc_memcpy.h +122 -0
  167. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_fallback.cc +78 -0
  168. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_arm_combined.cc +459 -0
  169. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/crc_non_temporal_memcpy.cc +93 -0
  170. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +824 -0
  171. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/non_temporal_arm_intrinsics.h +81 -0
  172. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/non_temporal_memcpy.h +195 -0
  173. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/failure_signal_handler.h +121 -0
  174. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +98 -0
  175. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.h +32 -0
  176. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/addresses.h +57 -0
  177. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/bounded_utf8_length_sequence.h +126 -0
  178. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.cc +258 -0
  179. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.h +55 -0
  180. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +2958 -0
  181. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/demangle.h +76 -0
  182. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.cc +925 -0
  183. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.h +50 -0
  184. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +413 -0
  185. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +141 -0
  186. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/examine_stack.cc +334 -0
  187. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/examine_stack.h +70 -0
  188. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/stack_consumption.h +50 -0
  189. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +299 -0
  190. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +148 -0
  191. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +96 -0
  192. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +121 -0
  193. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +121 -0
  194. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +270 -0
  195. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +208 -0
  196. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +25 -0
  197. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +81 -0
  198. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +410 -0
  199. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +163 -0
  200. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/utf8_for_code_point.cc +70 -0
  201. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/utf8_for_code_point.h +47 -0
  202. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +209 -0
  203. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/vdso_support.h +158 -0
  204. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/leak_check.cc +73 -0
  205. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/leak_check.h +150 -0
  206. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/stacktrace.cc +204 -0
  207. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/stacktrace.h +259 -0
  208. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/symbolize.cc +62 -0
  209. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/symbolize.h +99 -0
  210. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +102 -0
  211. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +1708 -0
  212. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +63 -0
  213. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +40 -0
  214. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +99 -0
  215. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/commandlineflag.h +220 -0
  216. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/config.h +68 -0
  217. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/declare.h +77 -0
  218. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/flag.h +307 -0
  219. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +68 -0
  220. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/internal/flag.h +969 -0
  221. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/internal/parse.h +70 -0
  222. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/internal/path_util.h +62 -0
  223. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.h +64 -0
  224. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/internal/program_name.h +50 -0
  225. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/internal/registry.h +98 -0
  226. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/internal/sequence_lock.h +187 -0
  227. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/internal/usage.h +106 -0
  228. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/marshalling.h +335 -0
  229. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/parse.h +130 -0
  230. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/reflection.h +90 -0
  231. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/usage.h +43 -0
  232. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/usage_config.h +135 -0
  233. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/functional/any_invocable.h +335 -0
  234. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/functional/bind_back.h +79 -0
  235. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/functional/bind_front.h +200 -0
  236. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/functional/function_ref.h +249 -0
  237. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +787 -0
  238. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/functional/internal/back_binder.h +95 -0
  239. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/functional/internal/front_binder.h +93 -0
  240. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/functional/internal/function_ref.h +151 -0
  241. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/functional/overload.h +72 -0
  242. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/hash/hash.h +466 -0
  243. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/hash/hash_testing.h +382 -0
  244. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/hash/internal/city.cc +337 -0
  245. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/hash/internal/city.h +78 -0
  246. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/hash/internal/hash.cc +430 -0
  247. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/hash/internal/hash.h +1619 -0
  248. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/hash/internal/spy_hash_state.h +289 -0
  249. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/hash/internal/weakly_mixed_integer.h +38 -0
  250. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/absl_check.h +117 -0
  251. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/absl_log.h +115 -0
  252. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/absl_vlog_is_on.h +93 -0
  253. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/check.h +210 -0
  254. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/check_test_impl.inc +1035 -0
  255. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/die_if_null.cc +34 -0
  256. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/die_if_null.h +97 -0
  257. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/flags.h +43 -0
  258. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/globals.cc +178 -0
  259. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/globals.h +230 -0
  260. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/initialize.h +45 -0
  261. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/append_truncated.h +75 -0
  262. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/check_impl.h +151 -0
  263. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/check_op.cc +147 -0
  264. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/check_op.h +565 -0
  265. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/conditions.cc +85 -0
  266. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/conditions.h +247 -0
  267. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/config.h +45 -0
  268. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/container.h +312 -0
  269. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/flags.h +59 -0
  270. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/fnmatch.cc +73 -0
  271. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/fnmatch.h +35 -0
  272. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/globals.cc +145 -0
  273. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/globals.h +101 -0
  274. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/log_format.cc +205 -0
  275. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/log_format.h +78 -0
  276. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/log_impl.h +280 -0
  277. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/log_message.cc +788 -0
  278. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/log_message.h +469 -0
  279. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/log_sink_set.cc +296 -0
  280. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/log_sink_set.h +54 -0
  281. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/nullguard.cc +35 -0
  282. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/nullguard.h +88 -0
  283. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/nullstream.h +128 -0
  284. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/proto.cc +231 -0
  285. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/proto.h +298 -0
  286. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/strip.h +99 -0
  287. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/structured.h +160 -0
  288. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/structured_proto.cc +115 -0
  289. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/structured_proto.h +108 -0
  290. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/test_actions.h +90 -0
  291. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/test_helpers.h +71 -0
  292. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/test_matchers.h +94 -0
  293. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/vlog_config.cc +347 -0
  294. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/vlog_config.h +164 -0
  295. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/voidify.h +50 -0
  296. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/log.h +378 -0
  297. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/log_basic_test_impl.inc +654 -0
  298. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/log_entry.cc +263 -0
  299. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/log_entry.h +223 -0
  300. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/log_sink.cc +23 -0
  301. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/log_sink.h +71 -0
  302. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/log_sink_registry.h +64 -0
  303. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/log_streamer.h +208 -0
  304. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/scoped_mock_log.h +203 -0
  305. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/structured.h +75 -0
  306. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/vlog_is_on.h +72 -0
  307. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/memory/memory.h +328 -0
  308. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/meta/internal/constexpr_testing.h +73 -0
  309. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/meta/internal/requires.h +67 -0
  310. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/meta/type_traits.h +646 -0
  311. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/numeric/bits.h +262 -0
  312. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/numeric/int128.cc +344 -0
  313. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/numeric/int128.h +1224 -0
  314. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +303 -0
  315. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +347 -0
  316. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/numeric/internal/bits.h +394 -0
  317. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
  318. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/profiling/hashtable.h +40 -0
  319. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.cc +93 -0
  320. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.h +130 -0
  321. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/profiling/internal/periodic_sampler.h +211 -0
  322. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/profiling/internal/profile_builder.h +161 -0
  323. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +253 -0
  324. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +202 -0
  325. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/beta_distribution.h +429 -0
  326. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/bit_gen_ref.h +160 -0
  327. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/discrete_distribution.h +249 -0
  328. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/distributions.h +450 -0
  329. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/exponential_distribution.h +166 -0
  330. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/gaussian_distribution.h +276 -0
  331. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/chi_square.h +89 -0
  332. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +83 -0
  333. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/distribution_test_util.h +113 -0
  334. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/entropy_pool.h +35 -0
  335. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/explicit_seed_seq.h +92 -0
  336. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +271 -0
  337. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/fastmath.h +57 -0
  338. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/generate_real.h +144 -0
  339. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +248 -0
  340. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/mock_helpers.h +134 -0
  341. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/mock_overload_set.h +122 -0
  342. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/mock_validators.h +98 -0
  343. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/nanobenchmark.h +172 -0
  344. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +160 -0
  345. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +287 -0
  346. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/platform.h +158 -0
  347. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/randen.h +96 -0
  348. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/randen_detect.h +33 -0
  349. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/randen_engine.h +265 -0
  350. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/randen_hwaes.h +50 -0
  351. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/randen_slow.h +40 -0
  352. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/randen_traits.h +88 -0
  353. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +166 -0
  354. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/seed_material.h +105 -0
  355. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/sequence_urbg.h +60 -0
  356. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/traits.h +170 -0
  357. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +244 -0
  358. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +95 -0
  359. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +253 -0
  360. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/mock_distributions.h +269 -0
  361. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/mocking_access.h +74 -0
  362. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/mocking_bit_gen.h +227 -0
  363. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/poisson_distribution.h +262 -0
  364. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/random.h +224 -0
  365. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/seed_gen_exception.h +55 -0
  366. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/seed_sequences.h +112 -0
  367. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +276 -0
  368. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +204 -0
  369. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/zipf_distribution.h +273 -0
  370. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/status/internal/status_internal.cc +296 -0
  371. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/status/internal/status_internal.h +157 -0
  372. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/status/internal/status_matchers.h +260 -0
  373. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +657 -0
  374. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/status/status.cc +413 -0
  375. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/status/status.h +1174 -0
  376. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/status/status_builder.h +978 -0
  377. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/status/status_macros.h +484 -0
  378. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/status/status_matchers.h +167 -0
  379. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/status/status_payload_printer.cc +36 -0
  380. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/status/status_payload_printer.h +53 -0
  381. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/status/statusor.cc +106 -0
  382. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/status/statusor.h +776 -0
  383. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/ascii.cc +296 -0
  384. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/ascii.h +288 -0
  385. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/charconv.cc +1442 -0
  386. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/charconv.h +123 -0
  387. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/charset.h +163 -0
  388. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/cord.cc +1601 -0
  389. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/cord.h +1773 -0
  390. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/cord_analysis.cc +196 -0
  391. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/cord_analysis.h +63 -0
  392. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/cord_buffer.h +574 -0
  393. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/cord_test_helpers.h +122 -0
  394. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/cordz_test_helpers.h +152 -0
  395. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/escaping.cc +1183 -0
  396. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/escaping.h +195 -0
  397. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/has_absl_stringify.h +64 -0
  398. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/has_ostream_operator.h +42 -0
  399. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/append_and_overwrite.h +93 -0
  400. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +357 -0
  401. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +433 -0
  402. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +504 -0
  403. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/charconv_parse.h +99 -0
  404. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_data_edge.h +63 -0
  405. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +70 -0
  406. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +942 -0
  407. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +1237 -0
  408. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +944 -0
  409. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +187 -0
  410. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +267 -0
  411. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +69 -0
  412. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +212 -0
  413. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +64 -0
  414. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.h +47 -0
  415. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +56 -0
  416. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +103 -0
  417. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +195 -0
  418. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_rep_test_util.h +205 -0
  419. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc +102 -0
  420. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +87 -0
  421. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +165 -0
  422. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +98 -0
  423. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +424 -0
  424. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +295 -0
  425. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cordz_sample_token.h +97 -0
  426. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +88 -0
  427. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cordz_update_scope.h +71 -0
  428. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +123 -0
  429. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc +99 -0
  430. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h +35 -0
  431. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/escaping.cc +68 -0
  432. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/escaping.h +35 -0
  433. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/escaping_test_common.h +133 -0
  434. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/generic_printer.h +115 -0
  435. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/generic_printer_internal.h +444 -0
  436. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/memutil.cc +48 -0
  437. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/memutil.h +40 -0
  438. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/numbers_test_common.h +184 -0
  439. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +43 -0
  440. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/ostringstream.h +114 -0
  441. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/pow10_helper.h +40 -0
  442. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +114 -0
  443. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/stl_type_traits.h +248 -0
  444. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +615 -0
  445. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +653 -0
  446. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +275 -0
  447. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +237 -0
  448. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +98 -0
  449. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_format/constexpr_parser.h +357 -0
  450. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +53 -0
  451. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +456 -0
  452. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +2148 -0
  453. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +37 -0
  454. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc +74 -0
  455. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +97 -0
  456. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +140 -0
  457. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +271 -0
  458. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +340 -0
  459. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +524 -0
  460. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/string_constant.h +67 -0
  461. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/stringify_sink.cc +28 -0
  462. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/stringify_sink.h +69 -0
  463. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/stringify_stream.h +119 -0
  464. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/utf8.cc +148 -0
  465. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/utf8.h +64 -0
  466. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/match.cc +133 -0
  467. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/match.h +129 -0
  468. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/numbers.cc +1636 -0
  469. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/numbers.h +363 -0
  470. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/resize_and_overwrite.h +198 -0
  471. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/str_cat.cc +247 -0
  472. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/str_cat.h +668 -0
  473. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/str_format.h +887 -0
  474. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/str_join.h +301 -0
  475. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/str_replace.cc +91 -0
  476. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/str_replace.h +222 -0
  477. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/str_split.cc +144 -0
  478. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/str_split.h +587 -0
  479. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/string_view.h +60 -0
  480. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/strip.h +99 -0
  481. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/substitute.cc +187 -0
  482. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/substitute.h +769 -0
  483. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/barrier.cc +52 -0
  484. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/barrier.h +79 -0
  485. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +73 -0
  486. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +107 -0
  487. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +173 -0
  488. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +56 -0
  489. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/futex.h +177 -0
  490. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/futex_waiter.cc +107 -0
  491. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/futex_waiter.h +63 -0
  492. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +714 -0
  493. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.h +146 -0
  494. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.cc +220 -0
  495. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +178 -0
  496. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +106 -0
  497. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +124 -0
  498. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/pthread_waiter.cc +163 -0
  499. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/pthread_waiter.h +60 -0
  500. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/sem_waiter.cc +118 -0
  501. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/sem_waiter.h +65 -0
  502. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.cc +87 -0
  503. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.h +56 -0
  504. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/thread_pool.h +96 -0
  505. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +69 -0
  506. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/waiter_base.cc +38 -0
  507. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/waiter_base.h +90 -0
  508. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/win32_waiter.cc +147 -0
  509. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/win32_waiter.h +72 -0
  510. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/mutex.cc +2833 -0
  511. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/mutex.h +1352 -0
  512. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/notification.cc +85 -0
  513. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/notification.h +133 -0
  514. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/civil_time.cc +200 -0
  515. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/civil_time.h +589 -0
  516. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/clock.cc +603 -0
  517. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/clock.h +81 -0
  518. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/clock_interface.h +93 -0
  519. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/duration.cc +918 -0
  520. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/format.cc +155 -0
  521. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time.h +332 -0
  522. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +644 -0
  523. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +460 -0
  524. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +102 -0
  525. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc +94 -0
  526. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/test_time_zone_names.h +33 -0
  527. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +140 -0
  528. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.h +52 -0
  529. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +1069 -0
  530. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +47 -0
  531. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +80 -0
  532. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +115 -0
  533. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +97 -0
  534. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +1070 -0
  535. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +128 -0
  536. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +333 -0
  537. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +60 -0
  538. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +217 -0
  539. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.cc +185 -0
  540. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.h +37 -0
  541. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc +159 -0
  542. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.h +132 -0
  543. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +115 -0
  544. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +116 -0
  545. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/get_current_time_chrono.inc +31 -0
  546. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/get_current_time_posix.inc +24 -0
  547. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/test_util.h +33 -0
  548. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/simulated_clock.h +109 -0
  549. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/time.cc +507 -0
  550. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/time.h +1926 -0
  551. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/types/any.h +66 -0
  552. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/types/any_span.h +1067 -0
  553. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/types/compare.h +506 -0
  554. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/types/internal/any_span.h +477 -0
  555. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/types/internal/span.h +140 -0
  556. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/types/optional.h +68 -0
  557. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/types/optional_ref.h +295 -0
  558. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/types/source_location.cc +18 -0
  559. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/types/source_location.h +172 -0
  560. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/types/span.h +827 -0
  561. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/types/variant.h +139 -0
  562. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/utility/utility.h +151 -0
  563. data/ext/protovalidate/sys/third_party/antlr4/LICENSE.txt +28 -0
  564. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ANTLRErrorListener.cpp +10 -0
  565. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ANTLRErrorListener.h +167 -0
  566. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ANTLRErrorStrategy.cpp +10 -0
  567. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ANTLRErrorStrategy.h +121 -0
  568. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ANTLRFileStream.cpp +23 -0
  569. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ANTLRFileStream.h +30 -0
  570. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ANTLRInputStream.cpp +180 -0
  571. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ANTLRInputStream.h +79 -0
  572. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/BailErrorStrategy.cpp +61 -0
  573. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/BailErrorStrategy.h +59 -0
  574. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/BaseErrorListener.cpp +25 -0
  575. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/BaseErrorListener.h +36 -0
  576. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/BufferedTokenStream.cpp +414 -0
  577. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/BufferedTokenStream.h +200 -0
  578. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/CharStream.cpp +11 -0
  579. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/CharStream.h +37 -0
  580. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/CommonToken.cpp +193 -0
  581. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/CommonToken.h +158 -0
  582. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/CommonTokenFactory.cpp +39 -0
  583. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/CommonTokenFactory.h +74 -0
  584. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/CommonTokenStream.cpp +78 -0
  585. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/CommonTokenStream.h +79 -0
  586. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ConsoleErrorListener.cpp +15 -0
  587. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ConsoleErrorListener.h +35 -0
  588. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/DefaultErrorStrategy.cpp +336 -0
  589. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/DefaultErrorStrategy.h +466 -0
  590. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/DiagnosticErrorListener.cpp +84 -0
  591. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/DiagnosticErrorListener.h +80 -0
  592. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/Exceptions.cpp +64 -0
  593. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/Exceptions.h +99 -0
  594. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/FailedPredicateException.cpp +52 -0
  595. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/FailedPredicateException.h +32 -0
  596. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/FlatHashMap.h +57 -0
  597. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/FlatHashSet.h +57 -0
  598. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/InputMismatchException.cpp +18 -0
  599. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/InputMismatchException.h +24 -0
  600. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/IntStream.cpp +12 -0
  601. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/IntStream.h +218 -0
  602. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/InterpreterRuleContext.cpp +19 -0
  603. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/InterpreterRuleContext.h +45 -0
  604. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/Lexer.cpp +294 -0
  605. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/Lexer.h +196 -0
  606. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/LexerInterpreter.cpp +60 -0
  607. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/LexerInterpreter.h +46 -0
  608. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/LexerNoViableAltException.cpp +36 -0
  609. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/LexerNoViableAltException.h +31 -0
  610. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ListTokenSource.cpp +92 -0
  611. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ListTokenSource.h +88 -0
  612. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/NoViableAltException.cpp +46 -0
  613. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/NoViableAltException.h +42 -0
  614. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/Parser.cpp +670 -0
  615. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/Parser.h +461 -0
  616. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ParserInterpreter.cpp +294 -0
  617. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ParserInterpreter.h +173 -0
  618. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ParserRuleContext.cpp +138 -0
  619. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ParserRuleContext.h +147 -0
  620. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ProxyErrorListener.cpp +53 -0
  621. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ProxyErrorListener.h +38 -0
  622. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/RecognitionException.cpp +65 -0
  623. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/RecognitionException.h +98 -0
  624. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/Recognizer.cpp +157 -0
  625. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/Recognizer.h +160 -0
  626. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/RuleContext.cpp +144 -0
  627. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/RuleContext.h +141 -0
  628. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/RuleContextWithAltNum.cpp +27 -0
  629. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/RuleContextWithAltNum.h +32 -0
  630. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/RuntimeMetaData.cpp +54 -0
  631. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/RuntimeMetaData.h +155 -0
  632. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/Token.cpp +9 -0
  633. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/Token.h +92 -0
  634. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/TokenFactory.h +30 -0
  635. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/TokenSource.cpp +9 -0
  636. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/TokenSource.h +85 -0
  637. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/TokenStream.cpp +11 -0
  638. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/TokenStream.h +137 -0
  639. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/TokenStreamRewriter.cpp +428 -0
  640. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/TokenStreamRewriter.h +295 -0
  641. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/UnbufferedCharStream.cpp +208 -0
  642. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/UnbufferedCharStream.h +117 -0
  643. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/UnbufferedTokenStream.cpp +270 -0
  644. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/UnbufferedTokenStream.h +115 -0
  645. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/Version.h +42 -0
  646. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/Vocabulary.cpp +64 -0
  647. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/Vocabulary.h +177 -0
  648. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/WritableToken.cpp +9 -0
  649. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/WritableToken.h +23 -0
  650. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/antlr4-common.h +101 -0
  651. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/antlr4-runtime.h +168 -0
  652. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATN.cpp +159 -0
  653. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATN.h +133 -0
  654. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNConfig.cpp +106 -0
  655. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNConfig.h +157 -0
  656. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNConfigSet.cpp +233 -0
  657. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNConfigSet.h +157 -0
  658. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNDeserializationOptions.cpp +39 -0
  659. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNDeserializationOptions.h +48 -0
  660. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNDeserializer.cpp +628 -0
  661. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNDeserializer.h +32 -0
  662. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNSimulator.cpp +33 -0
  663. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNSimulator.h +71 -0
  664. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNState.cpp +56 -0
  665. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNState.h +139 -0
  666. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNStateType.cpp +33 -0
  667. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNStateType.h +36 -0
  668. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNType.h +20 -0
  669. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ActionTransition.cpp +29 -0
  670. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ActionTransition.h +35 -0
  671. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/AmbiguityInfo.cpp +16 -0
  672. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/AmbiguityInfo.h +68 -0
  673. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ArrayPredictionContext.cpp +129 -0
  674. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ArrayPredictionContext.h +51 -0
  675. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/AtomTransition.cpp +27 -0
  676. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/AtomTransition.h +33 -0
  677. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/BasicBlockStartState.h +24 -0
  678. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/BasicState.h +23 -0
  679. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/BlockEndState.h +26 -0
  680. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/BlockStartState.h +30 -0
  681. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ContextSensitivityInfo.cpp +14 -0
  682. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ContextSensitivityInfo.h +47 -0
  683. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/DecisionEventInfo.cpp +14 -0
  684. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/DecisionEventInfo.h +70 -0
  685. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/DecisionInfo.cpp +25 -0
  686. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/DecisionInfo.h +227 -0
  687. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/DecisionState.cpp +12 -0
  688. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/DecisionState.h +34 -0
  689. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/EpsilonTransition.cpp +31 -0
  690. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/EpsilonTransition.h +42 -0
  691. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ErrorInfo.cpp +15 -0
  692. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ErrorInfo.h +43 -0
  693. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/HashUtils.h +18 -0
  694. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LL1Analyzer.cpp +189 -0
  695. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LL1Analyzer.h +76 -0
  696. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerATNConfig.cpp +67 -0
  697. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerATNConfig.h +44 -0
  698. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerATNSimulator.cpp +621 -0
  699. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerATNSimulator.h +199 -0
  700. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerAction.cpp +15 -0
  701. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerAction.h +100 -0
  702. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerActionExecutor.cpp +108 -0
  703. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerActionExecutor.h +128 -0
  704. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerActionType.h +57 -0
  705. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerChannelAction.cpp +43 -0
  706. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerChannelAction.h +59 -0
  707. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerCustomAction.cpp +45 -0
  708. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerCustomAction.h +75 -0
  709. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerIndexedCustomAction.cpp +50 -0
  710. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerIndexedCustomAction.h +76 -0
  711. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerModeAction.cpp +43 -0
  712. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerModeAction.h +57 -0
  713. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerMoreAction.cpp +36 -0
  714. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerMoreAction.h +53 -0
  715. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerPopModeAction.cpp +36 -0
  716. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerPopModeAction.h +53 -0
  717. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerPushModeAction.cpp +43 -0
  718. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerPushModeAction.h +57 -0
  719. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerSkipAction.cpp +36 -0
  720. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerSkipAction.h +51 -0
  721. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerTypeAction.cpp +43 -0
  722. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerTypeAction.h +51 -0
  723. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LookaheadEventInfo.cpp +16 -0
  724. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LookaheadEventInfo.h +42 -0
  725. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LoopEndState.h +26 -0
  726. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/NotSetTransition.cpp +22 -0
  727. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/NotSetTransition.h +27 -0
  728. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/OrderedATNConfigSet.cpp +16 -0
  729. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/OrderedATNConfigSet.h +25 -0
  730. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ParseInfo.cpp +102 -0
  731. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ParseInfo.h +102 -0
  732. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ParserATNSimulator.cpp +1413 -0
  733. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ParserATNSimulator.h +911 -0
  734. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ParserATNSimulatorOptions.h +50 -0
  735. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PlusBlockStartState.h +29 -0
  736. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PlusLoopbackState.h +25 -0
  737. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PrecedencePredicateTransition.cpp +23 -0
  738. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PrecedencePredicateTransition.h +35 -0
  739. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.cpp +17 -0
  740. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.h +62 -0
  741. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredicateTransition.cpp +24 -0
  742. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredicateTransition.h +50 -0
  743. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredictionContext.cpp +601 -0
  744. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredictionContext.h +225 -0
  745. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredictionContextCache.cpp +56 -0
  746. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredictionContextCache.h +63 -0
  747. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredictionContextMergeCache.cpp +167 -0
  748. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredictionContextMergeCache.h +101 -0
  749. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredictionContextMergeCacheOptions.h +71 -0
  750. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredictionContextType.h +21 -0
  751. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredictionMode.cpp +202 -0
  752. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredictionMode.h +436 -0
  753. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.cpp +179 -0
  754. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.h +60 -0
  755. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/RangeTransition.cpp +26 -0
  756. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/RangeTransition.h +31 -0
  757. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/RuleStartState.h +26 -0
  758. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/RuleStopState.h +27 -0
  759. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/RuleTransition.cpp +33 -0
  760. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/RuleTransition.h +42 -0
  761. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/SemanticContext.cpp +418 -0
  762. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/SemanticContext.h +237 -0
  763. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/SemanticContextType.h +23 -0
  764. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/SerializedATNView.h +101 -0
  765. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/SetTransition.cpp +28 -0
  766. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/SetTransition.h +38 -0
  767. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.cpp +79 -0
  768. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.h +43 -0
  769. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/StarBlockStartState.h +24 -0
  770. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/StarLoopEntryState.h +37 -0
  771. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/StarLoopbackState.cpp +19 -0
  772. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/StarLoopbackState.h +25 -0
  773. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/TokensStartState.h +24 -0
  774. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/Transition.cpp +36 -0
  775. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/Transition.h +65 -0
  776. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/TransitionType.cpp +27 -0
  777. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/TransitionType.h +33 -0
  778. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/WildcardTransition.cpp +21 -0
  779. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/WildcardTransition.h +27 -0
  780. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/dfa/DFA.cpp +115 -0
  781. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/dfa/DFA.h +96 -0
  782. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/dfa/DFASerializer.cpp +60 -0
  783. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/dfa/DFASerializer.h +32 -0
  784. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/dfa/DFAState.cpp +59 -0
  785. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/dfa/DFAState.h +154 -0
  786. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/dfa/LexerDFASerializer.cpp +17 -0
  787. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/dfa/LexerDFASerializer.h +22 -0
  788. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/internal/Synchronization.cpp +100 -0
  789. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/internal/Synchronization.h +154 -0
  790. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/misc/InterpreterDataReader.cpp +124 -0
  791. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/misc/InterpreterDataReader.h +33 -0
  792. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/misc/Interval.cpp +61 -0
  793. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/misc/Interval.h +84 -0
  794. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/misc/IntervalSet.cpp +508 -0
  795. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/misc/IntervalSet.h +190 -0
  796. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/misc/MurmurHash.cpp +120 -0
  797. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/misc/MurmurHash.h +102 -0
  798. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/misc/Predicate.cpp +4 -0
  799. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/misc/Predicate.h +21 -0
  800. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/support/Any.cpp +8 -0
  801. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/support/Any.h +16 -0
  802. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/support/Arrays.cpp +43 -0
  803. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/support/Arrays.h +149 -0
  804. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/support/BitSet.h +76 -0
  805. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/support/CPPUtils.cpp +207 -0
  806. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/support/CPPUtils.h +65 -0
  807. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/support/Casts.h +34 -0
  808. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/support/Declarations.h +161 -0
  809. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/support/StringUtils.cpp +38 -0
  810. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/support/StringUtils.h +16 -0
  811. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/support/Unicode.h +28 -0
  812. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/support/Utf8.cpp +242 -0
  813. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/support/Utf8.h +54 -0
  814. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/AbstractParseTreeVisitor.h +129 -0
  815. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/ErrorNode.h +24 -0
  816. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/ErrorNodeImpl.cpp +54 -0
  817. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/ErrorNodeImpl.h +43 -0
  818. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/IterativeParseTreeWalker.cpp +66 -0
  819. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/IterativeParseTreeWalker.h +53 -0
  820. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/ParseTree.cpp +12 -0
  821. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/ParseTree.h +111 -0
  822. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/ParseTreeListener.cpp +9 -0
  823. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/ParseTreeListener.h +39 -0
  824. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/ParseTreeProperty.h +50 -0
  825. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/ParseTreeType.h +22 -0
  826. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/ParseTreeVisitor.cpp +9 -0
  827. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/ParseTreeVisitor.h +57 -0
  828. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/ParseTreeWalker.cpp +48 -0
  829. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/ParseTreeWalker.h +55 -0
  830. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/TerminalNode.h +40 -0
  831. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/TerminalNodeImpl.cpp +54 -0
  832. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/TerminalNodeImpl.h +32 -0
  833. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/Trees.cpp +241 -0
  834. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/Trees.h +78 -0
  835. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/Chunk.cpp +9 -0
  836. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/Chunk.h +44 -0
  837. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/ParseTreeMatch.cpp +69 -0
  838. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/ParseTreeMatch.h +132 -0
  839. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/ParseTreePattern.cpp +64 -0
  840. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/ParseTreePattern.h +105 -0
  841. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/ParseTreePatternMatcher.cpp +370 -0
  842. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/ParseTreePatternMatcher.h +185 -0
  843. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/RuleTagToken.cpp +77 -0
  844. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/RuleTagToken.h +117 -0
  845. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/TagChunk.cpp +39 -0
  846. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/TagChunk.h +86 -0
  847. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/TextChunk.cpp +28 -0
  848. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/TextChunk.h +51 -0
  849. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/TokenTagToken.cpp +36 -0
  850. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/TokenTagToken.h +80 -0
  851. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPath.cpp +154 -0
  852. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPath.h +86 -0
  853. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathElement.cpp +31 -0
  854. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathElement.h +40 -0
  855. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.cpp +180 -0
  856. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.h +53 -0
  857. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathLexerErrorListener.cpp +13 -0
  858. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathLexerErrorListener.h +22 -0
  859. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathRuleAnywhereElement.cpp +20 -0
  860. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathRuleAnywhereElement.h +27 -0
  861. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathRuleElement.cpp +30 -0
  862. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathRuleElement.h +26 -0
  863. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathTokenAnywhereElement.cpp +20 -0
  864. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathTokenAnywhereElement.h +25 -0
  865. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathTokenElement.cpp +33 -0
  866. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathTokenElement.h +26 -0
  867. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardAnywhereElement.cpp +23 -0
  868. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardAnywhereElement.h +23 -0
  869. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardElement.cpp +24 -0
  870. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardElement.h +23 -0
  871. data/ext/protovalidate/sys/third_party/cel-cpp/LICENSE +202 -0
  872. data/ext/protovalidate/sys/third_party/cel-cpp/base/ast.h +20 -0
  873. data/ext/protovalidate/sys/third_party/cel-cpp/base/attribute.cc +330 -0
  874. data/ext/protovalidate/sys/third_party/cel-cpp/base/attribute.h +278 -0
  875. data/ext/protovalidate/sys/third_party/cel-cpp/base/attribute_set.h +108 -0
  876. data/ext/protovalidate/sys/third_party/cel-cpp/base/builtins.h +106 -0
  877. data/ext/protovalidate/sys/third_party/cel-cpp/base/function.h +20 -0
  878. data/ext/protovalidate/sys/third_party/cel-cpp/base/function_adapter.h +19 -0
  879. data/ext/protovalidate/sys/third_party/cel-cpp/base/function_descriptor.h +20 -0
  880. data/ext/protovalidate/sys/third_party/cel-cpp/base/function_result.h +70 -0
  881. data/ext/protovalidate/sys/third_party/cel-cpp/base/function_result_set.cc +28 -0
  882. data/ext/protovalidate/sys/third_party/cel-cpp/base/function_result_set.h +105 -0
  883. data/ext/protovalidate/sys/third_party/cel-cpp/base/internal/memory_manager_testing.h +54 -0
  884. data/ext/protovalidate/sys/third_party/cel-cpp/base/internal/message_wrapper.h +30 -0
  885. data/ext/protovalidate/sys/third_party/cel-cpp/base/internal/operators.h +91 -0
  886. data/ext/protovalidate/sys/third_party/cel-cpp/base/internal/unknown_set.cc +31 -0
  887. data/ext/protovalidate/sys/third_party/cel-cpp/base/internal/unknown_set.h +131 -0
  888. data/ext/protovalidate/sys/third_party/cel-cpp/base/kind.h +25 -0
  889. data/ext/protovalidate/sys/third_party/cel-cpp/base/operators.h +507 -0
  890. data/ext/protovalidate/sys/third_party/cel-cpp/base/type_provider.h +26 -0
  891. data/ext/protovalidate/sys/third_party/cel-cpp/checker/checker_options.h +110 -0
  892. data/ext/protovalidate/sys/third_party/cel-cpp/checker/internal/builtins_arena.cc +28 -0
  893. data/ext/protovalidate/sys/third_party/cel-cpp/checker/internal/builtins_arena.h +29 -0
  894. data/ext/protovalidate/sys/third_party/cel-cpp/checker/internal/field_path.h +77 -0
  895. data/ext/protovalidate/sys/third_party/cel-cpp/checker/internal/namespace_generator.h +120 -0
  896. data/ext/protovalidate/sys/third_party/cel-cpp/checker/internal/proto_type_mask.h +111 -0
  897. data/ext/protovalidate/sys/third_party/cel-cpp/checker/internal/proto_type_mask_registry.h +83 -0
  898. data/ext/protovalidate/sys/third_party/cel-cpp/checker/internal/test_ast_helpers.h +31 -0
  899. data/ext/protovalidate/sys/third_party/cel-cpp/checker/internal/type_check_env.h +249 -0
  900. data/ext/protovalidate/sys/third_party/cel-cpp/checker/internal/type_checker_builder_impl.h +170 -0
  901. data/ext/protovalidate/sys/third_party/cel-cpp/checker/internal/type_checker_impl.h +58 -0
  902. data/ext/protovalidate/sys/third_party/cel-cpp/checker/internal/type_inference_context.h +229 -0
  903. data/ext/protovalidate/sys/third_party/cel-cpp/checker/optional.h +30 -0
  904. data/ext/protovalidate/sys/third_party/cel-cpp/checker/standard_library.h +26 -0
  905. data/ext/protovalidate/sys/third_party/cel-cpp/checker/type_check_issue.cc +59 -0
  906. data/ext/protovalidate/sys/third_party/cel-cpp/checker/type_check_issue.h +69 -0
  907. data/ext/protovalidate/sys/third_party/cel-cpp/checker/type_checker.cc +36 -0
  908. data/ext/protovalidate/sys/third_party/cel-cpp/checker/type_checker.h +65 -0
  909. data/ext/protovalidate/sys/third_party/cel-cpp/checker/type_checker_builder.h +186 -0
  910. data/ext/protovalidate/sys/third_party/cel-cpp/checker/type_checker_builder_factory.h +59 -0
  911. data/ext/protovalidate/sys/third_party/cel-cpp/checker/type_checker_subset_factory.h +45 -0
  912. data/ext/protovalidate/sys/third_party/cel-cpp/checker/validation_result.cc +32 -0
  913. data/ext/protovalidate/sys/third_party/cel-cpp/checker/validation_result.h +117 -0
  914. data/ext/protovalidate/sys/third_party/cel-cpp/codelab/checked_expr_conversion_example.h +59 -0
  915. data/ext/protovalidate/sys/third_party/cel-cpp/codelab/exercise1.h +32 -0
  916. data/ext/protovalidate/sys/third_party/cel-cpp/codelab/exercise10.h +46 -0
  917. data/ext/protovalidate/sys/third_party/cel-cpp/codelab/exercise2.h +40 -0
  918. data/ext/protovalidate/sys/third_party/cel-cpp/codelab/exercise4.h +34 -0
  919. data/ext/protovalidate/sys/third_party/cel-cpp/codelab/network_functions.h +197 -0
  920. data/ext/protovalidate/sys/third_party/cel-cpp/common/allocator.h +606 -0
  921. data/ext/protovalidate/sys/third_party/cel-cpp/common/any.cc +38 -0
  922. data/ext/protovalidate/sys/third_party/cel-cpp/common/any.h +90 -0
  923. data/ext/protovalidate/sys/third_party/cel-cpp/common/arena.h +110 -0
  924. data/ext/protovalidate/sys/third_party/cel-cpp/common/arena_string.h +365 -0
  925. data/ext/protovalidate/sys/third_party/cel-cpp/common/arena_string_pool.h +86 -0
  926. data/ext/protovalidate/sys/third_party/cel-cpp/common/arena_string_view.h +239 -0
  927. data/ext/protovalidate/sys/third_party/cel-cpp/common/ast/constant_proto.cc +123 -0
  928. data/ext/protovalidate/sys/third_party/cel-cpp/common/ast/constant_proto.h +37 -0
  929. data/ext/protovalidate/sys/third_party/cel-cpp/common/ast/expr_proto.cc +514 -0
  930. data/ext/protovalidate/sys/third_party/cel-cpp/common/ast/expr_proto.h +32 -0
  931. data/ext/protovalidate/sys/third_party/cel-cpp/common/ast/metadata.cc +262 -0
  932. data/ext/protovalidate/sys/third_party/cel-cpp/common/ast/metadata.h +920 -0
  933. data/ext/protovalidate/sys/third_party/cel-cpp/common/ast/navigable_ast_internal.h +311 -0
  934. data/ext/protovalidate/sys/third_party/cel-cpp/common/ast/navigable_ast_kinds.cc +80 -0
  935. data/ext/protovalidate/sys/third_party/cel-cpp/common/ast/navigable_ast_kinds.h +74 -0
  936. data/ext/protovalidate/sys/third_party/cel-cpp/common/ast/source_info_proto.cc +90 -0
  937. data/ext/protovalidate/sys/third_party/cel-cpp/common/ast/source_info_proto.h +32 -0
  938. data/ext/protovalidate/sys/third_party/cel-cpp/common/ast.cc +98 -0
  939. data/ext/protovalidate/sys/third_party/cel-cpp/common/ast.h +157 -0
  940. data/ext/protovalidate/sys/third_party/cel-cpp/common/ast_proto.cc +547 -0
  941. data/ext/protovalidate/sys/third_party/cel-cpp/common/ast_proto.h +52 -0
  942. data/ext/protovalidate/sys/third_party/cel-cpp/common/ast_rewrite.cc +389 -0
  943. data/ext/protovalidate/sys/third_party/cel-cpp/common/ast_rewrite.h +146 -0
  944. data/ext/protovalidate/sys/third_party/cel-cpp/common/ast_traverse.cc +380 -0
  945. data/ext/protovalidate/sys/third_party/cel-cpp/common/ast_traverse.h +105 -0
  946. data/ext/protovalidate/sys/third_party/cel-cpp/common/ast_visitor.h +118 -0
  947. data/ext/protovalidate/sys/third_party/cel-cpp/common/ast_visitor_base.h +88 -0
  948. data/ext/protovalidate/sys/third_party/cel-cpp/common/casting.h +75 -0
  949. data/ext/protovalidate/sys/third_party/cel-cpp/common/constant.cc +101 -0
  950. data/ext/protovalidate/sys/third_party/cel-cpp/common/constant.h +491 -0
  951. data/ext/protovalidate/sys/third_party/cel-cpp/common/container.cc +171 -0
  952. data/ext/protovalidate/sys/third_party/cel-cpp/common/container.h +138 -0
  953. data/ext/protovalidate/sys/third_party/cel-cpp/common/data.h +120 -0
  954. data/ext/protovalidate/sys/third_party/cel-cpp/common/decl.cc +221 -0
  955. data/ext/protovalidate/sys/third_party/cel-cpp/common/decl.h +446 -0
  956. data/ext/protovalidate/sys/third_party/cel-cpp/common/decl_proto.h +50 -0
  957. data/ext/protovalidate/sys/third_party/cel-cpp/common/decl_proto_v1alpha1.h +55 -0
  958. data/ext/protovalidate/sys/third_party/cel-cpp/common/descriptor_pool_type_introspector.cc +244 -0
  959. data/ext/protovalidate/sys/third_party/cel-cpp/common/descriptor_pool_type_introspector.h +106 -0
  960. data/ext/protovalidate/sys/third_party/cel-cpp/common/expr.cc +320 -0
  961. data/ext/protovalidate/sys/third_party/cel-cpp/common/expr.h +1720 -0
  962. data/ext/protovalidate/sys/third_party/cel-cpp/common/expr_factory.h +402 -0
  963. data/ext/protovalidate/sys/third_party/cel-cpp/common/expr_printer.h +57 -0
  964. data/ext/protovalidate/sys/third_party/cel-cpp/common/format_type_name.h +30 -0
  965. data/ext/protovalidate/sys/third_party/cel-cpp/common/function_descriptor.cc +98 -0
  966. data/ext/protovalidate/sys/third_party/cel-cpp/common/function_descriptor.h +124 -0
  967. data/ext/protovalidate/sys/third_party/cel-cpp/common/internal/byte_string.cc +1074 -0
  968. data/ext/protovalidate/sys/third_party/cel-cpp/common/internal/byte_string.h +688 -0
  969. data/ext/protovalidate/sys/third_party/cel-cpp/common/internal/casting.h +237 -0
  970. data/ext/protovalidate/sys/third_party/cel-cpp/common/internal/metadata.h +41 -0
  971. data/ext/protovalidate/sys/third_party/cel-cpp/common/internal/reference_count.cc +118 -0
  972. data/ext/protovalidate/sys/third_party/cel-cpp/common/internal/reference_count.h +406 -0
  973. data/ext/protovalidate/sys/third_party/cel-cpp/common/internal/value_conversion.h +115 -0
  974. data/ext/protovalidate/sys/third_party/cel-cpp/common/json.h +35 -0
  975. data/ext/protovalidate/sys/third_party/cel-cpp/common/kind.cc +80 -0
  976. data/ext/protovalidate/sys/third_party/cel-cpp/common/kind.h +76 -0
  977. data/ext/protovalidate/sys/third_party/cel-cpp/common/legacy_value.cc +1324 -0
  978. data/ext/protovalidate/sys/third_party/cel-cpp/common/legacy_value.h +131 -0
  979. data/ext/protovalidate/sys/third_party/cel-cpp/common/memory.cc +83 -0
  980. data/ext/protovalidate/sys/third_party/cel-cpp/common/memory.h +1505 -0
  981. data/ext/protovalidate/sys/third_party/cel-cpp/common/memory_testing.h +71 -0
  982. data/ext/protovalidate/sys/third_party/cel-cpp/common/minimal_descriptor_database.h +32 -0
  983. data/ext/protovalidate/sys/third_party/cel-cpp/common/minimal_descriptor_pool.h +36 -0
  984. data/ext/protovalidate/sys/third_party/cel-cpp/common/native_type.h +26 -0
  985. data/ext/protovalidate/sys/third_party/cel-cpp/common/navigable_ast.cc +202 -0
  986. data/ext/protovalidate/sys/third_party/cel-cpp/common/navigable_ast.h +168 -0
  987. data/ext/protovalidate/sys/third_party/cel-cpp/common/operators.cc +233 -0
  988. data/ext/protovalidate/sys/third_party/cel-cpp/common/operators.h +87 -0
  989. data/ext/protovalidate/sys/third_party/cel-cpp/common/optional_ref.h +163 -0
  990. data/ext/protovalidate/sys/third_party/cel-cpp/common/reference.h +269 -0
  991. data/ext/protovalidate/sys/third_party/cel-cpp/common/reference_count.h +26 -0
  992. data/ext/protovalidate/sys/third_party/cel-cpp/common/signature.cc +640 -0
  993. data/ext/protovalidate/sys/third_party/cel-cpp/common/signature.h +101 -0
  994. data/ext/protovalidate/sys/third_party/cel-cpp/common/source.cc +679 -0
  995. data/ext/protovalidate/sys/third_party/cel-cpp/common/source.h +261 -0
  996. data/ext/protovalidate/sys/third_party/cel-cpp/common/standard_definitions.h +349 -0
  997. data/ext/protovalidate/sys/third_party/cel-cpp/common/type.cc +737 -0
  998. data/ext/protovalidate/sys/third_party/cel-cpp/common/type.h +1303 -0
  999. data/ext/protovalidate/sys/third_party/cel-cpp/common/type_introspector.cc +277 -0
  1000. data/ext/protovalidate/sys/third_party/cel-cpp/common/type_introspector.h +157 -0
  1001. data/ext/protovalidate/sys/third_party/cel-cpp/common/type_kind.h +113 -0
  1002. data/ext/protovalidate/sys/third_party/cel-cpp/common/type_proto.h +39 -0
  1003. data/ext/protovalidate/sys/third_party/cel-cpp/common/type_reflector.h +43 -0
  1004. data/ext/protovalidate/sys/third_party/cel-cpp/common/type_spec_resolver.cc +324 -0
  1005. data/ext/protovalidate/sys/third_party/cel-cpp/common/type_spec_resolver.h +46 -0
  1006. data/ext/protovalidate/sys/third_party/cel-cpp/common/type_testing.h +24 -0
  1007. data/ext/protovalidate/sys/third_party/cel-cpp/common/typeinfo.cc +73 -0
  1008. data/ext/protovalidate/sys/third_party/cel-cpp/common/typeinfo.h +221 -0
  1009. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/any_type.h +74 -0
  1010. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/basic_struct_type.cc +53 -0
  1011. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/basic_struct_type.h +119 -0
  1012. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/bool_type.h +73 -0
  1013. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/bool_wrapper_type.h +79 -0
  1014. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/bytes_type.h +73 -0
  1015. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/bytes_wrapper_type.h +79 -0
  1016. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/double_type.h +73 -0
  1017. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/double_wrapper_type.h +79 -0
  1018. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/duration_type.h +73 -0
  1019. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/dyn_type.h +73 -0
  1020. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/enum_type.cc +43 -0
  1021. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/enum_type.h +128 -0
  1022. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/error_type.h +75 -0
  1023. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/function_type.cc +89 -0
  1024. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/function_type.h +91 -0
  1025. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/function_type_pool.cc +29 -0
  1026. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/function_type_pool.h +102 -0
  1027. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/int_type.h +72 -0
  1028. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/int_wrapper_type.h +78 -0
  1029. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/legacy_type_introspector.h +34 -0
  1030. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/list_type.cc +77 -0
  1031. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/list_type.h +115 -0
  1032. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/list_type_pool.cc +29 -0
  1033. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/list_type_pool.h +80 -0
  1034. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/map_type.cc +122 -0
  1035. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/map_type.h +124 -0
  1036. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/map_type_pool.cc +30 -0
  1037. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/map_type_pool.h +93 -0
  1038. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/message_type.cc +95 -0
  1039. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/message_type.h +209 -0
  1040. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/null_type.h +73 -0
  1041. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/opaque_type.cc +109 -0
  1042. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/opaque_type.h +118 -0
  1043. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/opaque_type_pool.cc +33 -0
  1044. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/opaque_type_pool.h +99 -0
  1045. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/optional_type.cc +68 -0
  1046. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/optional_type.h +114 -0
  1047. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/string_type.h +73 -0
  1048. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/string_wrapper_type.h +86 -0
  1049. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/struct_type.cc +87 -0
  1050. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/struct_type.h +158 -0
  1051. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/timestamp_type.h +73 -0
  1052. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/type_param_type.h +78 -0
  1053. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/type_pool.cc +96 -0
  1054. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/type_pool.h +99 -0
  1055. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/type_type.cc +74 -0
  1056. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/type_type.h +92 -0
  1057. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/type_type_pool.cc +26 -0
  1058. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/type_type_pool.h +86 -0
  1059. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/types.h +99 -0
  1060. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/uint_type.h +73 -0
  1061. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/uint_wrapper_type.h +79 -0
  1062. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/unknown_type.h +74 -0
  1063. data/ext/protovalidate/sys/third_party/cel-cpp/common/unknown.h +27 -0
  1064. data/ext/protovalidate/sys/third_party/cel-cpp/common/value.cc +2791 -0
  1065. data/ext/protovalidate/sys/third_party/cel-cpp/common/value.h +2947 -0
  1066. data/ext/protovalidate/sys/third_party/cel-cpp/common/value_kind.h +104 -0
  1067. data/ext/protovalidate/sys/third_party/cel-cpp/common/value_testing.h +307 -0
  1068. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/bool_value.cc +97 -0
  1069. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/bool_value.h +111 -0
  1070. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/bytes_value.cc +194 -0
  1071. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/bytes_value.h +338 -0
  1072. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/bytes_value_input_stream.h +133 -0
  1073. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/bytes_value_output_stream.h +176 -0
  1074. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/custom_list_value.cc +614 -0
  1075. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/custom_list_value.h +423 -0
  1076. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/custom_map_value.cc +823 -0
  1077. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/custom_map_value.h +469 -0
  1078. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/custom_struct_value.cc +385 -0
  1079. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/custom_struct_value.h +459 -0
  1080. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/custom_value.h +84 -0
  1081. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/double_value.cc +137 -0
  1082. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/double_value.h +101 -0
  1083. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/duration_value.cc +105 -0
  1084. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/duration_value.h +147 -0
  1085. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/enum_value.h +49 -0
  1086. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/error_value.cc +194 -0
  1087. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/error_value.h +276 -0
  1088. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/int_value.cc +111 -0
  1089. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/int_value.h +117 -0
  1090. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/legacy_list_value.cc +76 -0
  1091. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/legacy_list_value.h +167 -0
  1092. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/legacy_map_value.cc +76 -0
  1093. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/legacy_map_value.h +185 -0
  1094. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/legacy_struct_value.cc +43 -0
  1095. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/legacy_struct_value.h +183 -0
  1096. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/list_value.cc +304 -0
  1097. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/list_value.h +284 -0
  1098. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/list_value_builder.h +110 -0
  1099. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/list_value_variant.h +214 -0
  1100. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/map_value.cc +378 -0
  1101. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/map_value.h +323 -0
  1102. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/map_value_builder.h +110 -0
  1103. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/map_value_variant.h +212 -0
  1104. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/message_value.cc +306 -0
  1105. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/message_value.h +268 -0
  1106. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/null_value.cc +78 -0
  1107. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/null_value.h +96 -0
  1108. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/opaque_value.cc +194 -0
  1109. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/opaque_value.h +338 -0
  1110. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/optional_value.cc +435 -0
  1111. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/optional_value.h +207 -0
  1112. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/parsed_json_list_value.cc +486 -0
  1113. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/parsed_json_list_value.h +229 -0
  1114. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/parsed_json_map_value.cc +439 -0
  1115. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/parsed_json_map_value.h +250 -0
  1116. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/parsed_json_value.cc +103 -0
  1117. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/parsed_json_value.h +40 -0
  1118. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/parsed_map_field_value.cc +583 -0
  1119. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/parsed_map_field_value.h +242 -0
  1120. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/parsed_message_value.cc +411 -0
  1121. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/parsed_message_value.h +249 -0
  1122. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/parsed_repeated_field_value.cc +365 -0
  1123. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/parsed_repeated_field_value.h +220 -0
  1124. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/string_value.cc +1518 -0
  1125. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/string_value.h +489 -0
  1126. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/struct_value.cc +390 -0
  1127. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/struct_value.h +373 -0
  1128. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/struct_value_builder.cc +1552 -0
  1129. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/struct_value_builder.h +35 -0
  1130. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/struct_value_variant.h +205 -0
  1131. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/timestamp_value.cc +105 -0
  1132. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/timestamp_value.h +146 -0
  1133. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/type_value.cc +72 -0
  1134. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/type_value.h +108 -0
  1135. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/uint_value.cc +110 -0
  1136. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/uint_value.h +119 -0
  1137. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/unknown_value.cc +66 -0
  1138. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/unknown_value.h +121 -0
  1139. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/value_builder.cc +1432 -0
  1140. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/value_builder.h +36 -0
  1141. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/value_variant.cc +537 -0
  1142. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/value_variant.h +831 -0
  1143. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/values.h +351 -0
  1144. data/ext/protovalidate/sys/third_party/cel-cpp/compiler/compiler.h +195 -0
  1145. data/ext/protovalidate/sys/third_party/cel-cpp/compiler/compiler_factory.h +70 -0
  1146. data/ext/protovalidate/sys/third_party/cel-cpp/compiler/compiler_library_subset_factory.h +80 -0
  1147. data/ext/protovalidate/sys/third_party/cel-cpp/compiler/optional.h +28 -0
  1148. data/ext/protovalidate/sys/third_party/cel-cpp/compiler/standard_library.h +27 -0
  1149. data/ext/protovalidate/sys/third_party/cel-cpp/env/config.h +173 -0
  1150. data/ext/protovalidate/sys/third_party/cel-cpp/env/env.h +76 -0
  1151. data/ext/protovalidate/sys/third_party/cel-cpp/env/env_runtime.h +85 -0
  1152. data/ext/protovalidate/sys/third_party/cel-cpp/env/env_std_extensions.h +42 -0
  1153. data/ext/protovalidate/sys/third_party/cel-cpp/env/env_yaml.h +74 -0
  1154. data/ext/protovalidate/sys/third_party/cel-cpp/env/internal/ext_registry.h +74 -0
  1155. data/ext/protovalidate/sys/third_party/cel-cpp/env/internal/runtime_ext_registry.h +84 -0
  1156. data/ext/protovalidate/sys/third_party/cel-cpp/env/runtime_std_extensions.h +46 -0
  1157. data/ext/protovalidate/sys/third_party/cel-cpp/env/type_info.h +42 -0
  1158. data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/cel_expression_builder_flat_impl.cc +111 -0
  1159. data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/cel_expression_builder_flat_impl.h +108 -0
  1160. data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/check_ast_extensions.cc +58 -0
  1161. data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/check_ast_extensions.h +34 -0
  1162. data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/comprehension_vulnerability_check.cc +275 -0
  1163. data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/comprehension_vulnerability_check.h +51 -0
  1164. data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/constant_folding.cc +280 -0
  1165. data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/constant_folding.h +42 -0
  1166. data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/flat_expr_builder.cc +2667 -0
  1167. data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/flat_expr_builder.h +104 -0
  1168. data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/flat_expr_builder_extensions.cc +474 -0
  1169. data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/flat_expr_builder_extensions.h +481 -0
  1170. data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/instrumentation.h +60 -0
  1171. data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/qualified_reference_resolver.cc +359 -0
  1172. data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/qualified_reference_resolver.h +53 -0
  1173. data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/regex_precompilation_optimization.cc +274 -0
  1174. data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/regex_precompilation_optimization.h +29 -0
  1175. data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/resolver.cc +222 -0
  1176. data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/resolver.h +127 -0
  1177. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/attribute_trail.cc +28 -0
  1178. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/attribute_trail.h +65 -0
  1179. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/attribute_utility.cc +260 -0
  1180. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/attribute_utility.h +179 -0
  1181. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/cel_expression_flat_impl.cc +147 -0
  1182. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/cel_expression_flat_impl.h +175 -0
  1183. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/compiler_constant_step.cc +37 -0
  1184. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/compiler_constant_step.h +76 -0
  1185. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/comprehension_slots.h +153 -0
  1186. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/comprehension_step.cc +685 -0
  1187. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/comprehension_step.h +119 -0
  1188. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/const_value_step.h +31 -0
  1189. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/container_access_step.cc +370 -0
  1190. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/container_access_step.h +26 -0
  1191. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/create_list_step.cc +283 -0
  1192. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/create_list_step.h +40 -0
  1193. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/create_map_step.cc +289 -0
  1194. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/create_map_step.h +59 -0
  1195. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/create_struct_step.cc +270 -0
  1196. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/create_struct_step.h +44 -0
  1197. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/direct_expression_step.cc +34 -0
  1198. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/direct_expression_step.h +99 -0
  1199. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/equality_steps.cc +293 -0
  1200. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/equality_steps.h +45 -0
  1201. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/evaluator_core.cc +178 -0
  1202. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/evaluator_core.h +516 -0
  1203. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/evaluator_stack.cc +92 -0
  1204. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/evaluator_stack.h +327 -0
  1205. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/expression_step_base.h +12 -0
  1206. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/function_step.cc +529 -0
  1207. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/function_step.h +48 -0
  1208. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/ident_step.cc +174 -0
  1209. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/ident_step.h +31 -0
  1210. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/iterator_stack.h +77 -0
  1211. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/jump_step.cc +172 -0
  1212. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/jump_step.h +74 -0
  1213. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/lazy_init_step.cc +236 -0
  1214. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/lazy_init_step.h +87 -0
  1215. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/logic_step.cc +487 -0
  1216. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/logic_step.h +49 -0
  1217. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/optional_or_step.cc +305 -0
  1218. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/optional_or_step.h +51 -0
  1219. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/regex_match_step.cc +135 -0
  1220. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/regex_match_step.h +37 -0
  1221. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/select_step.cc +581 -0
  1222. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/select_step.h +33 -0
  1223. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/shadowable_value_step.cc +98 -0
  1224. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/shadowable_value_step.h +26 -0
  1225. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/ternary_step.cc +194 -0
  1226. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/ternary_step.h +26 -0
  1227. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/trace_step.h +73 -0
  1228. data/ext/protovalidate/sys/third_party/cel-cpp/eval/internal/adapter_activation_impl.cc +87 -0
  1229. data/ext/protovalidate/sys/third_party/cel-cpp/eval/internal/adapter_activation_impl.h +68 -0
  1230. data/ext/protovalidate/sys/third_party/cel-cpp/eval/internal/cel_value_equal.cc +242 -0
  1231. data/ext/protovalidate/sys/third_party/cel-cpp/eval/internal/cel_value_equal.h +34 -0
  1232. data/ext/protovalidate/sys/third_party/cel-cpp/eval/internal/errors.cc +64 -0
  1233. data/ext/protovalidate/sys/third_party/cel-cpp/eval/internal/errors.h +54 -0
  1234. data/ext/protovalidate/sys/third_party/cel-cpp/eval/internal/interop.h +20 -0
  1235. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/activation.cc +119 -0
  1236. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/activation.h +170 -0
  1237. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/activation_bind_helper.h +60 -0
  1238. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/ast_rewrite.h +175 -0
  1239. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/ast_traverse.h +110 -0
  1240. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/ast_visitor.h +185 -0
  1241. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/ast_visitor_base.h +109 -0
  1242. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/base_activation.h +75 -0
  1243. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/builtin_func_registrar.cc +65 -0
  1244. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/builtin_func_registrar.h +30 -0
  1245. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_attribute.cc +90 -0
  1246. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_attribute.h +64 -0
  1247. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_builtins.h +19 -0
  1248. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_expr_builder_factory.cc +146 -0
  1249. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_expr_builder_factory.h +43 -0
  1250. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_expression.h +144 -0
  1251. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_function.cc +76 -0
  1252. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_function.h +80 -0
  1253. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_function_adapter.h +121 -0
  1254. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_function_adapter_impl.h +407 -0
  1255. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_function_registry.cc +122 -0
  1256. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_function_registry.h +146 -0
  1257. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_number.cc +31 -0
  1258. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_number.h +36 -0
  1259. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_options.cc +51 -0
  1260. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_options.h +233 -0
  1261. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_type_registry.cc +64 -0
  1262. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_type_registry.h +145 -0
  1263. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_value.cc +412 -0
  1264. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_value.h +770 -0
  1265. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_value_internal.h +103 -0
  1266. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_value_producer.h +25 -0
  1267. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/comparison_functions.h +36 -0
  1268. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/container_function_registrar.h +36 -0
  1269. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/containers/container_backed_list_impl.h +44 -0
  1270. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/containers/container_backed_map_impl.cc +131 -0
  1271. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/containers/container_backed_map_impl.h +70 -0
  1272. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/containers/field_access.cc +85 -0
  1273. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/containers/field_access.h +70 -0
  1274. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/containers/field_backed_list_impl.h +33 -0
  1275. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/containers/field_backed_map_impl.h +35 -0
  1276. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/containers/internal_field_backed_list_impl.cc +36 -0
  1277. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/containers/internal_field_backed_list_impl.h +59 -0
  1278. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/containers/internal_field_backed_map_impl.cc +298 -0
  1279. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/containers/internal_field_backed_map_impl.h +77 -0
  1280. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/equality_function_registrar.h +44 -0
  1281. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/extension_func_registrar.h +20 -0
  1282. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/logical_function_registrar.h +36 -0
  1283. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/message_wrapper.h +139 -0
  1284. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/portable_cel_function_adapter.h +72 -0
  1285. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/set_util.h +43 -0
  1286. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/source_position.h +65 -0
  1287. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/string_extension_func_registrar.cc +29 -0
  1288. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/string_extension_func_registrar.h +31 -0
  1289. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/cel_proto_descriptor_pool_builder.h +40 -0
  1290. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/cel_proto_wrap_util.cc +1479 -0
  1291. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/cel_proto_wrap_util.h +45 -0
  1292. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/cel_proto_wrapper.cc +60 -0
  1293. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/cel_proto_wrapper.h +53 -0
  1294. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/field_access_impl.cc +746 -0
  1295. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/field_access_impl.h +80 -0
  1296. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/legacy_type_adapter.h +177 -0
  1297. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/legacy_type_info_apis.h +108 -0
  1298. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/legacy_type_provider.cc +232 -0
  1299. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/legacy_type_provider.h +79 -0
  1300. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/proto_message_type_adapter.cc +708 -0
  1301. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/proto_message_type_adapter.h +137 -0
  1302. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/protobuf_descriptor_type_provider.cc +70 -0
  1303. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/protobuf_descriptor_type_provider.h +67 -0
  1304. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/protobuf_value_factory.h +36 -0
  1305. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/trivial_legacy_type_info.h +54 -0
  1306. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/transform_utility.h +39 -0
  1307. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/unknown_attribute_set.h +20 -0
  1308. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/unknown_function_result_set.cc +1 -0
  1309. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/unknown_function_result_set.h +27 -0
  1310. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/unknown_set.h +22 -0
  1311. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/value_export_util.h +28 -0
  1312. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/bindings_ext.h +46 -0
  1313. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/comprehensions_v2.h +39 -0
  1314. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/comprehensions_v2_functions.h +35 -0
  1315. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/comprehensions_v2_macros.h +34 -0
  1316. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/encoders.h +45 -0
  1317. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/formatting.cc +570 -0
  1318. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/formatting.h +39 -0
  1319. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/lists_functions.h +138 -0
  1320. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/math_ext.h +39 -0
  1321. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/math_ext_decls.h +33 -0
  1322. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/math_ext_macros.h +38 -0
  1323. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/proto_ext.h +42 -0
  1324. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/protobuf/ast_converters.h +56 -0
  1325. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/protobuf/bind_proto_to_activation.h +38 -0
  1326. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/protobuf/enum_adapter.h +30 -0
  1327. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/protobuf/internal/map_reflection.cc +132 -0
  1328. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/protobuf/internal/map_reflection.h +67 -0
  1329. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/protobuf/internal/qualify.cc +457 -0
  1330. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/protobuf/internal/qualify.h +117 -0
  1331. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/protobuf/memory_manager.cc +37 -0
  1332. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/protobuf/memory_manager.h +56 -0
  1333. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/protobuf/runtime_adapter.h +51 -0
  1334. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/protobuf/value.h +98 -0
  1335. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/protobuf/value_testing.h +78 -0
  1336. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/regex_ext.h +131 -0
  1337. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/regex_functions.h +52 -0
  1338. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/select_optimization.cc +958 -0
  1339. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/select_optimization.h +90 -0
  1340. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/sets_functions.h +45 -0
  1341. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/strings.cc +432 -0
  1342. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/strings.h +73 -0
  1343. data/ext/protovalidate/sys/third_party/cel-cpp/internal/align.h +95 -0
  1344. data/ext/protovalidate/sys/third_party/cel-cpp/internal/benchmark.h +20 -0
  1345. data/ext/protovalidate/sys/third_party/cel-cpp/internal/casts.h +50 -0
  1346. data/ext/protovalidate/sys/third_party/cel-cpp/internal/empty_descriptors.cc +73 -0
  1347. data/ext/protovalidate/sys/third_party/cel-cpp/internal/empty_descriptors.h +31 -0
  1348. data/ext/protovalidate/sys/third_party/cel-cpp/internal/equals_text_proto.h +65 -0
  1349. data/ext/protovalidate/sys/third_party/cel-cpp/internal/exceptions.h +35 -0
  1350. data/ext/protovalidate/sys/third_party/cel-cpp/internal/json.cc +2041 -0
  1351. data/ext/protovalidate/sys/third_party/cel-cpp/internal/json.h +141 -0
  1352. data/ext/protovalidate/sys/third_party/cel-cpp/internal/lexis.cc +79 -0
  1353. data/ext/protovalidate/sys/third_party/cel-cpp/internal/lexis.h +32 -0
  1354. data/ext/protovalidate/sys/third_party/cel-cpp/internal/manual.h +91 -0
  1355. data/ext/protovalidate/sys/third_party/cel-cpp/internal/message_equality.cc +1490 -0
  1356. data/ext/protovalidate/sys/third_party/cel-cpp/internal/message_equality.h +54 -0
  1357. data/ext/protovalidate/sys/third_party/cel-cpp/internal/message_type_name.h +56 -0
  1358. data/ext/protovalidate/sys/third_party/cel-cpp/internal/minimal_descriptor_database.h +32 -0
  1359. data/ext/protovalidate/sys/third_party/cel-cpp/internal/minimal_descriptor_pool.h +40 -0
  1360. data/ext/protovalidate/sys/third_party/cel-cpp/internal/names.h +26 -0
  1361. data/ext/protovalidate/sys/third_party/cel-cpp/internal/new.cc +142 -0
  1362. data/ext/protovalidate/sys/third_party/cel-cpp/internal/new.h +61 -0
  1363. data/ext/protovalidate/sys/third_party/cel-cpp/internal/noop_delete.h +53 -0
  1364. data/ext/protovalidate/sys/third_party/cel-cpp/internal/number.h +299 -0
  1365. data/ext/protovalidate/sys/third_party/cel-cpp/internal/overflow.cc +339 -0
  1366. data/ext/protovalidate/sys/third_party/cel-cpp/internal/overflow.h +178 -0
  1367. data/ext/protovalidate/sys/third_party/cel-cpp/internal/parse_text_proto.h +121 -0
  1368. data/ext/protovalidate/sys/third_party/cel-cpp/internal/proto_file_util.h +73 -0
  1369. data/ext/protovalidate/sys/third_party/cel-cpp/internal/proto_matchers.h +140 -0
  1370. data/ext/protovalidate/sys/third_party/cel-cpp/internal/proto_time_encoding.cc +103 -0
  1371. data/ext/protovalidate/sys/third_party/cel-cpp/internal/proto_time_encoding.h +49 -0
  1372. data/ext/protovalidate/sys/third_party/cel-cpp/internal/proto_util.h +87 -0
  1373. data/ext/protovalidate/sys/third_party/cel-cpp/internal/protobuf_runtime_version.h +32 -0
  1374. data/ext/protovalidate/sys/third_party/cel-cpp/internal/re2_options.h +61 -0
  1375. data/ext/protovalidate/sys/third_party/cel-cpp/internal/runfiles.h +36 -0
  1376. data/ext/protovalidate/sys/third_party/cel-cpp/internal/status_builder.h +114 -0
  1377. data/ext/protovalidate/sys/third_party/cel-cpp/internal/status_macros.h +152 -0
  1378. data/ext/protovalidate/sys/third_party/cel-cpp/internal/string_pool.cc +79 -0
  1379. data/ext/protovalidate/sys/third_party/cel-cpp/internal/string_pool.h +59 -0
  1380. data/ext/protovalidate/sys/third_party/cel-cpp/internal/strings.cc +693 -0
  1381. data/ext/protovalidate/sys/third_party/cel-cpp/internal/strings.h +90 -0
  1382. data/ext/protovalidate/sys/third_party/cel-cpp/internal/testing.h +44 -0
  1383. data/ext/protovalidate/sys/third_party/cel-cpp/internal/testing_descriptor_pool.h +35 -0
  1384. data/ext/protovalidate/sys/third_party/cel-cpp/internal/testing_message_factory.h +31 -0
  1385. data/ext/protovalidate/sys/third_party/cel-cpp/internal/time.cc +198 -0
  1386. data/ext/protovalidate/sys/third_party/cel-cpp/internal/time.h +65 -0
  1387. data/ext/protovalidate/sys/third_party/cel-cpp/internal/to_address.h +68 -0
  1388. data/ext/protovalidate/sys/third_party/cel-cpp/internal/unicode.h +28 -0
  1389. data/ext/protovalidate/sys/third_party/cel-cpp/internal/utf8.cc +526 -0
  1390. data/ext/protovalidate/sys/third_party/cel-cpp/internal/utf8.h +82 -0
  1391. data/ext/protovalidate/sys/third_party/cel-cpp/internal/well_known_types.cc +2181 -0
  1392. data/ext/protovalidate/sys/third_party/cel-cpp/internal/well_known_types.h +1593 -0
  1393. data/ext/protovalidate/sys/third_party/cel-cpp/parser/internal/ast_factory.cc +320 -0
  1394. data/ext/protovalidate/sys/third_party/cel-cpp/parser/internal/ast_factory.h +174 -0
  1395. data/ext/protovalidate/sys/third_party/cel-cpp/parser/internal/ast_factory_interface.h +130 -0
  1396. data/ext/protovalidate/sys/third_party/cel-cpp/parser/internal/lexer.cc +711 -0
  1397. data/ext/protovalidate/sys/third_party/cel-cpp/parser/internal/lexer.h +286 -0
  1398. data/ext/protovalidate/sys/third_party/cel-cpp/parser/internal/options.h +29 -0
  1399. data/ext/protovalidate/sys/third_party/cel-cpp/parser/internal/pratt_parser.cc +226 -0
  1400. data/ext/protovalidate/sys/third_party/cel-cpp/parser/internal/pratt_parser.h +110 -0
  1401. data/ext/protovalidate/sys/third_party/cel-cpp/parser/internal/pratt_parser_worker.cc +261 -0
  1402. data/ext/protovalidate/sys/third_party/cel-cpp/parser/internal/pratt_parser_worker.h +1143 -0
  1403. data/ext/protovalidate/sys/third_party/cel-cpp/parser/macro.cc +561 -0
  1404. data/ext/protovalidate/sys/third_party/cel-cpp/parser/macro.h +229 -0
  1405. data/ext/protovalidate/sys/third_party/cel-cpp/parser/macro_expr_factory.cc +128 -0
  1406. data/ext/protovalidate/sys/third_party/cel-cpp/parser/macro_expr_factory.h +333 -0
  1407. data/ext/protovalidate/sys/third_party/cel-cpp/parser/macro_registry.cc +87 -0
  1408. data/ext/protovalidate/sys/third_party/cel-cpp/parser/macro_registry.h +59 -0
  1409. data/ext/protovalidate/sys/third_party/cel-cpp/parser/options.h +115 -0
  1410. data/ext/protovalidate/sys/third_party/cel-cpp/parser/parser.cc +1995 -0
  1411. data/ext/protovalidate/sys/third_party/cel-cpp/parser/parser.h +102 -0
  1412. data/ext/protovalidate/sys/third_party/cel-cpp/parser/parser_interface.h +160 -0
  1413. data/ext/protovalidate/sys/third_party/cel-cpp/parser/parser_subset_factory.h +41 -0
  1414. data/ext/protovalidate/sys/third_party/cel-cpp/parser/source_factory.h +47 -0
  1415. data/ext/protovalidate/sys/third_party/cel-cpp/parser/standard_macros.h +31 -0
  1416. data/ext/protovalidate/sys/third_party/cel-cpp/policy/cel_policy.h +333 -0
  1417. data/ext/protovalidate/sys/third_party/cel-cpp/policy/cel_policy_parse_context.h +65 -0
  1418. data/ext/protovalidate/sys/third_party/cel-cpp/policy/cel_policy_parse_result.h +105 -0
  1419. data/ext/protovalidate/sys/third_party/cel-cpp/policy/cel_policy_parser.h +40 -0
  1420. data/ext/protovalidate/sys/third_party/cel-cpp/policy/cel_policy_validation_result.h +84 -0
  1421. data/ext/protovalidate/sys/third_party/cel-cpp/policy/compiler.h +50 -0
  1422. data/ext/protovalidate/sys/third_party/cel-cpp/policy/internal/issue_reporter.h +57 -0
  1423. data/ext/protovalidate/sys/third_party/cel-cpp/policy/internal/optimizer_expr_factory.h +419 -0
  1424. data/ext/protovalidate/sys/third_party/cel-cpp/policy/internal/yaml_string_element_scanner.h +40 -0
  1425. data/ext/protovalidate/sys/third_party/cel-cpp/policy/test_util.h +33 -0
  1426. data/ext/protovalidate/sys/third_party/cel-cpp/policy/yaml_policy_parser.h +135 -0
  1427. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/activation.cc +141 -0
  1428. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/activation.h +184 -0
  1429. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/activation_interface.h +109 -0
  1430. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/bind_proto_to_activation.h +174 -0
  1431. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/comprehension_vulnerability_check.h +35 -0
  1432. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/constant_folding.h +69 -0
  1433. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/embedder_context.h +147 -0
  1434. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/function.h +115 -0
  1435. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/function_adapter.h +830 -0
  1436. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/function_overload_reference.h +34 -0
  1437. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/function_provider.h +46 -0
  1438. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/function_registry.cc +263 -0
  1439. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/function_registry.h +160 -0
  1440. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/activation_attribute_matcher_access.cc +61 -0
  1441. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/activation_attribute_matcher_access.h +60 -0
  1442. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/attribute_matcher.h +48 -0
  1443. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/convert_constant.cc +78 -0
  1444. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/convert_constant.h +39 -0
  1445. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/errors.cc +69 -0
  1446. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/errors.h +71 -0
  1447. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/function_adapter.h +232 -0
  1448. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/issue_collector.h +64 -0
  1449. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/legacy_runtime_type_provider.h +37 -0
  1450. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/runtime_env.cc +73 -0
  1451. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/runtime_env.h +134 -0
  1452. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/runtime_env_testing.h +60 -0
  1453. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/runtime_friend_access.h +45 -0
  1454. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/runtime_impl.cc +159 -0
  1455. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/runtime_impl.h +125 -0
  1456. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/runtime_type_provider.cc +96 -0
  1457. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/runtime_type_provider.h +66 -0
  1458. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/optional_types.h +152 -0
  1459. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/reference_resolver.h +46 -0
  1460. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/regex_precompilation.h +32 -0
  1461. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/register_function_helper.h +99 -0
  1462. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/runtime.h +229 -0
  1463. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/runtime_builder.h +101 -0
  1464. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/runtime_builder_factory.h +65 -0
  1465. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/runtime_issue.h +88 -0
  1466. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/runtime_options.h +209 -0
  1467. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/arithmetic_functions.cc +233 -0
  1468. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/arithmetic_functions.h +35 -0
  1469. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/comparison_functions.cc +272 -0
  1470. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/comparison_functions.h +36 -0
  1471. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/container_functions.cc +136 -0
  1472. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/container_functions.h +36 -0
  1473. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/container_membership_functions.cc +331 -0
  1474. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/container_membership_functions.h +34 -0
  1475. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/equality_functions.cc +612 -0
  1476. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/equality_functions.h +60 -0
  1477. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/logical_functions.cc +66 -0
  1478. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/logical_functions.h +36 -0
  1479. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/regex_functions.cc +56 -0
  1480. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/regex_functions.h +38 -0
  1481. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/string_functions.cc +140 -0
  1482. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/string_functions.h +34 -0
  1483. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/time_functions.cc +499 -0
  1484. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/time_functions.h +56 -0
  1485. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/type_conversion_functions.cc +470 -0
  1486. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/type_conversion_functions.h +34 -0
  1487. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard_functions.h +33 -0
  1488. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard_runtime_builder_factory.h +43 -0
  1489. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/type_registry.cc +84 -0
  1490. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/type_registry.h +155 -0
  1491. data/ext/protovalidate/sys/third_party/cel-cpp/tools/branch_coverage.h +68 -0
  1492. data/ext/protovalidate/sys/third_party/cel-cpp/tools/cel_field_extractor.h +70 -0
  1493. data/ext/protovalidate/sys/third_party/cel-cpp/tools/cel_unparser.h +60 -0
  1494. data/ext/protovalidate/sys/third_party/cel-cpp/tools/descriptor_pool_builder.h +93 -0
  1495. data/ext/protovalidate/sys/third_party/cel-cpp/tools/flatbuffers_backed_impl.h +58 -0
  1496. data/ext/protovalidate/sys/third_party/cel-cpp/tools/navigable_ast.h +169 -0
  1497. data/ext/protovalidate/sys/third_party/cel-cpp/tools/proto_to_predicate.h +48 -0
  1498. data/ext/protovalidate/sys/third_party/cel-cpp/validator/ast_depth_validator.h +27 -0
  1499. data/ext/protovalidate/sys/third_party/cel-cpp/validator/comprehension_nesting_validator.h +31 -0
  1500. data/ext/protovalidate/sys/third_party/cel-cpp/validator/homogeneous_literal_validator.h +38 -0
  1501. data/ext/protovalidate/sys/third_party/cel-cpp/validator/regex_validator.h +53 -0
  1502. data/ext/protovalidate/sys/third_party/cel-cpp/validator/timestamp_literal_validator.h +29 -0
  1503. data/ext/protovalidate/sys/third_party/cel-cpp/validator/validator.cc +85 -0
  1504. data/ext/protovalidate/sys/third_party/cel-cpp/validator/validator.h +151 -0
  1505. data/ext/protovalidate/sys/third_party/protobuf/LICENSE +32 -0
  1506. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/any.cc +65 -0
  1507. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/any.h +161 -0
  1508. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/any.pb.cc +528 -0
  1509. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/any.pb.h +516 -0
  1510. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/any_lite.cc +95 -0
  1511. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/api.pb.cc +1959 -0
  1512. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/api.pb.h +1985 -0
  1513. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/arena.cc +1004 -0
  1514. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/arena.h +1238 -0
  1515. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/arena_align.cc +21 -0
  1516. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/arena_align.h +199 -0
  1517. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/arena_allocation_policy.h +102 -0
  1518. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/arena_cleanup.h +108 -0
  1519. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/arena_test_util.h +91 -0
  1520. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/arenastring.cc +290 -0
  1521. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/arenastring.h +545 -0
  1522. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/arenaz_sampler.cc +227 -0
  1523. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/arenaz_sampler.h +238 -0
  1524. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/annotation_test_util.h +105 -0
  1525. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/code_generator.h +256 -0
  1526. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/code_generator_lite.h +77 -0
  1527. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/command_line_interface.h +517 -0
  1528. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/command_line_interface_tester.h +162 -0
  1529. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/importer.cc +594 -0
  1530. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/importer.h +338 -0
  1531. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/mock_code_generator.h +144 -0
  1532. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/notices.h +242 -0
  1533. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/package_info.h +40 -0
  1534. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/parser.cc +2716 -0
  1535. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/parser.h +642 -0
  1536. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/plugin.h +73 -0
  1537. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/plugin.pb.h +2320 -0
  1538. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/retention.h +70 -0
  1539. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/scc.h +155 -0
  1540. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/subprocess.h +91 -0
  1541. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/versions.h +78 -0
  1542. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/zip_writer.h +45 -0
  1543. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/cpp_edition_defaults.h +12 -0
  1544. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/cpp_features.pb.cc +539 -0
  1545. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/cpp_features.pb.h +630 -0
  1546. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/descriptor.cc +10801 -0
  1547. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/descriptor.h +3417 -0
  1548. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/descriptor.pb.cc +18982 -0
  1549. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/descriptor.pb.h +23170 -0
  1550. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/descriptor_database.cc +1102 -0
  1551. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/descriptor_database.h +423 -0
  1552. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/descriptor_legacy.h +32 -0
  1553. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/descriptor_lite.h +110 -0
  1554. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/descriptor_test_utils.h +129 -0
  1555. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/descriptor_visitor.h +187 -0
  1556. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/duration.pb.cc +481 -0
  1557. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/duration.pb.h +367 -0
  1558. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/dynamic_message.cc +1104 -0
  1559. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/dynamic_message.h +217 -0
  1560. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/empty.pb.cc +285 -0
  1561. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/empty.pb.h +245 -0
  1562. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/endian.h +192 -0
  1563. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/explicitly_constructed.h +71 -0
  1564. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/extension_set.cc +1925 -0
  1565. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/extension_set.h +1886 -0
  1566. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/extension_set_heavy.cc +459 -0
  1567. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/extension_set_inl.h +274 -0
  1568. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/feature_resolver.cc +637 -0
  1569. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/feature_resolver.h +108 -0
  1570. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/field_access_listener.h +166 -0
  1571. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/field_mask.pb.cc +472 -0
  1572. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/field_mask.pb.h +396 -0
  1573. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/field_with_arena.h +110 -0
  1574. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_enum_reflection.h +187 -0
  1575. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_enum_util.cc +223 -0
  1576. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_enum_util.h +185 -0
  1577. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_message_bases.cc +88 -0
  1578. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_message_bases.h +68 -0
  1579. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_message_reflection.cc +4185 -0
  1580. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_message_reflection.h +372 -0
  1581. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_message_tctable_decl.h +615 -0
  1582. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_message_tctable_full.cc +105 -0
  1583. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_message_tctable_gen.cc +960 -0
  1584. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_message_tctable_gen.h +193 -0
  1585. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_message_tctable_impl.h +1229 -0
  1586. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_message_tctable_lite.cc +3308 -0
  1587. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_message_util.cc +434 -0
  1588. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_message_util.h +445 -0
  1589. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/has_bits.h +138 -0
  1590. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/implicit_weak_message.cc +139 -0
  1591. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/implicit_weak_message.h +266 -0
  1592. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/inlined_string_field.cc +144 -0
  1593. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/inlined_string_field.h +379 -0
  1594. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/internal_feature_helper.cc +28 -0
  1595. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/internal_feature_helper.h +130 -0
  1596. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/internal_metadata_locator.h +291 -0
  1597. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/internal_visibility.h +55 -0
  1598. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/internal_visibility_for_testing.h +27 -0
  1599. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/coded_stream.cc +1045 -0
  1600. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/coded_stream.h +1885 -0
  1601. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/gzip_stream.cc +333 -0
  1602. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/gzip_stream.h +189 -0
  1603. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/io_win32.cc +450 -0
  1604. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/io_win32.h +118 -0
  1605. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/package_info.h +30 -0
  1606. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/printer.cc +842 -0
  1607. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/printer.h +1183 -0
  1608. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/strtod.cc +260 -0
  1609. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/strtod.h +57 -0
  1610. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/test_zero_copy_stream.h +185 -0
  1611. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/tokenizer.cc +1262 -0
  1612. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/tokenizer.h +441 -0
  1613. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/zero_copy_sink.cc +45 -0
  1614. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/zero_copy_sink.h +59 -0
  1615. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/zero_copy_stream.cc +128 -0
  1616. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/zero_copy_stream.h +269 -0
  1617. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/zero_copy_stream_impl.cc +354 -0
  1618. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/zero_copy_stream_impl.h +319 -0
  1619. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.cc +699 -0
  1620. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.h +533 -0
  1621. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/descriptor_traits.h +510 -0
  1622. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/lexer.cc +512 -0
  1623. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/lexer.h +341 -0
  1624. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/message_path.cc +46 -0
  1625. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/message_path.h +61 -0
  1626. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/parser.cc +1437 -0
  1627. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/parser.h +37 -0
  1628. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/parser_traits.h +400 -0
  1629. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/unparser.cc +915 -0
  1630. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/unparser.h +38 -0
  1631. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/unparser_traits.h +414 -0
  1632. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/untyped_message.cc +577 -0
  1633. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/untyped_message.h +246 -0
  1634. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/writer.cc +307 -0
  1635. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/writer.h +214 -0
  1636. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/zero_copy_buffered_stream.cc +152 -0
  1637. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/zero_copy_buffered_stream.h +338 -0
  1638. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/json.cc +137 -0
  1639. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/json.h +200 -0
  1640. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/map.cc +297 -0
  1641. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/map.h +1787 -0
  1642. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/map_entry.h +139 -0
  1643. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/map_field.cc +597 -0
  1644. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/map_field.h +925 -0
  1645. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/map_field_lite.h +124 -0
  1646. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/map_test.inc +4427 -0
  1647. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/map_test_util.h +617 -0
  1648. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/map_type_handler.h +374 -0
  1649. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/message.cc +745 -0
  1650. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/message.h +1936 -0
  1651. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/message_lite.cc +807 -0
  1652. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/message_lite.h +1861 -0
  1653. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/message_unittest.inc +2302 -0
  1654. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/message_unittest_legacy_apis.inc +98 -0
  1655. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/metadata.h +13 -0
  1656. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/metadata_lite.h +271 -0
  1657. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/micro_string.cc +376 -0
  1658. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/micro_string.h +649 -0
  1659. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/os_macros_restore.inc +97 -0
  1660. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/os_macros_undef.inc +166 -0
  1661. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/package_info.h +43 -0
  1662. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/parse_context.cc +850 -0
  1663. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/parse_context.h +1883 -0
  1664. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/port.cc +131 -0
  1665. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/port.h +908 -0
  1666. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/port_def.inc +820 -0
  1667. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/port_undef.inc +97 -0
  1668. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/proto3_lite_unittest.inc +127 -0
  1669. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/raw_ptr.cc +29 -0
  1670. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/raw_ptr.h +64 -0
  1671. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/reflection.h +603 -0
  1672. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/reflection_internal.h +313 -0
  1673. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/reflection_mode.cc +36 -0
  1674. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/reflection_mode.h +144 -0
  1675. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/reflection_ops.cc +456 -0
  1676. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/reflection_ops.h +67 -0
  1677. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/reflection_tester.h +127 -0
  1678. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/reflection_visit_field_info.h +1378 -0
  1679. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/reflection_visit_fields.h +511 -0
  1680. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/repeated_field.cc +76 -0
  1681. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/repeated_field.h +1814 -0
  1682. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/repeated_field_proxy.h +697 -0
  1683. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/repeated_field_proxy_iterator.h +236 -0
  1684. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/repeated_field_proxy_traits.h +100 -0
  1685. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/repeated_field_reflection_unittest.inc +687 -0
  1686. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/repeated_ptr_field.cc +251 -0
  1687. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/repeated_ptr_field.h +2706 -0
  1688. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/runtime_version.h +27 -0
  1689. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/serial_arena.h +447 -0
  1690. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/service.cc +22 -0
  1691. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/service.h +271 -0
  1692. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/source_context.pb.cc +463 -0
  1693. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/source_context.pb.h +376 -0
  1694. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/string_block.h +181 -0
  1695. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/string_member_robber.h +17 -0
  1696. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/struct.pb.cc +1663 -0
  1697. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/struct.pb.h +1426 -0
  1698. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/stubs/callback.h +584 -0
  1699. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/stubs/common.cc +121 -0
  1700. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/stubs/common.h +94 -0
  1701. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/stubs/platform_macros.h +115 -0
  1702. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/stubs/port.h +228 -0
  1703. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/stubs/status_macros.h +72 -0
  1704. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/symbol_checker.cc +219 -0
  1705. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/symbol_checker.h +142 -0
  1706. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/test_textproto.h +54 -0
  1707. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/test_util.h +3897 -0
  1708. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/test_util2.h +70 -0
  1709. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/test_util_lite.h +86 -0
  1710. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/text_format.cc +3324 -0
  1711. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/text_format.h +925 -0
  1712. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/thread_safe_arena.h +297 -0
  1713. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/timestamp.pb.cc +481 -0
  1714. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/timestamp.pb.h +367 -0
  1715. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/type.pb.cc +3129 -0
  1716. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/type.pb.h +3343 -0
  1717. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/unknown_field_set.cc +351 -0
  1718. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/unknown_field_set.h +464 -0
  1719. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/delimited_message_util.cc +107 -0
  1720. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/delimited_message_util.h +85 -0
  1721. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/field_comparator.cc +237 -0
  1722. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/field_comparator.h +256 -0
  1723. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/field_mask_util.cc +754 -0
  1724. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/field_mask_util.h +242 -0
  1725. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/internal_timeval.h +28 -0
  1726. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/json_util.h +34 -0
  1727. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/message_differencer.cc +2372 -0
  1728. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/message_differencer.h +1002 -0
  1729. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/package_info.h +23 -0
  1730. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/python/field_mask_util_clif_aux.h +32 -0
  1731. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/time_util.cc +563 -0
  1732. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/time_util.h +297 -0
  1733. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/type_resolver.h +56 -0
  1734. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/type_resolver_util.cc +436 -0
  1735. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/type_resolver_util.h +45 -0
  1736. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/varint_shuffle.h +165 -0
  1737. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/wire_format.cc +1785 -0
  1738. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/wire_format.h +374 -0
  1739. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/wire_format_lite.cc +901 -0
  1740. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/wire_format_lite.h +1720 -0
  1741. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/wire_format_unittest.h +1726 -0
  1742. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/wrappers.pb.cc +3203 -0
  1743. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/wrappers.pb.h +2317 -0
  1744. data/ext/protovalidate/sys/third_party/protobuf/third_party/utf8_range/utf8_range.c +207 -0
  1745. data/ext/protovalidate/sys/third_party/protobuf/third_party/utf8_range/utf8_range.h +23 -0
  1746. data/ext/protovalidate/sys/third_party/protobuf/third_party/utf8_range/utf8_range_neon.inc +117 -0
  1747. data/ext/protovalidate/sys/third_party/protobuf/third_party/utf8_range/utf8_range_sse.inc +272 -0
  1748. data/ext/protovalidate/sys/third_party/protobuf/third_party/utf8_range/utf8_validity.h +30 -0
  1749. data/ext/protovalidate/sys/third_party/protovalidate-cc/LICENSE +201 -0
  1750. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/cel_rules.h +116 -0
  1751. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/cel_validation_rules.cc +166 -0
  1752. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/cel_validation_rules.h +72 -0
  1753. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/extra_func.cc +482 -0
  1754. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/extra_func.h +31 -0
  1755. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/field_rules.cc +388 -0
  1756. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/field_rules.h +92 -0
  1757. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/lib/ipv4.cc +69 -0
  1758. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/lib/ipv4.h +58 -0
  1759. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/lib/ipv6.cc +143 -0
  1760. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/lib/ipv6.h +51 -0
  1761. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/lib/parser_common.h +256 -0
  1762. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/lib/uri.cc +469 -0
  1763. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/lib/uri.h +25 -0
  1764. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/message_factory.cc +31 -0
  1765. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/message_factory.h +43 -0
  1766. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/message_rules.cc +114 -0
  1767. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/message_rules.h +39 -0
  1768. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/proto_field.h +155 -0
  1769. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/rules.cc +437 -0
  1770. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/rules.h +221 -0
  1771. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/validation_rules.h +153 -0
  1772. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/validator.cc +190 -0
  1773. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/validator.h +156 -0
  1774. data/ext/protovalidate/sys/third_party/re2/LICENSE +27 -0
  1775. data/ext/protovalidate/sys/third_party/re2/re2/bitmap256.cc +43 -0
  1776. data/ext/protovalidate/sys/third_party/re2/re2/bitmap256.h +88 -0
  1777. data/ext/protovalidate/sys/third_party/re2/re2/bitstate.cc +389 -0
  1778. data/ext/protovalidate/sys/third_party/re2/re2/compile.cc +1265 -0
  1779. data/ext/protovalidate/sys/third_party/re2/re2/dfa.cc +2135 -0
  1780. data/ext/protovalidate/sys/third_party/re2/re2/filtered_re2.cc +138 -0
  1781. data/ext/protovalidate/sys/third_party/re2/re2/filtered_re2.h +115 -0
  1782. data/ext/protovalidate/sys/third_party/re2/re2/mimics_pcre.cc +196 -0
  1783. data/ext/protovalidate/sys/third_party/re2/re2/nfa.cc +714 -0
  1784. data/ext/protovalidate/sys/third_party/re2/re2/onepass.cc +623 -0
  1785. data/ext/protovalidate/sys/third_party/re2/re2/parse.cc +2529 -0
  1786. data/ext/protovalidate/sys/third_party/re2/re2/perl_groups.cc +119 -0
  1787. data/ext/protovalidate/sys/third_party/re2/re2/pod_array.h +55 -0
  1788. data/ext/protovalidate/sys/third_party/re2/re2/prefilter.cc +711 -0
  1789. data/ext/protovalidate/sys/third_party/re2/re2/prefilter.h +168 -0
  1790. data/ext/protovalidate/sys/third_party/re2/re2/prefilter_tree.cc +376 -0
  1791. data/ext/protovalidate/sys/third_party/re2/re2/prefilter_tree.h +153 -0
  1792. data/ext/protovalidate/sys/third_party/re2/re2/prog.cc +1181 -0
  1793. data/ext/protovalidate/sys/third_party/re2/re2/prog.h +493 -0
  1794. data/ext/protovalidate/sys/third_party/re2/re2/re2.cc +1355 -0
  1795. data/ext/protovalidate/sys/third_party/re2/re2/re2.h +1074 -0
  1796. data/ext/protovalidate/sys/third_party/re2/re2/regexp.cc +1004 -0
  1797. data/ext/protovalidate/sys/third_party/re2/re2/regexp.h +693 -0
  1798. data/ext/protovalidate/sys/third_party/re2/re2/set.cc +185 -0
  1799. data/ext/protovalidate/sys/third_party/re2/re2/set.h +91 -0
  1800. data/ext/protovalidate/sys/third_party/re2/re2/simplify.cc +689 -0
  1801. data/ext/protovalidate/sys/third_party/re2/re2/sparse_array.h +394 -0
  1802. data/ext/protovalidate/sys/third_party/re2/re2/sparse_set.h +266 -0
  1803. data/ext/protovalidate/sys/third_party/re2/re2/stringpiece.h +18 -0
  1804. data/ext/protovalidate/sys/third_party/re2/re2/tostring.cc +351 -0
  1805. data/ext/protovalidate/sys/third_party/re2/re2/unicode_casefold.cc +604 -0
  1806. data/ext/protovalidate/sys/third_party/re2/re2/unicode_casefold.h +77 -0
  1807. data/ext/protovalidate/sys/third_party/re2/re2/unicode_groups.cc +6517 -0
  1808. data/ext/protovalidate/sys/third_party/re2/re2/unicode_groups.h +66 -0
  1809. data/ext/protovalidate/sys/third_party/re2/re2/walker-inl.h +249 -0
  1810. data/ext/protovalidate/sys/third_party/re2/util/malloc_counter.h +19 -0
  1811. data/ext/protovalidate/sys/third_party/re2/util/pcre.h +671 -0
  1812. data/ext/protovalidate/sys/third_party/re2/util/rune.cc +260 -0
  1813. data/ext/protovalidate/sys/third_party/re2/util/strutil.cc +26 -0
  1814. data/ext/protovalidate/sys/third_party/re2/util/strutil.h +16 -0
  1815. data/ext/protovalidate/sys/third_party/re2/util/utf.h +44 -0
  1816. data/ext/protovalidate/sys/versions.json +15 -0
  1817. data/lib/buf/validate/validate_pb.rb +55 -0
  1818. data/lib/protovalidate/errors.rb +32 -0
  1819. data/lib/protovalidate/native.rb +30 -0
  1820. data/lib/protovalidate/validator.rb +96 -0
  1821. data/lib/protovalidate/version.rb +10 -0
  1822. data/lib/protovalidate/violation.rb +115 -0
  1823. data/lib/protovalidate.rb +48 -0
  1824. data/sig/buf/validate/validate_pb.rbs +64 -0
  1825. data/sig/protovalidate/native.rbs +14 -0
  1826. data/sig/protovalidate.rbs +90 -0
  1827. metadata +1900 -0
@@ -0,0 +1,1883 @@
1
+ // Protocol Buffers - Google's data interchange format
2
+ // Copyright 2008 Google Inc. All rights reserved.
3
+ //
4
+ // Use of this source code is governed by a BSD-style
5
+ // license that can be found in the LICENSE file or at
6
+ // https://developers.google.com/open-source/licenses/bsd
7
+
8
+ #ifndef GOOGLE_PROTOBUF_PARSE_CONTEXT_H__
9
+ #define GOOGLE_PROTOBUF_PARSE_CONTEXT_H__
10
+
11
+ #include <algorithm>
12
+ #include <climits>
13
+ #include <cstddef>
14
+ #include <cstdint>
15
+ #include <cstring>
16
+ #include <limits>
17
+ #include <string>
18
+ #include <type_traits>
19
+ #include <utility>
20
+
21
+ #include "absl/base/casts.h"
22
+ #include "absl/base/config.h"
23
+ #include "absl/base/prefetch.h"
24
+ #include "absl/log/absl_check.h"
25
+ #include "absl/log/absl_log.h"
26
+ #include "absl/strings/cord.h"
27
+ #include "absl/strings/internal/resize_uninitialized.h"
28
+ #include "absl/strings/string_view.h"
29
+ #include "absl/types/span.h"
30
+ #include "google/protobuf/arena.h"
31
+ #include "google/protobuf/arenastring.h"
32
+ #include "google/protobuf/endian.h"
33
+ #include "google/protobuf/inlined_string_field.h"
34
+ #include "google/protobuf/io/coded_stream.h"
35
+ #include "google/protobuf/io/zero_copy_stream.h"
36
+ #include "google/protobuf/message_lite.h"
37
+ #include "google/protobuf/metadata_lite.h"
38
+ #include "google/protobuf/micro_string.h"
39
+ #include "google/protobuf/port.h"
40
+ #include "google/protobuf/repeated_field.h"
41
+ #include "google/protobuf/repeated_ptr_field.h"
42
+ #include "google/protobuf/wire_format_lite.h"
43
+ #include "utf8_validity.h"
44
+
45
+
46
+ // Must be included last.
47
+ #include "google/protobuf/port_def.inc"
48
+
49
+
50
+ namespace google {
51
+ namespace protobuf {
52
+
53
+ class UnknownFieldSet;
54
+ class DescriptorPool;
55
+ class MessageFactory;
56
+
57
+ namespace internal {
58
+
59
+ class LazyField;
60
+
61
+ // Template code below needs to know about the existence of these functions.
62
+ PROTOBUF_EXPORT void WriteVarint(uint32_t num, uint64_t val, std::string* s);
63
+ PROTOBUF_EXPORT void WriteLengthDelimited(uint32_t num, absl::string_view val,
64
+ std::string* s);
65
+ // Inline because it is just forwarding to s->WriteVarint
66
+ inline void WriteVarint(uint32_t num, uint64_t val, UnknownFieldSet* unknown);
67
+ inline void WriteLengthDelimited(uint32_t num, absl::string_view val,
68
+ UnknownFieldSet* unknown);
69
+
70
+ // Counts the number of varints in the array, assuming that end - ptr >= 8.
71
+ // If varints are valid only up to some point, then returns at least the number
72
+ // of valid varints.
73
+ int CountVarintsAssumingLargeArray(const char* ptr, const char* end);
74
+
75
+ // Checks if each byte in the array is a valid representation for a bool, i.e.
76
+ // 0 or 1, assuming that end - ptr >= 8. Optimized for the result being true.
77
+ bool VerifyBoolsAssumingLargeArray(const char* ptr, const char* end);
78
+
79
+
80
+ // The basic abstraction the parser is designed for is a slight modification
81
+ // of the ZeroCopyInputStream (ZCIS) abstraction. A ZCIS presents a serialized
82
+ // stream as a series of buffers that concatenate to the full stream.
83
+ // Pictorially a ZCIS presents a stream in chunks like so
84
+ // [---------------------------------------------------------------]
85
+ // [---------------------] chunk 1
86
+ // [----------------------------] chunk 2
87
+ // chunk 3 [--------------]
88
+ //
89
+ // Where the '-' represent the bytes which are vertically lined up with the
90
+ // bytes of the stream. The proto parser requires its input to be presented
91
+ // similarly with the extra
92
+ // property that each chunk has kSlopBytes past its end that overlaps with the
93
+ // first kSlopBytes of the next chunk, or if there is no next chunk at least its
94
+ // still valid to read those bytes. Again, pictorially, we now have
95
+ //
96
+ // [---------------------------------------------------------------]
97
+ // [-------------------....] chunk 1
98
+ // [------------------------....] chunk 2
99
+ // chunk 3 [------------------..**]
100
+ // chunk 4 [--****]
101
+ // Here '-' mean the bytes of the stream or chunk and '.' means bytes past the
102
+ // chunk that match up with the start of the next chunk. Above each chunk has
103
+ // 4 '.' after the chunk. In the case these 'overflow' bytes represents bytes
104
+ // past the stream, indicated by '*' above, their values are unspecified. It is
105
+ // still legal to read them (ie. should not segfault). Reading past the
106
+ // end should be detected by the user and indicated as an error.
107
+ //
108
+ // The reason for this, admittedly, unconventional invariant is to ruthlessly
109
+ // optimize the protobuf parser. Having an overlap helps in two important ways.
110
+ // Firstly it alleviates having to performing bounds checks if a piece of code
111
+ // is guaranteed to not read more than kSlopBytes. Secondly, and more
112
+ // importantly, the protobuf wireformat is such that reading a key/value pair is
113
+ // always less than 16 bytes. This removes the need to change to next buffer in
114
+ // the middle of reading primitive values. Hence there is no need to store and
115
+ // load the current position.
116
+
117
+ class PROTOBUF_EXPORT EpsCopyInputStream {
118
+ public:
119
+ enum { kMaxCordBytesToCopy = 512 };
120
+ explicit EpsCopyInputStream(bool enable_aliasing)
121
+ : aliasing_(enable_aliasing ? kOnPatch : kNoAliasing) {}
122
+
123
+ void BackUp(const char* ptr) {
124
+ ABSL_DCHECK(ptr <= buffer_end_ + kSlopBytes);
125
+ int count;
126
+ if (next_chunk_ == patch_buffer_) {
127
+ count = BytesAvailable(ptr);
128
+ } else {
129
+ count = size_ + static_cast<int>(buffer_end_ - ptr);
130
+ }
131
+ if (count > 0) StreamBackUp(count);
132
+ }
133
+
134
+ // In sanitizer mode we use memory poisoning to guarantee that:
135
+ // - We do not read an uninitialized token.
136
+ // - We would like to verify that this token was consumed, but unfortunately
137
+ // __asan_address_is_poisoned is allowed to have false negatives.
138
+ class PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED LimitToken {
139
+ public:
140
+ LimitToken() { internal::PoisonMemoryRegion(&token_, sizeof(token_)); }
141
+
142
+ explicit LimitToken(int token) : token_(token) {
143
+ internal::UnpoisonMemoryRegion(&token_, sizeof(token_));
144
+ }
145
+
146
+ LimitToken(const LimitToken&) = delete;
147
+ LimitToken& operator=(const LimitToken&) = delete;
148
+
149
+ LimitToken(LimitToken&& other) { *this = std::move(other); }
150
+
151
+ LimitToken& operator=(LimitToken&& other) {
152
+ internal::UnpoisonMemoryRegion(&token_, sizeof(token_));
153
+ token_ = other.token_;
154
+ internal::PoisonMemoryRegion(&other.token_, sizeof(token_));
155
+ return *this;
156
+ }
157
+
158
+ ~LimitToken() { internal::UnpoisonMemoryRegion(&token_, sizeof(token_)); }
159
+
160
+ int token() && {
161
+ int t = token_;
162
+ internal::PoisonMemoryRegion(&token_, sizeof(token_));
163
+ return t;
164
+ }
165
+
166
+ private:
167
+ int token_;
168
+ };
169
+
170
+ // If return value is negative it's an error
171
+ [[nodiscard]] LimitToken PushLimit(const char* ptr, int limit) {
172
+ ABSL_DCHECK(limit >= 0 && limit <= INT_MAX - kSlopBytes);
173
+ // This add is safe due to the invariant above, because
174
+ // ptr - buffer_end_ <= kSlopBytes.
175
+ limit += static_cast<int>(ptr - buffer_end_);
176
+ limit_end_ = buffer_end_ + (std::min)(0, limit);
177
+ auto old_limit = limit_;
178
+ limit_ = limit;
179
+ return LimitToken(old_limit - limit);
180
+ }
181
+
182
+ [[nodiscard]] bool PopLimit(LimitToken delta) {
183
+ // We must update the limit first before the early return. Otherwise, we can
184
+ // end up with an invalid limit and it can lead to integer overflows.
185
+ limit_ = limit_ + std::move(delta).token();
186
+ if (ABSL_PREDICT_FALSE(!EndedAtLimit())) return false;
187
+ // TODO We could remove this line and hoist the code to
188
+ // DoneFallback. Study the perf/bin-size effects.
189
+ limit_end_ = buffer_end_ + (std::min)(0, limit_);
190
+ return true;
191
+ }
192
+
193
+ [[nodiscard]] const char* Skip(const char* ptr, int size) {
194
+ if (CanReadFromPtr(size, ptr)) {
195
+ return ptr + size;
196
+ }
197
+ return SkipFallback(ptr, size);
198
+ }
199
+ [[nodiscard]] const char* ReadString(const char* ptr, int size,
200
+ std::string* s) {
201
+ if (CanReadFromPtr(size, ptr)) {
202
+ // Fundamentally we just want to do assign to the string.
203
+ // However micro-benchmarks regress on string reading cases. So we copy
204
+ // the same logic from the old CodedInputStream ReadString. Note: as of
205
+ // Apr 2021, this is still a significant win over `assign()`.
206
+ absl::strings_internal::STLStringResizeUninitialized(s, size);
207
+ char* z = &(*s)[0];
208
+ memcpy(z, ptr, size);
209
+ return ptr + size;
210
+ }
211
+ return ReadStringFallback(ptr, size, s);
212
+ }
213
+ [[nodiscard]] const char* AppendString(const char* ptr, int size,
214
+ std::string* s) {
215
+ if (CanReadFromPtr(size, ptr)) {
216
+ s->append(ptr, size);
217
+ return ptr + size;
218
+ }
219
+ return AppendStringFallback(ptr, size, s);
220
+ }
221
+
222
+ [[nodiscard]] const char* ReadArray(const char* ptr, absl::Span<char> out);
223
+ [[nodiscard]] const char* VerifyUTF8(const char* ptr, size_t size);
224
+
225
+ [[nodiscard]] const char* ReadMicroString(const char* ptr, MicroString& str,
226
+ Arena* arena);
227
+ [[nodiscard]] const char* ReadMicroStringWithSize(const char* ptr, int size,
228
+ MicroString& str,
229
+ Arena* arena);
230
+ [[nodiscard]] const char* ReadMicroStringFallback(const char* ptr, int size,
231
+ MicroString& str,
232
+ Arena* arena);
233
+
234
+ // Implemented in arenastring.cc
235
+ [[nodiscard]] const char* ReadArenaString(const char* ptr, ArenaStringPtr* s,
236
+ Arena* arena);
237
+
238
+ [[nodiscard]] const char* ReadCord(const char* ptr, int size,
239
+ ::absl::Cord* cord) {
240
+ if (IsRequestedLessThanOrEqualTo(
241
+ size, std::min<int>(BytesAvailable(ptr), kMaxCordBytesToCopy))) {
242
+ *cord = absl::string_view(ptr, size);
243
+ return ptr + size;
244
+ }
245
+ return ReadCordFallback(ptr, size, cord);
246
+ }
247
+
248
+
249
+ template <typename FuncT>
250
+ [[nodiscard]] const char* ReadChunkAndCallback(const char* ptr, int size,
251
+ FuncT&& callback) {
252
+ if (CanReadFromPtr(size, ptr)) {
253
+ callback(ptr, size);
254
+ return ptr + size;
255
+ }
256
+ return AppendSize(ptr, size, callback);
257
+ }
258
+
259
+ template <typename Tag, typename T>
260
+ [[nodiscard]] const char* ReadRepeatedFixed(const char* ptr, Arena* arena,
261
+ Tag expected_tag,
262
+ RepeatedField<T>* out);
263
+
264
+ template <typename T>
265
+ [[nodiscard]] const char* ReadPackedFixed(const char* ptr, Arena* arena,
266
+ int size, RepeatedField<T>* out);
267
+ // Helpers for ReadPackedVarint and ReadPackedVarintWithField.
268
+ template <typename Add>
269
+ static const char* ReadPackedVarintArray(const char* ptr, const char* end,
270
+ Add add);
271
+ template <typename Convert, typename T>
272
+ static const char* ReadPackedVarintArrayWithField(const char* ptr,
273
+ const char* end,
274
+ Arena* arena, Convert conv,
275
+ RepeatedField<T>& out);
276
+ template <typename Add>
277
+ [[nodiscard]] const char* ReadPackedVarint(const char* ptr, Add add) {
278
+ return ReadPackedVarint(ptr, add, [](int) {});
279
+ }
280
+ template <typename Add, typename SizeCb>
281
+ [[nodiscard]] const char* ReadPackedVarint(const char* ptr, Add add,
282
+ SizeCb size_callback);
283
+ // Same as above, but pass the field directly , so we can preallocate.
284
+ template <typename Convert, typename T>
285
+ [[nodiscard]] const char* ReadPackedVarintWithField(const char* ptr,
286
+ Arena* arena,
287
+ Convert conv,
288
+ RepeatedField<T>& out);
289
+
290
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD uint32_t LastTag() const {
291
+ return last_tag_minus_1_ + 1;
292
+ }
293
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD bool ConsumeEndGroup(uint32_t start_tag) {
294
+ bool res = last_tag_minus_1_ == start_tag;
295
+ last_tag_minus_1_ = 0;
296
+ return res;
297
+ }
298
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD bool EndedAtLimit() const {
299
+ return last_tag_minus_1_ == 0;
300
+ }
301
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD bool EndedAtEndOfStream() const {
302
+ return last_tag_minus_1_ == 1;
303
+ }
304
+ void SetLastTag(uint32_t tag) { last_tag_minus_1_ = tag - 1; }
305
+ void SetEndOfStream() { last_tag_minus_1_ = 1; }
306
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD bool IsExceedingLimit(const char* ptr) {
307
+ return ptr > limit_end_ &&
308
+ (next_chunk_ == nullptr || ptr - buffer_end_ > limit_);
309
+ }
310
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD bool AliasingEnabled() const {
311
+ return aliasing_ != kNoAliasing;
312
+ }
313
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD int BytesUntilLimit(
314
+ const char* ptr) const {
315
+ return limit_ + static_cast<int>(buffer_end_ - ptr);
316
+ }
317
+ // Maximum number of sequential bytes that can be read starting from `ptr`.
318
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD int MaximumReadSize(
319
+ const char* ptr) const {
320
+ return static_cast<int>(limit_end_ - ptr) + kSlopBytes;
321
+ }
322
+ // Returns true if more data is available, if false is returned one has to
323
+ // call Done for further checks.
324
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD bool DataAvailable(const char* ptr) {
325
+ return ptr < limit_end_;
326
+ }
327
+
328
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD int BytesAvailable(
329
+ const char* ptr) const {
330
+ ABSL_DCHECK_NE(ptr, nullptr);
331
+ ptrdiff_t available = buffer_end_ + kSlopBytes - ptr;
332
+ ABSL_DCHECK_GE(available, 0);
333
+ ABSL_DCHECK_LE(available, INT_MAX);
334
+ return static_cast<int>(available);
335
+ }
336
+
337
+ template <typename SinkT>
338
+ [[nodiscard]] const char* SkipMaybeFlush(const char* ptr, int64_t size,
339
+ SinkT& sink) {
340
+ if (size <= BytesAvailable(ptr)) {
341
+ return ptr + size;
342
+ }
343
+ return AdvancePtrMaybeFlush<char>(ptr, size, sink,
344
+ [](absl::string_view) { return true; });
345
+ }
346
+
347
+ template <typename SinkT>
348
+ [[nodiscard]] const char* ReadArrayMaybeFlush(const char* ptr,
349
+ absl::Span<char> out,
350
+ SinkT& sink);
351
+
352
+ // Advances "ptr" by "size" bytes and calls "peek_func" with the contiguous
353
+ // "view" of the data. Adjusts the size of the "view" if sizeof(DataT) > 1 to
354
+ // allow users to read `DataT` without worrying about fragmented input.
355
+ //
356
+ // If the current buffer is exhausted, update "ptr" accordingly after reading
357
+ // next buffers. Flush previous buffers to the sink if needed. Callers are
358
+ // responsible for the final `Flush`.
359
+ //
360
+ // The sink object must provide the following methods:
361
+ // // Called when data is flushed from a buffer. `p` is the pointer up to
362
+ // // which data is flushed. "sink" must track start pointer.
363
+ // void Flush(const char* p);
364
+ //
365
+ // // Called to append a view of data. "sink" must update its start pointer
366
+ // // accordingly.
367
+ // void Append(absl::string_view view);
368
+ //
369
+ // // Called after advancing to new data, `p` is the new start pointer.
370
+ // void Reset(const char* p);
371
+ template <typename DataT, typename SinkT, typename PeekFunc>
372
+ [[nodiscard]] const char* AdvancePtrMaybeFlush(const char* ptr, int64_t count,
373
+ SinkT& sink,
374
+ PeekFunc&& peek_func) {
375
+ // "end" points to the end of the current buffer (including the slop
376
+ // region). "buffer_end_" is set to guarantee that kSlopBytes can be read.
377
+ const char* end = buffer_end_ + kSlopBytes;
378
+ int64_t size = count * sizeof(DataT);
379
+ ABSL_DCHECK_NE(ptr, nullptr);
380
+ ABSL_DCHECK_LE(ptr, end);
381
+
382
+ // In common cases, we can just advance the pointer.
383
+ int64_t available = end - ptr;
384
+ if (ABSL_PREDICT_TRUE(available >= size)) {
385
+ // Size is always aligned (= count * sizeof(DataT)). So we can just peek
386
+ // the entire size.
387
+ if (!peek_func(absl::string_view(ptr, size))) return nullptr;
388
+ return ptr + size;
389
+ }
390
+ int64_t round_down_size = available / sizeof(DataT) * sizeof(DataT);
391
+
392
+ if (!peek_func(absl::string_view(ptr, round_down_size))) return nullptr;
393
+ ptr += round_down_size;
394
+ // TODO: b/496023113 - Remove hexagon once hexagon-clang handles it
395
+ // properly.
396
+ #if !defined(__APPLE__) && !defined(__hexagon__)
397
+ // Working around clang issue on Apple and Hexagon.
398
+ PROTOBUF_ALWAYS_INLINE_CALL
399
+ #endif // !__APPLE__ && !__hexagon__
400
+ sink.Flush(ptr);
401
+ size -= round_down_size;
402
+
403
+ // After exhausting the current buffer, we need to read from the next
404
+ // buffer.
405
+ // TODO: b/434084966 - revisit this to avoid redundancy around seams.
406
+ do {
407
+ int overrun = static_cast<int>(ptr - buffer_end_);
408
+ ABSL_DCHECK_GE(overrun, 0);
409
+ ABSL_DCHECK_LE(overrun, kSlopBytes);
410
+
411
+ ptr = NextBuffer(overrun, /*depth=*/-1);
412
+ if (ABSL_PREDICT_FALSE(ptr == nullptr)) return nullptr;
413
+ limit_ -= buffer_end_ - ptr; // Adjust limit_ relative to new anchor
414
+ ptr += overrun;
415
+ limit_end_ = buffer_end_ + std::min(0, limit_);
416
+
417
+ int64_t chunk_round_down_size =
418
+ BytesAvailable(ptr) / sizeof(DataT) * sizeof(DataT);
419
+ // In case `append_size == 0`, we will continue calling NextBuffer() till
420
+ // we get enough data or reach the end of the stream.
421
+ int64_t append_size = std::min(size, chunk_round_down_size);
422
+
423
+ absl::string_view view(ptr, static_cast<size_t>(append_size));
424
+ if (!peek_func(view)) return nullptr;
425
+ // TODO: b/496023113 - Remove hexagon once hexagon-clang handles it
426
+ // properly.
427
+ #if !defined(__APPLE__) && !defined(__hexagon__)
428
+ // Working around clang issue on Apple and Hexagon.
429
+ PROTOBUF_ALWAYS_INLINE_CALL
430
+ #endif // !__APPLE__ && !__hexagon__
431
+ sink.Append(view);
432
+
433
+ ptr += append_size;
434
+ size -= append_size;
435
+ } while (size > 0);
436
+
437
+ sink.Reset(ptr);
438
+ return ptr;
439
+ }
440
+
441
+ struct WireFormatNoOpSink {
442
+ static constexpr bool kIsLazySink = false;
443
+ void Flush(const char* p) {}
444
+ void Append(absl::string_view view) {}
445
+ void Reset(const char* p) {}
446
+ };
447
+
448
+ protected:
449
+ // Returns true if limit (either an explicit limit or end of stream) is
450
+ // reached. It aligns *ptr across buffer seams.
451
+ // If limit is exceeded, it returns true and ptr is set to null.
452
+ template <typename SinkT>
453
+ bool DoneWithCheck(const char** ptr, int d, SinkT& sink) {
454
+ ABSL_DCHECK(*ptr);
455
+ if (ABSL_PREDICT_TRUE(*ptr < limit_end_)) return false;
456
+ int overrun = static_cast<int>(*ptr - buffer_end_);
457
+ ABSL_DCHECK_LE(overrun, kSlopBytes); // Guaranteed by parse loop.
458
+ if (overrun ==
459
+ limit_) { // No need to flip buffers if we ended on a limit.
460
+ // Flush up to *ptr since we're done with it.
461
+ sink.Flush(*ptr);
462
+ sink.Reset(*ptr);
463
+ // If we actually overrun the buffer and next_chunk_ is null, it means
464
+ // the stream ended and we passed the stream end.
465
+ if (overrun > 0 && next_chunk_ == nullptr) *ptr = nullptr;
466
+ return true;
467
+ }
468
+ // Flush up to *ptr before updating it.
469
+ sink.Flush(*ptr);
470
+ auto res = DoneFallback(overrun, d);
471
+ *ptr = res.first;
472
+ // Reset the sink to the new start pointer.
473
+ sink.Reset(res.first);
474
+ return res.second;
475
+ }
476
+
477
+ const char* InitFrom(absl::string_view flat) {
478
+ overall_limit_ = 0;
479
+ if (flat.size() > kSlopBytes) {
480
+ limit_ = kSlopBytes;
481
+ limit_end_ = buffer_end_ = flat.data() + flat.size() - kSlopBytes;
482
+ next_chunk_ = patch_buffer_;
483
+ if (aliasing_ == kOnPatch) aliasing_ = kNoDelta;
484
+ return flat.data();
485
+ } else {
486
+ if (!flat.empty()) {
487
+ std::memcpy(patch_buffer_, flat.data(), flat.size());
488
+ }
489
+ limit_ = 0;
490
+ limit_end_ = buffer_end_ = patch_buffer_ + flat.size();
491
+ next_chunk_ = nullptr;
492
+ if (aliasing_ == kOnPatch) {
493
+ aliasing_ = reinterpret_cast<std::uintptr_t>(flat.data()) -
494
+ reinterpret_cast<std::uintptr_t>(patch_buffer_);
495
+ }
496
+ return patch_buffer_;
497
+ }
498
+ }
499
+
500
+ const char* InitFrom(io::ZeroCopyInputStream* zcis);
501
+
502
+ const char* InitFrom(io::ZeroCopyInputStream* zcis, int limit) {
503
+ if (limit == -1) return InitFrom(zcis);
504
+ overall_limit_ = limit;
505
+ auto res = InitFrom(zcis);
506
+ limit_ = limit - static_cast<int>(buffer_end_ - res);
507
+ limit_end_ = buffer_end_ + (std::min)(0, limit_);
508
+ return res;
509
+ }
510
+
511
+ // TODO Can V1 enjoy a code deduplication benefit by using this?
512
+ const char* InitFrom(const BoundedZCIS& bounded_zcis) {
513
+ return InitFrom(bounded_zcis.zcis, bounded_zcis.limit);
514
+ }
515
+
516
+ protected:
517
+ enum { kSlopBytes = 16, kPatchBufferSize = 32 };
518
+ static_assert(kPatchBufferSize >= kSlopBytes * 2,
519
+ "Patch buffer needs to be at least large enough to hold all "
520
+ "the slop bytes from the previous buffer, plus the first "
521
+ "kSlopBytes from the next buffer.");
522
+
523
+ private:
524
+ const char* limit_end_; // buffer_end_ + min(limit_, 0)
525
+ const char* buffer_end_;
526
+ const char* next_chunk_;
527
+ int size_;
528
+ int limit_; // relative to buffer_end_;
529
+ io::ZeroCopyInputStream* zcis_ = nullptr;
530
+ char patch_buffer_[kPatchBufferSize] = {};
531
+ enum { kNoAliasing = 0, kOnPatch = 1, kNoDelta = 2 };
532
+ std::uintptr_t aliasing_ = kNoAliasing;
533
+ // This variable is used to communicate how the parse ended, in order to
534
+ // completely verify the parsed data. A wire-format parse can end because of
535
+ // one of the following conditions:
536
+ // 1) A parse can end on a pushed limit.
537
+ // 2) A parse can end on End Of Stream (EOS).
538
+ // 3) A parse can end on 0 tag (only valid for toplevel message).
539
+ // 4) A parse can end on an end-group tag.
540
+ // This variable should always be set to 0, which indicates case 1. If the
541
+ // parse terminated due to EOS (case 2), it's set to 1. In case the parse
542
+ // ended due to a terminating tag (case 3 and 4) it's set to (tag - 1).
543
+ // This var doesn't really belong in EpsCopyInputStream and should be part of
544
+ // the ParseContext, but case 2 is most easily and optimally implemented in
545
+ // DoneFallback.
546
+ uint32_t last_tag_minus_1_ = 0;
547
+ int overall_limit_ = INT_MAX; // Overall limit independent of pushed limits.
548
+
549
+ // Returns true if it has enough available data given requested. Note that
550
+ // "available" can be negative but "requested" must not. Casting is done to
551
+ // preserve sign bit for the latter only.
552
+ bool IsRequestedLessThanOrEqualTo(int requested, int available);
553
+
554
+ // Returns true if "requested" bytes can be read contiguously from "ptr". Note
555
+ // that negative "requested" is converted to uint32_t before comparison, which
556
+ // will cause failure.
557
+ bool CanReadFromPtr(int requested, const char* ptr);
558
+
559
+ // Returns true if "requested" bytes are avilable till limit. Note that
560
+ // negative "requested" is converted to uint32_t before comparison.
561
+ bool HasEnoughTillLimit(int requested, const char* ptr);
562
+
563
+ // Advances to next buffer chunk returns a pointer to the same logical place
564
+ // in the stream as set by overrun. Overrun indicates the position in the slop
565
+ // region the parse was left (0 <= overrun <= kSlopBytes). Returns true if at
566
+ // limit, at which point the returned pointer maybe null if there was an
567
+ // error. The invariant of this function is that it's guaranteed that
568
+ // kSlopBytes bytes can be accessed from the returned ptr. This function might
569
+ // advance more buffers than one in the underlying ZeroCopyInputStream.
570
+ std::pair<const char*, bool> DoneFallback(int overrun, int depth);
571
+ // Advances to the next buffer, at most one call to Next() on the underlying
572
+ // ZeroCopyInputStream is made. This function DOES NOT match the returned
573
+ // pointer to where in the slop region the parse ends, hence no overrun
574
+ // parameter. This is useful for string operations where you always copy
575
+ // to the end of the buffer (including the slop region).
576
+ const char* Next();
577
+ // overrun is the location in the slop region the stream currently is
578
+ // (0 <= overrun <= kSlopBytes). To prevent flipping to the next buffer of
579
+ // the ZeroCopyInputStream in the case the parse will end in the last
580
+ // kSlopBytes of the current buffer. depth is the current depth of nested
581
+ // groups (or negative if the use case does not need careful tracking).
582
+ const char* NextBuffer(int overrun, int depth);
583
+ const char* SkipFallback(const char* ptr, int size);
584
+ const char* AppendStringFallback(const char* ptr, int size, std::string* str);
585
+ const char* VerifyUTF8Fallback(const char* ptr, size_t size);
586
+ const char* ReadStringFallback(const char* ptr, int size, std::string* str);
587
+ const char* ReadArrayFallback(const char* ptr, absl::Span<char> out);
588
+ const char* ReadCordFallback(const char* ptr, int size, absl::Cord* cord);
589
+ static bool ParseEndsInSlopRegion(const char* begin, int overrun, int depth);
590
+ bool StreamNext(const void** data) {
591
+ bool res = zcis_->Next(data, &size_);
592
+ if (res) overall_limit_ -= size_;
593
+ return res;
594
+ }
595
+ void StreamBackUp(int count) {
596
+ zcis_->BackUp(count);
597
+ overall_limit_ += count;
598
+ }
599
+
600
+ template <typename A>
601
+ const char* AppendSize(const char* ptr, uint32_t size, const A& append) {
602
+ // Some append functions may return false to bail out early.
603
+ constexpr bool kCheckReturn =
604
+ std::is_invocable_r_v<bool, decltype(append), const char*, int>;
605
+
606
+ ABSL_DCHECK_GE(BytesAvailable(ptr), 0);
607
+ uint32_t chunk_size = static_cast<uint32_t>(BytesAvailable(ptr));
608
+ do {
609
+ ABSL_DCHECK_GT(size, chunk_size);
610
+ if (next_chunk_ == nullptr) return nullptr;
611
+ if constexpr (kCheckReturn) {
612
+ if (!append(ptr, chunk_size)) return nullptr;
613
+ } else {
614
+ append(ptr, chunk_size);
615
+ }
616
+ ptr += chunk_size;
617
+ size -= chunk_size;
618
+ // TODO Next calls NextBuffer which generates buffers with
619
+ // overlap and thus incurs cost of copying the slop regions. This is not
620
+ // necessary for reading strings. We should just call Next buffers.
621
+ if (limit_ <= kSlopBytes) return nullptr;
622
+ ptr = Next();
623
+ if (ptr == nullptr) return nullptr; // passed the limit
624
+ ptr += kSlopBytes;
625
+ chunk_size = BytesAvailable(ptr);
626
+ } while (size > chunk_size);
627
+
628
+ if constexpr (kCheckReturn) {
629
+ if (!append(ptr, size)) return nullptr;
630
+ } else {
631
+ append(ptr, size);
632
+ }
633
+ return ptr + size;
634
+ }
635
+
636
+ // AppendUntilEnd appends data until a limit (either a PushLimit or end of
637
+ // stream. Normal payloads are from length delimited fields which have an
638
+ // explicit size. Reading until limit only comes when the string takes
639
+ // the place of a protobuf, ie RawMessage, lazy fields and implicit weak
640
+ // messages. We keep these methods private and friend them.
641
+ template <typename A>
642
+ const char* AppendUntilEnd(const char* ptr, const A& append) {
643
+ if (ptr - buffer_end_ > limit_) return nullptr;
644
+ while (limit_ > kSlopBytes) {
645
+ size_t chunk_size = BytesAvailable(ptr);
646
+ append(ptr, chunk_size);
647
+ ptr = Next();
648
+ if (ptr == nullptr) return limit_end_;
649
+ ptr += kSlopBytes;
650
+ }
651
+ auto end = buffer_end_ + limit_;
652
+ ABSL_DCHECK(end >= ptr);
653
+ append(ptr, end - ptr);
654
+ return end;
655
+ }
656
+
657
+ [[nodiscard]] const char* AppendString(const char* ptr, std::string* str) {
658
+ return AppendUntilEnd(
659
+ ptr, [str](const char* p, ptrdiff_t s) { str->append(p, s); });
660
+ }
661
+ friend class ImplicitWeakMessage;
662
+
663
+ // Needs access to kSlopBytes.
664
+ friend PROTOBUF_EXPORT std::pair<const char*, int32_t> ReadSizeFallback(
665
+ const char* p, uint32_t res);
666
+ };
667
+
668
+ using LazyEagerVerifyFnType = const char* (*)(const char* ptr,
669
+ ParseContext* ctx);
670
+ using LazyEagerVerifyFnRef = std::remove_pointer<LazyEagerVerifyFnType>::type&;
671
+
672
+ // ParseContext holds all data that is global to the entire parse. Most
673
+ // importantly it contains the input stream, but also recursion depth and also
674
+ // stores the end group tag, in case a parser ended on a endgroup, to verify
675
+ // matching start/end group tags.
676
+ class PROTOBUF_EXPORT ParseContext : public EpsCopyInputStream {
677
+ public:
678
+ struct Data {
679
+ const DescriptorPool* pool = nullptr;
680
+ MessageFactory* factory = nullptr;
681
+ };
682
+
683
+ template <typename... T>
684
+ ParseContext(int depth, bool aliasing, const char** start, T&&... args)
685
+ : EpsCopyInputStream(aliasing), depth_(depth) {
686
+ *start = InitFrom(std::forward<T>(args)...);
687
+ }
688
+
689
+ struct Spawn {};
690
+ static constexpr Spawn kSpawn = {};
691
+
692
+ // Creates a new context from a given "ctx" to inherit a few attributes to
693
+ // emulate continued parsing. For example, recursion depth or descriptor pools
694
+ // must be passed down to a new "spawned" context to maintain the same parse
695
+ // context. Note that the spawned context always disables aliasing (different
696
+ // input).
697
+ template <typename... T>
698
+ ParseContext(Spawn, const ParseContext& ctx, const char** start, T&&... args)
699
+ : EpsCopyInputStream(false),
700
+ depth_(ctx.depth_),
701
+ data_(ctx.data_)
702
+ {
703
+ *start = InitFrom(std::forward<T>(args)...);
704
+ }
705
+
706
+ // Move constructor and assignment operator are not supported because "ptr"
707
+ // for parsing may have pointed to an inlined buffer (patch_buffer_) which can
708
+ // be invalid afterwards.
709
+ ParseContext(ParseContext&&) = delete;
710
+ ParseContext& operator=(ParseContext&&) = delete;
711
+ ParseContext& operator=(const ParseContext&) = delete;
712
+
713
+ void TrackCorrectEnding() { group_depth_ = 0; }
714
+
715
+ // Done should only be called when the parsing pointer is pointing to the
716
+ // beginning of field data - that is, at a tag. Or if it is NULL.
717
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD bool Done(const char** ptr) {
718
+ WireFormatNoOpSink sink;
719
+ return DoneWithCheck(ptr, group_depth_, sink);
720
+ }
721
+
722
+ template <typename SinkT>
723
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD const char* VerifyUTF8MaybeFlush(
724
+ const char* ptr, int64_t size, SinkT& sink) {
725
+ if (size <= BytesAvailable(ptr)) {
726
+ return utf8_range::IsStructurallyValid({ptr, static_cast<size_t>(size)})
727
+ ? ptr + size
728
+ : nullptr;
729
+ }
730
+ return VerifyUTF8MaybeFlushFallback(ptr, size, sink);
731
+ }
732
+ template <typename SinkT>
733
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD const char* VerifyUTF8MaybeFlushFallback(
734
+ const char* ptr, int64_t size, SinkT& sink);
735
+
736
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD int depth() const { return depth_; }
737
+
738
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD Data& data() { return data_; }
739
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD const Data& data() const { return data_; }
740
+
741
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD const char* ParseMessage(MessageLite* msg,
742
+ const char* ptr);
743
+
744
+ // Read the length prefix, push the new limit, call the func(ptr), and then
745
+ // pop the limit. Useful for situations that don't have an actual message.
746
+ template <typename Func>
747
+ [[nodiscard]] const char* ParseLengthDelimitedInlined(const char*,
748
+ const Func& func);
749
+
750
+ // Push the recursion depth, call the func(ptr), and then pop depth. Useful
751
+ // for situations that don't have an actual message.
752
+ template <typename Func>
753
+ [[nodiscard]] const char* ParseGroupInlined(const char* ptr,
754
+ uint32_t start_tag,
755
+ const Func& func);
756
+
757
+ // Use a template to avoid the strong dep into TcParser. All callers will have
758
+ // the dep.
759
+ template <typename Parser = TcParser>
760
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD PROTOBUF_ALWAYS_INLINE const char*
761
+ ParseMessage(MessageLite* msg, const TcParseTableBase* tc_table,
762
+ const char* ptr) {
763
+ return ParseLengthDelimitedInlined(ptr, [&](const char* ptr) {
764
+ return Parser::ParseLoop(msg, ptr, this, tc_table);
765
+ });
766
+ }
767
+ template <typename Parser = TcParser>
768
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD PROTOBUF_ALWAYS_INLINE const char*
769
+ ParseGroup(MessageLite* msg, const TcParseTableBase* tc_table,
770
+ const char* ptr, uint32_t start_tag) {
771
+ return ParseGroupInlined(ptr, start_tag, [&](const char* ptr) {
772
+ return Parser::ParseLoop(msg, ptr, this, tc_table);
773
+ });
774
+ }
775
+
776
+ [[nodiscard]] PROTOBUF_NDEBUG_INLINE const char* ParseGroup(MessageLite* msg,
777
+ const char* ptr,
778
+ uint32_t tag) {
779
+ if (--depth_ < 0) return nullptr;
780
+ group_depth_++;
781
+ auto old_depth = depth_;
782
+ auto old_group_depth = group_depth_;
783
+ ptr = msg->_InternalParse(ptr, this);
784
+ if (ptr != nullptr) {
785
+ ABSL_DCHECK_EQ(old_depth, depth_);
786
+ ABSL_DCHECK_EQ(old_group_depth, group_depth_);
787
+ }
788
+ group_depth_--;
789
+ depth_++;
790
+ if (ABSL_PREDICT_FALSE(!ConsumeEndGroup(tag))) return nullptr;
791
+ return ptr;
792
+ }
793
+ template <typename Func>
794
+ [[nodiscard]] PROTOBUF_ALWAYS_INLINE const char* ParseWithLengthInlined(
795
+ const char* ptr, uint32_t length, const Func& func);
796
+
797
+ private:
798
+ // Out-of-line routine to save space in ParseContext::ParseMessage<T>
799
+ // LimitToken old;
800
+ // ptr = ReadSizeAndPushLimitAndDepth(ptr, &old)
801
+ // is equivalent to:
802
+ // int size = ReadSize(&ptr);
803
+ // if (!ptr) return nullptr;
804
+ // LimitToken old = PushLimit(ptr, size);
805
+ // if (--depth_ < 0) return nullptr;
806
+ [[nodiscard]] const char* ReadSizeAndPushLimitAndDepth(const char* ptr,
807
+ LimitToken* old_limit);
808
+
809
+ // As above, but fully inlined for the cases where we care about performance
810
+ // more than size. eg TcParser.
811
+ [[nodiscard]] PROTOBUF_ALWAYS_INLINE const char*
812
+ ReadSizeAndPushLimitAndDepthInlined(const char* ptr, LimitToken* old_limit);
813
+
814
+ // The context keeps an internal stack to keep track of the recursive
815
+ // part of the parse state.
816
+ // Current depth of the active parser, depth counts down.
817
+ // This is used to limit recursion depth (to prevent overflow on malicious
818
+ // data), but is also used to index in stack_ to store the current state.
819
+ int depth_;
820
+ // Unfortunately necessary for the fringe case of ending on 0 or end-group tag
821
+ // in the last kSlopBytes of a ZeroCopyInputStream chunk. Note that INT16_MIN
822
+ // is intentionally used to avoid decrementing INT_MIN, which is UB.
823
+ int group_depth_ = std::numeric_limits<int16_t>::min();
824
+ Data data_;
825
+ };
826
+
827
+ // Sink types for AdvancePtrMaybeFlush.
828
+ struct WireFormatStringSink {
829
+ static constexpr bool kIsLazySink = false;
830
+ explicit WireFormatStringSink(const char* ptr) : prev(ptr) {}
831
+
832
+ void Flush(const char* ptr);
833
+ void Append(absl::string_view view);
834
+ void Reset(const char* ptr) { prev = ptr; }
835
+
836
+ // For testing only.
837
+ std::string FlattenedDataForTesting() const { return data; }
838
+
839
+ // The previous pointer to a contiguous buffer to flush from. Tracking the
840
+ // start pointer allows us to prematurely flush.
841
+ const char* prev;
842
+ std::string data;
843
+ };
844
+
845
+ // Explicit template instantiation is required to avoid undefined reference
846
+ // errors.
847
+ extern template const char* EpsCopyInputStream::ReadArrayMaybeFlush(
848
+ const char* ptr, absl::Span<char> out, WireFormatNoOpSink& sink);
849
+ extern template const char* EpsCopyInputStream::ReadArrayMaybeFlush(
850
+ const char* ptr, absl::Span<char> out, WireFormatStringSink& sink);
851
+
852
+ extern template const char* ParseContext::VerifyUTF8MaybeFlushFallback(
853
+ const char* ptr, int64_t size, WireFormatNoOpSink& sink);
854
+ extern template const char* ParseContext::VerifyUTF8MaybeFlushFallback(
855
+ const char* ptr, int64_t size, WireFormatStringSink& sink);
856
+
857
+ template <int>
858
+ struct EndianHelper;
859
+
860
+ template <>
861
+ struct EndianHelper<1> {
862
+ static uint8_t Load(const void* p) { return *static_cast<const uint8_t*>(p); }
863
+ };
864
+
865
+ template <>
866
+ struct EndianHelper<2> {
867
+ static uint16_t Load(const void* p) {
868
+ uint16_t tmp;
869
+ std::memcpy(&tmp, p, 2);
870
+ return little_endian::ToHost(tmp);
871
+ }
872
+ };
873
+
874
+ template <>
875
+ struct EndianHelper<4> {
876
+ static uint32_t Load(const void* p) {
877
+ uint32_t tmp;
878
+ std::memcpy(&tmp, p, 4);
879
+ return little_endian::ToHost(tmp);
880
+ }
881
+ };
882
+
883
+ template <>
884
+ struct EndianHelper<8> {
885
+ static uint64_t Load(const void* p) {
886
+ uint64_t tmp;
887
+ std::memcpy(&tmp, p, 8);
888
+ return little_endian::ToHost(tmp);
889
+ }
890
+ };
891
+
892
+ template <typename T>
893
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD T UnalignedLoad(const char* p) {
894
+ auto tmp = EndianHelper<sizeof(T)>::Load(p);
895
+ T res;
896
+ memcpy(&res, &tmp, sizeof(T));
897
+ return res;
898
+ }
899
+ template <typename T, typename Void,
900
+ typename = std::enable_if_t<std::is_same<Void, void>::value>>
901
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD T UnalignedLoad(const Void* p) {
902
+ return UnalignedLoad<T>(reinterpret_cast<const char*>(p));
903
+ }
904
+
905
+ template <typename T>
906
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD T
907
+ UnalignedLoadAndIncrement(const char** ptr) {
908
+ T value = UnalignedLoad<T>(*ptr);
909
+ *ptr += sizeof(T);
910
+ return value;
911
+ }
912
+
913
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD
914
+ PROTOBUF_EXPORT
915
+ std::pair<const char*, uint32_t> VarintParseSlow32(const char* p, uint32_t res);
916
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD
917
+ PROTOBUF_EXPORT
918
+ std::pair<const char*, uint64_t> VarintParseSlow64(const char* p, uint32_t res);
919
+
920
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD
921
+ inline const char* VarintParseSlow(const char* p, uint32_t res, uint32_t* out) {
922
+ auto tmp = VarintParseSlow32(p, res);
923
+ *out = tmp.second;
924
+ return tmp.first;
925
+ }
926
+
927
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD
928
+ inline const char* VarintParseSlow(const char* p, uint32_t res, uint64_t* out) {
929
+ auto tmp = VarintParseSlow64(p, res);
930
+ *out = tmp.second;
931
+ return tmp.first;
932
+ }
933
+
934
+ #if defined(__aarch64__) && !defined(_MSC_VER)
935
+ // Generally, speaking, the ARM-optimized Varint decode algorithm is to extract
936
+ // and concatenate all potentially valid data bits, compute the actual length
937
+ // of the Varint, and mask off the data bits which are not actually part of the
938
+ // result. More detail on the two main parts is shown below.
939
+ //
940
+ // 1) Extract and concatenate all potentially valid data bits.
941
+ // Two ARM-specific features help significantly:
942
+ // a) Efficient and non-destructive bit extraction (UBFX)
943
+ // b) A single instruction can perform both an OR with a shifted
944
+ // second operand in one cycle. E.g., the following two lines do the same
945
+ // thing
946
+ // ```result = operand_1 | (operand2 << 7);```
947
+ // ```ORR %[result], %[operand_1], %[operand_2], LSL #7```
948
+ // The figure below shows the implementation for handling four chunks.
949
+ //
950
+ // Bits 32 31-24 23 22-16 15 14-8 7 6-0
951
+ // +----+---------+----+---------+----+---------+----+---------+
952
+ // |CB 3| Chunk 3 |CB 2| Chunk 2 |CB 1| Chunk 1 |CB 0| Chunk 0 |
953
+ // +----+---------+----+---------+----+---------+----+---------+
954
+ // | | | |
955
+ // UBFX UBFX UBFX UBFX -- cycle 1
956
+ // | | | |
957
+ // V V V V
958
+ // Combined LSL #7 and ORR Combined LSL #7 and ORR -- cycle 2
959
+ // | |
960
+ // V V
961
+ // Combined LSL #14 and ORR -- cycle 3
962
+ // |
963
+ // V
964
+ // Parsed bits 0-27
965
+ //
966
+ //
967
+ // 2) Calculate the index of the cleared continuation bit in order to determine
968
+ // where the encoded Varint ends and the size of the decoded value. The
969
+ // easiest way to do this is mask off all data bits, leaving just the
970
+ // continuation bits. We actually need to do the masking on an inverted
971
+ // copy of the data, which leaves a 1 in all continuation bits which were
972
+ // originally clear. The number of trailing zeroes in this value indicates
973
+ // the size of the Varint.
974
+ //
975
+ // AND 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80
976
+ //
977
+ // Bits 63 55 47 39 31 23 15 7
978
+ // +----+--+----+--+----+--+----+--+----+--+----+--+----+--+----+--+
979
+ // ~ |CB 7| |CB 6| |CB 5| |CB 4| |CB 3| |CB 2| |CB 1| |CB 0| |
980
+ // +----+--+----+--+----+--+----+--+----+--+----+--+----+--+----+--+
981
+ // | | | | | | | |
982
+ // V V V V V V V V
983
+ // Bits 63 55 47 39 31 23 15 7
984
+ // +----+--+----+--+----+--+----+--+----+--+----+--+----+--+----+--+
985
+ // |~CB 7|0|~CB 6|0|~CB 5|0|~CB 4|0|~CB 3|0|~CB 2|0|~CB 1|0|~CB 0|0|
986
+ // +----+--+----+--+----+--+----+--+----+--+----+--+----+--+----+--+
987
+ // |
988
+ // CTZ
989
+ // V
990
+ // Index of first cleared continuation bit
991
+ //
992
+ //
993
+ // While this is implemented in C++ significant care has been taken to ensure
994
+ // the compiler emits the best instruction sequence. In some cases we use the
995
+ // following two functions to manipulate the compiler's scheduling decisions.
996
+ //
997
+ // Controls compiler scheduling by telling it that the first value is modified
998
+ // by the second value the callsite. This is useful if non-critical path
999
+ // instructions are too aggressively scheduled, resulting in a slowdown of the
1000
+ // actual critical path due to opportunity costs. An example usage is shown
1001
+ // where a false dependence of num_bits on result is added to prevent checking
1002
+ // for a very unlikely error until all critical path instructions have been
1003
+ // fetched.
1004
+ //
1005
+ // ```
1006
+ // num_bits = <multiple operations to calculate new num_bits value>
1007
+ // result = <multiple operations to calculate result>
1008
+ // num_bits = ValueBarrier(num_bits, result);
1009
+ // if (num_bits == 63) {
1010
+ // ABSL_LOG(FATAL) << "Invalid num_bits value";
1011
+ // }
1012
+ // ```
1013
+ // Falsely indicate that the specific value is modified at this location. This
1014
+ // prevents code which depends on this value from being scheduled earlier.
1015
+ template <typename V1Type>
1016
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD PROTOBUF_ALWAYS_INLINE V1Type
1017
+ ValueBarrier(V1Type value1) {
1018
+ asm("" : "+r"(value1));
1019
+ return value1;
1020
+ }
1021
+
1022
+ template <typename V1Type, typename V2Type>
1023
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD PROTOBUF_ALWAYS_INLINE V1Type
1024
+ ValueBarrier(V1Type value1, V2Type value2) {
1025
+ asm("" : "+r"(value1) : "r"(value2));
1026
+ return value1;
1027
+ }
1028
+
1029
+ // Performs a 7 bit UBFX (Unsigned Bit Extract) starting at the indicated bit.
1030
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD
1031
+ static PROTOBUF_ALWAYS_INLINE uint64_t Ubfx7(uint64_t data, uint64_t start) {
1032
+ return ValueBarrier((data >> start) & 0x7f);
1033
+ }
1034
+
1035
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD
1036
+ PROTOBUF_ALWAYS_INLINE uint64_t ExtractAndMergeTwoChunks(uint64_t data,
1037
+ uint64_t first_byte) {
1038
+ ABSL_DCHECK_LE(first_byte, 6U);
1039
+ uint64_t first = Ubfx7(data, first_byte * 8);
1040
+ uint64_t second = Ubfx7(data, (first_byte + 1) * 8);
1041
+ return ValueBarrier(first | (second << 7));
1042
+ }
1043
+
1044
+ struct SlowPathEncodedInfo {
1045
+ const char* p;
1046
+ uint64_t last8;
1047
+ uint64_t valid_bits;
1048
+ uint64_t valid_chunk_bits;
1049
+ uint64_t masked_cont_bits;
1050
+ };
1051
+
1052
+ // Performs multiple actions which are identical between 32 and 64 bit Varints
1053
+ // in order to compute the length of the encoded Varint and compute the new
1054
+ // of p.
1055
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD
1056
+ PROTOBUF_ALWAYS_INLINE SlowPathEncodedInfo
1057
+ ComputeLengthAndUpdateP(const char* p) {
1058
+ SlowPathEncodedInfo result;
1059
+ // Load the last two bytes of the encoded Varint.
1060
+ std::memcpy(&result.last8, p + 2, sizeof(result.last8));
1061
+ uint64_t mask = ValueBarrier(0x8080808080808080);
1062
+ // Only set continuation bits remain
1063
+ result.masked_cont_bits = ValueBarrier(mask & ~result.last8);
1064
+ // The first cleared continuation bit is the most significant 1 in the
1065
+ // reversed value. Result is undefined for an input of 0 and we handle that
1066
+ // case below.
1067
+ result.valid_bits = absl::countr_zero(result.masked_cont_bits);
1068
+ // Calculates the number of chunks in the encoded Varint. This value is low
1069
+ // by three as neither the cleared continuation chunk nor the first two chunks
1070
+ // are counted.
1071
+ uint64_t set_continuation_bits = result.valid_bits >> 3;
1072
+ // Update p to point past the encoded Varint.
1073
+ result.p = p + set_continuation_bits + 3;
1074
+ // Calculate number of valid data bits in the decoded value so invalid bits
1075
+ // can be masked off. Value is too low by 14 but we account for that when
1076
+ // calculating the mask.
1077
+ result.valid_chunk_bits = result.valid_bits - set_continuation_bits;
1078
+ return result;
1079
+ }
1080
+
1081
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD
1082
+ PROTOBUF_ALWAYS_INLINE std::pair<const char*, uint64_t> VarintParseSlowArm64(
1083
+ const char* p, uint64_t first8) {
1084
+ constexpr uint64_t kResultMaskUnshifted = 0xffffffffffffc000ULL;
1085
+ constexpr uint64_t kFirstResultBitChunk2 = 2 * 7;
1086
+ constexpr uint64_t kFirstResultBitChunk4 = 4 * 7;
1087
+ constexpr uint64_t kFirstResultBitChunk6 = 6 * 7;
1088
+ constexpr uint64_t kFirstResultBitChunk8 = 8 * 7;
1089
+
1090
+ SlowPathEncodedInfo info = ComputeLengthAndUpdateP(p);
1091
+ // Extract data bits from the low six chunks. This includes chunks zero and
1092
+ // one which we already know are valid.
1093
+ uint64_t merged_01 = ExtractAndMergeTwoChunks(first8, /*first_chunk=*/0);
1094
+ uint64_t merged_23 = ExtractAndMergeTwoChunks(first8, /*first_chunk=*/2);
1095
+ uint64_t merged_45 = ExtractAndMergeTwoChunks(first8, /*first_chunk=*/4);
1096
+ // Low 42 bits of decoded value.
1097
+ uint64_t result = merged_01 | (merged_23 << kFirstResultBitChunk2) |
1098
+ (merged_45 << kFirstResultBitChunk4);
1099
+ // This immediate ends in 14 zeroes since valid_chunk_bits is too low by 14.
1100
+ uint64_t result_mask = kResultMaskUnshifted << info.valid_chunk_bits;
1101
+ // iff the Varint i invalid.
1102
+ if (ABSL_PREDICT_FALSE(info.masked_cont_bits == 0)) {
1103
+ return {nullptr, 0};
1104
+ }
1105
+ // Test for early exit if Varint does not exceed 6 chunks. Branching on one
1106
+ // bit is faster on ARM than via a compare and branch.
1107
+ if (ABSL_PREDICT_FALSE((info.valid_bits & 0x20) != 0)) {
1108
+ // Extract data bits from high four chunks.
1109
+ uint64_t merged_67 = ExtractAndMergeTwoChunks(first8, /*first_chunk=*/6);
1110
+ // Last two chunks come from last two bytes of info.last8.
1111
+ uint64_t merged_89 =
1112
+ ExtractAndMergeTwoChunks(info.last8, /*first_chunk=*/6);
1113
+ result |= merged_67 << kFirstResultBitChunk6;
1114
+ result |= merged_89 << kFirstResultBitChunk8;
1115
+ // Handle an invalid Varint with all 10 continuation bits set.
1116
+ }
1117
+ // Mask off invalid data bytes.
1118
+ result &= ~result_mask;
1119
+ return {info.p, result};
1120
+ }
1121
+
1122
+ // See comments in VarintParseSlowArm64 for a description of the algorithm.
1123
+ // Differences in the 32 bit version are noted below.
1124
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD
1125
+ PROTOBUF_ALWAYS_INLINE std::pair<const char*, uint32_t> VarintParseSlowArm32(
1126
+ const char* p, uint64_t first8) {
1127
+ constexpr uint64_t kResultMaskUnshifted = 0xffffffffffffc000ULL;
1128
+ constexpr uint64_t kFirstResultBitChunk1 = 1 * 7;
1129
+ constexpr uint64_t kFirstResultBitChunk3 = 3 * 7;
1130
+
1131
+ // This also skips the slop bytes.
1132
+ SlowPathEncodedInfo info = ComputeLengthAndUpdateP(p);
1133
+ // Extract data bits from chunks 1-4. Chunk zero is merged in below.
1134
+ uint64_t merged_12 = ExtractAndMergeTwoChunks(first8, /*first_chunk=*/1);
1135
+ uint64_t merged_34 = ExtractAndMergeTwoChunks(first8, /*first_chunk=*/3);
1136
+ first8 = ValueBarrier(first8, p);
1137
+ uint64_t result = Ubfx7(first8, /*start=*/0);
1138
+ result = ValueBarrier(result | merged_12 << kFirstResultBitChunk1);
1139
+ result = ValueBarrier(result | merged_34 << kFirstResultBitChunk3);
1140
+ uint64_t result_mask = kResultMaskUnshifted << info.valid_chunk_bits;
1141
+ result &= ~result_mask;
1142
+ // It is extremely unlikely that a Varint is invalid so checking that
1143
+ // condition isn't on the critical path. Here we make sure that we don't do so
1144
+ // until result has been computed.
1145
+ info.masked_cont_bits = ValueBarrier(info.masked_cont_bits, result);
1146
+ if (ABSL_PREDICT_FALSE(info.masked_cont_bits == 0)) {
1147
+ return {nullptr, 0};
1148
+ }
1149
+ return {info.p, result};
1150
+ }
1151
+
1152
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD
1153
+ static const char* VarintParseSlowArm(const char* p, uint32_t* out,
1154
+ uint64_t first8) {
1155
+ auto tmp = VarintParseSlowArm32(p, first8);
1156
+ *out = tmp.second;
1157
+ return tmp.first;
1158
+ }
1159
+
1160
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD
1161
+ static const char* VarintParseSlowArm(const char* p, uint64_t* out,
1162
+
1163
+ uint64_t first8) {
1164
+ auto tmp = VarintParseSlowArm64(p, first8);
1165
+ *out = tmp.second;
1166
+ return tmp.first;
1167
+ }
1168
+ #endif
1169
+
1170
+ // The caller must ensure that p points to at least 10 valid bytes.
1171
+ template <typename T>
1172
+ [[nodiscard]] const char* VarintParse(const char* p, T* out) {
1173
+ AssertBytesAreReadable(p, 10);
1174
+ #if defined(__aarch64__) && defined(ABSL_IS_LITTLE_ENDIAN) && !defined(_MSC_VER)
1175
+ // This optimization is not supported in big endian mode
1176
+ uint64_t first8;
1177
+ std::memcpy(&first8, p, sizeof(first8));
1178
+ if (ABSL_PREDICT_TRUE((first8 & 0x80) == 0)) {
1179
+ *out = static_cast<uint8_t>(first8);
1180
+ return p + 1;
1181
+ }
1182
+ if (ABSL_PREDICT_TRUE((first8 & 0x8000) == 0)) {
1183
+ uint64_t chunk1;
1184
+ uint64_t chunk2;
1185
+ // Extracting the two chunks this way gives a speedup for this path.
1186
+ chunk1 = Ubfx7(first8, 0);
1187
+ chunk2 = Ubfx7(first8, 8);
1188
+ *out = chunk1 | (chunk2 << 7);
1189
+ return p + 2;
1190
+ }
1191
+ return VarintParseSlowArm(p, out, first8);
1192
+ #else // __aarch64__
1193
+ auto ptr = reinterpret_cast<const uint8_t*>(p);
1194
+ uint32_t res = ptr[0];
1195
+ if ((res & 0x80) == 0) {
1196
+ *out = res;
1197
+ return p + 1;
1198
+ }
1199
+ return VarintParseSlow(p, res, out);
1200
+ #endif // __aarch64__
1201
+ }
1202
+
1203
+ // Used for tags, could read up to 5 bytes which must be available.
1204
+ // Caller must ensure it's safe to call.
1205
+
1206
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD
1207
+ PROTOBUF_EXPORT
1208
+ std::pair<const char*, uint32_t> ReadTagFallback(const char* p, uint32_t res);
1209
+
1210
+ // Same as ParseVarint but only accept 5 bytes at most.
1211
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD
1212
+ inline const char* ReadTag(const char* p, uint32_t* out,
1213
+ uint32_t /*max_tag*/ = 0) {
1214
+ uint32_t res = static_cast<uint8_t>(p[0]);
1215
+ if (res < 128) {
1216
+ *out = res;
1217
+ return p + 1;
1218
+ }
1219
+ uint32_t second = static_cast<uint8_t>(p[1]);
1220
+ res += (second - 1) << 7;
1221
+ if (second < 128) {
1222
+ *out = res;
1223
+ return p + 2;
1224
+ }
1225
+ auto tmp = ReadTagFallback(p, res);
1226
+ *out = tmp.second;
1227
+ return tmp.first;
1228
+ }
1229
+
1230
+ // As above, but optimized to consume very few registers while still being fast,
1231
+ // ReadTagInlined is useful for callers that don't mind the extra code but would
1232
+ // like to avoid an extern function call causing spills into the stack.
1233
+ //
1234
+ // Two support routines for ReadTagInlined come first...
1235
+ template <class T>
1236
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD
1237
+ [[nodiscard]] PROTOBUF_ALWAYS_INLINE constexpr T
1238
+ RotateLeft(T x, int s) noexcept {
1239
+ return static_cast<T>(x << (s & (std::numeric_limits<T>::digits - 1))) |
1240
+ static_cast<T>(x >> ((-s) & (std::numeric_limits<T>::digits - 1)));
1241
+ }
1242
+
1243
+ [[nodiscard]] PROTOBUF_ALWAYS_INLINE uint64_t
1244
+ RotRight7AndReplaceLowByte(uint64_t res, const char byte) {
1245
+ // TODO: remove the inline assembly
1246
+ #if defined(__x86_64__) && defined(__GNUC__)
1247
+ // This will only use one register for `res`.
1248
+ // `byte` comes as a reference to allow the compiler to generate code like:
1249
+ //
1250
+ // rorq $7, %rcx
1251
+ // movb 1(%rax), %cl
1252
+ //
1253
+ // which avoids loading the incoming bytes into a separate register first.
1254
+ asm("ror $7,%0\n\t"
1255
+ "movb %1,%b0"
1256
+ : "+r"(res)
1257
+ : "m"(byte));
1258
+ #else
1259
+ res = RotateLeft(res, -7);
1260
+ res = res & ~0xFF;
1261
+ res |= 0xFF & byte;
1262
+ #endif
1263
+ return res;
1264
+ }
1265
+
1266
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD
1267
+ PROTOBUF_ALWAYS_INLINE const char* ReadTagInlined(const char* ptr,
1268
+ uint32_t* out) {
1269
+ uint64_t res = 0xFF & ptr[0];
1270
+ if (ABSL_PREDICT_FALSE(res >= 128)) {
1271
+ res = RotRight7AndReplaceLowByte(res, ptr[1]);
1272
+ if (ABSL_PREDICT_FALSE(res & 0x80)) {
1273
+ res = RotRight7AndReplaceLowByte(res, ptr[2]);
1274
+ if (ABSL_PREDICT_FALSE(res & 0x80)) {
1275
+ res = RotRight7AndReplaceLowByte(res, ptr[3]);
1276
+ if (ABSL_PREDICT_FALSE(res & 0x80)) {
1277
+ // Note: this wouldn't work if res were 32-bit,
1278
+ // because then replacing the low byte would overwrite
1279
+ // the bottom 4 bits of the result.
1280
+ res = RotRight7AndReplaceLowByte(res, ptr[4]);
1281
+ if (ABSL_PREDICT_FALSE(res & 0x80)) {
1282
+ // The proto format does not permit longer than 5-byte encodings for
1283
+ // tags.
1284
+ *out = 0;
1285
+ return nullptr;
1286
+ }
1287
+ *out = static_cast<uint32_t>(RotateLeft(res, 28));
1288
+ #if defined(__GNUC__)
1289
+ // Note: this asm statement prevents the compiler from
1290
+ // trying to share the "return ptr + constant" among all
1291
+ // branches.
1292
+ asm("" : "+r"(ptr));
1293
+ #endif
1294
+ return ptr + 5;
1295
+ }
1296
+ *out = static_cast<uint32_t>(RotateLeft(res, 21));
1297
+ return ptr + 4;
1298
+ }
1299
+ *out = static_cast<uint32_t>(RotateLeft(res, 14));
1300
+ return ptr + 3;
1301
+ }
1302
+ *out = static_cast<uint32_t>(RotateLeft(res, 7));
1303
+ return ptr + 2;
1304
+ }
1305
+ *out = static_cast<uint32_t>(res);
1306
+ return ptr + 1;
1307
+ }
1308
+
1309
+ // Decode 2 consecutive bytes of a varint and returns the value, shifted left
1310
+ // by 1. It simultaneous updates *ptr to *ptr + 1 or *ptr + 2 depending if the
1311
+ // first byte's continuation bit is set.
1312
+ // If bit 15 of return value is set (equivalent to the continuation bits of both
1313
+ // bytes being set) the varint continues, otherwise the parse is done. On x86
1314
+ // movsx eax, dil
1315
+ // and edi, eax
1316
+ // add eax, edi
1317
+ // adc [rsi], 1
1318
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD
1319
+ inline uint32_t DecodeTwoBytes(const char** ptr) {
1320
+ uint32_t value = UnalignedLoad<uint16_t>(*ptr);
1321
+ // Sign extend the low byte continuation bit
1322
+ uint32_t x = static_cast<int8_t>(value);
1323
+ value &= x; // Mask out the high byte iff no continuation
1324
+ // This add is an amazing operation, it cancels the low byte continuation bit
1325
+ // from y transferring it to the carry. Simultaneously it also shifts the 7
1326
+ // LSB left by one tightly against high byte varint bits. Hence value now
1327
+ // contains the unpacked value shifted left by 1.
1328
+ value += x;
1329
+ // Use the carry to update the ptr appropriately.
1330
+ *ptr += value < x ? 2 : 1;
1331
+ return value;
1332
+ }
1333
+
1334
+ // More efficient varint parsing for big varints
1335
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD
1336
+ inline const char* ParseBigVarint(const char* p, uint64_t* out) {
1337
+ auto pnew = p;
1338
+ auto tmp = DecodeTwoBytes(&pnew);
1339
+ uint64_t res = tmp >> 1;
1340
+ if (ABSL_PREDICT_TRUE(static_cast<std::int16_t>(tmp) >= 0)) {
1341
+ *out = res;
1342
+ return pnew;
1343
+ }
1344
+ for (std::uint32_t i = 1; i < 5; i++) {
1345
+ pnew = p + 2 * i;
1346
+ tmp = DecodeTwoBytes(&pnew);
1347
+ res += (static_cast<std::uint64_t>(tmp) - 2) << (14 * i - 1);
1348
+ if (ABSL_PREDICT_TRUE(static_cast<std::int16_t>(tmp) >= 0)) {
1349
+ *out = res;
1350
+ return pnew;
1351
+ }
1352
+ }
1353
+ return nullptr;
1354
+ }
1355
+
1356
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD
1357
+ PROTOBUF_EXPORT
1358
+ std::pair<const char*, int32_t> ReadSizeFallback(const char* p, uint32_t res);
1359
+
1360
+ // Used for length prefixes. Could read up to 5 bytes, but no more than
1361
+ // necessary for a single varint. The caller must ensure enough bytes are
1362
+ // available. Additionally it makes sure the unsigned value fits in an int32_t,
1363
+ // otherwise returns nullptr. Caller must ensure it is safe to call.
1364
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD
1365
+ inline uint32_t ReadSize(const char** pp) {
1366
+ auto p = *pp;
1367
+ uint32_t res = static_cast<uint8_t>(p[0]);
1368
+ if (res < 128) {
1369
+ *pp = p + 1;
1370
+ return res;
1371
+ }
1372
+ auto x = ReadSizeFallback(p, res);
1373
+ *pp = x.first;
1374
+ return x.second;
1375
+ }
1376
+
1377
+ // Some convenience functions to simplify the generated parse loop code.
1378
+ // Returning the value and updating the buffer pointer allows for nicer
1379
+ // function composition. We rely on the compiler to inline this.
1380
+ // Also in debug compiles having local scoped variables tend to generated
1381
+ // stack frames that scale as O(num fields).
1382
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD
1383
+ inline uint64_t ReadVarint64(const char** p) {
1384
+ uint64_t tmp;
1385
+ *p = VarintParse(*p, &tmp);
1386
+ return tmp;
1387
+ }
1388
+
1389
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD
1390
+ inline uint32_t ReadVarint32(const char** p) {
1391
+ uint32_t tmp;
1392
+ *p = VarintParse(*p, &tmp);
1393
+ return tmp;
1394
+ }
1395
+
1396
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD
1397
+ inline int64_t ReadVarintZigZag64(const char** p) {
1398
+ uint64_t tmp;
1399
+ *p = VarintParse(*p, &tmp);
1400
+ return WireFormatLite::ZigZagDecode64(tmp);
1401
+ }
1402
+
1403
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD
1404
+ inline int32_t ReadVarintZigZag32(const char** p) {
1405
+ uint64_t tmp;
1406
+ *p = VarintParse(*p, &tmp);
1407
+ return WireFormatLite::ZigZagDecode32(static_cast<uint32_t>(tmp));
1408
+ }
1409
+
1410
+ template <typename Func>
1411
+ [[nodiscard]] PROTOBUF_ALWAYS_INLINE const char*
1412
+ ParseContext::ParseLengthDelimitedInlined(const char* ptr, const Func& func) {
1413
+ LimitToken old;
1414
+ ptr = ReadSizeAndPushLimitAndDepthInlined(ptr, &old);
1415
+ if (ptr == nullptr) return ptr;
1416
+ auto old_depth = depth_;
1417
+ PROTOBUF_ALWAYS_INLINE_CALL ptr = func(ptr);
1418
+ if (ptr != nullptr) ABSL_DCHECK_EQ(old_depth, depth_);
1419
+ depth_++;
1420
+ if (!PopLimit(std::move(old))) return nullptr;
1421
+ return ptr;
1422
+ }
1423
+
1424
+ template <typename Func>
1425
+ [[nodiscard]] PROTOBUF_ALWAYS_INLINE const char*
1426
+ ParseContext::ParseGroupInlined(const char* ptr, uint32_t start_tag,
1427
+ const Func& func) {
1428
+ if (--depth_ < 0) return nullptr;
1429
+ group_depth_++;
1430
+ auto old_depth = depth_;
1431
+ auto old_group_depth = group_depth_;
1432
+ PROTOBUF_ALWAYS_INLINE_CALL ptr = func(ptr);
1433
+ if (ptr != nullptr) {
1434
+ ABSL_DCHECK_EQ(old_depth, depth_);
1435
+ ABSL_DCHECK_EQ(old_group_depth, group_depth_);
1436
+ }
1437
+ group_depth_--;
1438
+ depth_++;
1439
+ if (ABSL_PREDICT_FALSE(!ConsumeEndGroup(start_tag))) return nullptr;
1440
+ return ptr;
1441
+ }
1442
+
1443
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD
1444
+ inline const char* ParseContext::ReadSizeAndPushLimitAndDepthInlined(
1445
+ const char* ptr, LimitToken* old_limit) {
1446
+ int size = ReadSize(&ptr);
1447
+ if (ABSL_PREDICT_FALSE(!ptr) || depth_ <= 0) {
1448
+ return nullptr;
1449
+ }
1450
+ *old_limit = PushLimit(ptr, size);
1451
+ --depth_;
1452
+ return ptr;
1453
+ }
1454
+
1455
+ // Note that "length" is read outside of this function.
1456
+ template <typename Func>
1457
+ [[nodiscard]] PROTOBUF_ALWAYS_INLINE const char*
1458
+ ParseContext::ParseWithLengthInlined(const char* ptr, uint32_t length,
1459
+ const Func& func) {
1460
+ ABSL_DCHECK_NE(ptr, nullptr);
1461
+ LimitToken old;
1462
+ old = PushLimit(ptr, length);
1463
+ --depth_;
1464
+ auto old_depth = depth_;
1465
+ PROTOBUF_ALWAYS_INLINE_CALL ptr = func(ptr);
1466
+ if (ptr != nullptr) ABSL_DCHECK_EQ(old_depth, depth_);
1467
+ depth_++;
1468
+ if (!PopLimit(std::move(old))) return nullptr;
1469
+ return ptr;
1470
+ }
1471
+
1472
+ inline const char* EpsCopyInputStream::ReadMicroString(const char* ptr,
1473
+ MicroString& str,
1474
+ Arena* arena) {
1475
+ int size = ReadSize(&ptr);
1476
+ if (!ptr) return nullptr;
1477
+
1478
+ return ReadMicroStringWithSize(ptr, size, str, arena);
1479
+ }
1480
+
1481
+ inline const char* EpsCopyInputStream::ReadMicroStringWithSize(const char* ptr,
1482
+ int size,
1483
+ MicroString& str,
1484
+ Arena* arena) {
1485
+ if (size <= BytesAvailable(ptr)) {
1486
+ str.Set(absl::string_view(ptr, size), arena);
1487
+ return ptr + size;
1488
+ }
1489
+ return ReadMicroStringFallback(ptr, size, str, arena);
1490
+ }
1491
+
1492
+ template <typename Tag, typename T>
1493
+ const char* EpsCopyInputStream::ReadRepeatedFixed(const char* ptr, Arena* arena,
1494
+ Tag expected_tag,
1495
+ RepeatedField<T>* out) {
1496
+ do {
1497
+ out->AddWithArena(arena, UnalignedLoad<T>(ptr));
1498
+ ptr += sizeof(T);
1499
+ if (ABSL_PREDICT_FALSE(ptr >= limit_end_)) return ptr;
1500
+ } while (UnalignedLoad<Tag>(ptr) == expected_tag && (ptr += sizeof(Tag)));
1501
+ return ptr;
1502
+ }
1503
+
1504
+ // Add any of the following lines to debug which parse function is failing.
1505
+
1506
+ #define GOOGLE_PROTOBUF_ASSERT_RETURN(predicate, ret) \
1507
+ if (!(predicate)) { \
1508
+ /* ::raise(SIGINT); */ \
1509
+ /* ABSL_LOG(ERROR) << "Parse failure"; */ \
1510
+ return ret; \
1511
+ }
1512
+
1513
+ #define GOOGLE_PROTOBUF_PARSER_ASSERT(predicate) \
1514
+ GOOGLE_PROTOBUF_ASSERT_RETURN(predicate, nullptr)
1515
+
1516
+ template <typename T>
1517
+ const char* EpsCopyInputStream::ReadPackedFixed(const char* ptr, Arena* arena,
1518
+ int size,
1519
+ RepeatedField<T>* out) {
1520
+ ABSL_DCHECK_EQ(arena, out->GetArena());
1521
+ GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
1522
+ int nbytes = BytesAvailable(ptr);
1523
+ while (size > nbytes) {
1524
+ int num = nbytes / sizeof(T);
1525
+ int old_entries = out->size();
1526
+ out->ReserveWithArena(arena, old_entries + num);
1527
+ int block_size = num * sizeof(T);
1528
+ auto dst = out->AddNAlreadyReserved(num);
1529
+ #ifdef ABSL_IS_LITTLE_ENDIAN
1530
+ std::memcpy(dst, ptr, block_size);
1531
+ #else
1532
+ for (int i = 0; i < num; i++)
1533
+ dst[i] = UnalignedLoad<T>(ptr + i * sizeof(T));
1534
+ #endif
1535
+ size -= block_size;
1536
+ if (limit_ <= kSlopBytes) return nullptr;
1537
+ ptr = Next();
1538
+ if (ptr == nullptr) return nullptr;
1539
+ ptr += kSlopBytes - (nbytes - block_size);
1540
+ nbytes = BytesAvailable(ptr);
1541
+ }
1542
+ int num = size / sizeof(T);
1543
+ int block_size = num * sizeof(T);
1544
+ if (num == 0) return size == block_size ? ptr : nullptr;
1545
+ int old_entries = out->size();
1546
+ out->ReserveWithArena(arena, old_entries + num);
1547
+ auto dst = out->AddNAlreadyReserved(num);
1548
+ #ifdef ABSL_IS_LITTLE_ENDIAN
1549
+ ABSL_CHECK(dst != nullptr) << out << "," << num;
1550
+ std::memcpy(dst, ptr, block_size);
1551
+ #else
1552
+ for (int i = 0; i < num; i++) dst[i] = UnalignedLoad<T>(ptr + i * sizeof(T));
1553
+ #endif
1554
+ ptr += block_size;
1555
+ if (size != block_size) return nullptr;
1556
+ return ptr;
1557
+ }
1558
+
1559
+ template <typename Add>
1560
+ const char* EpsCopyInputStream::ReadPackedVarintArray(const char* ptr,
1561
+ const char* end,
1562
+ Add add) {
1563
+ while (ptr < end) {
1564
+ uint64_t varint;
1565
+ ptr = VarintParse(ptr, &varint);
1566
+ if (ptr == nullptr) return nullptr;
1567
+ add(varint);
1568
+ }
1569
+ return ptr;
1570
+ }
1571
+
1572
+ template <typename Convert, typename T>
1573
+ const char* EpsCopyInputStream::ReadPackedVarintArrayWithField(
1574
+ const char* ptr, const char* end, Arena* arena, Convert conv,
1575
+ RepeatedField<T>& out) {
1576
+ ABSL_DCHECK_EQ(arena, out.GetArena());
1577
+
1578
+ // If we have enough bytes, we will spend more cpu cycles growing repeated
1579
+ // field, than parsing, so count the number of ints first and preallocate.
1580
+ // Assume that varint are valid and just count the number of bytes with
1581
+ // continuation bit not set. In a valid varint there is only 1 such byte.
1582
+ if (end - ptr >= 16) {
1583
+ if constexpr (std::is_same_v<T, bool> && sizeof(bool) == sizeof(uint8_t)) {
1584
+ if (absl::bit_cast<uint8_t>(false) == 0 && // Not constexpr on MSVC.
1585
+ absl::bit_cast<uint8_t>(true) == 1) {
1586
+ if (VerifyBoolsAssumingLargeArray(ptr, end)) {
1587
+ // Each byte is 0 or 1.
1588
+ const int count = end - ptr;
1589
+ out.ReserveWithArena(arena, out.size() + count);
1590
+ T* x = out.AddNAlreadyReserved(count);
1591
+ // For T being bool, conv must be equivalent to a conversion to bool
1592
+ // (zigzag encoding is not applicable), so it can be skipped.
1593
+ std::memcpy(x, ptr, count);
1594
+ return end;
1595
+ }
1596
+ }
1597
+ }
1598
+ int count = CountVarintsAssumingLargeArray(ptr, end);
1599
+ if (count == end - ptr) {
1600
+ // We have exactly one element per byte, so avoid the costly varint
1601
+ // parsing.
1602
+ out.ReserveWithArena(arena, out.size() + count);
1603
+ T* x = out.AddNAlreadyReserved(count);
1604
+ for (; ptr != end; ++ptr) {
1605
+ *x = conv(static_cast<uint8_t>(*ptr));
1606
+ ++x;
1607
+ }
1608
+ } else {
1609
+ // We can overread, so if the last byte has a continuation bit set,
1610
+ // we need to account for that.
1611
+ if (end[-1] & 0x80) count++;
1612
+ int old_size = out.size();
1613
+ out.ReserveWithArena(arena, old_size + count);
1614
+ T* x = out.AddNAlreadyReserved(count);
1615
+ ptr = ReadPackedVarintArray(ptr, end, [&](uint64_t varint) {
1616
+ *x = conv(varint);
1617
+ ++x;
1618
+ });
1619
+ int new_size = x - out.data();
1620
+ ABSL_DCHECK_LE(new_size, old_size + count);
1621
+ // We may have overreserved if the data are truncated or malformed,
1622
+ // so set the actual size to avoid exposing uninitialized memory.
1623
+ out.Truncate(new_size);
1624
+ }
1625
+ return ptr;
1626
+ } else {
1627
+ return ReadPackedVarintArray(ptr, end, [&](uint64_t varint) {
1628
+ out.AddWithArena(arena, conv(varint));
1629
+ });
1630
+ }
1631
+ }
1632
+
1633
+ template <typename Convert, typename T>
1634
+ const char* EpsCopyInputStream::ReadPackedVarintWithField(
1635
+ const char* ptr, Arena* arena, Convert conv, RepeatedField<T>& out) {
1636
+ int size = ReadSize(&ptr);
1637
+
1638
+ GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
1639
+ int chunk_size = static_cast<int>(buffer_end_ - ptr);
1640
+ while (size > chunk_size) {
1641
+ ptr = ReadPackedVarintArrayWithField(ptr, buffer_end_, arena, conv, out);
1642
+ if (ptr == nullptr) return nullptr;
1643
+ int overrun = static_cast<int>(ptr - buffer_end_);
1644
+ ABSL_DCHECK(overrun >= 0 && overrun <= kSlopBytes);
1645
+ if (size - chunk_size <= kSlopBytes) {
1646
+ // The current buffer contains all the information needed, we don't need
1647
+ // to flip buffers. However we must parse from a buffer with enough space
1648
+ // so we are not prone to a buffer overflow.
1649
+ char buf[kSlopBytes + 10] = {};
1650
+ std::memcpy(buf, buffer_end_, kSlopBytes);
1651
+ ABSL_CHECK_LE(size - chunk_size, kSlopBytes);
1652
+ auto end = buf + (size - chunk_size);
1653
+ auto result = ReadPackedVarintArray(
1654
+ buf + overrun, end,
1655
+ [&](uint64_t varint) { out.AddWithArena(arena, conv(varint)); });
1656
+ if (result == nullptr || result != end) return nullptr;
1657
+ return buffer_end_ + (result - buf);
1658
+ }
1659
+ size -= overrun + chunk_size;
1660
+ ABSL_DCHECK_GT(size, 0);
1661
+ // We must flip buffers
1662
+ if (limit_ <= kSlopBytes) return nullptr;
1663
+ ptr = Next();
1664
+ if (ptr == nullptr) return nullptr;
1665
+ ptr += overrun;
1666
+ chunk_size = static_cast<int>(buffer_end_ - ptr);
1667
+ }
1668
+ auto end = ptr + size;
1669
+ ptr = ReadPackedVarintArrayWithField(ptr, end, arena, conv, out);
1670
+ return end == ptr ? ptr : nullptr;
1671
+ }
1672
+
1673
+ template <typename Add, typename SizeCb>
1674
+ const char* EpsCopyInputStream::ReadPackedVarint(const char* ptr, Add add,
1675
+ SizeCb size_callback) {
1676
+ int size = ReadSize(&ptr);
1677
+ size_callback(size);
1678
+
1679
+ GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
1680
+ int chunk_size = static_cast<int>(buffer_end_ - ptr);
1681
+ while (size > chunk_size) {
1682
+ ptr = ReadPackedVarintArray(ptr, buffer_end_, add);
1683
+ if (ptr == nullptr) return nullptr;
1684
+ int overrun = static_cast<int>(ptr - buffer_end_);
1685
+ ABSL_DCHECK(overrun >= 0 && overrun <= kSlopBytes);
1686
+ if (size - chunk_size <= kSlopBytes) {
1687
+ // The current buffer contains all the information needed, we don't need
1688
+ // to flip buffers. However we must parse from a buffer with enough space
1689
+ // so we are not prone to a buffer overflow.
1690
+ char buf[kSlopBytes + 10] = {};
1691
+ std::memcpy(buf, buffer_end_, kSlopBytes);
1692
+ ABSL_CHECK_LE(size - chunk_size, kSlopBytes);
1693
+ auto end = buf + (size - chunk_size);
1694
+ auto res = ReadPackedVarintArray(buf + overrun, end, add);
1695
+ if (res == nullptr || res != end) return nullptr;
1696
+ return buffer_end_ + (res - buf);
1697
+ }
1698
+ size -= overrun + chunk_size;
1699
+ ABSL_DCHECK_GT(size, 0);
1700
+ // We must flip buffers
1701
+ if (limit_ <= kSlopBytes) return nullptr;
1702
+ ptr = Next();
1703
+ if (ptr == nullptr) return nullptr;
1704
+ ptr += overrun;
1705
+ chunk_size = static_cast<int>(buffer_end_ - ptr);
1706
+ }
1707
+ auto end = ptr + size;
1708
+ ptr = ReadPackedVarintArray(ptr, end, add);
1709
+ return end == ptr ? ptr : nullptr;
1710
+ }
1711
+
1712
+ // Helper for verification of utf8
1713
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD
1714
+ PROTOBUF_EXPORT
1715
+ bool VerifyUTF8(absl::string_view s, const char* field_name);
1716
+
1717
+ PROTOBUF_FUTURE_ADD_EARLY_NODISCARD
1718
+ inline bool VerifyUTF8(const std::string* s, const char* field_name) {
1719
+ return VerifyUTF8(*s, field_name);
1720
+ }
1721
+
1722
+ // All the string parsers with or without UTF checking and for all CTypes.
1723
+ [[nodiscard]] PROTOBUF_EXPORT const char* InlineGreedyStringParser(
1724
+ std::string* s, const char* ptr, ParseContext* ctx);
1725
+
1726
+ [[nodiscard]] inline const char* InlineCordParser(::absl::Cord* cord,
1727
+ const char* ptr,
1728
+ ParseContext* ctx) {
1729
+ int size = ReadSize(&ptr);
1730
+ if (!ptr) return nullptr;
1731
+ return ctx->ReadCord(ptr, size, cord);
1732
+ }
1733
+
1734
+
1735
+ template <typename T>
1736
+ [[nodiscard]] const char* FieldParser(uint64_t tag, T& field_parser,
1737
+ const char* ptr, ParseContext* ctx) {
1738
+ uint32_t number = tag >> 3;
1739
+ GOOGLE_PROTOBUF_PARSER_ASSERT(number != 0);
1740
+ using WireType = internal::WireFormatLite::WireType;
1741
+ switch (tag & 7) {
1742
+ case WireType::WIRETYPE_VARINT: {
1743
+ uint64_t value;
1744
+ ptr = VarintParse(ptr, &value);
1745
+ GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
1746
+ field_parser.AddVarint(number, value);
1747
+ break;
1748
+ }
1749
+ case WireType::WIRETYPE_FIXED64: {
1750
+ uint64_t value = UnalignedLoad<uint64_t>(ptr);
1751
+ ptr += 8;
1752
+ field_parser.AddFixed64(number, value);
1753
+ break;
1754
+ }
1755
+ case WireType::WIRETYPE_LENGTH_DELIMITED: {
1756
+ ptr = field_parser.ParseLengthDelimited(number, ptr, ctx);
1757
+ GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
1758
+ break;
1759
+ }
1760
+ case WireType::WIRETYPE_START_GROUP: {
1761
+ ptr = field_parser.ParseGroup(number, ptr, ctx);
1762
+ GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
1763
+ break;
1764
+ }
1765
+ case WireType::WIRETYPE_END_GROUP: {
1766
+ ABSL_LOG(FATAL) << "Can't happen";
1767
+ break;
1768
+ }
1769
+ case WireType::WIRETYPE_FIXED32: {
1770
+ uint32_t value = UnalignedLoad<uint32_t>(ptr);
1771
+ ptr += 4;
1772
+ field_parser.AddFixed32(number, value);
1773
+ break;
1774
+ }
1775
+ default:
1776
+ return nullptr;
1777
+ }
1778
+ return ptr;
1779
+ }
1780
+
1781
+ template <typename T>
1782
+ [[nodiscard]] const char* WireFormatParser(T& field_parser, const char* ptr,
1783
+ ParseContext* ctx) {
1784
+ while (!ctx->Done(&ptr)) {
1785
+ uint32_t tag;
1786
+ ptr = ReadTag(ptr, &tag);
1787
+ GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr);
1788
+ if (tag == 0 || (tag & 7) == 4) {
1789
+ ctx->SetLastTag(tag);
1790
+ return ptr;
1791
+ }
1792
+ ptr = FieldParser(tag, field_parser, ptr, ctx);
1793
+ GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr);
1794
+ }
1795
+ return ptr;
1796
+ }
1797
+
1798
+ // The packed parsers parse repeated numeric primitives directly into the
1799
+ // corresponding field
1800
+
1801
+ // These are packed varints
1802
+ [[nodiscard]] PROTOBUF_EXPORT const char* PackedInt32Parser(void* object,
1803
+ Arena* arena,
1804
+ const char* ptr,
1805
+ ParseContext* ctx);
1806
+ [[nodiscard]] PROTOBUF_EXPORT const char* PackedUInt32Parser(void* object,
1807
+ Arena* arena,
1808
+ const char* ptr,
1809
+ ParseContext* ctx);
1810
+ [[nodiscard]] PROTOBUF_EXPORT const char* PackedInt64Parser(void* object,
1811
+ Arena* arena,
1812
+ const char* ptr,
1813
+ ParseContext* ctx);
1814
+ [[nodiscard]] PROTOBUF_EXPORT const char* PackedUInt64Parser(void* object,
1815
+ Arena* arena,
1816
+ const char* ptr,
1817
+ ParseContext* ctx);
1818
+ [[nodiscard]] PROTOBUF_EXPORT const char* PackedSInt32Parser(void* object,
1819
+ Arena* arena,
1820
+ const char* ptr,
1821
+ ParseContext* ctx);
1822
+ [[nodiscard]] PROTOBUF_EXPORT const char* PackedSInt64Parser(void* object,
1823
+ Arena* arena,
1824
+ const char* ptr,
1825
+ ParseContext* ctx);
1826
+ [[nodiscard]] PROTOBUF_EXPORT const char* PackedEnumParser(void* object,
1827
+ Arena* arena,
1828
+ const char* ptr,
1829
+ ParseContext* ctx);
1830
+
1831
+ template <typename T, typename Validator>
1832
+ [[nodiscard]] const char* PackedEnumParserArg(void* object, const char* ptr,
1833
+ ParseContext* ctx,
1834
+ Validator validator,
1835
+ InternalMetadata* metadata,
1836
+ int field_num) {
1837
+ return ctx->ReadPackedVarint(
1838
+ ptr, [object, validator, metadata, field_num](int32_t val) {
1839
+ if (validator.IsValid(val)) {
1840
+ static_cast<RepeatedField<int>*>(object)->Add(val);
1841
+ } else {
1842
+ WriteVarint(field_num, val, metadata->mutable_unknown_fields<T>());
1843
+ }
1844
+ });
1845
+ }
1846
+
1847
+ [[nodiscard]] PROTOBUF_EXPORT const char* PackedBoolParser(void* object,
1848
+ Arena* arena,
1849
+ const char* ptr,
1850
+ ParseContext* ctx);
1851
+ [[nodiscard]] PROTOBUF_EXPORT const char* PackedFixed32Parser(
1852
+ void* object, Arena* arena, const char* ptr, ParseContext* ctx);
1853
+ [[nodiscard]] PROTOBUF_EXPORT const char* PackedSFixed32Parser(
1854
+ void* object, Arena* arena, const char* ptr, ParseContext* ctx);
1855
+ [[nodiscard]] PROTOBUF_EXPORT const char* PackedFixed64Parser(
1856
+ void* object, Arena* arena, const char* ptr, ParseContext* ctx);
1857
+ [[nodiscard]] PROTOBUF_EXPORT const char* PackedSFixed64Parser(
1858
+ void* object, Arena* arena, const char* ptr, ParseContext* ctx);
1859
+ [[nodiscard]] PROTOBUF_EXPORT const char* PackedFloatParser(void* object,
1860
+ Arena* arena,
1861
+ const char* ptr,
1862
+ ParseContext* ctx);
1863
+ [[nodiscard]] PROTOBUF_EXPORT const char* PackedDoubleParser(void* object,
1864
+ Arena* arena,
1865
+ const char* ptr,
1866
+ ParseContext* ctx);
1867
+
1868
+ // This is the only recursive parser.
1869
+ [[nodiscard]] PROTOBUF_EXPORT const char* UnknownGroupLiteParse(
1870
+ std::string* unknown, const char* ptr, ParseContext* ctx);
1871
+ // This is a helper to for the UnknownGroupLiteParse but is actually also
1872
+ // useful in the generated code. It uses overload on std::string* vs
1873
+ // UnknownFieldSet* to make the generated code isomorphic between full and lite.
1874
+ [[nodiscard]] PROTOBUF_EXPORT const char* UnknownFieldParse(
1875
+ uint32_t tag, std::string* unknown, const char* ptr, ParseContext* ctx);
1876
+
1877
+ } // namespace internal
1878
+ } // namespace protobuf
1879
+ } // namespace google
1880
+
1881
+ #include "google/protobuf/port_undef.inc"
1882
+
1883
+ #endif // GOOGLE_PROTOBUF_PARSE_CONTEXT_H__