1*4d6fc14bSjoerg.. _FeatureTestMacroTable: 2*4d6fc14bSjoerg 3*4d6fc14bSjoerg========================== 4*4d6fc14bSjoergFeature Test Macro Support 5*4d6fc14bSjoerg========================== 6*4d6fc14bSjoerg 7*4d6fc14bSjoerg.. contents:: 8*4d6fc14bSjoerg :local: 9*4d6fc14bSjoerg 10*4d6fc14bSjoergOverview 11*4d6fc14bSjoerg======== 12*4d6fc14bSjoerg 13*4d6fc14bSjoergThis file documents the feature test macros currently supported by libc++. 14*4d6fc14bSjoerg 15*4d6fc14bSjoerg.. _feature-status: 16*4d6fc14bSjoerg 17*4d6fc14bSjoergStatus 18*4d6fc14bSjoerg====== 19*4d6fc14bSjoerg 20*4d6fc14bSjoerg.. table:: Current Status 21*4d6fc14bSjoerg :name: feature-status-table 22*4d6fc14bSjoerg :widths: auto 23*4d6fc14bSjoerg 24*4d6fc14bSjoerg ================================================= ================= 25*4d6fc14bSjoerg Macro Name Value 26*4d6fc14bSjoerg ================================================= ================= 27*4d6fc14bSjoerg **C++ 14** 28*4d6fc14bSjoerg ------------------------------------------------------------------- 29*4d6fc14bSjoerg ``__cpp_lib_chrono_udls`` ``201304L`` 30*4d6fc14bSjoerg ------------------------------------------------- ----------------- 31*4d6fc14bSjoerg ``__cpp_lib_complex_udls`` ``201309L`` 32*4d6fc14bSjoerg ------------------------------------------------- ----------------- 33*4d6fc14bSjoerg ``__cpp_lib_exchange_function`` ``201304L`` 34*4d6fc14bSjoerg ------------------------------------------------- ----------------- 35*4d6fc14bSjoerg ``__cpp_lib_generic_associative_lookup`` ``201304L`` 36*4d6fc14bSjoerg ------------------------------------------------- ----------------- 37*4d6fc14bSjoerg ``__cpp_lib_integer_sequence`` ``201304L`` 38*4d6fc14bSjoerg ------------------------------------------------- ----------------- 39*4d6fc14bSjoerg ``__cpp_lib_integral_constant_callable`` ``201304L`` 40*4d6fc14bSjoerg ------------------------------------------------- ----------------- 41*4d6fc14bSjoerg ``__cpp_lib_is_final`` ``201402L`` 42*4d6fc14bSjoerg ------------------------------------------------- ----------------- 43*4d6fc14bSjoerg ``__cpp_lib_is_null_pointer`` ``201309L`` 44*4d6fc14bSjoerg ------------------------------------------------- ----------------- 45*4d6fc14bSjoerg ``__cpp_lib_make_reverse_iterator`` ``201402L`` 46*4d6fc14bSjoerg ------------------------------------------------- ----------------- 47*4d6fc14bSjoerg ``__cpp_lib_make_unique`` ``201304L`` 48*4d6fc14bSjoerg ------------------------------------------------- ----------------- 49*4d6fc14bSjoerg ``__cpp_lib_null_iterators`` ``201304L`` 50*4d6fc14bSjoerg ------------------------------------------------- ----------------- 51*4d6fc14bSjoerg ``__cpp_lib_quoted_string_io`` ``201304L`` 52*4d6fc14bSjoerg ------------------------------------------------- ----------------- 53*4d6fc14bSjoerg ``__cpp_lib_result_of_sfinae`` ``201210L`` 54*4d6fc14bSjoerg ------------------------------------------------- ----------------- 55*4d6fc14bSjoerg ``__cpp_lib_robust_nonmodifying_seq_ops`` ``201304L`` 56*4d6fc14bSjoerg ------------------------------------------------- ----------------- 57*4d6fc14bSjoerg ``__cpp_lib_shared_timed_mutex`` ``201402L`` 58*4d6fc14bSjoerg ------------------------------------------------- ----------------- 59*4d6fc14bSjoerg ``__cpp_lib_string_udls`` ``201304L`` 60*4d6fc14bSjoerg ------------------------------------------------- ----------------- 61*4d6fc14bSjoerg ``__cpp_lib_transformation_trait_aliases`` ``201304L`` 62*4d6fc14bSjoerg ------------------------------------------------- ----------------- 63*4d6fc14bSjoerg ``__cpp_lib_transparent_operators`` ``201210L`` 64*4d6fc14bSjoerg ------------------------------------------------- ----------------- 65*4d6fc14bSjoerg ``__cpp_lib_tuple_element_t`` ``201402L`` 66*4d6fc14bSjoerg ------------------------------------------------- ----------------- 67*4d6fc14bSjoerg ``__cpp_lib_tuples_by_type`` ``201304L`` 68*4d6fc14bSjoerg ------------------------------------------------- ----------------- 69*4d6fc14bSjoerg **C++ 17** 70*4d6fc14bSjoerg ------------------------------------------------------------------- 71*4d6fc14bSjoerg ``__cpp_lib_addressof_constexpr`` ``201603L`` 72*4d6fc14bSjoerg ------------------------------------------------- ----------------- 73*4d6fc14bSjoerg ``__cpp_lib_allocator_traits_is_always_equal`` ``201411L`` 74*4d6fc14bSjoerg ------------------------------------------------- ----------------- 75*4d6fc14bSjoerg ``__cpp_lib_any`` ``201606L`` 76*4d6fc14bSjoerg ------------------------------------------------- ----------------- 77*4d6fc14bSjoerg ``__cpp_lib_apply`` ``201603L`` 78*4d6fc14bSjoerg ------------------------------------------------- ----------------- 79*4d6fc14bSjoerg ``__cpp_lib_array_constexpr`` ``201603L`` 80*4d6fc14bSjoerg ------------------------------------------------- ----------------- 81*4d6fc14bSjoerg ``__cpp_lib_as_const`` ``201510L`` 82*4d6fc14bSjoerg ------------------------------------------------- ----------------- 83*4d6fc14bSjoerg ``__cpp_lib_atomic_is_always_lock_free`` ``201603L`` 84*4d6fc14bSjoerg ------------------------------------------------- ----------------- 85*4d6fc14bSjoerg ``__cpp_lib_bool_constant`` ``201505L`` 86*4d6fc14bSjoerg ------------------------------------------------- ----------------- 87*4d6fc14bSjoerg ``__cpp_lib_boyer_moore_searcher`` *unimplemented* 88*4d6fc14bSjoerg ------------------------------------------------- ----------------- 89*4d6fc14bSjoerg ``__cpp_lib_byte`` ``201603L`` 90*4d6fc14bSjoerg ------------------------------------------------- ----------------- 91*4d6fc14bSjoerg ``__cpp_lib_chrono`` ``201611L`` 92*4d6fc14bSjoerg ------------------------------------------------- ----------------- 93*4d6fc14bSjoerg ``__cpp_lib_clamp`` ``201603L`` 94*4d6fc14bSjoerg ------------------------------------------------- ----------------- 95*4d6fc14bSjoerg ``__cpp_lib_enable_shared_from_this`` ``201603L`` 96*4d6fc14bSjoerg ------------------------------------------------- ----------------- 97*4d6fc14bSjoerg ``__cpp_lib_execution`` *unimplemented* 98*4d6fc14bSjoerg ------------------------------------------------- ----------------- 99*4d6fc14bSjoerg ``__cpp_lib_filesystem`` ``201703L`` 100*4d6fc14bSjoerg ------------------------------------------------- ----------------- 101*4d6fc14bSjoerg ``__cpp_lib_gcd_lcm`` ``201606L`` 102*4d6fc14bSjoerg ------------------------------------------------- ----------------- 103*4d6fc14bSjoerg ``__cpp_lib_hardware_interference_size`` *unimplemented* 104*4d6fc14bSjoerg ------------------------------------------------- ----------------- 105*4d6fc14bSjoerg ``__cpp_lib_has_unique_object_representations`` ``201606L`` 106*4d6fc14bSjoerg ------------------------------------------------- ----------------- 107*4d6fc14bSjoerg ``__cpp_lib_hypot`` ``201603L`` 108*4d6fc14bSjoerg ------------------------------------------------- ----------------- 109*4d6fc14bSjoerg ``__cpp_lib_incomplete_container_elements`` ``201505L`` 110*4d6fc14bSjoerg ------------------------------------------------- ----------------- 111*4d6fc14bSjoerg ``__cpp_lib_invoke`` ``201411L`` 112*4d6fc14bSjoerg ------------------------------------------------- ----------------- 113*4d6fc14bSjoerg ``__cpp_lib_is_aggregate`` ``201703L`` 114*4d6fc14bSjoerg ------------------------------------------------- ----------------- 115*4d6fc14bSjoerg ``__cpp_lib_is_invocable`` ``201703L`` 116*4d6fc14bSjoerg ------------------------------------------------- ----------------- 117*4d6fc14bSjoerg ``__cpp_lib_is_swappable`` ``201603L`` 118*4d6fc14bSjoerg ------------------------------------------------- ----------------- 119*4d6fc14bSjoerg ``__cpp_lib_launder`` ``201606L`` 120*4d6fc14bSjoerg ------------------------------------------------- ----------------- 121*4d6fc14bSjoerg ``__cpp_lib_logical_traits`` ``201510L`` 122*4d6fc14bSjoerg ------------------------------------------------- ----------------- 123*4d6fc14bSjoerg ``__cpp_lib_make_from_tuple`` ``201606L`` 124*4d6fc14bSjoerg ------------------------------------------------- ----------------- 125*4d6fc14bSjoerg ``__cpp_lib_map_try_emplace`` ``201411L`` 126*4d6fc14bSjoerg ------------------------------------------------- ----------------- 127*4d6fc14bSjoerg ``__cpp_lib_math_special_functions`` *unimplemented* 128*4d6fc14bSjoerg ------------------------------------------------- ----------------- 129*4d6fc14bSjoerg ``__cpp_lib_memory_resource`` *unimplemented* 130*4d6fc14bSjoerg ------------------------------------------------- ----------------- 131*4d6fc14bSjoerg ``__cpp_lib_node_extract`` ``201606L`` 132*4d6fc14bSjoerg ------------------------------------------------- ----------------- 133*4d6fc14bSjoerg ``__cpp_lib_nonmember_container_access`` ``201411L`` 134*4d6fc14bSjoerg ------------------------------------------------- ----------------- 135*4d6fc14bSjoerg ``__cpp_lib_not_fn`` ``201603L`` 136*4d6fc14bSjoerg ------------------------------------------------- ----------------- 137*4d6fc14bSjoerg ``__cpp_lib_optional`` ``201606L`` 138*4d6fc14bSjoerg ------------------------------------------------- ----------------- 139*4d6fc14bSjoerg ``__cpp_lib_parallel_algorithm`` *unimplemented* 140*4d6fc14bSjoerg ------------------------------------------------- ----------------- 141*4d6fc14bSjoerg ``__cpp_lib_raw_memory_algorithms`` ``201606L`` 142*4d6fc14bSjoerg ------------------------------------------------- ----------------- 143*4d6fc14bSjoerg ``__cpp_lib_sample`` ``201603L`` 144*4d6fc14bSjoerg ------------------------------------------------- ----------------- 145*4d6fc14bSjoerg ``__cpp_lib_scoped_lock`` ``201703L`` 146*4d6fc14bSjoerg ------------------------------------------------- ----------------- 147*4d6fc14bSjoerg ``__cpp_lib_shared_mutex`` ``201505L`` 148*4d6fc14bSjoerg ------------------------------------------------- ----------------- 149*4d6fc14bSjoerg ``__cpp_lib_shared_ptr_arrays`` ``201611L`` 150*4d6fc14bSjoerg ------------------------------------------------- ----------------- 151*4d6fc14bSjoerg ``__cpp_lib_shared_ptr_weak_type`` ``201606L`` 152*4d6fc14bSjoerg ------------------------------------------------- ----------------- 153*4d6fc14bSjoerg ``__cpp_lib_string_view`` ``201606L`` 154*4d6fc14bSjoerg ------------------------------------------------- ----------------- 155*4d6fc14bSjoerg ``__cpp_lib_to_chars`` *unimplemented* 156*4d6fc14bSjoerg ------------------------------------------------- ----------------- 157*4d6fc14bSjoerg ``__cpp_lib_transparent_operators`` ``201510L`` 158*4d6fc14bSjoerg ------------------------------------------------- ----------------- 159*4d6fc14bSjoerg ``__cpp_lib_type_trait_variable_templates`` ``201510L`` 160*4d6fc14bSjoerg ------------------------------------------------- ----------------- 161*4d6fc14bSjoerg ``__cpp_lib_uncaught_exceptions`` ``201411L`` 162*4d6fc14bSjoerg ------------------------------------------------- ----------------- 163*4d6fc14bSjoerg ``__cpp_lib_unordered_map_try_emplace`` ``201411L`` 164*4d6fc14bSjoerg ------------------------------------------------- ----------------- 165*4d6fc14bSjoerg ``__cpp_lib_variant`` ``202102L`` 166*4d6fc14bSjoerg ------------------------------------------------- ----------------- 167*4d6fc14bSjoerg ``__cpp_lib_void_t`` ``201411L`` 168*4d6fc14bSjoerg ------------------------------------------------- ----------------- 169*4d6fc14bSjoerg **C++ 20** 170*4d6fc14bSjoerg ------------------------------------------------------------------- 171*4d6fc14bSjoerg ``__cpp_lib_array_constexpr`` ``201811L`` 172*4d6fc14bSjoerg ------------------------------------------------- ----------------- 173*4d6fc14bSjoerg ``__cpp_lib_assume_aligned`` *unimplemented* 174*4d6fc14bSjoerg ------------------------------------------------- ----------------- 175*4d6fc14bSjoerg ``__cpp_lib_atomic_flag_test`` ``201907L`` 176*4d6fc14bSjoerg ------------------------------------------------- ----------------- 177*4d6fc14bSjoerg ``__cpp_lib_atomic_float`` *unimplemented* 178*4d6fc14bSjoerg ------------------------------------------------- ----------------- 179*4d6fc14bSjoerg ``__cpp_lib_atomic_lock_free_type_aliases`` ``201907L`` 180*4d6fc14bSjoerg ------------------------------------------------- ----------------- 181*4d6fc14bSjoerg ``__cpp_lib_atomic_ref`` *unimplemented* 182*4d6fc14bSjoerg ------------------------------------------------- ----------------- 183*4d6fc14bSjoerg ``__cpp_lib_atomic_shared_ptr`` *unimplemented* 184*4d6fc14bSjoerg ------------------------------------------------- ----------------- 185*4d6fc14bSjoerg ``__cpp_lib_atomic_value_initialization`` *unimplemented* 186*4d6fc14bSjoerg ------------------------------------------------- ----------------- 187*4d6fc14bSjoerg ``__cpp_lib_atomic_wait`` ``201907L`` 188*4d6fc14bSjoerg ------------------------------------------------- ----------------- 189*4d6fc14bSjoerg ``__cpp_lib_barrier`` ``201907L`` 190*4d6fc14bSjoerg ------------------------------------------------- ----------------- 191*4d6fc14bSjoerg ``__cpp_lib_bind_front`` ``201907L`` 192*4d6fc14bSjoerg ------------------------------------------------- ----------------- 193*4d6fc14bSjoerg ``__cpp_lib_bit_cast`` *unimplemented* 194*4d6fc14bSjoerg ------------------------------------------------- ----------------- 195*4d6fc14bSjoerg ``__cpp_lib_bitops`` *unimplemented* 196*4d6fc14bSjoerg ------------------------------------------------- ----------------- 197*4d6fc14bSjoerg ``__cpp_lib_bounded_array_traits`` ``201902L`` 198*4d6fc14bSjoerg ------------------------------------------------- ----------------- 199*4d6fc14bSjoerg ``__cpp_lib_char8_t`` ``201811L`` 200*4d6fc14bSjoerg ------------------------------------------------- ----------------- 201*4d6fc14bSjoerg ``__cpp_lib_concepts`` ``202002L`` 202*4d6fc14bSjoerg ------------------------------------------------- ----------------- 203*4d6fc14bSjoerg ``__cpp_lib_constexpr_algorithms`` ``201806L`` 204*4d6fc14bSjoerg ------------------------------------------------- ----------------- 205*4d6fc14bSjoerg ``__cpp_lib_constexpr_complex`` *unimplemented* 206*4d6fc14bSjoerg ------------------------------------------------- ----------------- 207*4d6fc14bSjoerg ``__cpp_lib_constexpr_dynamic_alloc`` ``201907L`` 208*4d6fc14bSjoerg ------------------------------------------------- ----------------- 209*4d6fc14bSjoerg ``__cpp_lib_constexpr_functional`` ``201907L`` 210*4d6fc14bSjoerg ------------------------------------------------- ----------------- 211*4d6fc14bSjoerg ``__cpp_lib_constexpr_iterator`` ``201811L`` 212*4d6fc14bSjoerg ------------------------------------------------- ----------------- 213*4d6fc14bSjoerg ``__cpp_lib_constexpr_memory`` ``201811L`` 214*4d6fc14bSjoerg ------------------------------------------------- ----------------- 215*4d6fc14bSjoerg ``__cpp_lib_constexpr_numeric`` ``201911L`` 216*4d6fc14bSjoerg ------------------------------------------------- ----------------- 217*4d6fc14bSjoerg ``__cpp_lib_constexpr_string`` ``201811L`` 218*4d6fc14bSjoerg ------------------------------------------------- ----------------- 219*4d6fc14bSjoerg ``__cpp_lib_constexpr_string_view`` ``201811L`` 220*4d6fc14bSjoerg ------------------------------------------------- ----------------- 221*4d6fc14bSjoerg ``__cpp_lib_constexpr_tuple`` ``201811L`` 222*4d6fc14bSjoerg ------------------------------------------------- ----------------- 223*4d6fc14bSjoerg ``__cpp_lib_constexpr_utility`` ``201811L`` 224*4d6fc14bSjoerg ------------------------------------------------- ----------------- 225*4d6fc14bSjoerg ``__cpp_lib_constexpr_vector`` *unimplemented* 226*4d6fc14bSjoerg ------------------------------------------------- ----------------- 227*4d6fc14bSjoerg ``__cpp_lib_coroutine`` *unimplemented* 228*4d6fc14bSjoerg ------------------------------------------------- ----------------- 229*4d6fc14bSjoerg ``__cpp_lib_destroying_delete`` ``201806L`` 230*4d6fc14bSjoerg ------------------------------------------------- ----------------- 231*4d6fc14bSjoerg ``__cpp_lib_endian`` ``201907L`` 232*4d6fc14bSjoerg ------------------------------------------------- ----------------- 233*4d6fc14bSjoerg ``__cpp_lib_erase_if`` ``202002L`` 234*4d6fc14bSjoerg ------------------------------------------------- ----------------- 235*4d6fc14bSjoerg ``__cpp_lib_execution`` *unimplemented* 236*4d6fc14bSjoerg ------------------------------------------------- ----------------- 237*4d6fc14bSjoerg ``__cpp_lib_format`` *unimplemented* 238*4d6fc14bSjoerg ------------------------------------------------- ----------------- 239*4d6fc14bSjoerg ``__cpp_lib_generic_unordered_lookup`` ``201811L`` 240*4d6fc14bSjoerg ------------------------------------------------- ----------------- 241*4d6fc14bSjoerg ``__cpp_lib_int_pow2`` ``202002L`` 242*4d6fc14bSjoerg ------------------------------------------------- ----------------- 243*4d6fc14bSjoerg ``__cpp_lib_integer_comparison_functions`` ``202002L`` 244*4d6fc14bSjoerg ------------------------------------------------- ----------------- 245*4d6fc14bSjoerg ``__cpp_lib_interpolate`` ``201902L`` 246*4d6fc14bSjoerg ------------------------------------------------- ----------------- 247*4d6fc14bSjoerg ``__cpp_lib_is_constant_evaluated`` ``201811L`` 248*4d6fc14bSjoerg ------------------------------------------------- ----------------- 249*4d6fc14bSjoerg ``__cpp_lib_is_layout_compatible`` *unimplemented* 250*4d6fc14bSjoerg ------------------------------------------------- ----------------- 251*4d6fc14bSjoerg ``__cpp_lib_is_nothrow_convertible`` ``201806L`` 252*4d6fc14bSjoerg ------------------------------------------------- ----------------- 253*4d6fc14bSjoerg ``__cpp_lib_is_pointer_interconvertible`` *unimplemented* 254*4d6fc14bSjoerg ------------------------------------------------- ----------------- 255*4d6fc14bSjoerg ``__cpp_lib_jthread`` *unimplemented* 256*4d6fc14bSjoerg ------------------------------------------------- ----------------- 257*4d6fc14bSjoerg ``__cpp_lib_latch`` ``201907L`` 258*4d6fc14bSjoerg ------------------------------------------------- ----------------- 259*4d6fc14bSjoerg ``__cpp_lib_list_remove_return_type`` ``201806L`` 260*4d6fc14bSjoerg ------------------------------------------------- ----------------- 261*4d6fc14bSjoerg ``__cpp_lib_math_constants`` ``201907L`` 262*4d6fc14bSjoerg ------------------------------------------------- ----------------- 263*4d6fc14bSjoerg ``__cpp_lib_polymorphic_allocator`` *unimplemented* 264*4d6fc14bSjoerg ------------------------------------------------- ----------------- 265*4d6fc14bSjoerg ``__cpp_lib_ranges`` *unimplemented* 266*4d6fc14bSjoerg ------------------------------------------------- ----------------- 267*4d6fc14bSjoerg ``__cpp_lib_remove_cvref`` ``201711L`` 268*4d6fc14bSjoerg ------------------------------------------------- ----------------- 269*4d6fc14bSjoerg ``__cpp_lib_semaphore`` ``201907L`` 270*4d6fc14bSjoerg ------------------------------------------------- ----------------- 271*4d6fc14bSjoerg ``__cpp_lib_shift`` ``201806L`` 272*4d6fc14bSjoerg ------------------------------------------------- ----------------- 273*4d6fc14bSjoerg ``__cpp_lib_smart_ptr_for_overwrite`` *unimplemented* 274*4d6fc14bSjoerg ------------------------------------------------- ----------------- 275*4d6fc14bSjoerg ``__cpp_lib_source_location`` *unimplemented* 276*4d6fc14bSjoerg ------------------------------------------------- ----------------- 277*4d6fc14bSjoerg ``__cpp_lib_span`` ``202002L`` 278*4d6fc14bSjoerg ------------------------------------------------- ----------------- 279*4d6fc14bSjoerg ``__cpp_lib_ssize`` ``201902L`` 280*4d6fc14bSjoerg ------------------------------------------------- ----------------- 281*4d6fc14bSjoerg ``__cpp_lib_starts_ends_with`` ``201711L`` 282*4d6fc14bSjoerg ------------------------------------------------- ----------------- 283*4d6fc14bSjoerg ``__cpp_lib_string_view`` ``201803L`` 284*4d6fc14bSjoerg ------------------------------------------------- ----------------- 285*4d6fc14bSjoerg ``__cpp_lib_syncbuf`` *unimplemented* 286*4d6fc14bSjoerg ------------------------------------------------- ----------------- 287*4d6fc14bSjoerg ``__cpp_lib_three_way_comparison`` *unimplemented* 288*4d6fc14bSjoerg ------------------------------------------------- ----------------- 289*4d6fc14bSjoerg ``__cpp_lib_to_address`` ``201711L`` 290*4d6fc14bSjoerg ------------------------------------------------- ----------------- 291*4d6fc14bSjoerg ``__cpp_lib_to_array`` ``201907L`` 292*4d6fc14bSjoerg ------------------------------------------------- ----------------- 293*4d6fc14bSjoerg ``__cpp_lib_unwrap_ref`` ``201811L`` 294*4d6fc14bSjoerg ------------------------------------------------- ----------------- 295*4d6fc14bSjoerg **C++ 2b** 296*4d6fc14bSjoerg ------------------------------------------------------------------- 297*4d6fc14bSjoerg ``__cpp_lib_is_scoped_enum`` ``202011L`` 298*4d6fc14bSjoerg ------------------------------------------------- ----------------- 299*4d6fc14bSjoerg ``__cpp_lib_stacktrace`` *unimplemented* 300*4d6fc14bSjoerg ------------------------------------------------- ----------------- 301*4d6fc14bSjoerg ``__cpp_lib_stdatomic_h`` *unimplemented* 302*4d6fc14bSjoerg ------------------------------------------------- ----------------- 303*4d6fc14bSjoerg ``__cpp_lib_string_contains`` ``202011L`` 304*4d6fc14bSjoerg ------------------------------------------------- ----------------- 305*4d6fc14bSjoerg ``__cpp_lib_to_underlying`` ``202102L`` 306*4d6fc14bSjoerg ================================================= ================= 307*4d6fc14bSjoerg 308