typedef signed char int8_t; typedef short int16_t; typedef int int32_t; typedef long long int64_t; typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned int uint32_t; typedef unsigned long long uint64_t; typedef int8_t int_least8_t; typedef int16_t int_least16_t; typedef int32_t int_least32_t; typedef int64_t int_least64_t; typedef uint8_t uint_least8_t; typedef uint16_t uint_least16_t; typedef uint32_t uint_least32_t; typedef uint64_t uint_least64_t; typedef int8_t int_fast8_t; typedef int16_t int_fast16_t; typedef int32_t int_fast32_t; typedef int64_t int_fast64_t; typedef uint8_t uint_fast8_t; typedef uint16_t uint_fast16_t; typedef uint32_t uint_fast32_t; typedef uint64_t uint_fast64_t; typedef signed char __int8_t; typedef unsigned char __uint8_t; typedef short __int16_t; typedef unsigned short __uint16_t; typedef int __int32_t; typedef unsigned int __uint32_t; typedef long long __int64_t; typedef unsigned long long __uint64_t; typedef long __darwin_intptr_t; typedef unsigned int __darwin_natural_t; typedef int __darwin_ct_rune_t; typedef union { char __mbstate8[128]; long long _mbstateL; } __mbstate_t; typedef __mbstate_t __darwin_mbstate_t; typedef long int __darwin_ptrdiff_t; typedef long unsigned int __darwin_size_t; typedef __builtin_va_list __darwin_va_list; typedef int __darwin_wchar_t; typedef __darwin_wchar_t __darwin_rune_t; typedef int __darwin_wint_t; typedef unsigned long __darwin_clock_t; typedef __uint32_t __darwin_socklen_t; typedef long __darwin_ssize_t; typedef long __darwin_time_t; typedef __int64_t __darwin_blkcnt_t; typedef __int32_t __darwin_blksize_t; typedef __int32_t __darwin_dev_t; typedef unsigned int __darwin_fsblkcnt_t; typedef unsigned int __darwin_fsfilcnt_t; typedef __uint32_t __darwin_gid_t; typedef __uint32_t __darwin_id_t; typedef __uint64_t __darwin_ino64_t; typedef __darwin_ino64_t __darwin_ino_t; typedef __darwin_natural_t __darwin_mach_port_name_t; typedef __darwin_mach_port_name_t __darwin_mach_port_t; typedef __uint16_t __darwin_mode_t; typedef __int64_t __darwin_off_t; typedef __int32_t __darwin_pid_t; typedef __uint32_t __darwin_sigset_t; typedef __int32_t __darwin_suseconds_t; typedef __uint32_t __darwin_uid_t; typedef __uint32_t __darwin_useconds_t; typedef unsigned char __darwin_uuid_t[16]; typedef char __darwin_uuid_string_t[37]; struct __darwin_pthread_handler_rec { void (*__routine)(void *); void *__arg; struct __darwin_pthread_handler_rec *__next; }; struct _opaque_pthread_attr_t { long __sig; char __opaque[56]; }; struct _opaque_pthread_cond_t { long __sig; char __opaque[40]; }; struct _opaque_pthread_condattr_t { long __sig; char __opaque[8]; }; struct _opaque_pthread_mutex_t { long __sig; char __opaque[56]; }; struct _opaque_pthread_mutexattr_t { long __sig; char __opaque[8]; }; struct _opaque_pthread_once_t { long __sig; struct __darwin_pthread_handler_rec *__cleanup_stack; char __opaque[8176]; }; typedef struct _opaque_pthread_attr_t __darwin_pthread_attr_t; typedef struct _opaque_pthread_cond_t __darwin_pthread_cond_t; typedef struct _opaque_pthread_condattr_t __darwin_pthread_condattr_t; typedef unsigned long __darwin_pthread_key_t; typedef struct _opaque_pthread_mutex_t __darwin_pthread_mutex_t; typedef struct _opaque_pthread_mutexattr_t __darwin_pthread_mutexattr_t; typedef struct _opaque_pthread_once_t __darwin_pthread_once_t; typedef struct _opaque_pthread_rwlock_t __darwin_pthread_rwlock_t; typedef struct _opaque_pthread_rwlockattr_t __darwin_pthread_rwlockattr_t; typedef struct _opaque_pthread_t *__darwin_pthread_t; typedef unsigned char u_int8_t; typedef unsigned short u_int16_t; typedef unsigned int u_int32_t; typedef unsigned long long u_int64_t; typedef int64_t register_t; typedef unsigned long uintptr_t; typedef u_int64_t user_addr_t; typedef u_int64_t user_size_t; typedef int64_t user_ssize_t; typedef int64_t user_long_t; typedef u_int64_t user_ulong_t; typedef int64_t user_time_t; typedef int64_t user_off_t; typedef u_int64_t syscall_arg_t; typedef __darwin_intptr_t intptr_t; typedef long int intmax_t; typedef long unsigned int uintmax_t; namespace std { inline namespace __Cr { struct __equal_tag {}; struct __plus_tag {}; struct __less_tag {}; template inline const bool __desugars_to_v = false; }} namespace std { inline namespace __Cr { struct __equal_to { template __attribute__((__exclude_from_explicit_instantiation__)) constexpr bool operator()(const _T1& __x, const _T2& __y) const { return __x == __y; } }; template inline const bool __desugars_to_v<__equal_tag, __equal_to, _Tp, _Up> = true; template struct __less {}; template <> struct __less { template __attribute__((__exclude_from_explicit_instantiation__)) constexpr bool operator()(const _Tp& __lhs, const _Up& __rhs) const { return __lhs < __rhs; } }; template inline const bool __desugars_to_v<__less_tag, __less<>, _Tp, _Tp> = true; }} namespace std { inline namespace __Cr { #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wdeprecated" #pragma GCC diagnostic ignored "-Wdeprecated-declarations" template _Tp&& __declval(int); template _Tp __declval(long); #pragma GCC diagnostic pop template __attribute__((__exclude_from_explicit_instantiation__)) decltype(std::__declval<_Tp>(0)) declval() noexcept { static_assert(!__is_same(_Tp, _Tp), "std::declval can only be used in an unevaluated context. " "It's likely that your current usage is trying to extract a value from the function."); } }} # 1 "../../third_party/libc++/src/include/__type_traits/is_referenceable.h" 1 3 # 13 "../../third_party/libc++/src/include/__type_traits/is_referenceable.h" 3 # 1 "../../third_party/libc++/src/include/__type_traits/integral_constant.h" 1 3 # 16 "../../third_party/libc++/src/include/__type_traits/integral_constant.h" 3 namespace std { inline namespace __Cr { template struct integral_constant { static constexpr const _Tp value = __v; typedef _Tp value_type; typedef integral_constant type; __attribute__((__exclude_from_explicit_instantiation__)) constexpr operator value_type() const noexcept { return value; } __attribute__((__exclude_from_explicit_instantiation__)) constexpr value_type operator()() const noexcept { return value; } }; template constexpr const _Tp integral_constant<_Tp, __v>::value; typedef integral_constant true_type; typedef integral_constant false_type; template using _BoolConstant __attribute__((__nodebug__)) = integral_constant; template using bool_constant = integral_constant; }} # 14 "../../third_party/libc++/src/include/__type_traits/is_referenceable.h" 2 3 # 1 "../../third_party/libc++/src/include/__type_traits/is_same.h" 1 3 # 17 "../../third_party/libc++/src/include/__type_traits/is_same.h" 3 namespace std { inline namespace __Cr { template struct is_same : _BoolConstant<__is_same(_Tp, _Up)> {}; template inline constexpr bool is_same_v = __is_same(_Tp, _Up); template using _IsSame = _BoolConstant<__is_same(_Tp, _Up)>; template using _IsNotSame = _BoolConstant; }} namespace std { inline namespace __Cr { template struct __libcpp_is_referenceable : integral_constant {}; }} namespace std { inline namespace __Cr { template using __add_lvalue_reference_t = __add_lvalue_reference(_Tp); template struct add_lvalue_reference { using type __attribute__((__nodebug__)) = __add_lvalue_reference_t<_Tp>; }; template using add_lvalue_reference_t = __add_lvalue_reference_t<_Tp>; }} namespace std { inline namespace __Cr { template using __add_rvalue_reference_t = __add_rvalue_reference(_Tp); template struct add_rvalue_reference { using type = __add_rvalue_reference_t<_Tp>; }; template using add_rvalue_reference_t = __add_rvalue_reference_t<_Tp>; }} namespace std { inline namespace __Cr { template struct is_assignable : _BoolConstant<__is_assignable(_Tp, _Up)> {}; template inline constexpr bool is_assignable_v = __is_assignable(_Tp, _Arg); template struct is_copy_assignable : public integral_constant, __add_lvalue_reference_t)> {}; template inline constexpr bool is_copy_assignable_v = is_copy_assignable<_Tp>::value; template struct is_move_assignable : public integral_constant, __add_rvalue_reference_t<_Tp>)> {}; template inline constexpr bool is_move_assignable_v = is_move_assignable<_Tp>::value; }} namespace std { inline namespace __Cr { template struct is_constructible : public integral_constant {}; template inline constexpr bool is_constructible_v = __is_constructible(_Tp, _Args...); template struct is_copy_constructible : public integral_constant)> {}; template inline constexpr bool is_copy_constructible_v = is_copy_constructible<_Tp>::value; template struct is_move_constructible : public integral_constant)> {}; template inline constexpr bool is_move_constructible_v = is_move_constructible<_Tp>::value; template struct is_default_constructible : public integral_constant {}; template inline constexpr bool is_default_constructible_v = __is_constructible(_Tp); }} namespace std { inline namespace __Cr { template struct is_nothrow_assignable : public integral_constant { }; template inline constexpr bool is_nothrow_assignable_v = __is_nothrow_assignable(_Tp, _Arg); template struct is_nothrow_copy_assignable : public integral_constant< bool, __is_nothrow_assignable(__add_lvalue_reference_t<_Tp>, __add_lvalue_reference_t)> {}; template inline constexpr bool is_nothrow_copy_assignable_v = is_nothrow_copy_assignable<_Tp>::value; template struct is_nothrow_move_assignable : public integral_constant, __add_rvalue_reference_t<_Tp>)> { }; template inline constexpr bool is_nothrow_move_assignable_v = is_nothrow_move_assignable<_Tp>::value; }} namespace std { inline namespace __Cr { template struct is_lvalue_reference : _BoolConstant<__is_lvalue_reference(_Tp)> {}; template struct is_rvalue_reference : _BoolConstant<__is_rvalue_reference(_Tp)> {}; template struct is_reference : _BoolConstant<__is_reference(_Tp)> {}; template inline constexpr bool is_reference_v = __is_reference(_Tp); template inline constexpr bool is_lvalue_reference_v = __is_lvalue_reference(_Tp); template inline constexpr bool is_rvalue_reference_v = __is_rvalue_reference(_Tp); }} namespace std { inline namespace __Cr { template struct enable_if {}; template struct enable_if { typedef _Tp type; }; template using __enable_if_t __attribute__((__nodebug__)) = typename enable_if<_Bp, _Tp>::type; template using enable_if_t = typename enable_if<_Bp, _Tp>::type; }} namespace std { inline namespace __Cr { template struct remove_cv { using type __attribute__((__nodebug__)) = __remove_cv(_Tp); }; template using __remove_cv_t = __remove_cv(_Tp); template using remove_cv_t = __remove_cv_t<_Tp>; }} namespace std { inline namespace __Cr { template struct __libcpp_is_integral { enum { value = 0 }; }; template <> struct __libcpp_is_integral { enum { value = 1 }; }; template <> struct __libcpp_is_integral { enum { value = 1 }; }; template <> struct __libcpp_is_integral { enum { value = 1 }; }; template <> struct __libcpp_is_integral { enum { value = 1 }; }; template <> struct __libcpp_is_integral { enum { value = 1 }; }; template <> struct __libcpp_is_integral { enum { value = 1 }; }; template <> struct __libcpp_is_integral { enum { value = 1 }; }; template <> struct __libcpp_is_integral { enum { value = 1 }; }; template <> struct __libcpp_is_integral { enum { value = 1 }; }; template <> struct __libcpp_is_integral { enum { value = 1 }; }; template <> struct __libcpp_is_integral { enum { value = 1 }; }; template <> struct __libcpp_is_integral { enum { value = 1 }; }; template <> struct __libcpp_is_integral { enum { value = 1 }; }; template <> struct __libcpp_is_integral { enum { value = 1 }; }; template <> struct __libcpp_is_integral { enum { value = 1 }; }; template <> struct __libcpp_is_integral { enum { value = 1 }; }; template <> struct __libcpp_is_integral<__int128_t> { enum { value = 1 }; }; template <> struct __libcpp_is_integral<__uint128_t> { enum { value = 1 }; }; template struct is_integral : _BoolConstant<__is_integral(_Tp)> {}; template inline constexpr bool is_integral_v = __is_integral(_Tp); }} typedef long int ptrdiff_t; typedef long unsigned int size_t; typedef long double max_align_t; typedef decltype(nullptr) nullptr_t; namespace std { inline namespace __Cr { using ::nullptr_t; using ::ptrdiff_t __attribute__((__using_if_exists__)); using ::size_t __attribute__((__using_if_exists__)); using ::max_align_t __attribute__((__using_if_exists__)); }} namespace std { enum class byte : unsigned char {}; __attribute__((__exclude_from_explicit_instantiation__)) inline constexpr byte operator|(byte __lhs, byte __rhs) noexcept { return static_cast( static_cast(static_cast(__lhs) | static_cast(__rhs))); } __attribute__((__exclude_from_explicit_instantiation__)) inline constexpr byte& operator|=(byte& __lhs, byte __rhs) noexcept { return __lhs = __lhs | __rhs; } __attribute__((__exclude_from_explicit_instantiation__)) inline constexpr byte operator&(byte __lhs, byte __rhs) noexcept { return static_cast( static_cast(static_cast(__lhs) & static_cast(__rhs))); } __attribute__((__exclude_from_explicit_instantiation__)) inline constexpr byte& operator&=(byte& __lhs, byte __rhs) noexcept { return __lhs = __lhs & __rhs; } __attribute__((__exclude_from_explicit_instantiation__)) inline constexpr byte operator^(byte __lhs, byte __rhs) noexcept { return static_cast( static_cast(static_cast(__lhs) ^ static_cast(__rhs))); } __attribute__((__exclude_from_explicit_instantiation__)) inline constexpr byte& operator^=(byte& __lhs, byte __rhs) noexcept { return __lhs = __lhs ^ __rhs; } __attribute__((__exclude_from_explicit_instantiation__)) inline constexpr byte operator~(byte __b) noexcept { return static_cast(static_cast(~static_cast(__b))); } template ::value, int> = 0> __attribute__((__exclude_from_explicit_instantiation__)) constexpr byte& operator<<=(byte& __lhs, _Integer __shift) noexcept { return __lhs = __lhs << __shift; } template ::value, int> = 0> __attribute__((__exclude_from_explicit_instantiation__)) constexpr byte operator<<(byte __lhs, _Integer __shift) noexcept { return static_cast(static_cast(static_cast(__lhs) << __shift)); } template ::value, int> = 0> __attribute__((__exclude_from_explicit_instantiation__)) constexpr byte& operator>>=(byte& __lhs, _Integer __shift) noexcept { return __lhs = __lhs >> __shift; } template ::value, int> = 0> __attribute__((__exclude_from_explicit_instantiation__)) constexpr byte operator>>(byte __lhs, _Integer __shift) noexcept { return static_cast(static_cast(static_cast(__lhs) >> __shift)); } template ::value, int> = 0> [[nodiscard]] __attribute__((__exclude_from_explicit_instantiation__)) constexpr _Integer to_integer(byte __b) noexcept { return static_cast<_Integer>(__b); } } namespace std { inline namespace __Cr { template < class _Tp, class... _Args> struct is_nothrow_constructible : public integral_constant {}; template inline constexpr bool is_nothrow_constructible_v = is_nothrow_constructible<_Tp, _Args...>::value; template struct is_nothrow_copy_constructible : public integral_constant< bool, __is_nothrow_constructible(_Tp, __add_lvalue_reference_t)> {}; template inline constexpr bool is_nothrow_copy_constructible_v = is_nothrow_copy_constructible<_Tp>::value; template struct is_nothrow_move_constructible : public integral_constant)> {}; template inline constexpr bool is_nothrow_move_constructible_v = is_nothrow_move_constructible<_Tp>::value; template struct is_nothrow_default_constructible : public integral_constant {}; template inline constexpr bool is_nothrow_default_constructible_v = __is_nothrow_constructible(_Tp); }} namespace std { inline namespace __Cr { template using void_t = void; template using __void_t = void; }} namespace std { inline namespace __Cr { template inline const bool __is_swappable_with_v = false; template inline const bool __is_swappable_v = __is_swappable_with_v<_Tp&, _Tp&>; template > inline const bool __is_nothrow_swappable_with_v = false; template inline const bool __is_nothrow_swappable_v = __is_nothrow_swappable_with_v<_Tp&, _Tp&>; template using __swap_result_t = __enable_if_t::value && is_move_assignable<_Tp>::value>; template inline __attribute__((__exclude_from_explicit_instantiation__)) constexpr __swap_result_t<_Tp> swap(_Tp& __x, _Tp& __y) noexcept(is_nothrow_move_constructible<_Tp>::value&& is_nothrow_move_assignable<_Tp>::value); template , int> = 0> inline __attribute__((__exclude_from_explicit_instantiation__)) constexpr void swap(_Tp (&__a)[_Np], _Tp (&__b)[_Np]) noexcept(__is_nothrow_swappable_v<_Tp>); template inline const bool __is_swappable_with_v<_Tp, _Up, __void_t(), std::declval<_Up>())), decltype(swap(std::declval<_Up>(), std::declval<_Tp>()))> > = true; template inline const bool __is_nothrow_swappable_with_v<_Tp, _Up, true> = noexcept(swap(std::declval<_Tp>(), std::declval<_Up>())) && noexcept(swap(std::declval<_Up>(), std::declval<_Tp>())); template inline constexpr bool is_swappable_with_v = __is_swappable_with_v<_Tp, _Up>; template struct is_swappable_with : bool_constant> {}; template inline constexpr bool is_swappable_v = is_swappable_with_v<__add_lvalue_reference_t<_Tp>, __add_lvalue_reference_t<_Tp>>; template struct is_swappable : bool_constant> {}; template inline constexpr bool is_nothrow_swappable_with_v = __is_nothrow_swappable_with_v<_Tp, _Up>; template struct is_nothrow_swappable_with : bool_constant> {}; template inline constexpr bool is_nothrow_swappable_v = is_nothrow_swappable_with_v<__add_lvalue_reference_t<_Tp>, __add_lvalue_reference_t<_Tp>>; template struct is_nothrow_swappable : bool_constant> {}; }} namespace std { inline namespace __Cr { template struct _IfImpl; template <> struct _IfImpl { template using _Select __attribute__((__nodebug__)) = _IfRes; }; template <> struct _IfImpl { template using _Select __attribute__((__nodebug__)) = _ElseRes; }; template using _If __attribute__((__nodebug__)) = typename _IfImpl<_Cond>::template _Select<_IfRes, _ElseRes>; template struct conditional { using type __attribute__((__nodebug__)) = _If; }; template struct conditional { using type __attribute__((__nodebug__)) = _Then; }; template using conditional_t __attribute__((__nodebug__)) = typename conditional<_Bp, _IfRes, _ElseRes>::type; template using __conditional_t __attribute__((__nodebug__)) = typename conditional<_Bp, _If, _Then>::type; }} namespace std { inline namespace __Cr { template struct remove_reference { using type __attribute__((__nodebug__)) = __remove_reference_t(_Tp); }; template using __libcpp_remove_reference_t = __remove_reference_t(_Tp); template using remove_reference_t = __libcpp_remove_reference_t<_Tp>; }} namespace std { inline namespace __Cr { template [[__nodiscard__]] inline __attribute__((__exclude_from_explicit_instantiation__)) constexpr __libcpp_remove_reference_t<_Tp>&& move([[_Clang::__lifetimebound__]] _Tp&& __t) noexcept { typedef __attribute__((__nodebug__)) __libcpp_remove_reference_t<_Tp> _Up; return static_cast<_Up&&>(__t); } template using __move_if_noexcept_result_t = __conditional_t::value && is_copy_constructible<_Tp>::value, const _Tp&, _Tp&&>; template inline __attribute__((__exclude_from_explicit_instantiation__)) constexpr void iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b) noexcept(noexcept(swap(*std::declval<_ForwardIterator1>(), *std::declval<_ForwardIterator2>()))) { swap(*__a, *__b); } }} namespace std { inline namespace __Cr { template struct __libcpp_is_floating_point : public false_type {}; template <> struct __libcpp_is_floating_point : public true_type {}; template <> struct __libcpp_is_floating_point : public true_type {}; template <> struct __libcpp_is_floating_point : public true_type {}; template struct is_floating_point : public __libcpp_is_floating_point<__remove_cv_t<_Tp> > {}; template inline constexpr bool is_floating_point_v = is_floating_point<_Tp>::value; }} namespace std { inline namespace __Cr { template struct is_arithmetic : public integral_constant::value || is_floating_point<_Tp>::value> {}; template inline constexpr bool is_arithmetic_v = is_arithmetic<_Tp>::value; }} namespace std { inline namespace __Cr { template struct is_signed : _BoolConstant<__is_signed(_Tp)> {}; template inline constexpr bool is_signed_v = __is_signed(_Tp); }} namespace std { inline namespace __Cr { template struct __libcpp_is_signed_integer : public false_type {}; template <> struct __libcpp_is_signed_integer : public true_type {}; template <> struct __libcpp_is_signed_integer : public true_type {}; template <> struct __libcpp_is_signed_integer : public true_type {}; template <> struct __libcpp_is_signed_integer : public true_type {}; template <> struct __libcpp_is_signed_integer : public true_type {}; template <> struct __libcpp_is_signed_integer<__int128_t> : public true_type {}; }} namespace std { inline namespace __Cr { template struct __libcpp_is_unsigned_integer : public false_type {}; template <> struct __libcpp_is_unsigned_integer : public true_type {}; template <> struct __libcpp_is_unsigned_integer : public true_type {}; template <> struct __libcpp_is_unsigned_integer : public true_type {}; template <> struct __libcpp_is_unsigned_integer : public true_type {}; template <> struct __libcpp_is_unsigned_integer : public true_type {}; template <> struct __libcpp_is_unsigned_integer<__uint128_t> : public true_type {}; }} namespace std { inline namespace __Cr { template concept integral = is_integral_v<_Tp>; template concept signed_integral = integral<_Tp> && is_signed_v<_Tp>; template concept unsigned_integral = integral<_Tp> && !signed_integral<_Tp>; template concept floating_point = is_floating_point_v<_Tp>; template concept __libcpp_unsigned_integer = __libcpp_is_unsigned_integer<_Tp>::value; template concept __libcpp_signed_integer = __libcpp_is_signed_integer<_Tp>::value; template concept __libcpp_integer = __libcpp_unsigned_integer<_Tp> || __libcpp_signed_integer<_Tp>; }} namespace std { inline namespace __Cr { template struct is_convertible : public integral_constant {}; template inline constexpr bool is_convertible_v = __is_convertible(_From, _To); }} namespace std { inline namespace __Cr { template concept convertible_to = is_convertible_v<_From, _To> && requires { static_cast<_To>(std::declval<_From>()); }; }} namespace std { inline namespace __Cr { template concept __same_as_impl = _IsSame<_Tp, _Up>::value; template concept same_as = __same_as_impl<_Tp, _Up> && __same_as_impl<_Up, _Tp>; }} namespace std { inline namespace __Cr { template struct is_void : _BoolConstant<__is_void(_Tp)> {}; template inline constexpr bool is_void_v = __is_void(_Tp); }} namespace std { inline namespace __Cr { template using __add_pointer_t = __add_pointer(_Tp); template struct add_pointer { using type __attribute__((__nodebug__)) = __add_pointer_t<_Tp>; }; template using add_pointer_t = __add_pointer_t<_Tp>; }} namespace std { inline namespace __Cr { template struct is_array : public false_type {}; template struct is_array<_Tp[]> : public true_type {}; template struct is_array<_Tp[_Np]> : public true_type {}; template inline constexpr bool is_array_v = is_array<_Tp>::value; }} namespace std { inline namespace __Cr { template struct is_const : _BoolConstant<__is_const(_Tp)> {}; template inline constexpr bool is_const_v = __is_const(_Tp); }} namespace std { inline namespace __Cr { template struct is_function : integral_constant {}; template inline constexpr bool is_function_v = is_function<_Tp>::value; }} namespace std { inline namespace __Cr { template struct remove_extent { using type __attribute__((__nodebug__)) = __remove_extent(_Tp); }; template using __remove_extent_t = __remove_extent(_Tp); template using remove_extent_t = __remove_extent_t<_Tp>; }} namespace std { inline namespace __Cr { template using __decay_t __attribute__((__nodebug__)) = __decay(_Tp); template struct decay { using type __attribute__((__nodebug__)) = __decay_t<_Tp>; }; template using decay_t = __decay_t<_Tp>; }} namespace std { inline namespace __Cr { template using __remove_cvref_t __attribute__((__nodebug__)) = __remove_cvref(_Tp); template using __is_same_uncvref = _IsSame<__remove_cvref_t<_Tp>, __remove_cvref_t<_Up> >; template struct remove_cvref { using type __attribute__((__nodebug__)) = __remove_cvref(_Tp); }; template using remove_cvref_t = __remove_cvref_t<_Tp>; }} namespace std { inline namespace __Cr { template using __cond_type = decltype(false ? std::declval<_Tp>() : std::declval<_Up>()); template struct __common_type3 {}; template struct __common_type3<_Tp, _Up, void_t<__cond_type>> { using type = remove_cvref_t<__cond_type>; }; template struct __common_type2_imp : __common_type3<_Tp, _Up> {}; template struct __common_type2_imp<_Tp, _Up, __void_t() : std::declval<_Up>())> > { typedef __attribute__((__nodebug__)) __decay_t() : std::declval<_Up>())> type; }; template struct __common_type_impl {}; template struct __common_types; template struct common_type; template struct __common_type_impl< __common_types<_Tp, _Up>, __void_t::type> > { typedef typename common_type<_Tp, _Up>::type type; }; template struct __common_type_impl<__common_types<_Tp, _Up, _Vp, _Rest...>, __void_t::type> > : __common_type_impl<__common_types::type, _Vp, _Rest...> > {}; template <> struct common_type<> {}; template struct common_type<_Tp> : public common_type<_Tp, _Tp> {}; template struct common_type<_Tp, _Up> : conditional<_IsSame<_Tp, __decay_t<_Tp> >::value && _IsSame<_Up, __decay_t<_Up> >::value, __common_type2_imp<_Tp, _Up>, common_type<__decay_t<_Tp>, __decay_t<_Up> > >::type {}; template struct common_type<_Tp, _Up, _Vp, _Rest...> : __common_type_impl<__common_types<_Tp, _Up, _Vp, _Rest...> > {}; template using common_type_t = typename common_type<_Tp...>::type; }} namespace std { inline namespace __Cr { template struct __copy_cv { template using __apply = _To; }; template struct __copy_cv { template using __apply = const _To; }; template struct __copy_cv { template using __apply = volatile _To; }; template struct __copy_cv { template using __apply = const volatile _To; }; template using __copy_cv_t = typename __copy_cv<_From>::template __apply<_To>; }} namespace std { inline namespace __Cr { template struct __copy_cvref { using type = __copy_cv_t<_From, _To>; }; template struct __copy_cvref<_From&, _To> { using type = __add_lvalue_reference_t<__copy_cv_t<_From, _To> >; }; template struct __copy_cvref<_From&&, _To> { using type = __add_rvalue_reference_t<__copy_cv_t<_From, _To> >; }; template using __copy_cvref_t = typename __copy_cvref<_From, _To>::type; }} namespace std { inline namespace __Cr { template using __cond_res = decltype(false ? std::declval<_Xp (&)()>()() : std::declval<_Yp (&)()>()()); template struct __xref { template using __apply = __copy_cvref_t<_Tp, _Up>; }; template , class _Yp = remove_reference_t<_Bp>> struct __common_ref; template using __common_ref_t = typename __common_ref<_Xp, _Yp>::__type; template using __cv_cond_res = __cond_res<__copy_cv_t<_Xp, _Yp>&, __copy_cv_t<_Yp, _Xp>&>; template requires requires { typename __cv_cond_res<_Xp, _Yp>; } && is_reference_v<__cv_cond_res<_Xp, _Yp>> struct __common_ref<_Ap&, _Bp&, _Xp, _Yp> { using __type = __cv_cond_res<_Xp, _Yp>; }; template using __common_ref_C = remove_reference_t<__common_ref_t<_Xp&, _Yp&>>&&; template requires requires { typename __common_ref_C<_Xp, _Yp>; } && is_convertible_v<_Ap&&, __common_ref_C<_Xp, _Yp>> && is_convertible_v<_Bp&&, __common_ref_C<_Xp, _Yp>> struct __common_ref<_Ap&&, _Bp&&, _Xp, _Yp> { using __type = __common_ref_C<_Xp, _Yp>; }; template using __common_ref_D = __common_ref_t; template requires requires { typename __common_ref_D<_Xp, _Yp>; } && is_convertible_v<_Ap&&, __common_ref_D<_Xp, _Yp>> struct __common_ref<_Ap&&, _Bp&, _Xp, _Yp> { using __type = __common_ref_D<_Xp, _Yp>; }; template struct __common_ref<_Ap&, _Bp&&, _Xp, _Yp> : __common_ref<_Bp&&, _Ap&> {}; template struct __common_ref {}; template struct common_reference; template using common_reference_t = typename common_reference<_Types...>::type; template <> struct common_reference<> {}; template struct common_reference<_Tp> { using type = _Tp; }; template struct __common_reference_sub_bullet3; template struct __common_reference_sub_bullet2 : __common_reference_sub_bullet3<_Tp, _Up> {}; template struct __common_reference_sub_bullet1 : __common_reference_sub_bullet2<_Tp, _Up> {}; template struct common_reference<_Tp, _Up> : __common_reference_sub_bullet1<_Tp, _Up> {}; template requires is_reference_v<_Tp> && is_reference_v<_Up> && requires { typename __common_ref_t<_Tp, _Up>; } struct __common_reference_sub_bullet1<_Tp, _Up> { using type = __common_ref_t<_Tp, _Up>; }; template class, template class> struct basic_common_reference {}; template using __basic_common_reference_t = typename basic_common_reference, remove_cvref_t<_Up>, __xref<_Tp>::template __apply, __xref<_Up>::template __apply>::type; template requires requires { typename __basic_common_reference_t<_Tp, _Up>; } struct __common_reference_sub_bullet2<_Tp, _Up> { using type = __basic_common_reference_t<_Tp, _Up>; }; }} namespace std { inline namespace __Cr { template concept common_reference_with = same_as, common_reference_t<_Up, _Tp>> && convertible_to<_Tp, common_reference_t<_Tp, _Up>> && convertible_to<_Up, common_reference_t<_Tp, _Up>>; }} namespace std { inline namespace __Cr { template using __make_const_lvalue_ref = const __libcpp_remove_reference_t<_Tp>&; }} namespace std { inline namespace __Cr { template [[__nodiscard__]] inline __attribute__((__exclude_from_explicit_instantiation__)) constexpr _Tp&& forward([[_Clang::__lifetimebound__]] __libcpp_remove_reference_t<_Tp>& __t) noexcept { return static_cast<_Tp&&>(__t); } template [[__nodiscard__]] inline __attribute__((__exclude_from_explicit_instantiation__)) constexpr _Tp&& forward([[_Clang::__lifetimebound__]] __libcpp_remove_reference_t<_Tp>&& __t) noexcept { static_assert(!is_lvalue_reference<_Tp>::value, "cannot forward an rvalue as an lvalue"); return static_cast<_Tp&&>(__t); } }} namespace std { inline namespace __Cr { template concept assignable_from = is_lvalue_reference_v<_Lhs> && common_reference_with<__make_const_lvalue_ref<_Lhs>, __make_const_lvalue_ref<_Rhs>> && requires(_Lhs __lhs, _Rhs&& __rhs) { { __lhs = std::forward<_Rhs>(__rhs) } -> same_as<_Lhs>; }; }} namespace std { inline namespace __Cr { template struct remove_all_extents { using type __attribute__((__nodebug__)) = __remove_all_extents(_Tp); }; template using __remove_all_extents_t = __remove_all_extents(_Tp); template using remove_all_extents_t = __remove_all_extents_t<_Tp>; }} namespace std { inline namespace __Cr { template struct is_destructible : _BoolConstant<__is_destructible(_Tp)> {}; template inline constexpr bool is_destructible_v = __is_destructible(_Tp); }} namespace std { inline namespace __Cr { template struct is_enum : public integral_constant {}; template inline constexpr bool is_enum_v = __is_enum(_Tp); }} namespace std { inline namespace __Cr { template struct __libcpp_is_member_pointer { enum { __is_member = false, __is_func = false, __is_obj = false }; }; template struct __libcpp_is_member_pointer<_Tp _Up::*> { enum { __is_member = true, __is_func = is_function<_Tp>::value, __is_obj = !__is_func, }; }; template struct is_member_function_pointer : _BoolConstant<__is_member_function_pointer(_Tp)> {}; template inline constexpr bool is_member_function_pointer_v = __is_member_function_pointer(_Tp); }} namespace std { inline namespace __Cr { template struct is_member_pointer : _BoolConstant<__is_member_pointer(_Tp)> {}; template inline constexpr bool is_member_pointer_v = __is_member_pointer(_Tp); }} namespace std { inline namespace __Cr { template struct __is_nullptr_t_impl : public false_type {}; template <> struct __is_nullptr_t_impl : public true_type {}; template struct __is_nullptr_t : public __is_nullptr_t_impl<__remove_cv_t<_Tp> > {}; template struct is_null_pointer : public __is_nullptr_t_impl<__remove_cv_t<_Tp> > {}; template inline constexpr bool is_null_pointer_v = is_null_pointer<_Tp>::value; }} namespace std { inline namespace __Cr { template struct is_pointer : _BoolConstant<__is_pointer(_Tp)> {}; template inline constexpr bool is_pointer_v = __is_pointer(_Tp); }} namespace std { inline namespace __Cr { template struct is_scalar : _BoolConstant<__is_scalar(_Tp)> {}; template inline constexpr bool is_scalar_v = __is_scalar(_Tp); }} namespace std { inline namespace __Cr { template struct __libcpp_is_nothrow_destructible; template struct __libcpp_is_nothrow_destructible : public false_type {}; template struct __libcpp_is_nothrow_destructible : public integral_constant().~_Tp()) > {}; template struct is_nothrow_destructible : public __libcpp_is_nothrow_destructible::value, _Tp> {}; template struct is_nothrow_destructible<_Tp[_Ns]> : public is_nothrow_destructible<_Tp> {}; template struct is_nothrow_destructible<_Tp&> : public true_type {}; template struct is_nothrow_destructible<_Tp&&> : public true_type {}; template inline constexpr bool is_nothrow_destructible_v = is_nothrow_destructible<_Tp>::value; }} namespace std { inline namespace __Cr { template concept destructible = is_nothrow_destructible_v<_Tp>; }} namespace std { inline namespace __Cr { template concept constructible_from = destructible<_Tp> && is_constructible_v<_Tp, _Args...>; template concept __default_initializable = requires { ::new _Tp; }; template concept default_initializable = constructible_from<_Tp> && requires { _Tp{}; } && __default_initializable<_Tp>; template concept move_constructible = constructible_from<_Tp, _Tp> && convertible_to<_Tp, _Tp>; template concept copy_constructible = move_constructible<_Tp> && constructible_from<_Tp, _Tp&> && convertible_to<_Tp&, _Tp> && constructible_from<_Tp, const _Tp&> && convertible_to && constructible_from<_Tp, const _Tp> && convertible_to; }} namespace std { inline namespace __Cr { template struct is_class : public integral_constant {}; template inline constexpr bool is_class_v = __is_class(_Tp); }} namespace std { inline namespace __Cr { template struct is_union : public integral_constant {}; template inline constexpr bool is_union_v = __is_union(_Tp); }} namespace std { inline namespace __Cr { template concept __class_or_enum = is_class_v<_Tp> || is_union_v<_Tp> || is_enum_v<_Tp>; }} namespace std { inline namespace __Cr { template struct extent : integral_constant {}; template inline constexpr size_t extent_v = __array_extent(_Tp, _Ip); }} namespace std { inline namespace __Cr { template inline __attribute__((__exclude_from_explicit_instantiation__)) constexpr _T1 exchange(_T1& __obj, _T2&& __new_value) noexcept( is_nothrow_move_constructible<_T1>::value && is_nothrow_assignable<_T1&, _T2>::value) { _T1 __old_value = std::move(__obj); __obj = std::forward<_T2>(__new_value); return __old_value; } }} namespace std { inline namespace __Cr { namespace ranges { namespace __swap { template void swap(_Tp&, _Tp&) = delete; template concept __unqualified_swappable_with = (__class_or_enum> || __class_or_enum>) && requires(_Tp&& __t, _Up&& __u) { swap(std::forward<_Tp>(__t), std::forward<_Up>(__u)); }; struct __fn; template concept __swappable_arrays = !__unqualified_swappable_with<_Tp (&)[_Size], _Up (&)[_Size]> && extent_v<_Tp> == extent_v<_Up> && requires(_Tp (&__t)[_Size], _Up (&__u)[_Size], const __fn& __swap) { __swap(__t[0], __u[0]); }; template concept __exchangeable = !__unqualified_swappable_with<_Tp&, _Tp&> && move_constructible<_Tp> && assignable_from<_Tp&, _Tp>; struct __fn { template requires __unqualified_swappable_with<_Tp, _Up> __attribute__((__exclude_from_explicit_instantiation__)) constexpr void operator()(_Tp&& __t, _Up&& __u) const noexcept(noexcept(swap(std::forward<_Tp>(__t), std::forward<_Up>(__u)))) { swap(std::forward<_Tp>(__t), std::forward<_Up>(__u)); } template requires __swappable_arrays<_Tp, _Up, _Size> __attribute__((__exclude_from_explicit_instantiation__)) constexpr void operator()(_Tp (&__t)[_Size], _Up (&__u)[_Size]) const noexcept(noexcept((*this)(*__t, *__u))) { for (size_t __i = 0; __i < _Size; ++__i) { (*this)(__t[__i], __u[__i]); } } template <__exchangeable _Tp> __attribute__((__exclude_from_explicit_instantiation__)) constexpr void operator()(_Tp& __x, _Tp& __y) const noexcept(is_nothrow_move_constructible_v<_Tp> && is_nothrow_move_assignable_v<_Tp>) { __y = std::exchange(__x, std::move(__y)); } }; } inline namespace __cpo { inline constexpr auto swap = __swap::__fn{}; } } template concept swappable = requires(_Tp& __a, _Tp& __b) { ranges::swap(__a, __b); }; template concept swappable_with = common_reference_with<_Tp, _Up> && requires(_Tp&& __t, _Up&& __u) { ranges::swap(std::forward<_Tp>(__t), std::forward<_Tp>(__t)); ranges::swap(std::forward<_Up>(__u), std::forward<_Up>(__u)); ranges::swap(std::forward<_Tp>(__t), std::forward<_Up>(__u)); ranges::swap(std::forward<_Up>(__u), std::forward<_Tp>(__t)); }; }} namespace std { inline namespace __Cr { template struct is_object : _BoolConstant<__is_object(_Tp)> {}; template inline constexpr bool is_object_v = __is_object(_Tp); }} namespace std { inline namespace __Cr { template concept movable = is_object_v<_Tp> && move_constructible<_Tp> && assignable_from<_Tp&, _Tp> && swappable<_Tp>; }} namespace std { inline namespace __Cr { template concept copyable = copy_constructible<_Tp> && movable<_Tp> && assignable_from<_Tp&, _Tp&> && assignable_from<_Tp&, const _Tp&> && assignable_from<_Tp&, const _Tp>; }} namespace std { inline namespace __Cr { template struct is_base_of : public integral_constant {}; template inline constexpr bool is_base_of_v = __is_base_of(_Bp, _Dp); }} namespace std { inline namespace __Cr { template concept derived_from = is_base_of_v<_Bp, _Dp> && is_convertible_v; }} namespace std { inline namespace __Cr { template concept __boolean_testable_impl = convertible_to<_Tp, bool>; template concept __boolean_testable = __boolean_testable_impl<_Tp> && requires(_Tp&& __t) { { !std::forward<_Tp>(__t) } -> __boolean_testable_impl; }; }} namespace std { inline namespace __Cr { template concept __weakly_equality_comparable_with = requires(__make_const_lvalue_ref<_Tp> __t, __make_const_lvalue_ref<_Up> __u) { { __t == __u } -> __boolean_testable; { __t != __u } -> __boolean_testable; { __u == __t } -> __boolean_testable; { __u != __t } -> __boolean_testable; }; template concept equality_comparable = __weakly_equality_comparable_with<_Tp, _Tp>; template concept equality_comparable_with = equality_comparable<_Tp> && equality_comparable<_Up> && common_reference_with<__make_const_lvalue_ref<_Tp>, __make_const_lvalue_ref<_Up>> && equality_comparable< common_reference_t< __make_const_lvalue_ref<_Tp>, __make_const_lvalue_ref<_Up>>> && __weakly_equality_comparable_with<_Tp, _Up>; }} namespace std { inline namespace __Cr { template struct __is_core_convertible : public false_type {}; template struct __is_core_convertible<_Tp, _Up, decltype(static_cast(0)(static_cast<_Tp (*)()>(0)()))> : public true_type {}; }} namespace std { inline namespace __Cr { template struct is_member_object_pointer : _BoolConstant<__is_member_object_pointer(_Tp)> {}; template inline constexpr bool is_member_object_pointer_v = __is_member_object_pointer(_Tp); }} namespace std { inline namespace __Cr { template struct hash; template class reference_wrapper; }} namespace std { inline namespace __Cr { template struct __is_reference_wrapper_impl : public false_type {}; template struct __is_reference_wrapper_impl > : public true_type {}; template struct __is_reference_wrapper : public __is_reference_wrapper_impl<__remove_cv_t<_Tp> > {}; }} namespace std { inline namespace __Cr { struct __nat { __nat() = delete; __nat(const __nat&) = delete; __nat& operator=(const __nat&) = delete; ~__nat() = delete; }; }} namespace std { inline namespace __Cr { template struct __member_pointer_class_type {}; template struct __member_pointer_class_type<_Ret _ClassType::*> { typedef _ClassType type; }; template , class _DecayA0 = __decay_t<_A0>, class _ClassT = typename __member_pointer_class_type<_DecayFp>::type> using __enable_if_bullet1 = __enable_if_t::value && (is_same<_ClassT, _DecayA0>::value || is_base_of<_ClassT, _DecayA0>::value)>; template , class _DecayA0 = __decay_t<_A0> > using __enable_if_bullet2 = __enable_if_t::value && __is_reference_wrapper<_DecayA0>::value>; template , class _DecayA0 = __decay_t<_A0>, class _ClassT = typename __member_pointer_class_type<_DecayFp>::type> using __enable_if_bullet3 = __enable_if_t::value && !(is_same<_ClassT, _DecayA0>::value || is_base_of<_ClassT, _DecayA0>::value) && !__is_reference_wrapper<_DecayA0>::value>; template , class _DecayA0 = __decay_t<_A0>, class _ClassT = typename __member_pointer_class_type<_DecayFp>::type> using __enable_if_bullet4 = __enable_if_t::value && (is_same<_ClassT, _DecayA0>::value || is_base_of<_ClassT, _DecayA0>::value)>; template __nat __invoke(_Args&&... __args); template > inline __attribute__((__exclude_from_explicit_instantiation__)) constexpr decltype((std::declval<_A0>().*std::declval<_Fp>())(std::declval<_Args>()...)) __invoke(_Fp&& __f, _A0&& __a0, _Args&&... __args) noexcept(noexcept((static_cast<_A0&&>(__a0).*__f)(static_cast<_Args&&>(__args)...))) { return (static_cast<_A0&&>(__a0).*__f)(static_cast<_Args&&>(__args)...); } template > inline __attribute__((__exclude_from_explicit_instantiation__)) constexpr decltype((std::declval<_A0>().get().*std::declval<_Fp>())(std::declval<_Args>()...)) __invoke(_Fp&& __f, _A0&& __a0, _Args&&... __args) noexcept(noexcept((*static_cast<_A0&&>(__a0)).*__f)) { return (*static_cast<_A0&&>(__a0)).*__f; } template inline __attribute__((__exclude_from_explicit_instantiation__)) constexpr decltype(std::declval<_Fp>()(std::declval<_Args>()...)) __invoke(_Fp&& __f, _Args&&... __args) noexcept(noexcept(static_cast<_Fp&&>(__f)(static_cast<_Args&&>(__args)...))) { return static_cast<_Fp&&>(__f)(static_cast<_Args&&>(__args)...); } template struct __invokable_r { template static decltype(std::__invoke(std::declval<_XFp>(), std::declval<_XArgs>()...)) __try_call(int); template static __nat __try_call(...); using _Result = decltype(__try_call<_Fp, _Args...>(0)); using type = __conditional_t<_IsNotSame<_Result, __nat>::value, __conditional_t::value, true_type, __is_core_convertible<_Result, _Ret> >, false_type>; static const bool value = type::value; }; template using __invokable = __invokable_r; template struct __nothrow_invokable_r_imp { static const bool value = noexcept(std::__invoke(std::declval<_Fp>(), std::declval<_Args>()...)); }; template using __nothrow_invokable_r = __nothrow_invokable_r_imp<__invokable_r<_Ret, _Fp, _Args...>::value, is_void<_Ret>::value, _Ret, _Fp, _Args...>; template using __nothrow_invokable = __nothrow_invokable_r_imp<__invokable<_Fp, _Args...>::value, true, void, _Fp, _Args...>; template struct __invoke_of : public enable_if<__invokable<_Fp, _Args...>::value, typename __invokable_r::_Result> {}; template ::value> struct __invoke_void_return_wrapper { template __attribute__((__exclude_from_explicit_instantiation__)) constexpr static _Ret __call(_Args&&... __args) { return std::__invoke(std::forward<_Args>(__args)...); } }; template struct __invoke_void_return_wrapper<_Ret, true> { template __attribute__((__exclude_from_explicit_instantiation__)) constexpr static void __call(_Args&&... __args) { std::__invoke(std::forward<_Args>(__args)...); } }; template struct is_invocable : integral_constant::value> {}; template struct is_invocable_r : integral_constant::value> {}; template inline constexpr bool is_invocable_v = is_invocable<_Fn, _Args...>::value; template inline constexpr bool is_invocable_r_v = is_invocable_r<_Ret, _Fn, _Args...>::value; template struct is_nothrow_invocable : integral_constant::value> { }; template struct is_nothrow_invocable_r : integral_constant::value> {}; template inline constexpr bool is_nothrow_invocable_v = is_nothrow_invocable<_Fn, _Args...>::value; template inline constexpr bool is_nothrow_invocable_r_v = is_nothrow_invocable_r<_Ret, _Fn, _Args...>::value; template struct invoke_result : __invoke_of<_Fn, _Args...> {}; template using invoke_result_t = typename invoke_result<_Fn, _Args...>::type; }} namespace std { inline namespace __Cr { template __attribute__((__exclude_from_explicit_instantiation__)) constexpr invoke_result_t<_Fn, _Args...> invoke(_Fn&& __f, _Args&&... __args) noexcept(is_nothrow_invocable_v<_Fn, _Args...>) { return std::__invoke(std::forward<_Fn>(__f), std::forward<_Args>(__args)...); } }} namespace std { inline namespace __Cr { template concept invocable = requires(_Fn&& __fn, _Args&&... __args) { std::invoke(std::forward<_Fn>(__fn), std::forward<_Args>(__args)...); }; template concept regular_invocable = invocable<_Fn, _Args...>; }} namespace std { inline namespace __Cr { template concept predicate = regular_invocable<_Fn, _Args...> && __boolean_testable>; }} namespace std { inline namespace __Cr { template concept semiregular = copyable<_Tp> && default_initializable<_Tp>; }} namespace std { inline namespace __Cr { template concept regular = semiregular<_Tp> && equality_comparable<_Tp>; }} namespace std { inline namespace __Cr { template concept relation = predicate<_Rp, _Tp, _Tp> && predicate<_Rp, _Up, _Up> && predicate<_Rp, _Tp, _Up> && predicate<_Rp, _Up, _Tp>; template concept equivalence_relation = relation<_Rp, _Tp, _Up>; template concept strict_weak_order = relation<_Rp, _Tp, _Up>; }} namespace std { inline namespace __Cr { template concept __partially_ordered_with = requires(__make_const_lvalue_ref<_Tp> __t, __make_const_lvalue_ref<_Up> __u) { { __t < __u } -> __boolean_testable; { __t > __u } -> __boolean_testable; { __t <= __u } -> __boolean_testable; { __t >= __u } -> __boolean_testable; { __u < __t } -> __boolean_testable; { __u > __t } -> __boolean_testable; { __u <= __t } -> __boolean_testable; { __u >= __t } -> __boolean_testable; }; template concept totally_ordered = equality_comparable<_Tp> && __partially_ordered_with<_Tp, _Tp>; template concept totally_ordered_with = totally_ordered<_Tp> && totally_ordered<_Up> && equality_comparable_with<_Tp, _Up> && totally_ordered< common_reference_t< __make_const_lvalue_ref<_Tp>, __make_const_lvalue_ref<_Up>>> && __partially_ordered_with<_Tp, _Up>; }} namespace std { inline namespace __Cr { template