// TR1 functional header -*- C++ -*-

// Copyright (C) 2004-2022 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library.  This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.

// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.

// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
// <http://www.gnu.org/licenses/>.

/** @file tr1/functional
 *  This is a TR1 C++ Library header.
 */

#ifndef _GLIBCXX_TR1_FUNCTIONAL
#define _GLIBCXX_TR1_FUNCTIONAL 1

#pragma GCC system_header

#include <functional> // for std::_Placeholder, std::_Bind, std::_Bind_result

#include <typeinfo>
#include <new>
#include <tr1/tuple>
#include <tr1/type_traits>
#include <bits/stringfwd.h>
#include <tr1/functional_hash.h>
#include <ext/type_traits.h>
#include <bits/move.h> // for std::__addressof

namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION

#if __cplusplus < 201103L
  // In C++98 mode, <functional> doesn't declare std::placeholders::_1 etc.
  // because they are not reserved names in C++98. However, they are reserved
  // by <tr1/functional> so we can declare them here, in order to redeclare
  // them in the std::tr1::placeholders namespace below.
  namespace placeholders
  {
    extern const _Placeholder<1> _1;
    extern const _Placeholder<2> _2;
    extern const _Placeholder<3> _3;
    extern const _Placeholder<4> _4;
    extern const _Placeholder<5> _5;
    extern const _Placeholder<6> _6;
    extern const _Placeholder<7> _7;
    extern const _Placeholder<8> _8;
    extern const _Placeholder<9> _9;
    extern const _Placeholder<10> _10;
    extern const _Placeholder<11> _11;
    extern const _Placeholder<12> _12;
    extern const _Placeholder<13> _13;
    extern const _Placeholder<14> _14;
    extern const _Placeholder<15> _15;
    extern const _Placeholder<16> _16;
    extern const _Placeholder<17> _17;
    extern const _Placeholder<18> _18;
    extern const _Placeholder<19> _19;
    extern const _Placeholder<20> _20;
    extern const _Placeholder<21> _21;
    extern const _Placeholder<22> _22;
    extern const _Placeholder<23> _23;
    extern const _Placeholder<24> _24;
    extern const _Placeholder<25> _25;
    extern const _Placeholder<26> _26;
    extern const _Placeholder<27> _27;
    extern const _Placeholder<28> _28;
    extern const _Placeholder<29> _29;
  }
#endif // C++98

namespace tr1
{
  template<typename _MemberPointer>
    class _Mem_fn;
  template<typename _Tp, typename _Class>
    _Mem_fn<_Tp _Class::*>
    mem_fn(_Tp _Class::*);

  /**
   *  Actual implementation of _Has_result_type, which uses SFINAE to
   *  determine if the type _Tp has a publicly-accessible member type
   *  result_type.
  */
  template<typename _Tp>
    class _Has_result_type_helper : __sfinae_types
    {
      template<typename _Up>
        struct _Wrap_type
	{ };

      template<typename _Up>
        static __one __test(_Wrap_type<typename _Up::result_type>*);

      template<typename _Up>
        static __two __test(...);

    public:
      static const bool value = sizeof(__test<_Tp>(0)) == 1;
    };

  template<typename _Tp>
    struct _Has_result_type
    : integral_constant<bool,
	      _Has_result_type_helper<typename remove_cv<_Tp>::type>::value>
    { };

  /**
   *  
  */
  /// If we have found a result_type, extract it.
  template<bool _Has_result_type, typename _Functor>
    struct _Maybe_get_result_type
    { };

  template<typename _Functor>
    struct _Maybe_get_result_type<true, _Functor>
    {
      typedef typename _Functor::result_type result_type;
    };

  /**
   *  Base class for any function object that has a weak result type, as
   *  defined in 3.3/3 of TR1.
  */
  template<typename _Functor>
    struct _Weak_result_type_impl
    : _Maybe_get_result_type<_Has_result_type<_Functor>::value, _Functor>
    {
    };

  /// Retrieve the result type for a function type.
  template<typename _Res, typename... _ArgTypes> 
    struct _Weak_result_type_impl<_Res(_ArgTypes...)>
    {
      typedef _Res result_type;
    };

  /// Retrieve the result type for a function reference.
  template<typename _Res, typename... _ArgTypes> 
    struct _Weak_result_type_impl<_Res(&)(_ArgTypes...)>
    {
      typedef _Res result_type;
    };

  /// Retrieve the result type for a function pointer.
  template<typename _Res, typename... _ArgTypes> 
    struct _Weak_result_type_impl<_Res(*)(_ArgTypes...)>
    {
      typedef _Res result_type;
    };

  /// Retrieve result type for a member function pointer. 
  template<typename _Res, typename _Class, typename... _ArgTypes> 
    struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes...)>
    {
      typedef _Res result_type;
    };

  /// Retrieve result type for a const member function pointer. 
  template<typename _Res, typename _Class, typename... _ArgTypes> 
    struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes...) const>
    {
      typedef _Res result_type;
    };

  /// Retrieve result type for a volatile member function pointer. 
  template<typename _Res, typename _Class, typename... _ArgTypes> 
    struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes...) volatile>
    {
      typedef _Res result_type;
    };

  /// Retrieve result type for a const volatile member function pointer. 
  template<typename _Res, typename _Class, typename... _ArgTypes> 
    struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes...)const volatile>
    {
      typedef _Res result_type;
    };

  /**
   *  Strip top-level cv-qualifiers from the function object and let
   *  _Weak_result_type_impl perform the real work.
  */
  template<typename _Functor>
    struct _Weak_result_type
    : _Weak_result_type_impl<typename remove_cv<_Functor>::type>
    {
    };

  template<typename _Signature>
    class result_of;

  /**
   *  Actual implementation of result_of. When _Has_result_type is
   *  true, gets its result from _Weak_result_type. Otherwise, uses
   *  the function object's member template result to extract the
   *  result type.
  */
  template<bool _Has_result_type, typename _Signature>
    struct _Result_of_impl;

  // Handle member data pointers using _Mem_fn's logic
  template<typename _Res, typename _Class, typename _T1>
    struct _Result_of_impl<false, _Res _Class::*(_T1)>
    {
      typedef typename _Mem_fn<_Res _Class::*>
                ::template _Result_type<_T1>::type type;
    };

  /**
   * Determine whether we can determine a result type from @c Functor 
   * alone.
   */ 
  template<typename _Functor, typename... _ArgTypes>
    class result_of<_Functor(_ArgTypes...)>
    : public _Result_of_impl<
               _Has_result_type<_Weak_result_type<_Functor> >::value,
               _Functor(_ArgTypes...)>
    {
    };

  /// We already know the result type for @c Functor; use it.
  template<typename _Functor, typename... _ArgTypes>
    struct _Result_of_impl<true, _Functor(_ArgTypes...)>
    {
      typedef typename _Weak_result_type<_Functor>::result_type type;
    };

  /**
   * We need to compute the result type for this invocation the hard 
   * way.
   */
  template<typename _Functor, typename... _ArgTypes>
    struct _Result_of_impl<false, _Functor(_ArgTypes...)>
    {
      typedef typename _Functor
                ::template result<_Functor(_ArgTypes...)>::type type;
    };

  /**
   * It is unsafe to access ::result when there are zero arguments, so we 
   * return @c void instead.
   */
  template<typename _Functor>
    struct _Result_of_impl<false, _Functor()>
    {
      typedef void type;
    };

// Ignore warnings about std::unary_function and std::binary_function.
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"

  /// Determines if the type _Tp derives from unary_function.
  template<typename _Tp>
    struct _Derives_from_unary_function : __sfinae_types
    {
    private:
      template<typename _T1, typename _Res>
        static __one __test(const volatile unary_function<_T1, _Res>*);

      // It's tempting to change "..." to const volatile void*, but
      // that fails when _Tp is a function type.
      static __two __test(...);

    public:
      static const bool value = sizeof(__test((_Tp*)0)) == 1;
    };

  /// Determines if the type _Tp derives from binary_function.
  template<typename _Tp>
    struct _Derives_from_binary_function : __sfinae_types
    {
    private:
      template<typename _T1, typename _T2, typename _Res>
        static __one __test(const volatile binary_function<_T1, _T2, _Res>*);

      // It's tempting to change "..." to const volatile void*, but
      // that fails when _Tp is a function type.
      static __two __test(...);

    public:
      static const bool value = sizeof(__test((_Tp*)0)) == 1;
    };

  /// Turns a function type into a function pointer type
  template<typename _Tp, bool _IsFunctionType = is_function<_Tp>::value>
    struct _Function_to_function_pointer
    {
      typedef _Tp type;
    };

  template<typename _Tp>
    struct _Function_to_function_pointer<_Tp, true>
    {
      typedef _Tp* type;
    };

  /**
   * Invoke a function object, which may be either a member pointer or a
   * function object. The first parameter will tell which.
   */
  template<typename _Functor, typename... _Args>
    inline
    typename __gnu_cxx::__enable_if<
             (!is_member_pointer<_Functor>::value
              && !is_function<_Functor>::value
              && !is_function<typename remove_pointer<_Functor>::type>::value),
             typename result_of<_Functor(_Args...)>::type
           >::__type
    __invoke(_Functor& __f, _Args&... __args)
    {
      return __f(__args...);
    }

  template<typename _Functor, typename... _Args>
    inline
    typename __gnu_cxx::__enable_if<
             (is_member_pointer<_Functor>::value
              && !is_function<_Functor>::value
              && !is_function<typename remove_pointer<_Functor>::type>::value),
             typename result_of<_Functor(_Args...)>::type
           >::__type
    __invoke(_Functor& __f, _Args&... __args)
    {
      return mem_fn(__f)(__args...);
    }

  // To pick up function references (that will become function pointers)
  template<typename _Functor, typename... _Args>
    inline
    typename __gnu_cxx::__enable_if<
             (is_pointer<_Functor>::value
              && is_function<typename remove_pointer<_Functor>::type>::value),
             typename result_of<_Functor(_Args...)>::type
           >::__type
    __invoke(_Functor __f, _Args&... __args)
    {
      return __f(__args...);
    }

  /**
   *  Knowing which of unary_function and binary_function _Tp derives
   *  from, derives from the same and ensures that reference_wrapper
   *  will have a weak result type. See cases below.
   */
  template<bool _Unary, bool _Binary, typename _Tp>
    struct _Reference_wrapper_base_impl;

  // Not a unary_function or binary_function, so try a weak result type.
  template<typename _Tp>
    struct _Reference_wrapper_base_impl<false, false, _Tp>
    : _Weak_result_type<_Tp>
    { };

  // unary_function but not binary_function
  template<typename _Tp>
    struct _Reference_wrapper_base_impl<true, false, _Tp>
    : unary_function<typename _Tp::argument_type,
		     typename _Tp::result_type>
    { };

  // binary_function but not unary_function
  template<typename _Tp>
    struct _Reference_wrapper_base_impl<false, true, _Tp>
    : binary_function<typename _Tp::first_argument_type,
		      typename _Tp::second_argument_type,
		      typename _Tp::result_type>
    { };

  // Both unary_function and binary_function. Import result_type to
  // avoid conflicts.
   template<typename _Tp>
    struct _Reference_wrapper_base_impl<true, true, _Tp>
    : unary_function<typename _Tp::argument_type,
		     typename _Tp::result_type>,
      binary_function<typename _Tp::first_argument_type,
		      typename _Tp::second_argument_type,
		      typename _Tp::result_type>
    {
      typedef typename _Tp::result_type result_type;
    };

  /**
   *  Derives from unary_function or binary_function when it
   *  can. Specializations handle all of the easy cases. The primary
   *  template determines what to do with a class type, which may
   *  derive from both unary_function and binary_function.
  */
  template<typename _Tp>
    struct _Reference_wrapper_base
    : _Reference_wrapper_base_impl<
      _Derives_from_unary_function<_Tp>::value,
      _Derives_from_binary_function<_Tp>::value,
      _Tp>
    { };

  // - a function type (unary)
  template<typename _Res, typename _T1>
    struct _Reference_wrapper_base<_Res(_T1)>
    : unary_function<_T1, _Res>
    { };

  // - a function type (binary)
  template<typename _Res, typename _T1, typename _T2>
    struct _Reference_wrapper_base<_Res(_T1, _T2)>
    : binary_function<_T1, _T2, _Res>
    { };

  // - a function pointer type (unary)
  template<typename _Res, typename _T1>
    struct _Reference_wrapper_base<_Res(*)(_T1)>
    : unary_function<_T1, _Res>
    { };

  // - a function pointer type (binary)
  template<typename _Res, typename _T1, typename _T2>
    struct _Reference_wrapper_base<_Res(*)(_T1, _T2)>
    : binary_function<_T1, _T2, _Res>
    { };

  // - a pointer to member function type (unary, no qualifiers)
  template<typename _Res, typename _T1>
    struct _Reference_wrapper_base<_Res (_T1::*)()>
    : unary_function<_T1*, _Res>
    { };

  // - a pointer to member function type (binary, no qualifiers)
  template<typename _Res, typename _T1, typename _T2>
    struct _Reference_wrapper_base<_Res (_T1::*)(_T2)>
    : binary_function<_T1*, _T2, _Res>
    { };

  // - a pointer to member function type (unary, const)
  template<typename _Res, typename _T1>
    struct _Reference_wrapper_base<_Res (_T1::*)() const>
    : unary_function<const _T1*, _Res>
    { };

  // - a pointer to member function type (binary, const)
  template<typename _Res, typename _T1, typename _T2>
    struct _Reference_wrapper_base<_Res (_T1::*)(_T2) const>
    : binary_function<const _T1*, _T2, _Res>
    { };

  // - a pointer to member function type (unary, volatile)
  template<typename _Res, typename _T1>
    struct _Reference_wrapper_base<_Res (_T1::*)() volatile>
    : unary_function<volatile _T1*, _Res>
    { };

  // - a pointer to member function type (binary, volatile)
  template<typename _Res, typename _T1, typename _T2>
    struct _Reference_wrapper_base<_Res (_T1::*)(_T2) volatile>
    : binary_function<volatile _T1*, _T2, _Res>
    { };

  // - a pointer to member function type (unary, const volatile)
  template<typename _Res, typename _T1>
    struct _Reference_wrapper_base<_Res (_T1::*)() const volatile>
    : unary_function<const volatile _T1*, _Res>
    { };

  // - a pointer to member function type (binary, const volatile)
  template<typename _Res, typename _T1, typename _T2>
    struct _Reference_wrapper_base<_Res (_T1::*)(_T2) const volatile>
    : binary_function<const volatile _T1*, _T2, _Res>
    { };

  /// reference_wrapper
  template<typename _Tp>
    class reference_wrapper
    : public _Reference_wrapper_base<typename remove_cv<_Tp>::type>
    {
      // If _Tp is a function type, we can't form result_of<_Tp(...)>,
      // so turn it into a function pointer type.
      typedef typename _Function_to_function_pointer<_Tp>::type
        _M_func_type;

      _Tp* _M_data;
    public:
      typedef _Tp type;

      explicit
      reference_wrapper(_Tp& __indata)
      : _M_data(std::__addressof(__indata))
      { }

      reference_wrapper(const reference_wrapper<_Tp>& __inref):
      _M_data(__inref._M_data)
      { }

      reference_wrapper&
      operator=(const reference_wrapper<_Tp>& __inref)
      {
        _M_data = __inref._M_data;
        return *this;
      }

      operator _Tp&() const
      { return this->get(); }

      _Tp&
      get() const
      { return *_M_data; }

      template<typename... _Args>
        typename result_of<_M_func_type(_Args...)>::type
        operator()(_Args&... __args) const
        {
	  return __invoke(get(), __args...);
	}
    };


  // Denotes a reference should be taken to a variable.
  template<typename _Tp>
    inline reference_wrapper<_Tp>
    ref(_Tp& __t)
    { return reference_wrapper<_Tp>(__t); }

  // Denotes a const reference should be taken to a variable.
  template<typename _Tp>
    inline reference_wrapper<const _Tp>
    cref(const _Tp& __t)
    { return reference_wrapper<const _Tp>(__t); }

  template<typename _Tp>
    inline reference_wrapper<_Tp>
    ref(reference_wrapper<_Tp> __t)
    { return ref(__t.get()); }

  template<typename _Tp>
    inline reference_wrapper<const _Tp>
    cref(reference_wrapper<_Tp> __t)
    { return cref(__t.get()); }

  template<typename _Tp, bool>
    struct _Mem_fn_const_or_non
    {
      typedef const _Tp& type;
    };

  template<typename _Tp>
    struct _Mem_fn_const_or_non<_Tp, false>
    {
      typedef _Tp& type;
    };

  /**
   * Derives from @c unary_function or @c binary_function, or perhaps
   * nothing, depending on the number of arguments provided. The
   * primary template is the basis case, which derives nothing.
   */
  template<typename _Res, typename... _ArgTypes> 
    struct _Maybe_unary_or_binary_function { };

  /// Derives from @c unary_function, as appropriate. 
  template<typename _Res, typename _T1> 
    struct _Maybe_unary_or_binary_function<_Res, _T1>
    : std::unary_function<_T1, _Res> { };

  /// Derives from @c binary_function, as appropriate. 
  template<typename _Res, typename _T1, typename _T2> 
    struct _Maybe_unary_or_binary_function<_Res, _T1, _T2>
    : std::binary_function<_T1, _T2, _Res> { };

  /// Implementation of @c mem_fn for member function pointers.
  template<typename _Res, typename _Class, typename... _ArgTypes>
    class _Mem_fn<_Res (_Class::*)(_ArgTypes...)>
    : public _Maybe_unary_or_binary_function<_Res, _Class*, _ArgTypes...>
    {
      typedef _Res (_Class::*_Functor)(_ArgTypes...);

      template<typename _Tp>
        _Res
        _M_call(_Tp& __object, const volatile _Class *, 
                _ArgTypes... __args) const
        { return (__object.*__pmf)(__args...); }

      template<typename _Tp>
        _Res
        _M_call(_Tp& __ptr, const volatile void *, _ArgTypes... __args) const
        { return ((*__ptr).*__pmf)(__args...); }

    public:
      typedef _Res result_type;

      explicit _Mem_fn(_Functor __pmf) : __pmf(__pmf) { }

      // Handle objects
      _Res
      operator()(_Class& __object, _ArgTypes... __args) const
      { return (__object.*__pmf)(__args...); }

      // Handle pointers
      _Res
      operator()(_Class* __object, _ArgTypes... __args) const
      { return (__object->*__pmf)(__args...); }

      // Handle smart pointers, references and pointers to derived
      template<typename _Tp>
        _Res
	operator()(_Tp& __object, _ArgTypes... __args) const
        { return _M_call(__object, &__object, __args...); }

    private:
      _Functor __pmf;
    };

  /// Implementation of @c mem_fn for const member function pointers.
  template<typename _Res, typename _Class, typename... _ArgTypes>
    class _Mem_fn<_Res (_Class::*)(_ArgTypes...) const>
    : public _Maybe_unary_or_binary_function<_Res, const _Class*, 
					     _ArgTypes...>
    {
      typedef _Res (_Class::*_Functor)(_ArgTypes...) const;

      template<typename _Tp>
        _Res
        _M_call(_Tp& __object, const volatile _Class *, 
                _ArgTypes... __args) const
        { return (__object.*__pmf)(__args...); }

      template<typename _Tp>
        _Res
        _M_call(_Tp& __ptr, const volatile void *, _ArgTypes... __args) const
        { return ((*__ptr).*__pmf)(__args...); }

    public:
      typedef _Res result_type;

      explicit _Mem_fn(_Functor __pmf) : __pmf(__pmf) { }

      // Handle objects
      _Res
      operator()(const _Class& __object, _ArgTypes... __args) const
      { return (__object.*__pmf)(__args...); }

      // Handle pointers
      _Res
      operator()(const _Class* __object, _ArgTypes... __args) const
      { return (__object->*__pmf)(__args...); }

      // Handle smart pointers, references and pointers to derived
      template<typename _Tp>
        _Res operator()(_Tp& __object, _ArgTypes... __args) const
        { return _M_call(__object, &__object, __args...); }

    private:
      _Functor __pmf;
    };

  /// Implementation of @c mem_fn for volatile member function pointers.
  template<typename _Res, typename _Class, typename... _ArgTypes>
    class _Mem_fn<_Res (_Class::*)(_ArgTypes...) volatile>
    : public _Maybe_unary_or_binary_function<_Res, volatile _Class*, 
					     _ArgTypes...>
    {
      typedef _Res (_Class::*_Functor)(_ArgTypes...) volatile;

      template<typename _Tp>
        _Res
        _M_call(_Tp& __object, const volatile _Class *, 
                _ArgTypes... __args) const
        { return (__object.*__pmf)(__args...); }

      template<typename _Tp>
        _Res
        _M_call(_Tp& __ptr, const volatile void *, _ArgTypes... __args) const
        { return ((*__ptr).*__pmf)(__args...); }

    public:
      typedef _Res result_type;

      explicit _Mem_fn(_Functor __pmf) : __pmf(__pmf) { }

      // Handle objects
      _Res
      operator()(volatile _Class& __object, _ArgTypes... __args) const
      { return (__object.*__pmf)(__args...); }

      // Handle pointers
      _Res
      operator()(volatile _Class* __object, _ArgTypes... __args) const
      { return (__object->*__pmf)(__args...); }

      // Handle smart pointers, references and pointers to derived
      template<typename _Tp>
        _Res
	operator()(_Tp& __object, _ArgTypes... __args) const
        { return _M_call(__object, &__object, __args...); }

    private:
      _Functor __pmf;
    };

  /// Implementation of @c mem_fn for const volatile member function pointers.
  template<typename _Res, typename _Class, typename... _ArgTypes>
    class _Mem_fn<_Res (_Class::*)(_ArgTypes...) const volatile>
    : public _Maybe_unary_or_binary_function<_Res, const volatile _Class*, 
					     _ArgTypes...>
    {
      typedef _Res (_Class::*_Functor)(_ArgTypes...) const volatile;

      template<typename _Tp>
        _Res
        _M_call(_Tp& __object, const volatile _Class *, 
                _ArgTypes... __args) const
        { return (__object.*__pmf)(__args...); }

      template<typename _Tp>
        _Res
        _M_call(_Tp& __ptr, const volatile void *, _ArgTypes... __args) const
        { return ((*__ptr).*__pmf)(__args...); }

    public:
      typedef _Res result_type;

      explicit _Mem_fn(_Functor __pmf) : __pmf(__pmf) { }

      // Handle objects
      _Res 
      operator()(const volatile _Class& __object, _ArgTypes... __args) const
      { return (__object.*__pmf)(__args...); }

      // Handle pointers
      _Res 
      operator()(const volatile _Class* __object, _ArgTypes... __args) const
      { return (__object->*__pmf)(__args...); }

      // Handle smart pointers, references and pointers to derived
      template<typename _Tp>
        _Res operator()(_Tp& __object, _ArgTypes... __args) const
        { return _M_call(__object, &__object, __args...); }

    private:
      _Functor __pmf;
    };


  template<typename _Res, typename _Class>
    class _Mem_fn<_Res _Class::*>
    {
      // This bit of genius is due to Peter Dimov, improved slightly by
      // Douglas Gregor.
      template<typename _Tp>
        _Res&
        _M_call(_Tp& __object, _Class *) const
        { return __object.*__pm; }

      template<typename _Tp, typename _Up>
        _Res&
        _M_call(_Tp& __object, _Up * const *) const
        { return (*__object).*__pm; }

      template<typename _Tp, typename _Up>
        const _Res&
        _M_call(_Tp& __object, const _Up * const *) const
        { return (*__object).*__pm; }

      template<typename _Tp>
        const _Res&
        _M_call(_Tp& __object, const _Class *) const
        { return __object.*__pm; }

      template<typename _Tp>
        const _Res&
        _M_call(_Tp& __ptr, const volatile void*) const
        { return (*__ptr).*__pm; }

      template<typename _Tp> static _Tp& __get_ref();

      template<typename _Tp>
        static __sfinae_types::__one __check_const(_Tp&, _Class*);
      template<typename _Tp, typename _Up>
        static __sfinae_types::__one __check_const(_Tp&, _Up * const *);
      template<typename _Tp, typename _Up>
        static __sfinae_types::__two __check_const(_Tp&, const _Up * const *);
      template<typename _Tp>
        static __sfinae_types::__two __check_const(_Tp&, const _Class*);
      template<typename _Tp>
        static __sfinae_types::__two __check_const(_Tp&, const volatile void*);

    public:
      template<typename _Tp>
        struct _Result_type
	: _Mem_fn_const_or_non<_Res,
	  (sizeof(__sfinae_types::__two)
	   == sizeof(__check_const<_Tp>(__get_ref<_Tp>(), (_Tp*)0)))>
        { };

      template<typename _Signature>
        struct result;

      template<typename _CVMem, typename _Tp>
        struct result<_CVMem(_Tp)>
	: public _Result_type<_Tp> { };

      template<typename _CVMem, typename _Tp>
        struct result<_CVMem(_Tp&)>
	: public _Result_type<_Tp> { };

      explicit
      _Mem_fn(_Res _Class::*__pm) : __pm(__pm) { }

      // Handle objects
      _Res&
      operator()(_Class& __object) const
      { return __object.*__pm; }

      const _Res&
      operator()(const _Class& __object) const
      { return __object.*__pm; }

      // Handle pointers
      _Res&
      operator()(_Class* __object) const
      { return __object->*__pm; }

      const _Res&
      operator()(const _Class* __object) const
      { return __object->*__pm; }

      // Handle smart pointers and derived
      template<typename _Tp>
        typename _Result_type<_Tp>::type
        operator()(_Tp& __unknown) const
        { return _M_call(__unknown, &__unknown); }

    private:
      _Res _Class::*__pm;
    };

  /**
   *  @brief Returns a function object that forwards to the member
   *  pointer @a pm.
   */
  template<typename _Tp, typename _Class>
    inline _Mem_fn<_Tp _Class::*>
    mem_fn(_Tp _Class::* __pm)
    {
      return _Mem_fn<_Tp _Class::*>(__pm);
    }

  /**
   *  @brief Determines if the given type _Tp is a function object
   *  should be treated as a subexpression when evaluating calls to
   *  function objects returned by bind(). [TR1 3.6.1]
   */
  template<typename _Tp>
    struct is_bind_expression
    { static const bool value = false; };

  template<typename _Tp>
    const bool is_bind_expression<_Tp>::value;

  /**
   *  @brief Determines if the given type _Tp is a placeholder in a
   *  bind() expression and, if so, which placeholder it is. [TR1 3.6.2]
   */
  template<typename _Tp>
    struct is_placeholder
    { static const int value = 0; };

  template<typename _Tp>
    const int is_placeholder<_Tp>::value;

  /// The type of placeholder objects defined by libstdc++.
  using ::std::_Placeholder;

  /** @namespace std::tr1::placeholders
   *  @brief Sub-namespace for tr1/functional.
   */
  namespace placeholders
  {
    // The C++11 std::placeholders are already exported from the library.
    // Reusing them here avoids needing to export additional symbols for
    // the TR1 placeholders, and avoids ODR violations due to defining
    // them with internal linkage (as we used to do).
    using namespace ::std::placeholders;
  }

  /**
   *  Partial specialization of is_placeholder that provides the placeholder
   *  number for the placeholder objects defined by libstdc++.
   */
  template<int _Num>
    struct is_placeholder<_Placeholder<_Num> >
    : integral_constant<int, _Num>
    { };

  template<int _Num>
    struct is_placeholder<const _Placeholder<_Num> >
    : integral_constant<int, _Num>
    { };

  /**
   * Stores a tuple of indices. Used by bind() to extract the elements
   * in a tuple. 
   */
  template<int... _Indexes>
    struct _Index_tuple { };

  /// Builds an _Index_tuple<0, 1, 2, ..., _Num-1>.
  template<std::size_t _Num, typename _Tuple = _Index_tuple<> >
    struct _Build_index_tuple;
 
  template<std::size_t _Num, int... _Indexes> 
    struct _Build_index_tuple<_Num, _Index_tuple<_Indexes...> >
    : _Build_index_tuple<_Num - 1, 
                         _Index_tuple<_Indexes..., sizeof...(_Indexes)> >
    {
    };

  template<int... _Indexes>
    struct _Build_index_tuple<0, _Index_tuple<_Indexes...> >
    {
      typedef _Index_tuple<_Indexes...> __type;
    };

  /** 
   * Used by _Safe_tuple_element to indicate that there is no tuple
   * element at this position.
   */
  struct _No_tuple_element;

  /**
   * Implementation helper for _Safe_tuple_element. This primary
   * template handles the case where it is safe to use @c
   * tuple_element.
   */
  template<int __i, typename _Tuple, bool _IsSafe>
    struct _Safe_tuple_element_impl
    : tuple_element<__i, _Tuple> { };

  /**
   * Implementation helper for _Safe_tuple_element. This partial
   * specialization handles the case where it is not safe to use @c
   * tuple_element. We just return @c _No_tuple_element.
   */
  template<int __i, typename _Tuple>
    struct _Safe_tuple_element_impl<__i, _Tuple, false>
    {
      typedef _No_tuple_element type;
    };

  /**
   * Like tuple_element, but returns @c _No_tuple_element when
   * tuple_element would return an error.
   */
 template<int __i, typename _Tuple>
   struct _Safe_tuple_element
   : _Safe_tuple_element_impl<__i, _Tuple, 
                              (__i >= 0 && __i < tuple_size<_Tuple>::value)>
   {
   };

  /**
   *  Maps an argument to bind() into an actual argument to the bound
   *  function object [TR1 3.6.3/5]. Only the first parameter should
   *  be specified: the rest are used to determine among the various
   *  implementations. Note that, although this class is a function
   *  object, it isn't entirely normal because it takes only two
   *  parameters regardless of the number of parameters passed to the
   *  bind expression. The first parameter is the bound argument and
   *  the second parameter is a tuple containing references to the
   *  rest of the arguments.
   */
  template<typename _Arg,
           bool _IsBindExp = is_bind_expression<_Arg>::value,
           bool _IsPlaceholder = (is_placeholder<_Arg>::value > 0)>
    class _Mu;

  /**
   *  If the argument is reference_wrapper<_Tp>, returns the
   *  underlying reference. [TR1 3.6.3/5 bullet 1]
   */
  template<typename _Tp>
    class _Mu<reference_wrapper<_Tp>, false, false>
    {
    public:
      typedef _Tp& result_type;

      /* Note: This won't actually work for const volatile
       * reference_wrappers, because reference_wrapper::get() is const
       * but not volatile-qualified. This might be a defect in the TR.
       */
      template<typename _CVRef, typename _Tuple>
        result_type
        operator()(_CVRef& __arg, const _Tuple&) const volatile
        { return __arg.get(); }
    };

  /**
   *  If the argument is a bind expression, we invoke the underlying
   *  function object with the same cv-qualifiers as we are given and
   *  pass along all of our arguments (unwrapped). [TR1 3.6.3/5 bullet 2]
   */
  template<typename _Arg>
    class _Mu<_Arg, true, false>
    {
    public:
      template<typename _Signature> class result;

      // Determine the result type when we pass the arguments along. This
      // involves passing along the cv-qualifiers placed on _Mu and
      // unwrapping the argument bundle.
      template<typename _CVMu, typename _CVArg, typename... _Args>
        class result<_CVMu(_CVArg, tuple<_Args...>)>
	: public result_of<_CVArg(_Args...)> { };

      template<typename _CVArg, typename... _Args>
        typename result_of<_CVArg(_Args...)>::type
        operator()(_CVArg& __arg,
		   const tuple<_Args...>& __tuple) const volatile
        {
	  // Construct an index tuple and forward to __call
	  typedef typename _Build_index_tuple<sizeof...(_Args)>::__type
	    _Indexes;
	  return this->__call(__arg, __tuple, _Indexes());
	}

    private:
      // Invokes the underlying function object __arg by unpacking all
      // of the arguments in the tuple. 
      template<typename _CVArg, typename... _Args, int... _Indexes>
        typename result_of<_CVArg(_Args...)>::type
        __call(_CVArg& __arg, const tuple<_Args...>& __tuple,
	       const _Index_tuple<_Indexes...>&) const volatile
        {
	  return __arg(tr1::get<_Indexes>(__tuple)...);
	}
    };

  /**
   *  If the argument is a placeholder for the Nth argument, returns
   *  a reference to the Nth argument to the bind function object.
   *  [TR1 3.6.3/5 bullet 3]
   */
  template<typename _Arg>
    class _Mu<_Arg, false, true>
    {
    public:
      template<typename _Signature> class result;

      template<typename _CVMu, typename _CVArg, typename _Tuple>
        class result<_CVMu(_CVArg, _Tuple)>
        {
	  // Add a reference, if it hasn't already been done for us.
	  // This allows us to be a little bit sloppy in constructing
	  // the tuple that we pass to result_of<...>.
	  typedef typename _Safe_tuple_element<(is_placeholder<_Arg>::value
						- 1), _Tuple>::type
	    __base_type;

	public:
	  typedef typename add_reference<__base_type>::type type;
	};

      template<typename _Tuple>
        typename result<_Mu(_Arg, _Tuple)>::type
        operator()(const volatile _Arg&, const _Tuple& __tuple) const volatile
        {
	  return ::std::tr1::get<(is_placeholder<_Arg>::value - 1)>(__tuple);
	}
    };

  /**
   *  If the argument is just a value, returns a reference to that
   *  value. The cv-qualifiers on the reference are the same as the
   *  cv-qualifiers on the _Mu object. [TR1 3.6.3/5 bullet 4]
   */
  template<typename _Arg>
    class _Mu<_Arg, false, false>
    {
    public:
      template<typename _Signature> struct result;

      template<typename _CVMu, typename _CVArg, typename _Tuple>
        struct result<_CVMu(_CVArg, _Tuple)>
        {
	  typedef typename add_reference<_CVArg>::type type;
	};

      // Pick up the cv-qualifiers of the argument
      template<typename _CVArg, typename _Tuple>
        _CVArg&
        operator()(_CVArg& __arg, const _Tuple&) const volatile
        { return __arg; }
    };

  /**
   *  Maps member pointers into instances of _Mem_fn but leaves all
   *  other function objects untouched. Used by tr1::bind(). The
   *  primary template handles the non--member-pointer case.
   */
  template<typename _Tp>
    struct _Maybe_wrap_member_pointer
    {
      typedef _Tp type;
      
      static const _Tp&
      __do_wrap(const _Tp& __x)
      { return __x; }
    };

  /**
   *  Maps member pointers into instances of _Mem_fn but leaves all
   *  other function objects untouched. Used by tr1::bind(). This
   *  partial specialization handles the member pointer case.
   */
  template<typename _Tp, typename _Class>
    struct _Maybe_wrap_member_pointer<_Tp _Class::*>
    {
      typedef _Mem_fn<_Tp _Class::*> type;
      
      static type
      __do_wrap(_Tp _Class::* __pm)
      { return type(__pm); }
    };

  /// Type of the function object returned from bind().
  template<typename _Signature>
    struct _Bind;

   template<typename _Functor, typename... _Bound_args>
    class _Bind<_Functor(_Bound_args...)>
    : public _Weak_result_type<_Functor>
    {
      typedef _Bind __self_type;
      typedef typename _Build_index_tuple<sizeof...(_Bound_args)>::__type 
        _Bound_indexes;

      _Functor _M_f;
      tuple<_Bound_args...> _M_bound_args;

      // Call unqualified
      template<typename... _Args, int... _Indexes>
        typename result_of<
                   _Functor(typename result_of<_Mu<_Bound_args> 
                            (_Bound_args, tuple<_Args...>)>::type...)
                 >::type
        __call(const tuple<_Args...>& __args, _Index_tuple<_Indexes...>)
        {
          return _M_f(_Mu<_Bound_args>()
                      (tr1::get<_Indexes>(_M_bound_args), __args)...);
        }

      // Call as const
      template<typename... _Args, int... _Indexes>
        typename result_of<
                   const _Functor(typename result_of<_Mu<_Bound_args> 
                                    (const _Bound_args, tuple<_Args...>)
                                  >::type...)>::type
        __call(const tuple<_Args...>& __args, _Index_tuple<_Indexes...>) const
        {
          return _M_f(_Mu<_Bound_args>()
                      (tr1::get<_Indexes>(_M_bound_args), __args)...);
        }

      // Call as volatile
      template<typename... _Args, int... _Indexes>
        typename result_of<
                   volatile _Functor(typename result_of<_Mu<_Bound_args> 
                                    (volatile _Bound_args, tuple<_Args...>)
                                  >::type...)>::type
        __call(const tuple<_Args...>& __args, 
               _Index_tuple<_Indexes...>) volatile
        {
          return _M_f(_Mu<_Bound_args>()
                      (tr1::get<_Indexes>(_M_bound_args), __args)...);
        }

      // Call as const volatile
      template<typename... _Args, int... _Indexes>
        typename result_of<
                   const volatile _Functor(typename result_of<_Mu<_Bound_args> 
                                    (const volatile _Bound_args, 
                                     tuple<_Args...>)
                                  >::type...)>::type
        __call(const tuple<_Args...>& __args, 
               _Index_tuple<_Indexes...>) const volatile
        {
          return _M_f(_Mu<_Bound_args>()
                      (tr1::get<_Indexes>(_M_bound_args), __args)...);
        }

     public:
      explicit _Bind(_Functor __f, _Bound_args... __bound_args)
        : _M_f(__f), _M_bound_args(__bound_args...) { }

      // Call unqualified
      template<typename... _Args>
        typename result_of<
                   _Functor(typename result_of<_Mu<_Bound_args> 
                            (_Bound_args, tuple<_Args...>)>::type...)
                 >::type
        operator()(_Args&... __args)
        {
          return this->__call(tr1::tie(__args...), _Bound_indexes());
        }

      // Call as const
      template<typename... _Args>
        typename result_of<
                   const _Functor(typename result_of<_Mu<_Bound_args> 
                            (const _Bound_args, tuple<_Args...>)>::type...)
                 >::type
        operator()(_Args&... __args) const
        {
          return this->__call(tr1::tie(__args...), _Bound_indexes());
        }


      // Call as volatile
      template<typename... _Args>
        typename result_of<
                   volatile _Functor(typename result_of<_Mu<_Bound_args> 
                            (volatile _Bound_args, tuple<_Args...>)>::type...)
                 >::type
        operator()(_Args&... __args) volatile
        {
          return this->__call(tr1::tie(__args...), _Bound_indexes());
        }


      // Call as const volatile
      template<typename... _Args>
        typename result_of<
                   const volatile _Functor(typename result_of<_Mu<_Bound_args> 
                            (const volatile _Bound_args, 
                             tuple<_Args...>)>::type...)
                 >::type
        operator()(_Args&... __args) const volatile
        {
          return this->__call(tr1::tie(__args...), _Bound_indexes());
        }
    };

  /// Type of the function object returned from bind<R>().
  template<typename _Result, typename _Signature>
    struct _Bind_result;

  template<typename _Result, typename _Functor, typename... _Bound_args>
    class _Bind_result<_Result, _Functor(_Bound_args...)>
    {
      typedef _Bind_result __self_type;
      typedef typename _Build_index_tuple<sizeof...(_Bound_args)>::__type 
        _Bound_indexes;

      _Functor _M_f;
      tuple<_Bound_args...> _M_bound_args;

      // Call unqualified
      template<typename... _Args, int... _Indexes>
        _Result
        __call(const tuple<_Args...>& __args, _Index_tuple<_Indexes...>)
        {
          return _M_f(_Mu<_Bound_args>()
                      (tr1::get<_Indexes>(_M_bound_args), __args)...);
        }

      // Call as const
      template<typename... _Args, int... _Indexes>
        _Result
        __call(const tuple<_Args...>& __args, _Index_tuple<_Indexes...>) const
        {
          return _M_f(_Mu<_Bound_args>()
                      (tr1::get<_Indexes>(_M_bound_args), __args)...);
        }

      // Call as volatile
      template<typename... _Args, int... _Indexes>
        _Result
        __call(const tuple<_Args...>& __args, 
               _Index_tuple<_Indexes...>) volatile
        {
          return _M_f(_Mu<_Bound_args>()
                      (tr1::get<_Indexes>(_M_bound_args), __args)...);
        }

      // Call as const volatile
      template<typename... _Args, int... _Indexes>
        _Result
        __call(const tuple<_Args...>& __args, 
               _Index_tuple<_Indexes...>) const volatile
        {
          return _M_f(_Mu<_Bound_args>()
                      (tr1::get<_Indexes>(_M_bound_args), __args)...);
        }

    public:
      typedef _Result result_type;

      explicit
      _Bind_result(_Functor __f, _Bound_args... __bound_args)
      : _M_f(__f), _M_bound_args(__bound_args...) { }

      // Call unqualified
      template<typename... _Args>
        result_type
        operator()(_Args&... __args)
        {
          return this->__call(tr1::tie(__args...), _Bound_indexes());
        }

      // Call as const
      template<typename... _Args>
        result_type
        operator()(_Args&... __args) const
        {
          return this->__call(tr1::tie(__args...), _Bound_indexes());
        }

      // Call as volatile
      template<typename... _Args>
        result_type
        operator()(_Args&... __args) volatile
        {
          return this->__call(tr1::tie(__args...), _Bound_indexes());
        }

      // Call as const volatile
      template<typename... _Args>
        result_type
        operator()(_Args&... __args) const volatile
        {
          return this->__call(tr1::tie(__args...), _Bound_indexes());
        }
    };

  /// Class template _Bind is always a bind expression.
  template<typename _Signature>
    struct is_bind_expression<_Bind<_Signature> >
    { static const bool value = true; };

  template<typename _Signature>
    const bool is_bind_expression<_Bind<_Signature> >::value;

  /// Class template _Bind is always a bind expression.
  template<typename _Signature>
    struct is_bind_expression<const _Bind<_Signature> >
    { static const bool value = true; };

  template<typename _Signature>
    const bool is_bind_expression<const _Bind<_Signature> >::value;

  /// Class template _Bind is always a bind expression.
  template<typename _Signature>
    struct is_bind_expression<volatile _Bind<_Signature> >
    { static const bool value = true; };

  template<typename _Signature>
    const bool is_bind_expression<volatile _Bind<_Signature> >::value;

  /// Class template _Bind is always a bind expression.
  template<typename _Signature>
    struct is_bind_expression<const volatile _Bind<_Signature> >
    { static const bool value = true; };

  template<typename _Signature>
    const bool is_bind_expression<const volatile _Bind<_Signature> >::value;

  /// Class template _Bind_result is always a bind expression.
  template<typename _Result, typename _Signature>
    struct is_bind_expression<_Bind_result<_Result, _Signature> >
    { static const bool value = true; };

  template<typename _Result, typename _Signature>
    const bool is_bind_expression<_Bind_result<_Result, _Signature> >::value;

  /// Class template _Bind_result is always a bind expression.
  template<typename _Result, typename _Signature>
    struct is_bind_expression<const _Bind_result<_Result, _Signature> >
    { static const bool value = true; };

  template<typename _Result, typename _Signature>
    const bool
    is_bind_expression<const _Bind_result<_Result, _Signature> >::value;

  /// Class template _Bind_result is always a bind expression.
  template<typename _Result, typename _Signature>
    struct is_bind_expression<volatile _Bind_result<_Result, _Signature> >
    { static const bool value = true; };

  template<typename _Result, typename _Signature>
    const bool
    is_bind_expression<volatile _Bind_result<_Result, _Signature> >::value;

  /// Class template _Bind_result is always a bind expression.
  template<typename _Result, typename _Signature>
    struct
    is_bind_expression<const volatile _Bind_result<_Result, _Signature> >
    { static const bool value = true; };

  template<typename _Result, typename _Signature>
    const bool
    is_bind_expression<const volatile _Bind_result<_Result,
                                                   _Signature> >::value;

#if __cplusplus >= 201103L
  // Specialize tr1::is_bind_expression for std::bind closure types,
  // so that they can also work with tr1::bind.

  template<typename _Signature>
    struct is_bind_expression<std::_Bind<_Signature>>
    : true_type { };

  template<typename _Signature>
    struct is_bind_expression<const std::_Bind<_Signature>>
    : true_type { };

  template<typename _Signature>
    struct is_bind_expression<volatile std::_Bind<_Signature>>
    : true_type { };

  template<typename _Signature>
    struct is_bind_expression<const volatile std::_Bind<_Signature>>
    : true_type { };

  template<typename _Result, typename _Signature>
    struct is_bind_expression<std::_Bind_result<_Result, _Signature>>
    : true_type { };

  template<typename _Result, typename _Signature>
    struct is_bind_expression<const std::_Bind_result<_Result, _Signature>>
    : true_type { };

  template<typename _Result, typename _Signature>
    struct is_bind_expression<volatile std::_Bind_result<_Result, _Signature>>
    : true_type { };

  template<typename _Result, typename _Signature>
    struct is_bind_expression<const volatile std::_Bind_result<_Result,
                                                               _Signature>>
    : true_type { };
#endif

  /// bind
  template<typename _Functor, typename... _ArgTypes>
    inline
    _Bind<typename _Maybe_wrap_member_pointer<_Functor>::type(_ArgTypes...)>
    bind(_Functor __f, _ArgTypes... __args)
    {
      typedef _Maybe_wrap_member_pointer<_Functor> __maybe_type;
      typedef typename __maybe_type::type __functor_type;
      typedef _Bind<__functor_type(_ArgTypes...)> __result_type;
      return __result_type(__maybe_type::__do_wrap(__f), __args...);
    } 

  template<typename _Result, typename _Functor, typename... _ArgTypes>
    inline
    _Bind_result<_Result,
		 typename _Maybe_wrap_member_pointer<_Functor>::type
                            (_ArgTypes...)>
    bind(_Functor __f, _ArgTypes... __args)
    {
      typedef _Maybe_wrap_member_pointer<_Functor> __maybe_type;
      typedef typename __maybe_type::type __functor_type;
      typedef _Bind_result<_Result, __functor_type(_ArgTypes...)>
	__result_type;
      return __result_type(__maybe_type::__do_wrap(__f), __args...);
    }

  /**
   *  @brief Exception class thrown when class template function's
   *  operator() is called with an empty target.
   *  @ingroup exceptions
   */
  class bad_function_call : public std::exception { };

  /**
   *  The integral constant expression 0 can be converted into a
   *  pointer to this type. It is used by the function template to
   *  accept NULL pointers.
   */
  struct _M_clear_type;

  /**
   *  Trait identifying @a location-invariant types, meaning that the
   *  address of the object (or any of its members) will not escape.
   *  Also implies a trivial copy constructor and assignment operator.
   */
  template<typename _Tp>
    struct __is_location_invariant
    : integral_constant<bool,
                        (is_pointer<_Tp>::value
                         || is_member_pointer<_Tp>::value)>
    {
    };

  class _Undefined_class;

  union _Nocopy_types
  {
    void*       _M_object;
    const void* _M_const_object;
    void (*_M_function_pointer)();
    void (_Undefined_class::*_M_member_pointer)();
  };

  union _Any_data
  {
    void*       _M_access()       { return &_M_pod_data[0]; }
    const void* _M_access() const { return &_M_pod_data[0]; }

    template<typename _Tp>
      _Tp&
      _M_access()
      { return *static_cast<_Tp*>(_M_access()); }

    template<typename _Tp>
      const _Tp&
      _M_access() const
      { return *static_cast<const _Tp*>(_M_access()); }

    _Nocopy_types _M_unused;
    char _M_pod_data[sizeof(_Nocopy_types)];
  };

  enum _Manager_operation
  {
    __get_type_info,
    __get_functor_ptr,
    __clone_functor,
    __destroy_functor
  };

  // Simple type wrapper that helps avoid annoying const problems
  // when casting between void pointers and pointers-to-pointers.
  template<typename _Tp>
    struct _Simple_type_wrapper
    {
      _Simple_type_wrapper(_Tp __value) : __value(__value) { }

      _Tp __value;
    };

  template<typename _Tp>
    struct __is_location_invariant<_Simple_type_wrapper<_Tp> >
    : __is_location_invariant<_Tp>
    {
    };

  // Converts a reference to a function object into a callable
  // function object.
  template<typename _Functor>
    inline _Functor&
    __callable_functor(_Functor& __f)
    { return __f; }

  template<typename _Member, typename _Class>
    inline _Mem_fn<_Member _Class::*>
    __callable_functor(_Member _Class::* &__p)
    { return mem_fn(__p); }

  template<typename _Member, typename _Class>
    inline _Mem_fn<_Member _Class::*>
    __callable_functor(_Member _Class::* const &__p)
    { return mem_fn(__p); }

  template<typename _Signature>
    class function;

  /// Base class of all polymorphic function object wrappers.
  class _Function_base
  {
  public:
    static const std::size_t _M_max_size = sizeof(_Nocopy_types);
    static const std::size_t _M_max_align = __alignof__(_Nocopy_types);

    template<typename _Functor>
      class _Base_manager
      {
      protected:
	static const bool __stored_locally =
        (__is_location_invariant<_Functor>::value
         && sizeof(_Functor) <= _M_max_size
         && __alignof__(_Functor) <= _M_max_align
         && (_M_max_align % __alignof__(_Functor) == 0));
	
	typedef integral_constant<bool, __stored_locally> _Local_storage;

	// Retrieve a pointer to the function object
	static _Functor*
	_M_get_pointer(const _Any_data& __source)
	{
	  const _Functor* __ptr =
	    __stored_locally? std::__addressof(__source._M_access<_Functor>())
	    /* have stored a pointer */ : __source._M_access<_Functor*>();
	  return const_cast<_Functor*>(__ptr);
	}

	// Clone a location-invariant function object that fits within
	// an _Any_data structure.
	static void
	_M_clone(_Any_data& __dest, const _Any_data& __source, true_type)
	{
	  new (__dest._M_access()) _Functor(__source._M_access<_Functor>());
	}

	// Clone a function object that is not location-invariant or
	// that cannot fit into an _Any_data structure.
	static void
	_M_clone(_Any_data& __dest, const _Any_data& __source, false_type)
	{
	  __dest._M_access<_Functor*>() =
	    new _Functor(*__source._M_access<_Functor*>());
	}

	// Destroying a location-invariant object may still require
	// destruction.
	static void
	_M_destroy(_Any_data& __victim, true_type)
	{
	  __victim._M_access<_Functor>().~_Functor();
	}
	
	// Destroying an object located on the heap.
	static void
	_M_destroy(_Any_data& __victim, false_type)
	{
	  delete __victim._M_access<_Functor*>();
	}
	
      public:
	static bool
	_M_manager(_Any_data& __dest, const _Any_data& __source,
		   _Manager_operation __op)
	{
	  switch (__op)
	    {
#if __cpp_rtti
	    case __get_type_info:
	      __dest._M_access<const type_info*>() = &typeid(_Functor);
	      break;
#endif
	    case __get_functor_ptr:
	      __dest._M_access<_Functor*>() = _M_get_pointer(__source);
	      break;
	      
	    case __clone_functor:
	      _M_clone(__dest, __source, _Local_storage());
	      break;

	    case __destroy_functor:
	      _M_destroy(__dest, _Local_storage());
	      break;
	    }
	  return false;
	}

	static void
	_M_init_functor(_Any_data& __functor, const _Functor& __f)
	{ _M_init_functor(__functor, __f, _Local_storage()); }
	
	template<typename _Signature>
	  static bool
	  _M_not_empty_function(const function<_Signature>& __f)
          { return static_cast<bool>(__f); }

	template<typename _Tp>
	  static bool
	  _M_not_empty_function(const _Tp*& __fp)
	  { return __fp; }

	template<typename _Class, typename _Tp>
	  static bool
	  _M_not_empty_function(_Tp _Class::* const& __mp)
	  { return __mp; }

	template<typename _Tp>
	  static bool
	  _M_not_empty_function(const _Tp&)
	  { return true; }

      private:
	static void
	_M_init_functor(_Any_data& __functor, const _Functor& __f, true_type)
	{ new (__functor._M_access()) _Functor(__f); }

	static void
	_M_init_functor(_Any_data& __functor, const _Functor& __f, false_type)
	{ __functor._M_access<_Functor*>() = new _Functor(__f); }
      };

    template<typename _Functor>
      class _Ref_manager : public _Base_manager<_Functor*>
      {
	typedef _Function_base::_Base_manager<_Functor*> _Base;

    public:
	static bool
	_M_manager(_Any_data& __dest, const _Any_data& __source,
		   _Manager_operation __op)
	{
	  switch (__op)
	    {
#if __cpp_rtti
	    case __get_type_info:
	      __dest._M_access<const type_info*>() = &typeid(_Functor);
	      break;
#endif
	    case __get_functor_ptr:
	      __dest._M_access<_Functor*>() = *_Base::_M_get_pointer(__source);
	      return is_const<_Functor>::value;
	      break;
	      
	    default:
	      _Base::_M_manager(__dest, __source, __op);
	    }
	  return false;
	}

	static void
	_M_init_functor(_Any_data& __functor, reference_wrapper<_Functor> __f)
	{
	  _Base::_M_init_functor(__functor, std::__addressof(__f.get()));
	}
      };

    _Function_base() : _M_manager(0) { }
    
    ~_Function_base()
    {
      if (_M_manager)
	_M_manager(_M_functor, _M_functor, __destroy_functor);
    }


    bool _M_empty() const { return !_M_manager; }

    typedef bool (*_Manager_type)(_Any_data&, const _Any_data&,
                                  _Manager_operation);

    _Any_data     _M_functor;
    _Manager_type _M_manager;
  };

  template<typename _Signature, typename _Functor>
    class _Function_handler;

  template<typename _Res, typename _Functor, typename... _ArgTypes>
    class _Function_handler<_Res(_ArgTypes...), _Functor>
    : public _Function_base::_Base_manager<_Functor>
    {
      typedef _Function_base::_Base_manager<_Functor> _Base;

    public:
      static _Res
      _M_invoke(const _Any_data& __functor, _ArgTypes... __args)
      {
        return (*_Base::_M_get_pointer(__functor))(__args...);
      }
    };

  template<typename _Functor, typename... _ArgTypes>
    class _Function_handler<void(_ArgTypes...), _Functor>
    : public _Function_base::_Base_manager<_Functor>
    {
      typedef _Function_base::_Base_manager<_Functor> _Base;

     public:
      static void
      _M_invoke(const _Any_data& __functor, _ArgTypes... __args)
      {
        (*_Base::_M_get_pointer(__functor))(__args...);
      }
    };

  template<typename _Res, typename _Functor, typename... _ArgTypes>
    class _Function_handler<_Res(_ArgTypes...), reference_wrapper<_Functor> >
    : public _Function_base::_Ref_manager<_Functor>
    {
      typedef _Function_base::_Ref_manager<_Functor> _Base;

     public:
      static _Res
      _M_invoke(const _Any_data& __functor, _ArgTypes... __args)
      {
        return 
          __callable_functor(**_Base::_M_get_pointer(__functor))(__args...);
      }
    };

  template<typename _Functor, typename... _ArgTypes>
    class _Function_handler<void(_ArgTypes...), reference_wrapper<_Functor> >
    : public _Function_base::_Ref_manager<_Functor>
    {
      typedef _Function_base::_Ref_manager<_Functor> _Base;

     public:
      static void
      _M_invoke(const _Any_data& __functor, _ArgTypes... __args)
      {
        __callable_functor(**_Base::_M_get_pointer(__functor))(__args...);
      }
    };

  template<typename _Class, typename _Member, typename _Res, 
           typename... _ArgTypes>
    class _Function_handler<_Res(_ArgTypes...), _Member _Class::*>
    : public _Function_handler<void(_ArgTypes...), _Member _Class::*>
    {
      typedef _Function_handler<void(_ArgTypes...), _Member _Class::*>
        _Base;

     public:
      static _Res
      _M_invoke(const _Any_data& __functor, _ArgTypes... __args)
      {
        return tr1::
	  mem_fn(_Base::_M_get_pointer(__functor)->__value)(__args...);
      }
    };

  template<typename _Class, typename _Member, typename... _ArgTypes>
    class _Function_handler<void(_ArgTypes...), _Member _Class::*>
    : public _Function_base::_Base_manager<
                 _Simple_type_wrapper< _Member _Class::* > >
    {
      typedef _Member _Class::* _Functor;
      typedef _Simple_type_wrapper<_Functor> _Wrapper;
      typedef _Function_base::_Base_manager<_Wrapper> _Base;

     public:
      static bool
      _M_manager(_Any_data& __dest, const _Any_data& __source,
                 _Manager_operation __op)
      {
        switch (__op)
	  {
#if __cpp_rtti
	  case __get_type_info:
	    __dest._M_access<const type_info*>() = &typeid(_Functor);
	    break;
#endif	    
	  case __get_functor_ptr:
	    __dest._M_access<_Functor*>() =
	      &_Base::_M_get_pointer(__source)->__value;
	    break;
	    
	  default:
	    _Base::_M_manager(__dest, __source, __op);
	  }
        return false;
      }

      static void
      _M_invoke(const _Any_data& __functor, _ArgTypes... __args)
      {
	tr1::mem_fn(_Base::_M_get_pointer(__functor)->__value)(__args...);
      }
    };

  /// class function
  template<typename _Res, typename... _ArgTypes>
    class function<_Res(_ArgTypes...)>
    : public _Maybe_unary_or_binary_function<_Res, _ArgTypes...>,
      private _Function_base
    {
#if __cplusplus < 201103L
      /// This class is used to implement the safe_bool idiom.
      struct _Hidden_type
      {
	_Hidden_type* _M_bool;
      };

      /// This typedef is used to implement the safe_bool idiom.
      typedef _Hidden_type* _Hidden_type::* _Safe_bool;
#endif

      typedef _Res _Signature_type(_ArgTypes...);
      
      struct _Useless { };
      
    public:
      typedef _Res result_type;
      
      // [3.7.2.1] construct/copy/destroy
      
      /**
       *  @brief Default construct creates an empty function call wrapper.
       *  @post @c !(bool)*this
       */
      function() : _Function_base() { }
      
      /**
       *  @brief Default construct creates an empty function call wrapper.
       *  @post @c !(bool)*this
       */
      function(_M_clear_type*) : _Function_base() { }
      
      /**
       *  @brief %Function copy constructor.
       *  @param x A %function object with identical call signature.
       *  @post @c (bool)*this == (bool)x
       *
       *  The newly-created %function contains a copy of the target of @a
       *  x (if it has one).
       */
      function(const function& __x);

      /**
       *  @brief Builds a %function that targets a copy of the incoming
       *  function object.
       *  @param f A %function object that is callable with parameters of
       *  type @c T1, @c T2, ..., @c TN and returns a value convertible
       *  to @c Res.
       *
       *  The newly-created %function object will target a copy of @a
       *  f. If @a f is @c reference_wrapper<F>, then this function
       *  object will contain a reference to the function object @c
       *  f.get(). If @a f is a NULL function pointer or NULL
       *  pointer-to-member, the newly-created object will be empty.
       *
       *  If @a f is a non-NULL function pointer or an object of type @c
       *  reference_wrapper<F>, this function will not throw.
       */
      template<typename _Functor>
        function(_Functor __f,
                 typename __gnu_cxx::__enable_if<
                           !is_integral<_Functor>::value, _Useless>::__type
                   = _Useless());

      /**
       *  @brief %Function assignment operator.
       *  @param x A %function with identical call signature.
       *  @post @c (bool)*this == (bool)x
       *  @returns @c *this
       *
       *  The target of @a x is copied to @c *this. If @a x has no
       *  target, then @c *this will be empty.
       *
       *  If @a x targets a function pointer or a reference to a function
       *  object, then this operation will not throw an %exception.
       */
      function&
      operator=(const function& __x)
      {
        function(__x).swap(*this);
        return *this;
      }

      /**
       *  @brief %Function assignment to zero.
       *  @post @c !(bool)*this
       *  @returns @c *this
       *
       *  The target of @c *this is deallocated, leaving it empty.
       */
      function&
      operator=(_M_clear_type*)
      {
        if (_M_manager)
	  {
	    _M_manager(_M_functor, _M_functor, __destroy_functor);
	    _M_manager = 0;
	    _M_invoker = 0;
	  }
        return *this;
      }

      /**
       *  @brief %Function assignment to a new target.
       *  @param f A %function object that is callable with parameters of
       *  type @c T1, @c T2, ..., @c TN and returns a value convertible
       *  to @c Res.
       *  @return @c *this
       *
       *  This  %function object wrapper will target a copy of @a
       *  f. If @a f is @c reference_wrapper<F>, then this function
       *  object will contain a reference to the function object @c
       *  f.get(). If @a f is a NULL function pointer or NULL
       *  pointer-to-member, @c this object will be empty.
       *
       *  If @a f is a non-NULL function pointer or an object of type @c
       *  reference_wrapper<F>, this function will not throw.
       */
      template<typename _Functor>
        typename __gnu_cxx::__enable_if<!is_integral<_Functor>::value,
	                                function&>::__type
	operator=(_Functor __f)
	{
	  function(__f).swap(*this);
	  return *this;
	}

      // [3.7.2.2] function modifiers
      
      /**
       *  @brief Swap the targets of two %function objects.
       *  @param f A %function with identical call signature.
       *
       *  Swap the targets of @c this function object and @a f. This
       *  function will not throw an %exception.
       */
      void swap(function& __x)
      {
	std::swap(_M_functor, __x._M_functor);
	std::swap(_M_manager, __x._M_manager);
	std::swap(_M_invoker, __x._M_invoker);
      }

      // [3.7.2.3] function capacity

      /**
       *  @brief Determine if the %function wrapper has a target.
       *
       *  @return @c true when this %function object contains a target,
       *  or @c false when it is empty.
       *
       *  This function will not throw an %exception.
       */
#if __cplusplus >= 201103L
      explicit operator bool() const
      { return !_M_empty(); }
#else
      operator _Safe_bool() const
      {
        if (_M_empty())
	  return 0;
	else
	  return &_Hidden_type::_M_bool;
      }
#endif

      // [3.7.2.4] function invocation

      /**
       *  @brief Invokes the function targeted by @c *this.
       *  @returns the result of the target.
       *  @throws bad_function_call when @c !(bool)*this
       *
       *  The function call operator invokes the target function object
       *  stored by @c this.
       */
      _Res operator()(_ArgTypes... __args) const;

#if __cpp_rtti
      // [3.7.2.5] function target access
      /**
       *  @brief Determine the type of the target of this function object
       *  wrapper.
       *
       *  @returns the type identifier of the target function object, or
       *  @c typeid(void) if @c !(bool)*this.
       *
       *  This function will not throw an %exception.
       */
      const type_info& target_type() const;
      
      /**
       *  @brief Access the stored target function object.
       *
       *  @return Returns a pointer to the stored target function object,
       *  if @c typeid(Functor).equals(target_type()); otherwise, a NULL
       *  pointer.
       *
       * This function will not throw an %exception.
       */
      template<typename _Functor>       _Functor* target();
      
      /// @overload
      template<typename _Functor> const _Functor* target() const;
#endif

    private:
      // [3.7.2.6] undefined operators
      template<typename _Function>
	void operator==(const function<_Function>&) const;
      template<typename _Function>
	void operator!=(const function<_Function>&) const;

      typedef _Res (*_Invoker_type)(const _Any_data&, _ArgTypes...);
      _Invoker_type _M_invoker;
  };
#pragma GCC diagnostic pop

  template<typename _Res, typename... _ArgTypes>
    function<_Res(_ArgTypes...)>::
    function(const function& __x)
    : _Function_base()
    {
      if (static_cast<bool>(__x))
	{
	  __x._M_manager(_M_functor, __x._M_functor, __clone_functor);
	  _M_invoker = __x._M_invoker;
	  _M_manager = __x._M_manager;
	}
    }

  template<typename _Res, typename... _ArgTypes>
    template<typename _Functor>
      function<_Res(_ArgTypes...)>::
      function(_Functor __f,
	       typename __gnu_cxx::__enable_if<
                       !is_integral<_Functor>::value, _Useless>::__type)
      : _Function_base()
      {
	typedef _Function_handler<_Signature_type, _Functor> _My_handler;

	if (_My_handler::_M_not_empty_function(__f))
	  {
	    _My_handler::_M_init_functor(_M_functor, __f);
	    _M_invoker = &_My_handler::_M_invoke;
	    _M_manager = &_My_handler::_M_manager;
	  }
      }

  template<typename _Res, typename... _ArgTypes>
    _Res
    function<_Res(_ArgTypes...)>::
    operator()(_ArgTypes... __args) const
    {
      if (_M_empty())
	_GLIBCXX_THROW_OR_ABORT(bad_function_call());
      return _M_invoker(_M_functor, __args...);
    }

#if __cpp_rtti
  template<typename _Res, typename... _ArgTypes>
    const type_info&
    function<_Res(_ArgTypes...)>::
    target_type() const
    {
      if (_M_manager)
        {
          _Any_data __typeinfo_result;
          _M_manager(__typeinfo_result, _M_functor, __get_type_info);
          return *__typeinfo_result._M_access<const type_info*>();
        }
      else
	return typeid(void);
    }

  template<typename _Res, typename... _ArgTypes>
    template<typename _Functor>
      _Functor*
      function<_Res(_ArgTypes...)>::
      target()
      {
	if (typeid(_Functor) == target_type() && _M_manager)
	  {
	    _Any_data __ptr;
	    if (_M_manager(__ptr, _M_functor, __get_functor_ptr)
		&& !is_const<_Functor>::value)
	      return 0;
	    else
	      return __ptr._M_access<_Functor*>();
	  }
	else
	  return 0;
      }

  template<typename _Res, typename... _ArgTypes>
    template<typename _Functor>
      const _Functor*
      function<_Res(_ArgTypes...)>::
      target() const
      {
	if (typeid(_Functor) == target_type() && _M_manager)
	  {
	    _Any_data __ptr;
	    _M_manager(__ptr, _M_functor, __get_functor_ptr);
	    return __ptr._M_access<const _Functor*>();
	  }
	else
	  return 0;
      }
#endif

  // [3.7.2.7] null pointer comparisons

  /**
   *  @brief Compares a polymorphic function object wrapper against 0
   *  (the NULL pointer).
   *  @returns @c true if the wrapper has no target, @c false otherwise
   *
   *  This function will not throw an %exception.
   */
  template<typename _Signature>
    inline bool
    operator==(const function<_Signature>& __f, _M_clear_type*)
    { return !static_cast<bool>(__f); }

  /// @overload
  template<typename _Signature>
    inline bool
    operator==(_M_clear_type*, const function<_Signature>& __f)
    { return !static_cast<bool>(__f); }

  /**
   *  @brief Compares a polymorphic function object wrapper against 0
   *  (the NULL pointer).
   *  @returns @c false if the wrapper has no target, @c true otherwise
   *
   *  This function will not throw an %exception.
   */
  template<typename _Signature>
    inline bool
    operator!=(const function<_Signature>& __f, _M_clear_type*)
    { return static_cast<bool>(__f); }

  /// @overload
  template<typename _Signature>
    inline bool
    operator!=(_M_clear_type*, const function<_Signature>& __f)
    { return static_cast<bool>(__f); }

  // [3.7.2.8] specialized algorithms

  /**
   *  @brief Swap the targets of two polymorphic function object wrappers.
   *
   *  This function will not throw an %exception.
   */
  template<typename _Signature>
    inline void
    swap(function<_Signature>& __x, function<_Signature>& __y)
    { __x.swap(__y); }
}

#if __cplusplus >= 201103L
  // Specialize std::is_bind_expression for tr1::bind closure types,
  // so that they can also work with std::bind.

  template<typename _Signature>
    struct is_bind_expression<tr1::_Bind<_Signature>>
    : true_type { };

  template<typename _Signature>
    struct is_bind_expression<const tr1::_Bind<_Signature>>
    : true_type { };

  template<typename _Signature>
    struct is_bind_expression<volatile tr1::_Bind<_Signature>>
    : true_type { };

  template<typename _Signature>
    struct is_bind_expression<const volatile tr1::_Bind<_Signature>>
    : true_type { };

  template<typename _Result, typename _Signature>
    struct is_bind_expression<tr1::_Bind_result<_Result, _Signature>>
    : true_type { };

  template<typename _Result, typename _Signature>
    struct is_bind_expression<const tr1::_Bind_result<_Result, _Signature>>
    : true_type { };

  template<typename _Result, typename _Signature>
    struct is_bind_expression<volatile tr1::_Bind_result<_Result, _Signature>>
    : true_type { };

  template<typename _Result, typename _Signature>
    struct is_bind_expression<const volatile tr1::_Bind_result<_Result,
                                                               _Signature>>
    : true_type { };

#endif // C++11
_GLIBCXX_END_NAMESPACE_VERSION
}

#endif // _GLIBCXX_TR1_FUNCTIONAL
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
                     v           J                           B    d             U0    4             6                     +    +             H            $       L@    F             W                     Y          7       h                     lC    g             }                                          "                                        %    &      K          P      -                    -                            G    L      y       Ƌ                     I    @      6       ً                     AU    @`      D       ?1    07      \                            
.    2              T    0K      )                                                     @@      s       $                     2    y      v       J                     U                     Q-    1      l      `   	         S      5    0<             )           N       ?     D             4    7      E                 (       l    @      
                                                 ;                           0                            Ì                     N     W      3      W     T      ;       YR     f             a                 8   5 0              |                     ׌                     P    O                                                                                `             +                     6                     @B    c      j       3    >      X       0'    $             K                     S   , 0/             Q    q      |       \     y             .    3             n                                                    i       !    @      '       (          f       u    	                                     0      i                            s.    3      ^       \L    @H      +       Y                                       ɍ                     G    0^      z      +                 <   5                ,    "      ~       ٍ                                          *2    P8      1          	 S      E       
                     '                     (N    k      %      _                          
            9                     B                     H    @M             S                     c                     b    P      Q       =_    }      0       n                     KA    J      3           `       ^                            ;                 N>    PY             BP    @B             aV    R             ^O    l            3    ?             C    `K             []                                      6    =             $4    6      d       +                     '    0$      h       &D    f                 p      &                                      
       H    PQ                                  Ȏ                     2     ?             ڎ    @      K      N    O                              `           F       c    P                                                                            7   5 P              !?     D                                                       *                     |a                 ?                     R                     c                     >    0C             z                     7`    ~      J       _$           C                            M     n            sG    P[                                                       E    K      a       ̅    P             =    0Y                                  8K    0U      O                            tT    @V      J       A     K      ,       S    e      :       V    U      u                        =1    5             gJ    G             Q     r                       i      ,2    8      l                            ^    z             \    x      1       Տ                     )                 ߏ                         @      h        =    PB      
       *    ,                                 	9   5                G                 (          S           	      4       ?    [      F                ,       pS    p             I                             z      ,    0!             "                     u    0             I    0O      7       L)    P%      (      X(    (            ,                     3    @      
       L    h             0    :             I&    p#      Y       I                     V                     @    I      U       2    `;      k       _    P             m                                                                                                         a    `             i%    0/      
                           ݐ                               c                               ,                                    $                      W    PS      
       R     f             9                     T    U      5       K    i            a          Q       r4    6      :       V    `S             E                     X                     b                     v                                                               b5    <                                  U    `                       B       /    9             ϑ                     d                 !^    `z      3       .!    0       (                            y7   5 `              f+    @1      8       "          K       E    Y      8       9                 '    !             _    0      C      ދ                     hM    `I      Y       0    ;      Q       58   5 @              wD    A      $           @             :                 C     J             L    pH                                  o    P            e                  JH    `      ]                                      o      4                     $    P!      G       B                     \    @             p                     7   5 p              M     p             ~                                          1    7      g                                                 ˒                     ~`                  aE     a                                0      (       za          k       /    9             eF    Y      8                                                 -     9      9       f           
                            6Q    O      Q      3                     e                S    r      ?       G   >         H       -                     `                  B    _      C       u                     7           z       |                                                                                                                           Ó                     _                     ԓ                     @    v                                 P    O              __crc_phy_print_status __crc_phy_get_rate_matching __crc_phy_restart_aneg __crc_phy_aneg_done __crc_phy_ethtool_ksettings_get __crc_phy_mii_ioctl __crc_phy_do_ioctl __crc_phy_do_ioctl_running __crc_phy_queue_state_machine __crc_phy_trigger_machine __crc_phy_ethtool_get_strings __crc_phy_ethtool_get_sset_count __crc_phy_ethtool_get_stats __crc_phy_start_cable_test __crc_phy_start_cable_test_tdr __crc_phy_config_aneg __crc_phy_start_aneg __crc_phy_ethtool_ksettings_set __crc_phy_speed_down __crc_phy_speed_up __crc_phy_start_machine __crc_phy_error __crc_phy_request_interrupt __crc_phy_free_interrupt __crc_phy_stop __crc_phy_start __crc_phy_mac_interrupt __crc_phy_init_eee __crc_phy_get_eee_err __crc_phy_ethtool_get_eee __crc_phy_ethtool_set_eee __crc_phy_ethtool_set_wol __crc_phy_ethtool_get_wol __crc_phy_ethtool_get_link_ksettings __crc_phy_ethtool_set_link_ksettings __crc_phy_ethtool_nway_reset __crc_genphy_c45_pma_resume __crc_genphy_c45_pma_suspend __crc_genphy_c45_pma_baset1_setup_master_slave __crc_genphy_c45_pma_setup_forced __crc_genphy_c45_an_config_aneg __crc_genphy_c45_an_disable_aneg __crc_genphy_c45_restart_aneg __crc_genphy_c45_check_and_restart_aneg __crc_genphy_c45_aneg_done __crc_genphy_c45_read_link __crc_genphy_c45_read_lpa __crc_genphy_c45_pma_baset1_read_master_slave __crc_genphy_c45_read_pma __crc_genphy_c45_read_mdix __crc_genphy_c45_pma_read_abilities __crc_genphy_c45_baset1_read_status __crc_genphy_c45_read_status __crc_genphy_c45_config_aneg __crc_gen10g_config_aneg __crc_genphy_c45_loopback __crc_genphy_c45_fast_retrain __crc_phy_speed_to_str __crc_phy_duplex_to_str __crc_phy_rate_matching_to_str __crc_phy_interface_num_ports __crc_phy_lookup_setting __crc_phy_set_max_speed __crc_phy_resolve_aneg_pause __crc_phy_resolve_aneg_linkmode __crc_phy_check_downshift __crc___phy_read_mmd __crc_phy_read_mmd __crc___phy_write_mmd __crc_phy_write_mmd __crc_phy_modify_changed __crc___phy_modify __crc_phy_modify __crc___phy_modify_mmd_changed __crc_phy_modify_mmd_changed __crc___phy_modify_mmd __crc_phy_modify_mmd __crc_phy_save_page __crc_phy_select_page __crc_phy_restore_page __crc_phy_read_paged __crc_phy_write_paged __crc_phy_modify_paged_changed __crc_phy_modify_paged __crc_phy_basic_features __crc_phy_basic_t1_features __crc_phy_gbit_features __crc_phy_gbit_fibre_features __crc_phy_gbit_all_ports_features __crc_phy_10gbit_features __crc_phy_10gbit_fec_features __crc_phy_basic_ports_array __crc_phy_fibre_port_array __crc_phy_all_ports_features_array __crc_phy_10_100_features_array __crc_phy_basic_t1_features_array __crc_phy_gbit_features_array __crc_phy_10gbit_features_array __crc_phy_10gbit_full_features __crc_phy_device_free __crc_phy_register_fixup __crc_phy_register_fixup_for_uid __crc_phy_register_fixup_for_id __crc_phy_unregister_fixup __crc_phy_unregister_fixup_for_uid __crc_phy_unregister_fixup_for_id __crc_phy_device_create __crc_fwnode_get_phy_id __crc_get_phy_device __crc_phy_device_register __crc_phy_device_remove __crc_phy_get_c45_ids __crc_phy_find_first __crc_phy_connect_direct __crc_phy_connect __crc_phy_disconnect __crc_phy_init_hw __crc_phy_attached_info __crc_phy_attached_info_irq __crc_phy_attached_print __crc_phy_sfp_attach __crc_phy_sfp_detach __crc_phy_sfp_probe __crc_phy_attach_direct __crc_phy_attach __crc_phy_driver_is_genphy __crc_phy_driver_is_genphy_10g __crc_phy_package_join __crc_phy_package_leave __crc_devm_phy_package_join __crc_phy_detach __crc_phy_suspend __crc___phy_resume __crc_phy_resume __crc_phy_loopback __crc_phy_reset_after_clk_enable __crc_genphy_config_eee_advert __crc_genphy_setup_forced __crc_genphy_read_master_slave __crc_genphy_restart_aneg __crc_genphy_check_and_restart_aneg __crc___genphy_config_aneg __crc_genphy_c37_config_aneg __crc_genphy_aneg_done __crc_genphy_update_link __crc_genphy_read_lpa __crc_genphy_read_status_fixed __crc_genphy_read_status __crc_genphy_c37_read_status __crc_genphy_soft_reset __crc_genphy_handle_interrupt_no_ack __crc_genphy_read_abilities __crc_genphy_read_mmd_unsupported __crc_genphy_write_mmd_unsupported __crc_genphy_suspend __crc_genphy_resume __crc_genphy_loopback __crc_phy_remove_link_mode __crc_phy_advertise_supported __crc_phy_support_sym_pause __crc_phy_support_asym_pause __crc_phy_set_sym_pause __crc_phy_set_asym_pause __crc_phy_validate_pause __crc_phy_get_pause __crc_phy_get_internal_delay __crc_fwnode_mdio_find_device __crc_fwnode_phy_find_device __crc_device_phy_find_device __crc_fwnode_get_phy_node __crc_phy_driver_register __crc_phy_drivers_register __crc_phy_driver_unregister __crc_phy_drivers_unregister __crc_linkmode_resolve_pause __crc_linkmode_set_pause __crc_mdiobus_register_device __crc_mdiobus_unregister_device __crc_mdiobus_get_phy __crc_mdiobus_is_registered_device __crc_mdiobus_alloc_size __crc_mdio_find_bus __crc___mdiobus_register __crc_mdiobus_unregister __crc_mdiobus_free __crc_mdiobus_scan __crc___mdiobus_read __crc___mdiobus_write __crc___mdiobus_modify_changed __crc_mdiobus_read_nested __crc_mdiobus_read __crc_mdiobus_write_nested __crc_mdiobus_write __crc_mdiobus_modify __crc_mdiobus_modify_changed __crc_mdio_bus_type __crc_mdio_bus_exit __crc_mdio_device_free __crc_mdio_device_create __crc_mdio_device_register __crc_mdio_device_remove __crc_mdio_device_reset __crc_mdio_driver_register __crc_mdio_driver_unregister __crc_swphy_validate_state __crc_swphy_read_reg __crc_phy_led_trigger_change_speed __crc_phy_led_triggers_register __crc_phy_led_triggers_unregister __UNIQUE_ID_depends193 ____versions __UNIQUE_ID_retpoline192 __UNIQUE_ID_intree191 __UNIQUE_ID_name190 __UNIQUE_ID_vermagic189 _note_10 _note_9 __kstrtab_phy_print_status __kstrtabns_phy_print_status __ksymtab_phy_print_status __kstrtab_phy_get_rate_matching __kstrtabns_phy_get_rate_matching __ksymtab_phy_get_rate_matching __kstrtab_phy_restart_aneg __kstrtabns_phy_restart_aneg __ksymtab_phy_restart_aneg __kstrtab_phy_aneg_done __kstrtabns_phy_aneg_done __ksymtab_phy_aneg_done __kstrtab_phy_ethtool_ksettings_get __kstrtabns_phy_ethtool_ksettings_get __ksymtab_phy_ethtool_ksettings_get __kstrtab_phy_mii_ioctl __kstrtabns_phy_mii_ioctl __ksymtab_phy_mii_ioctl __kstrtab_phy_do_ioctl __kstrtabns_phy_do_ioctl __ksymtab_phy_do_ioctl __kstrtab_phy_do_ioctl_running __kstrtabns_phy_do_ioctl_running __ksymtab_phy_do_ioctl_running __kstrtab_phy_queue_state_machine __kstrtabns_phy_queue_state_machine __ksymtab_phy_queue_state_machine __kstrtab_phy_trigger_machine __kstrtabns_phy_trigger_machine __ksymtab_phy_trigger_machine __kstrtab_phy_ethtool_get_strings __kstrtabns_phy_ethtool_get_strings __ksymtab_phy_ethtool_get_strings __kstrtab_phy_ethtool_get_sset_count __kstrtabns_phy_ethtool_get_sset_count __ksymtab_phy_ethtool_get_sset_count __kstrtab_phy_ethtool_get_stats __kstrtabns_phy_ethtool_get_stats __ksymtab_phy_ethtool_get_stats __kstrtab_phy_start_cable_test __kstrtabns_phy_start_cable_test __ksymtab_phy_start_cable_test __kstrtab_phy_start_cable_test_tdr __kstrtabns_phy_start_cable_test_tdr __ksymtab_phy_start_cable_test_tdr __kstrtab_phy_config_aneg __kstrtabns_phy_config_aneg __ksymtab_phy_config_aneg __kstrtab_phy_start_aneg __kstrtabns_phy_start_aneg __ksymtab_phy_start_aneg __kstrtab_phy_ethtool_ksettings_set __kstrtabns_phy_ethtool_ksettings_set __ksymtab_phy_ethtool_ksettings_set __kstrtab_phy_speed_down __kstrtabns_phy_speed_down __ksymtab_phy_speed_down __kstrtab_phy_speed_up __kstrtabns_phy_speed_up __ksymtab_phy_speed_up __kstrtab_phy_start_machine __kstrtabns_phy_start_machine __ksymtab_phy_start_machine __kstrtab_phy_error __kstrtabns_phy_error __ksymtab_phy_error __kstrtab_phy_request_interrupt __kstrtabns_phy_request_interrupt __ksymtab_phy_request_interrupt __kstrtab_phy_free_interrupt __kstrtabns_phy_free_interrupt __ksymtab_phy_free_interrupt __kstrtab_phy_stop __kstrtabns_phy_stop __ksymtab_phy_stop __kstrtab_phy_start __kstrtabns_phy_start __ksymtab_phy_start __kstrtab_phy_mac_interrupt __kstrtabns_phy_mac_interrupt __ksymtab_phy_mac_interrupt __kstrtab_phy_init_eee __kstrtabns_phy_init_eee __ksymtab_phy_init_eee __kstrtab_phy_get_eee_err __kstrtabns_phy_get_eee_err __ksymtab_phy_get_eee_err __kstrtab_phy_ethtool_get_eee __kstrtabns_phy_ethtool_get_eee __ksymtab_phy_ethtool_get_eee __kstrtab_phy_ethtool_set_eee __kstrtabns_phy_ethtool_set_eee __ksymtab_phy_ethtool_set_eee __kstrtab_phy_ethtool_set_wol __kstrtabns_phy_ethtool_set_wol __ksymtab_phy_ethtool_set_wol __kstrtab_phy_ethtool_get_wol __kstrtabns_phy_ethtool_get_wol __ksymtab_phy_ethtool_get_wol __kstrtab_phy_ethtool_get_link_ksettings __kstrtabns_phy_ethtool_get_link_ksettings __ksymtab_phy_ethtool_get_link_ksettings __kstrtab_phy_ethtool_set_link_ksettings __kstrtabns_phy_ethtool_set_link_ksettings __ksymtab_phy_ethtool_set_link_ksettings __kstrtab_phy_ethtool_nway_reset __kstrtabns_phy_ethtool_nway_reset __ksymtab_phy_ethtool_nway_reset phy_process_state_change __UNIQUE_ID_ddebug542.8 CSWTCH.71 phy_interrupt phy_print_status.cold phy_request_interrupt.cold mmd_eee_adv_to_linkmode phy_check_link_status __msg.5 __msg.6 __msg.7 __msg.2 __msg.3 __msg.4 phy_state_machine.cold phy_stop.cold __func__.0 .LC13 __kstrtab_genphy_c45_pma_resume __kstrtabns_genphy_c45_pma_resume __ksymtab_genphy_c45_pma_resume __kstrtab_genphy_c45_pma_suspend __kstrtabns_genphy_c45_pma_suspend __ksymtab_genphy_c45_pma_suspend __kstrtab_genphy_c45_pma_baset1_setup_master_slave __kstrtabns_genphy_c45_pma_baset1_setup_master_slave __ksymtab_genphy_c45_pma_baset1_setup_master_slave __kstrtab_genphy_c45_pma_setup_forced __kstrtabns_genphy_c45_pma_setup_forced __ksymtab_genphy_c45_pma_setup_forced __kstrtab_genphy_c45_an_config_aneg __kstrtabns_genphy_c45_an_config_aneg __ksymtab_genphy_c45_an_config_aneg __kstrtab_genphy_c45_an_disable_aneg __kstrtabns_genphy_c45_an_disable_aneg __ksymtab_genphy_c45_an_disable_aneg __kstrtab_genphy_c45_restart_aneg __kstrtabns_genphy_c45_restart_aneg __ksymtab_genphy_c45_restart_aneg __kstrtab_genphy_c45_check_and_restart_aneg __kstrtabns_genphy_c45_check_and_restart_aneg __ksymtab_genphy_c45_check_and_restart_aneg __kstrtab_genphy_c45_aneg_done __kstrtabns_genphy_c45_aneg_done __ksymtab_genphy_c45_aneg_done __kstrtab_genphy_c45_read_link __kstrtabns_genphy_c45_read_link __ksymtab_genphy_c45_read_link __kstrtab_genphy_c45_read_lpa __kstrtabns_genphy_c45_read_lpa __ksymtab_genphy_c45_read_lpa __kstrtab_genphy_c45_pma_baset1_read_master_slave __kstrtabns_genphy_c45_pma_baset1_read_master_slave __ksymtab_genphy_c45_pma_baset1_read_master_slave __kstrtab_genphy_c45_read_pma __kstrtabns_genphy_c45_read_pma __ksymtab_genphy_c45_read_pma __kstrtab_genphy_c45_read_mdix __kstrtabns_genphy_c45_read_mdix __ksymtab_genphy_c45_read_mdix __kstrtab_genphy_c45_pma_read_abilities __kstrtabns_genphy_c45_pma_read_abilities __ksymtab_genphy_c45_pma_read_abilities __kstrtab_genphy_c45_baset1_read_status __kstrtabns_genphy_c45_baset1_read_status __ksymtab_genphy_c45_baset1_read_status __kstrtab_genphy_c45_read_status __kstrtabns_genphy_c45_read_status __ksymtab_genphy_c45_read_status __kstrtab_genphy_c45_config_aneg __kstrtabns_genphy_c45_config_aneg __ksymtab_genphy_c45_config_aneg __kstrtab_gen10g_config_aneg __kstrtabns_gen10g_config_aneg __ksymtab_gen10g_config_aneg __kstrtab_genphy_c45_loopback __kstrtabns_genphy_c45_loopback __ksymtab_genphy_c45_loopback __kstrtab_genphy_c45_fast_retrain __kstrtabns_genphy_c45_fast_retrain __ksymtab_genphy_c45_fast_retrain genphy_c45_pma_baset1_setup_master_slave.cold CSWTCH.66 CSWTCH.67 CSWTCH.64 CSWTCH.65 genphy_c45_an_config_aneg.cold __kstrtab_phy_speed_to_str __kstrtabns_phy_speed_to_str __ksymtab_phy_speed_to_str __kstrtab_phy_duplex_to_str __kstrtabns_phy_duplex_to_str __ksymtab_phy_duplex_to_str __kstrtab_phy_rate_matching_to_str __kstrtabns_phy_rate_matching_to_str __ksymtab_phy_rate_matching_to_str __kstrtab_phy_interface_num_ports __kstrtabns_phy_interface_num_ports __ksymtab_phy_interface_num_ports __kstrtab_phy_lookup_setting __kstrtabns_phy_lookup_setting __ksymtab_phy_lookup_setting __kstrtab_phy_set_max_speed __kstrtabns_phy_set_max_speed __ksymtab_phy_set_max_speed __kstrtab_phy_resolve_aneg_pause __kstrtabns_phy_resolve_aneg_pause __ksymtab_phy_resolve_aneg_pause __kstrtab_phy_resolve_aneg_linkmode __kstrtabns_phy_resolve_aneg_linkmode __ksymtab_phy_resolve_aneg_linkmode __kstrtab_phy_check_downshift __kstrtabns_phy_check_downshift __ksymtab_phy_check_downshift __kstrtab___phy_read_mmd __kstrtabns___phy_read_mmd __ksymtab___phy_read_mmd __kstrtab_phy_read_mmd __kstrtabns_phy_read_mmd __ksymtab_phy_read_mmd __kstrtab___phy_write_mmd __kstrtabns___phy_write_mmd __ksymtab___phy_write_mmd __kstrtab_phy_write_mmd __kstrtabns_phy_write_mmd __ksymtab_phy_write_mmd __kstrtab_phy_modify_changed __kstrtabns_phy_modify_changed __ksymtab_phy_modify_changed __kstrtab___phy_modify __kstrtabns___phy_modify __ksymtab___phy_modify __kstrtab_phy_modify __kstrtabns_phy_modify __ksymtab_phy_modify __kstrtab___phy_modify_mmd_changed __kstrtabns___phy_modify_mmd_changed __ksymtab___phy_modify_mmd_changed __kstrtab_phy_modify_mmd_changed __kstrtabns_phy_modify_mmd_changed __ksymtab_phy_modify_mmd_changed __kstrtab___phy_modify_mmd __kstrtabns___phy_modify_mmd __ksymtab___phy_modify_mmd __kstrtab_phy_modify_mmd __kstrtabns_phy_modify_mmd __ksymtab_phy_modify_mmd __kstrtab_phy_save_page __kstrtabns_phy_save_page __ksymtab_phy_save_page __kstrtab_phy_select_page __kstrtabns_phy_select_page __ksymtab_phy_select_page __kstrtab_phy_restore_page __kstrtabns_phy_restore_page __ksymtab_phy_restore_page __kstrtab_phy_read_paged __kstrtabns_phy_read_paged __ksymtab_phy_read_paged __kstrtab_phy_write_paged __kstrtabns_phy_write_paged __ksymtab_phy_write_paged __kstrtab_phy_modify_paged_changed __kstrtabns_phy_modify_paged_changed __ksymtab_phy_modify_paged_changed __kstrtab_phy_modify_paged __kstrtabns_phy_modify_paged __ksymtab_phy_modify_paged CSWTCH.44 __already_done.2 __phy_write_page __already_done.0 __set_linkmode_max_speed phy_check_downshift.cold __already_done.1 phy_resolve_aneg_pause.part.0 .LC18 __kstrtab_phy_basic_features __kstrtabns_phy_basic_features __ksymtab_phy_basic_features __kstrtab_phy_basic_t1_features __kstrtabns_phy_basic_t1_features __ksymtab_phy_basic_t1_features __kstrtab_phy_gbit_features __kstrtabns_phy_gbit_features __ksymtab_phy_gbit_features __kstrtab_phy_gbit_fibre_features __kstrtabns_phy_gbit_fibre_features __ksymtab_phy_gbit_fibre_features __kstrtab_phy_gbit_all_ports_features __kstrtabns_phy_gbit_all_ports_features __ksymtab_phy_gbit_all_ports_features __kstrtab_phy_10gbit_features __kstrtabns_phy_10gbit_features __ksymtab_phy_10gbit_features __kstrtab_phy_10gbit_fec_features __kstrtabns_phy_10gbit_fec_features __ksymtab_phy_10gbit_fec_features __kstrtab_phy_basic_ports_array __kstrtabns_phy_basic_ports_array __ksymtab_phy_basic_ports_array __kstrtab_phy_fibre_port_array __kstrtabns_phy_fibre_port_array __ksymtab_phy_fibre_port_array __kstrtab_phy_all_ports_features_array __kstrtabns_phy_all_ports_features_array __ksymtab_phy_all_ports_features_array __kstrtab_phy_10_100_features_array __kstrtabns_phy_10_100_features_array __ksymtab_phy_10_100_features_array __kstrtab_phy_basic_t1_features_array __kstrtabns_phy_basic_t1_features_array __ksymtab_phy_basic_t1_features_array __kstrtab_phy_gbit_features_array __kstrtabns_phy_gbit_features_array __ksymtab_phy_gbit_features_array __kstrtab_phy_10gbit_features_array __kstrtabns_phy_10gbit_features_array __ksymtab_phy_10gbit_features_array __kstrtab_phy_10gbit_full_features __kstrtabns_phy_10gbit_full_features __ksymtab_phy_10gbit_full_features __kstrtab_phy_device_free __kstrtabns_phy_device_free __ksymtab_phy_device_free __kstrtab_phy_register_fixup __kstrtabns_phy_register_fixup __ksymtab_phy_register_fixup __kstrtab_phy_register_fixup_for_uid __kstrtabns_phy_register_fixup_for_uid __ksymtab_phy_register_fixup_for_uid __kstrtab_phy_register_fixup_for_id __kstrtabns_phy_register_fixup_for_id __ksymtab_phy_register_fixup_for_id __kstrtab_phy_unregister_fixup __kstrtabns_phy_unregister_fixup __ksymtab_phy_unregister_fixup __kstrtab_phy_unregister_fixup_for_uid __kstrtabns_phy_unregister_fixup_for_uid __ksymtab_phy_unregister_fixup_for_uid __kstrtab_phy_unregister_fixup_for_id __kstrtabns_phy_unregister_fixup_for_id __ksymtab_phy_unregister_fixup_for_id __kstrtab_phy_device_create __kstrtabns_phy_device_create __ksymtab_phy_device_create __kstrtab_fwnode_get_phy_id __kstrtabns_fwnode_get_phy_id __ksymtab_fwnode_get_phy_id __kstrtab_get_phy_device __kstrtabns_get_phy_device __ksymtab_get_phy_device __kstrtab_phy_device_register __kstrtabns_phy_device_register __ksymtab_phy_device_register __kstrtab_phy_device_remove __kstrtabns_phy_device_remove __ksymtab_phy_device_remove __kstrtab_phy_get_c45_ids __kstrtabns_phy_get_c45_ids __ksymtab_phy_get_c45_ids __kstrtab_phy_find_first __kstrtabns_phy_find_first __ksymtab_phy_find_first __kstrtab_phy_connect_direct __kstrtabns_phy_connect_direct __ksymtab_phy_connect_direct __kstrtab_phy_connect __kstrtabns_phy_connect __ksymtab_phy_connect __kstrtab_phy_disconnect __kstrtabns_phy_disconnect __ksymtab_phy_disconnect __kstrtab_phy_init_hw __kstrtabns_phy_init_hw __ksymtab_phy_init_hw __kstrtab_phy_attached_info __kstrtabns_phy_attached_info __ksymtab_phy_attached_info __kstrtab_phy_attached_info_irq __kstrtabns_phy_attached_info_irq __ksymtab_phy_attached_info_irq __kstrtab_phy_attached_print __kstrtabns_phy_attached_print __ksymtab_phy_attached_print __kstrtab_phy_sfp_attach __kstrtabns_phy_sfp_attach __ksymtab_phy_sfp_attach __kstrtab_phy_sfp_detach __kstrtabns_phy_sfp_detach __ksymtab_phy_sfp_detach __kstrtab_phy_sfp_probe __kstrtabns_phy_sfp_probe __ksymtab_phy_sfp_probe __kstrtab_phy_attach_direct __kstrtabns_phy_attach_direct __ksymtab_phy_attach_direct __kstrtab_phy_attach __kstrtabns_phy_attach __ksymtab_phy_attach __kstrtab_phy_driver_is_genphy __kstrtabns_phy_driver_is_genphy __ksymtab_phy_driver_is_genphy __kstrtab_phy_driver_is_genphy_10g __kstrtabns_phy_driver_is_genphy_10g __ksymtab_phy_driver_is_genphy_10g __kstrtab_phy_package_join __kstrtabns_phy_package_join __ksymtab_phy_package_join __kstrtab_phy_package_leave __kstrtabns_phy_package_leave __ksymtab_phy_package_leave __kstrtab_devm_phy_package_join __kstrtabns_devm_phy_package_join __ksymtab_devm_phy_package_join __kstrtab_phy_detach __kstrtabns_phy_detach __ksymtab_phy_detach __kstrtab_phy_suspend __kstrtabns_phy_suspend __ksymtab_phy_suspend __kstrtab___phy_resume __kstrtabns___phy_resume __ksymtab___phy_resume __kstrtab_phy_resume __kstrtabns_phy_resume __ksymtab_phy_resume __kstrtab_phy_loopback __kstrtabns_phy_loopback __ksymtab_phy_loopback __kstrtab_phy_reset_after_clk_enable __kstrtabns_phy_reset_after_clk_enable __ksymtab_phy_reset_after_clk_enable __kstrtab_genphy_config_eee_advert __kstrtabns_genphy_config_eee_advert __ksymtab_genphy_config_eee_advert __kstrtab_genphy_setup_forced __kstrtabns_genphy_setup_forced __ksymtab_genphy_setup_forced __kstrtab_genphy_read_master_slave __kstrtabns_genphy_read_master_slave __ksymtab_genphy_read_master_slave __kstrtab_genphy_restart_aneg __kstrtabns_genphy_restart_aneg __ksymtab_genphy_restart_aneg __kstrtab_genphy_check_and_restart_aneg __kstrtabns_genphy_check_and_restart_aneg __ksymtab_genphy_check_and_restart_aneg __kstrtab___genphy_config_aneg __kstrtabns___genphy_config_aneg __ksymtab___genphy_config_aneg __kstrtab_genphy_c37_config_aneg __kstrtabns_genphy_c37_config_aneg __ksymtab_genphy_c37_config_aneg __kstrtab_genphy_aneg_done __kstrtabns_genphy_aneg_done __ksymtab_genphy_aneg_done __kstrtab_genphy_update_link __kstrtabns_genphy_update_link __ksymtab_genphy_update_link __kstrtab_genphy_read_lpa __kstrtabns_genphy_read_lpa __ksymtab_genphy_read_lpa __kstrtab_genphy_read_status_fixed __kstrtabns_genphy_read_status_fixed __ksymtab_genphy_read_status_fixed __kstrtab_genphy_read_status __kstrtabns_genphy_read_status __ksymtab_genphy_read_status __kstrtab_genphy_c37_read_status __kstrtabns_genphy_c37_read_status __ksymtab_genphy_c37_read_status __kstrtab_genphy_soft_reset __kstrtabns_genphy_soft_reset __ksymtab_genphy_soft_reset __kstrtab_genphy_handle_interrupt_no_ack __kstrtabns_genphy_handle_interrupt_no_ack __ksymtab_genphy_handle_interrupt_no_ack __kstrtab_genphy_read_abilities __kstrtabns_genphy_read_abilities __ksymtab_genphy_read_abilities __kstrtab_genphy_read_mmd_unsupported __kstrtabns_genphy_read_mmd_unsupported __ksymtab_genphy_read_mmd_unsupported __kstrtab_genphy_write_mmd_unsupported __kstrtabns_genphy_write_mmd_unsupported __ksymtab_genphy_write_mmd_unsupported __kstrtab_genphy_suspend __kstrtabns_genphy_suspend __ksymtab_genphy_suspend __kstrtab_genphy_resume __kstrtabns_genphy_resume __ksymtab_genphy_resume __kstrtab_genphy_loopback __kstrtabns_genphy_loopback __ksymtab_genphy_loopback __kstrtab_phy_remove_link_mode __kstrtabns_phy_remove_link_mode __ksymtab_phy_remove_link_mode __kstrtab_phy_advertise_supported __kstrtabns_phy_advertise_supported __ksymtab_phy_advertise_supported __kstrtab_phy_support_sym_pause __kstrtabns_phy_support_sym_pause __ksymtab_phy_support_sym_pause __kstrtab_phy_support_asym_pause __kstrtabns_phy_support_asym_pause __ksymtab_phy_support_asym_pause __kstrtab_phy_set_sym_pause __kstrtabns_phy_set_sym_pause __ksymtab_phy_set_sym_pause __kstrtab_phy_set_asym_pause __kstrtabns_phy_set_asym_pause __ksymtab_phy_set_asym_pause __kstrtab_phy_validate_pause __kstrtabns_phy_validate_pause __ksymtab_phy_validate_pause __kstrtab_phy_get_pause __kstrtabns_phy_get_pause __ksymtab_phy_get_pause __kstrtab_phy_get_internal_delay __kstrtabns_phy_get_internal_delay __ksymtab_phy_get_internal_delay __kstrtab_fwnode_mdio_find_device __kstrtabns_fwnode_mdio_find_device __ksymtab_fwnode_mdio_find_device __kstrtab_fwnode_phy_find_device __kstrtabns_fwnode_phy_find_device __ksymtab_fwnode_phy_find_device __kstrtab_device_phy_find_device __kstrtabns_device_phy_find_device __ksymtab_device_phy_find_device __kstrtab_fwnode_get_phy_node __kstrtabns_fwnode_get_phy_node __ksymtab_fwnode_get_phy_node __kstrtab_phy_driver_register __kstrtabns_phy_driver_register __ksymtab_phy_driver_register __kstrtab_phy_drivers_register __kstrtabns_phy_drivers_register __ksymtab_phy_drivers_register __kstrtab_phy_driver_unregister __kstrtabns_phy_driver_unregister __ksymtab_phy_driver_unregister __kstrtab_phy_drivers_unregister __kstrtabns_phy_drivers_unregister __ksymtab_phy_drivers_unregister phy_scan_fixups phy_fixup_lock phy_fixup_list phy_device_release phy_dev_flags_show phy_has_fixups_show phy_interface_show CSWTCH.106 phy_id_show phy_standalone_show phy_request_driver_module phy_request_driver_module.cold phy_device_register.cold phy_link_change mdio_bus_phy_suspend __func__.38 phy_probe phy_remove __UNIQUE_ID_ddebug474.0 phy_driver_register.cold phy_exit genphy_driver phy_bus_match phy_mdio_device_free __func__.37 phy_register_fixup.cold __func__.33 __func__.34 linkmode_set_bit_array phy_init phy_ethtool_phy_ops phy_10gbit_full_features_array phy_10gbit_fec_features_array devm_phy_package_leave mdio_bus_phy_type phy_mdio_device_remove __key.35 dev_attr_phy_standalone phy_attach_direct.cold phy_attach.cold phy_connect.cold phy_copy_pause_bits phy_attached_print.cold mdio_bus_phy_resume __genphy_config_aneg.cold genphy_read_lpa.cold get_phy_c45_ids __func__.40 __UNIQUE_ID___addressable_cleanup_module481 __UNIQUE_ID___addressable_init_module480 phy_dev_groups mdio_bus_phy_pm_ops phy_dev_group phy_dev_attrs dev_attr_phy_id dev_attr_phy_interface dev_attr_phy_has_fixups dev_attr_phy_dev_flags __UNIQUE_ID_license387 __UNIQUE_ID_author386 __UNIQUE_ID_description385 .LC20 __kstrtab_linkmode_resolve_pause __kstrtabns_linkmode_resolve_pause __ksymtab_linkmode_resolve_pause __kstrtab_linkmode_set_pause __kstrtabns_linkmode_set_pause __ksymtab_linkmode_set_pause __kstrtab_mdiobus_register_device __kstrtabns_mdiobus_register_device __ksymtab_mdiobus_register_device __kstrtab_mdiobus_unregister_device __kstrtabns_mdiobus_unregister_device __ksymtab_mdiobus_unregister_device __kstrtab_mdiobus_get_phy __kstrtabns_mdiobus_get_phy __ksymtab_mdiobus_get_phy __kstrtab_mdiobus_is_registered_device __kstrtabns_mdiobus_is_registered_device __ksymtab_mdiobus_is_registered_device __kstrtab_mdiobus_alloc_size __kstrtabns_mdiobus_alloc_size __ksymtab_mdiobus_alloc_size __kstrtab_mdio_find_bus __kstrtabns_mdio_find_bus __ksymtab_mdio_find_bus __kstrtab___mdiobus_register __kstrtabns___mdiobus_register __ksymtab___mdiobus_register __kstrtab_mdiobus_unregister __kstrtabns_mdiobus_unregister __ksymtab_mdiobus_unregister __kstrtab_mdiobus_free __kstrtabns_mdiobus_free __ksymtab_mdiobus_free __kstrtab_mdiobus_scan __kstrtabns_mdiobus_scan __ksymtab_mdiobus_scan __kstrtab___mdiobus_read __kstrtabns___mdiobus_read __ksymtab___mdiobus_read __kstrtab___mdiobus_write __kstrtabns___mdiobus_write __ksymtab___mdiobus_write __kstrtab___mdiobus_modify_changed __kstrtabns___mdiobus_modify_changed __ksymtab___mdiobus_modify_changed __kstrtab_mdiobus_read_nested __kstrtabns_mdiobus_read_nested __ksymtab_mdiobus_read_nested __kstrtab_mdiobus_read __kstrtabns_mdiobus_read __ksymtab_mdiobus_read __kstrtab_mdiobus_write_nested __kstrtabns_mdiobus_write_nested __ksymtab_mdiobus_write_nested __kstrtab_mdiobus_write __kstrtabns_mdiobus_write __ksymtab_mdiobus_write __kstrtab_mdiobus_modify __kstrtabns_mdiobus_modify __ksymtab_mdiobus_modify __kstrtab_mdiobus_modify_changed __kstrtabns_mdiobus_modify_changed __ksymtab_mdiobus_modify_changed __kstrtab_mdio_bus_type __kstrtabns_mdio_bus_type __ksymtab_mdio_bus_type __kstrtab_mdio_bus_exit __kstrtabns_mdio_bus_exit __ksymtab_mdio_bus_exit mdio_uevent mdiobus_release mdio_bus_stat_field_show mdio_bus_device_stat_field_show perf_trace_mdio_access trace_raw_output_mdio_access __bpf_trace_mdio_access mdio_bus_class mdiobus_create_device mdio_bus_match trace_event_raw_event_mdio_access __key.2 __key.1 __UNIQUE_ID_ddebug410.5 __mdiobus_register.cold __key.4 mdio_bus_dev_groups mdio_bus_device_statistics_group mdio_bus_device_statistics_attrs dev_attr_mdio_bus_device_transfers dev_attr_mdio_bus_device_errors dev_attr_mdio_bus_device_writes dev_attr_mdio_bus_device_reads mdio_bus_groups mdio_bus_statistics_group mdio_bus_statistics_attrs dev_attr_mdio_bus_transfers dev_attr_mdio_bus_errors dev_attr_mdio_bus_writes dev_attr_mdio_bus_reads dev_attr_mdio_bus_addr_transfers_0 dev_attr_mdio_bus_addr_errors_0 dev_attr_mdio_bus_addr_writes_0 dev_attr_mdio_bus_addr_reads_0 dev_attr_mdio_bus_addr_transfers_1 dev_attr_mdio_bus_addr_errors_1 dev_attr_mdio_bus_addr_writes_1 dev_attr_mdio_bus_addr_reads_1 dev_attr_mdio_bus_addr_transfers_2 dev_attr_mdio_bus_addr_errors_2 dev_attr_mdio_bus_addr_writes_2 dev_attr_mdio_bus_addr_reads_2 dev_attr_mdio_bus_addr_transfers_3 dev_attr_mdio_bus_addr_errors_3 dev_attr_mdio_bus_addr_writes_3 dev_attr_mdio_bus_addr_reads_3 dev_attr_mdio_bus_addr_transfers_4 dev_attr_mdio_bus_addr_errors_4 dev_attr_mdio_bus_addr_writes_4 dev_attr_mdio_bus_addr_reads_4 dev_attr_mdio_bus_addr_transfers_5 dev_attr_mdio_bus_addr_errors_5 dev_attr_mdio_bus_addr_writes_5 dev_attr_mdio_bus_addr_reads_5 dev_attr_mdio_bus_addr_transfers_6 dev_attr_mdio_bus_addr_errors_6 dev_attr_mdio_bus_addr_writes_6 dev_attr_mdio_bus_addr_reads_6 dev_attr_mdio_bus_addr_transfers_7 dev_attr_mdio_bus_addr_errors_7 dev_attr_mdio_bus_addr_writes_7 dev_attr_mdio_bus_addr_reads_7 dev_attr_mdio_bus_addr_transfers_8 dev_attr_mdio_bus_addr_errors_8 dev_attr_mdio_bus_addr_writes_8 dev_attr_mdio_bus_addr_reads_8 dev_attr_mdio_bus_addr_transfers_9 dev_attr_mdio_bus_addr_errors_9 dev_attr_mdio_bus_addr_writes_9 dev_attr_mdio_bus_addr_reads_9 dev_attr_mdio_bus_addr_transfers_10 dev_attr_mdio_bus_addr_errors_10 dev_attr_mdio_bus_addr_writes_10 dev_attr_mdio_bus_addr_reads_10 dev_attr_mdio_bus_addr_transfers_11 dev_attr_mdio_bus_addr_errors_11 dev_attr_mdio_bus_addr_writes_11 dev_attr_mdio_bus_addr_reads_11 dev_attr_mdio_bus_addr_transfers_12 dev_attr_mdio_bus_addr_errors_12 dev_attr_mdio_bus_addr_writes_12 dev_attr_mdio_bus_addr_reads_12 dev_attr_mdio_bus_addr_transfers_13 dev_attr_mdio_bus_addr_errors_13 dev_attr_mdio_bus_addr_writes_13 dev_attr_mdio_bus_addr_reads_13 dev_attr_mdio_bus_addr_transfers_14 dev_attr_mdio_bus_addr_errors_14 dev_attr_mdio_bus_addr_writes_14 dev_attr_mdio_bus_addr_reads_14 dev_attr_mdio_bus_addr_transfers_15 dev_attr_mdio_bus_addr_errors_15 dev_attr_mdio_bus_addr_writes_15 dev_attr_mdio_bus_addr_reads_15 dev_attr_mdio_bus_addr_transfers_16 dev_attr_mdio_bus_addr_errors_16 dev_attr_mdio_bus_addr_writes_16 dev_attr_mdio_bus_addr_reads_16 dev_attr_mdio_bus_addr_transfers_17 dev_attr_mdio_bus_addr_errors_17 dev_attr_mdio_bus_addr_writes_17 dev_attr_mdio_bus_addr_reads_17 dev_attr_mdio_bus_addr_transfers_18 dev_attr_mdio_bus_addr_errors_18 dev_attr_mdio_bus_addr_writes_18 dev_attr_mdio_bus_addr_reads_18 dev_attr_mdio_bus_addr_transfers_19 dev_attr_mdio_bus_addr_errors_19 dev_attr_mdio_bus_addr_writes_19 dev_attr_mdio_bus_addr_reads_19 dev_attr_mdio_bus_addr_transfers_20 dev_attr_mdio_bus_addr_errors_20 dev_attr_mdio_bus_addr_writes_20 dev_attr_mdio_bus_addr_reads_20 dev_attr_mdio_bus_addr_transfers_21 dev_attr_mdio_bus_addr_errors_21 dev_attr_mdio_bus_addr_writes_21 dev_attr_mdio_bus_addr_reads_21 dev_attr_mdio_bus_addr_transfers_22 dev_attr_mdio_bus_addr_errors_22 dev_attr_mdio_bus_addr_writes_22 dev_attr_mdio_bus_addr_reads_22 dev_attr_mdio_bus_addr_transfers_23 dev_attr_mdio_bus_addr_errors_23 dev_attr_mdio_bus_addr_writes_23 dev_attr_mdio_bus_addr_reads_23 dev_attr_mdio_bus_addr_transfers_24 dev_attr_mdio_bus_addr_errors_24 dev_attr_mdio_bus_addr_writes_24 dev_attr_mdio_bus_addr_reads_24 dev_attr_mdio_bus_addr_transfers_25 dev_attr_mdio_bus_addr_errors_25 dev_attr_mdio_bus_addr_writes_25 dev_attr_mdio_bus_addr_reads_25 dev_attr_mdio_bus_addr_transfers_26 dev_attr_mdio_bus_addr_errors_26 dev_attr_mdio_bus_addr_writes_26 dev_attr_mdio_bus_addr_reads_26 dev_attr_mdio_bus_addr_transfers_27 dev_attr_mdio_bus_addr_errors_27 dev_attr_mdio_bus_addr_writes_27 dev_attr_mdio_bus_addr_reads_27 dev_attr_mdio_bus_addr_transfers_28 dev_attr_mdio_bus_addr_errors_28 dev_attr_mdio_bus_addr_writes_28 dev_attr_mdio_bus_addr_reads_28 dev_attr_mdio_bus_addr_transfers_29 dev_attr_mdio_bus_addr_errors_29 dev_attr_mdio_bus_addr_writes_29 dev_attr_mdio_bus_addr_reads_29 dev_attr_mdio_bus_addr_transfers_30 dev_attr_mdio_bus_addr_errors_30 dev_attr_mdio_bus_addr_writes_30 dev_attr_mdio_bus_addr_reads_30 dev_attr_mdio_bus_addr_transfers_31 dev_attr_mdio_bus_addr_errors_31 dev_attr_mdio_bus_addr_writes_31 dev_attr_mdio_bus_addr_reads_31 __compound_literal.135 __compound_literal.134 __compound_literal.133 __compound_literal.132 __compound_literal.131 __compound_literal.130 __compound_literal.129 __compound_literal.128 __compound_literal.127 __compound_literal.126 __compound_literal.125 __compound_literal.124 __compound_literal.123 __compound_literal.122 __compound_literal.121 __compound_literal.120 __compound_literal.119 __compound_literal.118 __compound_literal.117 __compound_literal.116 __compound_literal.115 __compound_literal.114 __compound_literal.113 __compound_literal.112 __compound_literal.111 __compound_literal.110 __compound_literal.109 __compound_literal.108 __compound_literal.107 __compound_literal.106 __compound_literal.105 __compound_literal.104 __compound_literal.103 __compound_literal.102 __compound_literal.101 __compound_literal.100 __compound_literal.99 __compound_literal.98 __compound_literal.97 __compound_literal.96 __compound_literal.95 __compound_literal.94 __compound_literal.93 __compound_literal.92 __compound_literal.91 __compound_literal.90 __compound_literal.89 __compound_literal.88 __compound_literal.87 __compound_literal.86 __compound_literal.85 __compound_literal.84 __compound_literal.83 __compound_literal.82 __compound_literal.81 __compound_literal.80 __compound_literal.79 __compound_literal.78 __compound_literal.77 __compound_literal.76 __compound_literal.75 __compound_literal.74 __compound_literal.73 __compound_literal.72 __compound_literal.71 __compound_literal.70 __compound_literal.69 __compound_literal.68 __compound_literal.67 __compound_literal.66 __compound_literal.65 __compound_literal.64 __compound_literal.63 __compound_literal.62 __compound_literal.61 __compound_literal.60 __compound_literal.59 __compound_literal.58 __compound_literal.57 __compound_literal.56 __compound_literal.55 __compound_literal.54 __compound_literal.53 __compound_literal.52 __compound_literal.51 __compound_literal.50 __compound_literal.49 __compound_literal.48 __compound_literal.47 __compound_literal.46 __compound_literal.45 __compound_literal.44 __compound_literal.43 __compound_literal.42 __compound_literal.41 __compound_literal.40 __compound_literal.39 __compound_literal.38 __compound_literal.37 __compound_literal.36 __compound_literal.35 __compound_literal.34 __compound_literal.33 __compound_literal.32 __compound_literal.31 __compound_literal.30 __compound_literal.29 __compound_literal.28 __compound_literal.27 __compound_literal.26 __compound_literal.25 __compound_literal.24 __compound_literal.23 __compound_literal.22 __compound_literal.21 __compound_literal.20 __compound_literal.19 __compound_literal.18 __compound_literal.17 __compound_literal.16 __compound_literal.15 __compound_literal.14 __compound_literal.13 __compound_literal.12 __compound_literal.11 __compound_literal.10 __compound_literal.9 __compound_literal.8 __compound_literal.7 __compound_literal.6 __compound_literal.5 __compound_literal.4 __compound_literal.3 __compound_literal.2 __compound_literal.1 __compound_literal.0 __bpf_trace_tp_map_mdio_access __event_mdio_access print_fmt_mdio_access trace_event_fields_mdio_access trace_event_type_funcs_mdio_access event_class_mdio_access str__mdio__trace_system_name __tpstrtab_mdio_access .LC1 __kstrtab_mdio_device_free __kstrtabns_mdio_device_free __ksymtab_mdio_device_free __kstrtab_mdio_device_create __kstrtabns_mdio_device_create __ksymtab_mdio_device_create __kstrtab_mdio_device_register __kstrtabns_mdio_device_register __ksymtab_mdio_device_register __kstrtab_mdio_device_remove __kstrtabns_mdio_device_remove __ksymtab_mdio_device_remove __kstrtab_mdio_device_reset __kstrtabns_mdio_device_reset __ksymtab_mdio_device_reset __kstrtab_mdio_driver_register __kstrtabns_mdio_driver_register __ksymtab_mdio_driver_register __kstrtab_mdio_driver_unregister __kstrtabns_mdio_driver_unregister __ksymtab_mdio_driver_unregister mdio_shutdown mdio_device_release mdio_remove mdio_probe __UNIQUE_ID_ddebug322.2 mdio_driver_register.cold __UNIQUE_ID_ddebug317.3 __func__.1 mdio_device_register.cold __kstrtab_swphy_validate_state __kstrtabns_swphy_validate_state __ksymtab_swphy_validate_state __kstrtab_swphy_read_reg __kstrtabns_swphy_read_reg __ksymtab_swphy_read_reg duplex swphy_validate_state.cold .LC0 __kstrtab_phy_led_trigger_change_speed __kstrtabns_phy_led_trigger_change_speed __ksymtab_phy_led_trigger_change_speed __kstrtab_phy_led_triggers_register __kstrtabns_phy_led_triggers_register __ksymtab_phy_led_triggers_register __kstrtab_phy_led_triggers_unregister __kstrtabns_phy_led_triggers_unregister __ksymtab_phy_led_triggers_unregister phy_led_trigger_change_speed.cold sfp_bus_find_fwnode free_irq try_module_get __udelay is_acpi_device_node gpiod_put sysfs_create_file_ns dev_set_name __this_module __SCT__tp_func_mdio_access snprintf trace_raw_output_prep ethtool_set_ethtool_phy_ops _find_first_bit __SCT__preempt_schedule bpf_trace_run6 irq_wake_thread sfp_bus_put __trace_trigger_soft_disabled gpiod_set_value_cansleep trace_event_printf this_cpu_off refcount_dec_and_mutex_lock device_initialize cleanup_module pm_system_wakeup trace_event_raw_init reset_control_assert kfree enable_irq mdio_device_bus_match __bitmap_and usleep_range_state devm_gpiod_get_optional get_device __dynamic_dev_dbg devres_add phy_speeds fortify_panic __traceiter_mdio_access __fentry__ sysfs_emit init_module of_set_phy_supported __bitmap_equal trace_event_buffer_commit __x86_indirect_thunk_rax device_match_fwnode do_trace_netlink_extack pm_wakeup_dev_event __stack_chk_fail refcount_warn_saturate put_device sysfs_remove_file_ns strnlen __SCK__tp_func_mdio_access __x86_indirect_thunk_rdx _dev_info module_put sysfs_create_link unregister_mii_timestamper synchronize_irq __list_add_valid perf_trace_buf_alloc mdio_bus_init perf_trace_run_bpf_submit reset_control_put _dev_err __class_register bus_find_device device_add sysfs_remove_link request_threaded_irq reset_control_deassert vprintk __devres_alloc_node sfp_upstream_stop phy_state_machine trace_event_reg strncpy is_acpi_data_node mod_delayed_work_on sfp_bus_add_upstream sfp_upstream_start class_unregister led_trigger_unregister __cpu_online_mask __list_del_entry_valid sscanf __mutex_init device_del device_bind_driver _dev_warn __x86_indirect_thunk_r10 __x86_return_thunk phy_disable_interrupts kasprintf strcmp of_set_phy_eee_broken netdev_alert ethnl_cable_test_alloc fwnode_find_reference fwnode_property_read_string strscpy cpu_number __preempt_count trace_event_buffer_reserve mutex_unlock cancel_delayed_work_sync genphy_c45_driver init_timer_key linkwatch_fire_event devres_free __dynamic_pr_debug ktime_get __reset_control_get __warn_printk netif_carrier_off device_match_name delayed_work_timer_fn phy_stop_machine led_trigger_register netif_carrier_on mdiobus_setup_mdiodev_from_board_info sysfs_create_link_nowarn dev_err_probe ethnl_cable_test_finished phy_speed_down_core kmalloc_trace fwnode_handle_put disable_irq_nosync led_trigger_event device_release_driver ethnl_cable_test_free __SCT__preempt_schedule_notrace gpiod_set_consumer_name system_power_efficient_wq trace_handle_return __tracepoint_mdio_access phy_supported_speeds msleep __kmalloc __SCT__might_resched __dev_fwnode kmalloc_caches netdev_info __request_module sfp_bus_del_upstream class_find_device                Q            _  )            1          Q  N          _  T            a          Q                        _                                                Q                       _             (           A         Q  i                    _                                            Q                                 Q           S                      Q           S             !         Q  R         _  i                    s                    x         L                                                                         Q           .                      Q                      _  "           /           A         Q  ^         _  m           r                    Q           _                      &           Q  *         i  =         C  H           W           g         _  q           |                    i           7           Q                          $                   :                   +                Q           S                      &         c  ]            (       s                               $                   !                Q           _                       Q                               %                   G         _  O            ;       U           a         Q  h         S  {                    Q           S                      Q                                 S                      Q             #           -           7           A         Q  x                               Q                                 ,           S                        )                    0            _       5           A           Q         Q  a                    _           2           _                                 _             	         A  	           !	         Q  @	           S	           v	         v  	           	         Q  	           	           	           	         Q  v
         _  
           
         .  
         .  
         .  +         B  D         v  m           w         A           j           Q           .  ,         .           .             
           !
         Q  o
           
           
           
           
         _  
           
         _  "         S  5           A                   F         g  S                   e           q            0      v         g              0               _                      G                         `               g              `               Q  D           l           z                               _                      _            S                         `       $         g  1            `       C           O                   T         g  a                            _                      G                                         g                              Q           .           .  S         H                                                         !         Q                                 _             0           U           i                                 <         3           Q  ,           1         Q  T           a         Q                      #  &         [  6           @         j  Q         Q           B             g                               S                      #                      j  !         Q  <           A         Q  Z           .           A         Q  R         1  Y           c           q         Q                      >           [             1         _  D         \  m           t                    j           Q           N                      Q           	                                 Q  0         _  8           A         Q                                                                             S  	                      =           b                    _                      S                                   
                    =  "         3  *            a       E           d         _  l           v         =                      j           Q                                                       	             =           E         =  M         3  U            u       j           w                    ~            _                                      Q                      Q           .                       Q  $            7          .  O            a          Q            .            .                                    Q            .  !           !           1!         Q  J!           Q!         Q  m!                   !           !           !         Q  !         .  ("         .  \"           }"         .  "         Q  "         .  "           "           "         Q  '#           1#           K#           j#           q#         Q  #           #         .  #         Q   $           $         .  1$         Q  T$         .  j$           }$         .  $         Q  $         .  $           %           %         .  >%         .  Q%         Q  w%         .  %           &         .  W&         .  &         Q  &         B  &           P'           '           '           '                   '                  (                  %(                  7(                  @(           z(           (           (         .  (         Q   )         .  7)         .  )         .  *           *         .  ?*         .  *         .  *         .  +         Q  +         *  .,           =,           \,           j,           s,           ,         .  ,         Q  ,         .  ,         .  %-           ]-         .  .         .  2.         .  .         .  1/         Q  Q/         .  m/         .  /         H  /         H  0         <  B0           O0           0         .  0         .  1         .  A1         Q  S1         ?  t1           1         Q  1                   1                   1           1                  1            $      1           2                   	2                   2           2                   -2                   42                   =2           J2                   Q2                  Z2           a2                   x2                  }2           2            ,      2                   2                   2           2                   2                   2           2            
      2           2                   2           2                   2           2         Q  2                   3                  3           3         Q  33           J3            X3                   ^3            d3           q3         Q  3         _  3            3           3            0      3            3           3         Q  3                   3                  +4                  ?4           V4           a4         Q  h4                   |4                  4           4         Q  4         t  4         Q  5         B  // random number generation -*- C++ -*-

// Copyright (C) 2009-2022 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library.  This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.

// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.

// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
// <http://www.gnu.org/licenses/>.

/**
 * @file tr1/random.h
 *  This is an internal header file, included by other library headers.
 *  Do not attempt to use it directly. @headername{tr1/random}
 */

#ifndef _GLIBCXX_TR1_RANDOM_H
#define _GLIBCXX_TR1_RANDOM_H 1

#pragma GCC system_header

namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION

namespace tr1
{
  // [5.1] Random number generation

  /**
   * @addtogroup tr1_random Random Number Generation
   * A facility for generating random numbers on selected distributions.
   * @{
   */

  /*
   * Implementation-space details.
   */
  namespace __detail
  {
    template<typename _UIntType, int __w, 
	     bool = __w < std::numeric_limits<_UIntType>::digits>
      struct _Shift
      { static const _UIntType __value = 0; };

    template<typename _UIntType, int __w>
      struct _Shift<_UIntType, __w, true>
      { static const _UIntType __value = _UIntType(1) << __w; };

    template<typename _Tp, _Tp __a, _Tp __c, _Tp __m, bool>
      struct _Mod;

    // Dispatch based on modulus value to prevent divide-by-zero compile-time
    // errors when m == 0.
    template<typename _Tp, _Tp __a, _Tp __c, _Tp __m>
      inline _Tp
      __mod(_Tp __x)
      { return _Mod<_Tp, __a, __c, __m, __m == 0>::__calc(__x); }

    typedef __gnu_cxx::__conditional_type<(sizeof(unsigned) == 4),
		    unsigned, unsigned long>::__type _UInt32Type;

    /*
     * An adaptor class for converting the output of any Generator into
     * the input for a specific Distribution.
     */
    template<typename _Engine, typename _Distribution>
      struct _Adaptor
      { 
	typedef typename remove_reference<_Engine>::type _BEngine;
	typedef typename _BEngine::result_type           _Engine_result_type;
	typedef typename _Distribution::input_type       result_type;

      public:
	_Adaptor(const _Engine& __g)
	: _M_g(__g) { }

	result_type
	min() const
	{
	  result_type __return_value;
	  if (is_integral<_Engine_result_type>::value
	      && is_integral<result_type>::value)
	    __return_value = _M_g.min();
	  else
	    __return_value = result_type(0);
	  return __return_value;
	}

	result_type
	max() const
	{
	  result_type __return_value;
	  if (is_integral<_Engine_result_type>::value
	      && is_integral<result_type>::value)
	    __return_value = _M_g.max();
	  else if (!is_integral<result_type>::value)
	    __return_value = result_type(1);
	  else
	    __return_value = std::numeric_limits<result_type>::max() - 1;
	  return __return_value;
	}

	/*
	 * Converts a value generated by the adapted random number generator
	 * into a value in the input domain for the dependent random number
	 * distribution.
	 *
	 * Because the type traits are compile time constants only the
	 * appropriate clause of the if statements will actually be emitted
	 * by the compiler.
	 */
	result_type
	operator()()
	{
	  result_type __return_value;
	  if (is_integral<_Engine_result_type>::value
	      && is_integral<result_type>::value)
	    __return_value = _M_g();
	  else if (!is_integral<_Engine_result_type>::value
		   && !is_integral<result_type>::value)
	    __return_value = result_type(_M_g() - _M_g.min())
	      / result_type(_M_g.max() - _M_g.min());
	  else if (is_integral<_Engine_result_type>::value
		   && !is_integral<result_type>::value)
	    __return_value = result_type(_M_g() - _M_g.min())
	      / result_type(_M_g.max() - _M_g.min() + result_type(1));
	  else
	    __return_value = (((_M_g() - _M_g.min()) 
			       / (_M_g.max() - _M_g.min()))
			      * std::numeric_limits<result_type>::max());
	  return __return_value;
	}

      private:
	_Engine _M_g;
      };

    // Specialization for _Engine*.
    template<typename _Engine, typename _Distribution>
      struct _Adaptor<_Engine*, _Distribution>
      {
	typedef typename _Engine::result_type      _Engine_result_type;
	typedef typename _Distribution::input_type result_type;

      public:
	_Adaptor(_Engine* __g)
	: _M_g(__g) { }

	result_type
	min() const
	{
	  result_type __return_value;
	  if (is_integral<_Engine_result_type>::value
	      && is_integral<result_type>::value)
	    __return_value = _M_g->min();
	  else
	    __return_value = result_type(0);
	  return __return_value;
	}

	result_type
	max() const
	{
	  result_type __return_value;
	  if (is_integral<_Engine_result_type>::value
	      && is_integral<result_type>::value)
	    __return_value = _M_g->max();
	  else if (!is_integral<result_type>::value)
	    __return_value = result_type(1);
	  else
	    __return_value = std::numeric_limits<result_type>::max() - 1;
	  return __return_value;
	}

	result_type
	operator()()
	{
	  result_type __return_value;
	  if (is_integral<_Engine_result_type>::value
	      && is_integral<result_type>::value)
	    __return_value = (*_M_g)();
	  else if (!is_integral<_Engine_result_type>::value
		   && !is_integral<result_type>::value)
	    __return_value = result_type((*_M_g)() - _M_g->min())
	      / result_type(_M_g->max() - _M_g->min());
	  else if (is_integral<_Engine_result_type>::value
		   && !is_integral<result_type>::value)
	    __return_value = result_type((*_M_g)() - _M_g->min())
	      / result_type(_M_g->max() - _M_g->min() + result_type(1));
	  else
	    __return_value = ((((*_M_g)() - _M_g->min()) 
			       / (_M_g->max() - _M_g->min()))
			      * std::numeric_limits<result_type>::max());
	  return __return_value;
	}

      private:
	_Engine* _M_g;
      };
  } // namespace __detail

  /**
   * Produces random numbers on a given distribution function using a
   * non-uniform random number generation engine.
   *
   * @todo the engine_value_type needs to be studied more carefully.
   */
  template<typename _Engine, typename _Dist>
    class variate_generator
    {
      // Concept requirements.
      __glibcxx_class_requires(_Engine, _CopyConstructibleConcept)
      //  __glibcxx_class_requires(_Engine, _EngineConcept)
      //  __glibcxx_class_requires(_Dist, _EngineConcept)

    public:
      typedef _Engine                                engine_type;
      typedef __detail::_Adaptor<_Engine, _Dist>     engine_value_type;
      typedef _Dist                                  distribution_type;
      typedef typename _Dist::result_type            result_type;

      // tr1:5.1.1 table 5.1 requirement
      typedef typename __gnu_cxx::__enable_if<
	is_arithmetic<result_type>::value, result_type>::__type _IsValidType;

      /**
       * Constructs a variate generator with the uniform random number
       * generator @p __eng for the random distribution @p __dist.
       *
       * @throws Any exceptions which may thrown by the copy constructors of
       * the @p _Engine or @p _Dist objects.
       */
      variate_generator(engine_type __eng, distribution_type __dist)
      : _M_engine(__eng), _M_dist(__dist) { }

      /**
       * Gets the next generated value on the distribution.
       */
      result_type
      operator()()
      { return _M_dist(_M_engine); }

      /**
       * WTF?
       */
      template<typename _Tp>
        result_type
        operator()(_Tp __value)
        { return _M_dist(_M_engine, __value); }

      /**
       * Gets a reference to the underlying uniform random number generator
       * object.
       */
      engine_value_type&
      engine()
      { return _M_engine; }

      /**
       * Gets a const reference to the underlying uniform random number
       * generator object.
       */
      const engine_value_type&
      engine() const
      { return _M_engine; }

      /**
       * Gets a reference to the underlying random distribution.
       */
      distribution_type&
      distribution()
      { return _M_dist; }

      /**
       * Gets a const reference to the underlying random distribution.
       */
      const distribution_type&
      distribution() const
      { return _M_dist; }

      /**
       * Gets the closed lower bound of the distribution interval.
       */
      result_type
      min() const
      { return this->distribution().min(); }

      /**
       * Gets the closed upper bound of the distribution interval.
       */
      result_type
      max() const
      { return this->distribution().max(); }

    private:
      engine_value_type _M_engine;
      distribution_type _M_dist;
    };


  /**
   * @addtogroup tr1_random_generators Random Number Generators
   * @ingroup tr1_random
   *
   * These classes define objects which provide random or pseudorandom
   * numbers, either from a discrete or a continuous interval.  The
   * random number generator supplied as a part of this library are
   * all uniform random number generators which provide a sequence of
   * random number uniformly distributed over their range.
   *
   * A number generator is a function object with an operator() that
   * takes zero arguments and returns a number.
   *
   * A compliant random number generator must satisfy the following
   * requirements.  <table border=1 cellpadding=10 cellspacing=0>
   * <caption align=top>Random Number Generator Requirements</caption>
   * <tr><td>To be documented.</td></tr> </table>
   * 
   * @{
   */

  /**
   * @brief A model of a linear congruential random number generator.
   *
   * A random number generator that produces pseudorandom numbers using the
   * linear function @f$x_{i+1}\leftarrow(ax_{i} + c) \bmod m @f$.
   *
   * The template parameter @p _UIntType must be an unsigned integral type
   * large enough to store values up to (__m-1). If the template parameter
   * @p __m is 0, the modulus @p __m used is
   * std::numeric_limits<_UIntType>::max() plus 1. Otherwise, the template
   * parameters @p __a and @p __c must be less than @p __m.
   *
   * The size of the state is @f$ 1 @f$.
   */
  template<class _UIntType, _UIntType __a, _UIntType __c, _UIntType __m>
    class linear_congruential
    {
      __glibcxx_class_requires(_UIntType, _UnsignedIntegerConcept)
      //  __glibcpp_class_requires(__a < __m && __c < __m)

    public:
      /** The type of the generated random value. */
      typedef _UIntType result_type;

      /** The multiplier. */
      static const _UIntType multiplier = __a;
      /** An increment. */
      static const _UIntType increment = __c;
      /** The modulus. */
      static const _UIntType modulus = __m;

      /**
       * Constructs a %linear_congruential random number generator engine with
       * seed @p __s.  The default seed value is 1.
       *
       * @param __s The initial seed value.
       */
      explicit
      linear_congruential(unsigned long __x0 = 1)
      { this->seed(__x0); }

      /**
       * Constructs a %linear_congruential random number generator engine
       * seeded from the generator function @p __g.
       *
       * @param __g The seed generator function.
       */
      template<class _Gen>
        linear_congruential(_Gen& __g)
        { this->seed(__g); }

      /**
       * Reseeds the %linear_congruential random number generator engine
       * sequence to the seed @g __s.
       *
       * @param __s The new seed.
       */
      void
      seed(unsigned long __s = 1);

      /**
       * Reseeds the %linear_congruential random number generator engine
       * sequence using values from the generator function @p __g.
       *
       * @param __g the seed generator function.
       */
      template<class _Gen>
        void
        seed(_Gen& __g)
        { seed(__g, typename is_fundamental<_Gen>::type()); }

      /**
       * Gets the smallest possible value in the output range.
       *
       * The minimum depends on the @p __c parameter: if it is zero, the
       * minimum generated must be > 0, otherwise 0 is allowed.
       */
      result_type
      min() const
      { return (__detail::__mod<_UIntType, 1, 0, __m>(__c) == 0) ? 1 : 0; }

      /**
       * Gets the largest possible value in the output range.
       */
      result_type
      max() const
      { return __m - 1; }

      /**
       * Gets the next random number in the sequence.
       */
      result_type
      operator()();

      /**
       * Compares two linear congruential random number generator
       * objects of the same type for equality.
       *  
       * @param __lhs A linear congruential random number generator object.
       * @param __rhs Another linear congruential random number generator obj.
       *
       * @returns true if the two objects are equal, false otherwise.
       */
      friend bool
      operator==(const linear_congruential& __lhs,
		 const linear_congruential& __rhs)
      { return __lhs._M_x == __rhs._M_x; }

      /**
       * Compares two linear congruential random number generator
       * objects of the same type for inequality.
       *
       * @param __lhs A linear congruential random number generator object.
       * @param __rhs Another linear congruential random number generator obj.
       *
       * @returns true if the two objects are not equal, false otherwise.
       */
      friend bool
      operator!=(const linear_congruential& __lhs,
		 const linear_congruential& __rhs)
      { return !(__lhs == __rhs); }

      /**
       * Writes the textual representation of the state x(i) of x to @p __os.
       *
       * @param __os  The output stream.
       * @param __lcr A % linear_congruential random number generator.
       * @returns __os.
       */
      template<class _UIntType1, _UIntType1 __a1, _UIntType1 __c1,
	       _UIntType1 __m1,
	       typename _CharT, typename _Traits>
        friend std::basic_ostream<_CharT, _Traits>&
        operator<<(std::basic_ostream<_CharT, _Traits>& __os,
		   const linear_congruential<_UIntType1, __a1, __c1,
		   __m1>& __lcr);

      /**
       * Sets the state of the engine by reading its textual
       * representation from @p __is.
       *
       * The textual representation must have been previously written using an
       * output stream whose imbued locale and whose type's template
       * specialization arguments _CharT and _Traits were the same as those of
       * @p __is.
       *
       * @param __is  The input stream.
       * @param __lcr A % linear_congruential random number generator.
       * @returns __is.
       */
      template<class _UIntType1, _UIntType1 __a1, _UIntType1 __c1,
	       _UIntType1 __m1,
	       typename _CharT, typename _Traits>
        friend std::basic_istream<_CharT, _Traits>&
        operator>>(std::basic_istream<_CharT, _Traits>& __is,
		   linear_congruential<_UIntType1, __a1, __c1, __m1>& __lcr);

    private:
      template<class _Gen>
        void
        seed(_Gen& __g, true_type)
        { return seed(static_cast<unsigned long>(__g)); }

      template<class _Gen>
        void
        seed(_Gen& __g, false_type);

      _UIntType _M_x;
    };

  /**
   * The classic Minimum Standard rand0 of Lewis, Goodman, and Miller.
   */
  typedef linear_congruential<unsigned long, 16807, 0, 2147483647> minstd_rand0;

  /**
   * An alternative LCR (Lehmer Generator function) .
   */
  typedef linear_congruential<unsigned long, 48271, 0, 2147483647> minstd_rand;


  /**
   * A generalized feedback shift register discrete random number generator.
   *
   * This algorithm avoids multiplication and division and is designed to be
   * friendly to a pipelined architecture.  If the parameters are chosen
   * correctly, this generator will produce numbers with a very long period and
   * fairly good apparent entropy, although still not cryptographically strong.
   *
   * The best way to use this generator is with the predefined mt19937 class.
   *
   * This algorithm was originally invented by Makoto Matsumoto and
   * Takuji Nishimura.
   *
   * @var word_size   The number of bits in each element of the state vector.
   * @var state_size  The degree of recursion.
   * @var shift_size  The period parameter.
   * @var mask_bits   The separation point bit index.
   * @var parameter_a The last row of the twist matrix.
   * @var output_u    The first right-shift tempering matrix parameter.
   * @var output_s    The first left-shift tempering matrix parameter.
   * @var output_b    The first left-shift tempering matrix mask.
   * @var output_t    The second left-shift tempering matrix parameter.
   * @var output_c    The second left-shift tempering matrix mask.
   * @var output_l    The second right-shift tempering matrix parameter.
   */
  template<class _UIntType, int __w, int __n, int __m, int __r,
	   _UIntType __a, int __u, int __s, _UIntType __b, int __t,
	   _UIntType __c, int __l>
    class mersenne_twister
    {
      __glibcxx_class_requires(_UIntType, _UnsignedIntegerConcept)

    public:
      // types
      typedef _UIntType result_type;

      // parameter values
      static const int       word_size   = __w;
      static const int       state_size  = __n;
      static const int       shift_size  = __m;
      static const int       mask_bits   = __r;
      static const _UIntType parameter_a = __a;
      static const int       output_u    = __u;
      static const int       output_s    = __s;
      static const _UIntType output_b    = __b;
      static const int       output_t    = __t;
      static const _UIntType output_c    = __c;
      static const int       output_l    = __l;

      // constructors and member function
      mersenne_twister()
      { seed(); }

      explicit
      mersenne_twister(unsigned long __value)
      { seed(__value); }

      template<class _Gen>
        mersenne_twister(_Gen& __g)
        { seed(__g); }

      void
      seed()
      { seed(5489UL); }

      void
      seed(unsigned long __value);

      template<class _Gen>
        void
        seed(_Gen& __g)
        { seed(__g, typename is_fundamental<_Gen>::type()); }

      result_type
      min() const
      { return 0; }

      result_type
      max() const
      { return __detail::_Shift<_UIntType, __w>::__value - 1; }

      result_type
      operator()();

      /**
       * Compares two % mersenne_twister random number generator objects of
       * the same type for equality.
       *
       * @param __lhs A % mersenne_twister random number generator object.
       * @param __rhs Another % mersenne_twister random number generator
       *              object.
       *
       * @returns true if the two objects are equal, false otherwise.
       */
      friend bool
      operator==(const mersenne_twister& __lhs,
		 const mersenne_twister& __rhs)
      { return std::equal(__lhs._M_x, __lhs._M_x + state_size, __rhs._M_x); }

      /**
       * Compares two % mersenne_twister random number generator objects of
       * the same type for inequality.
       *
       * @param __lhs A % mersenne_twister random number generator object.
       * @param __rhs Another % mersenne_twister random number generator
       *              object.
       *
       * @returns true if the two objects are not equal, false otherwise.
       */
      friend bool
      operator!=(const mersenne_twister& __lhs,
		 const mersenne_twister& __rhs)
      { return !(__lhs == __rhs); }

      /**
       * Inserts the current state of a % mersenne_twister random number
       * generator engine @p __x into the output stream @p __os.
       *
       * @param __os An output stream.
       * @param __x  A % mersenne_twister random number generator engine.
       *
       * @returns The output stream with the state of @p __x inserted or in
       * an error state.
       */
      template<class _UIntType1, int __w1, int __n1, int __m1, int __r1,
	       _UIntType1 __a1, int __u1, int __s1, _UIntType1 __b1, int __t1,
	       _UIntType1 __c1, int __l1,
	       typename _CharT, typename _Traits>
        friend std::basic_ostream<_CharT, _Traits>&
        operator<<(std::basic_ostream<_CharT, _Traits>& __os,
		   const mersenne_twister<_UIntType1, __w1, __n1, __m1, __r1,
		   __a1, __u1, __s1, __b1, __t1, __c1, __l1>& __x);

      /**
       * Extracts the current state of a % mersenne_twister random number
       * generator engine @p __x from the input stream @p __is.
       *
       * @param __is An input stream.
       * @param __x  A % mersenne_twister random number generator engine.
       *
       * @returns The input stream with the state of @p __x extracted or in
       * an error state.
       */
      template<class _UIntType1, int __w1, int __n1, int __m1, int __r1,
	       _UIntType1 __a1, int __u1, int __s1, _UIntType1 __b1, int __t1,
	       _UIntType1 __c1, int __l1,
	       typename _CharT, typename _Traits>
        friend std::basic_istream<_CharT, _Traits>&
        operator>>(std::basic_istream<_CharT, _Traits>& __is,
		   mersenne_twister<_UIntType1, __w1, __n1, __m1, __r1,
		   __a1, __u1, __s1, __b1, __t1, __c1, __l1>& __x);

    private:
      template<class _Gen>
        void
        seed(_Gen& __g, true_type)
        { return seed(static_cast<unsigned long>(__g)); }

      template<class _Gen>
        void
        seed(_Gen& __g, false_type);

      _UIntType _M_x[state_size];
      int       _M_p;
    };

  /**
   * The classic Mersenne Twister.
   *
   * Reference:
   * M. Matsumoto and T. Nishimura, Mersenne Twister: A 623-Dimensionally
   * Equidistributed Uniform Pseudo-Random Number Generator, ACM Transactions
   * on Modeling and Computer Simulation, Vol. 8, No. 1, January 1998, pp 3-30.
   */
  typedef mersenne_twister<
    unsigned long, 32, 624, 397, 31,
    0x9908b0dful, 11, 7,
    0x9d2c5680ul, 15,
    0xefc60000ul, 18
    > mt19937;


  /**
   * @brief The Marsaglia-Zaman generator.
   * 
   * This is a model of a Generalized Fibonacci discrete random number
   * generator, sometimes referred to as the SWC generator.
   *
   * A discrete random number generator that produces pseudorandom
   * numbers using @f$x_{i}\leftarrow(x_{i - s} - x_{i - r} -
   * carry_{i-1}) \bmod m @f$.
   *
   * The size of the state is @f$ r @f$
   * and the maximum period of the generator is @f$ m^r - m^s -1 @f$.
   *
   * N1688[4.13] says <em>the template parameter _IntType shall denote
   * an integral type large enough to store values up to m</em>.
   *
   * @var _M_x     The state of the generator.  This is a ring buffer.
   * @var _M_carry The carry.
   * @var _M_p     Current index of x(i - r).
   */
  template<typename _IntType, _IntType __m, int __s, int __r>
    class subtract_with_carry
    {
      __glibcxx_class_requires(_IntType, _IntegerConcept)

    public:
      /** The type of the generated random value. */
      typedef _IntType result_type;
      
      // parameter values
      static const _IntType modulus   = __m;
      static const int      long_lag  = __r;
      static const int      short_lag = __s;

      /**
       * Constructs a default-initialized % subtract_with_carry random number
       * generator.
       */
      subtract_with_carry()
      { this->seed(); }

      /**
       * Constructs an explicitly seeded % subtract_with_carry random number
       * generator.
       */
      explicit
      subtract_with_carry(unsigned long __value)
      { this->seed(__value); }

      /**
       * Constructs a %subtract_with_carry random number generator engine
       * seeded from the generator function @p __g.
       *
       * @param __g The seed generator function.
       */
      template<class _Gen>
        subtract_with_carry(_Gen& __g)
        { this->seed(__g); }

      /**
       * Seeds the initial state @f$ x_0 @f$ of the random number generator.
       *
       * N1688[4.19] modifies this as follows.  If @p __value == 0,
       * sets value to 19780503.  In any case, with a linear
       * congruential generator lcg(i) having parameters @f$ m_{lcg} =
       * 2147483563, a_{lcg} = 40014, c_{lcg} = 0, and lcg(0) = value
       * @f$, sets @f$ x_{-r} \dots x_{-1} @f$ to @f$ lcg(1) \bmod m
       * \dots lcg(r) \bmod m @f$ respectively.  If @f$ x_{-1} = 0 @f$
       * set carry to 1, otherwise sets carry to 0.
       */
      void
      seed(unsigned long __value = 19780503);

      /**
       * Seeds the initial state @f$ x_0 @f$ of the % subtract_with_carry
       * random number generator.
       */
      template<class _Gen>
        void
        seed(_Gen& __g)
        { seed(__g, typename is_fundamental<_Gen>::type()); }

      /**
       * Gets the inclusive minimum value of the range of random integers
       * returned by this generator.
       */
      result_type
      min() const
      { return 0; }

      /**
       * Gets the inclusive maximum value of the range of random integers
       * returned by this generator.
       */
      result_type
      max() const
      { return this->modulus - 1; }

      /**
       * Gets the next random number in the sequence.
       */
      result_type
      operator()();

      /**
       * Compares two % subtract_with_carry random number generator objects of
       * the same type for equality.
       *
       * @param __lhs A % subtract_with_carry random number generator object.
       * @param __rhs Another % subtract_with_carry random number generator
       *              object.
       *
       * @returns true if the two objects are equal, false otherwise.
       */
      friend bool
      operator==(const subtract_with_carry& __lhs,
		 const subtract_with_carry& __rhs)
      { return std::equal(__lhs._M_x, __lhs._M_x + long_lag, __rhs._M_x); }

      /**
       * Compares two % subtract_with_carry random number generator objects of
       * the same type for inequality.
       *
       * @param __lhs A % subtract_with_carry random number generator object.
       * @param __rhs Another % subtract_with_carry random number generator
       *              object.
       *
       * @returns true if the two objects are not equal, false otherwise.
       */
      friend bool
      operator!=(const subtract_with_carry& __lhs,
		 const subtract_with_carry& __rhs)
      { return !(__lhs == __rhs); }

      /**
       * Inserts the current state of a % subtract_with_carry random number
       * generator engine @p __x into the output stream @p __os.
       *
       * @param __os An output stream.
       * @param __x  A % subtract_with_carry random number generator engine.
       *
       * @returns The output stream with the state of @p __x inserted or in
       * an error state.
       */
      template<typename _IntType1, _IntType1 __m1, int __s1, int __r1,
	       typename _CharT, typename _Traits>
        friend std::basic_ostream<_CharT, _Traits>&
        operator<<(std::basic_ostream<_CharT, _Traits>& __os,
		   const subtract_with_carry<_IntType1, __m1, __s1,
		   __r1>& __x);

      /**
       * Extracts the current state of a % subtract_with_carry random number
       * generator engine @p __x from the input stream @p __is.
       *
       * @param __is An input stream.
       * @param __x  A % subtract_with_carry random number generator engine.
       *
       * @returns The input stream with the state of @p __x extracted or in
       * an error state.
       */
      template<typename _IntType1, _IntType1 __m1, int __s1, int __r1,
	       typename _CharT, typename _Traits>
        friend std::basic_istream<_CharT, _Traits>&
        operator>>(std::basic_istream<_CharT, _Traits>& __is,
		   subtract_with_carry<_IntType1, __m1, __s1, __r1>& __x);

    private:
      template<class _Gen>
        void
        seed(_Gen& __g, true_type)
        { return seed(static_cast<unsigned long>(__g)); }

      template<class _Gen>
        void
        seed(_Gen& __g, false_type);

      typedef typename __gnu_cxx::__add_unsigned<_IntType>::__type _UIntType;

      _UIntType  _M_x[long_lag];
      _UIntType  _M_carry;
      int        _M_p;
    };


  /**
   * @brief The Marsaglia-Zaman generator (floats version).
   *
   * @var _M_x     The state of the generator.  This is a ring buffer.
   * @var _M_carry The carry.
   * @var _M_p     Current index of x(i - r).
   * @var _M_npows Precomputed negative powers of 2.   
   */
  template<typename _RealType, int __w, int __s, int __r>
    class subtract_with_carry_01
    {
    public:
      /** The type of the generated random value. */
      typedef _RealType result_type;
      
      // parameter values
      static const int      word_size = __w;
      static const int      long_lag  = __r;
      static const int      short_lag = __s;

      /**
       * Constructs a default-initialized % subtract_with_carry_01 random
       * number generator.
       */
      subtract_with_carry_01()
      {
	this->seed();
	_M_initialize_npows();
      }

      /**
       * Constructs an explicitly seeded % subtract_with_carry_01 random number
       * generator.
       */
      explicit
      subtract_with_carry_01(unsigned long __value)
      {
	this->seed(__value);
	_M_initialize_npows();
      }

      /**
       * Constructs a % subtract_with_carry_01 random number generator engine
       * seeded from the generator function @p __g.
       *
       * @param __g The seed generator function.
       */
      template<class _Gen>
        subtract_with_carry_01(_Gen& __g)
        {
	  this->seed(__g);
	  _M_initialize_npows();	  
	}

      /**
       * Seeds the initial state @f$ x_0 @f$ of the random number generator.
       */
      void
      seed(unsigned long __value = 19780503);

      /**
       * Seeds the initial state @f$ x_0 @f$ of the % subtract_with_carry_01
       * random number generator.
       */
      template<class _Gen>
        void
        seed(_Gen& __g)
        { seed(__g, typename is_fundamental<_Gen>::type()); }

      /**
       * Gets the minimum value of the range of random floats
       * returned by this generator.
       */
      result_type
      min() const
      { return 0.0; }

      /**
       * Gets the maximum value of the range of random floats
       * returned by this generator.
       */
      result_type
      max() const
      { return 1.0; }

      /**
       * Gets the next random number in the sequence.
       */
      result_type
      operator()();

      /**
       * Compares two % subtract_with_carry_01 random number generator objects
       * of the same type for equality.
       *
       * @param __lhs A % subtract_with_carry_01 random number
       *              generator object.
       * @param __rhs Another % subtract_with_carry_01 random number generator
       *              object.
       *
       * @returns true if the two objects are equal, false otherwise.
       */
      friend bool
      operator==(const subtract_with_carry_01& __lhs,
		 const subtract_with_carry_01& __rhs)
      {
	for (int __i = 0; __i < long_lag; ++__i)
	  if (!std::equal(__lhs._M_x[__i], __lhs._M_x[__i] + __n,
			  __rhs._M_x[__i]))
	    return false;
	return true;
      }

      /**
       * Compares two % subtract_with_carry_01 random number generator objects
       * of the same type for inequality.
       *
       * @param __lhs A % subtract_with_carry_01 random number
       *              generator object.
       *
       * @param __rhs Another % subtract_with_carry_01 random number generator
       *              object.
       *
       * @returns true if the two objects are not equal, false otherwise.
       */
      friend bool
      operator!=(const subtract_with_carry_01& __lhs,
		 const subtract_with_carry_01& __rhs)
      { return !(__lhs == __rhs); }

      /**
       * Inserts the current state of a % subtract_with_carry_01 random number
       * generator engine @p __x into the output stream @p __os.
       *
       * @param __os An output stream.
       * @param __x  A % subtract_with_carry_01 random number generator engine.
       *
       * @returns The output stream with the state of @p __x inserted or in
       * an error state.
       */
      template<typename _RealType1, int __w1, int __s1, int __r1,
	       typename _CharT, typename _Traits>
        friend std::basic_ostream<_CharT, _Traits>&
        operator<<(std::basic_ostream<_CharT, _Traits>& __os,
		   const subtract_with_carry_01<_RealType1, __w1, __s1,
		   __r1>& __x);

      /**
       * Extracts the current state of a % subtract_with_carry_01 random number
       * generator engine @p __x from the input stream @p __is.
       *
       * @param __is An input stream.
       * @param __x  A % subtract_with_carry_01 random number generator engine.
       *
       * @returns The input stream with the state of @p __x extracted or in
       * an error state.
       */
      template<typename _RealType1, int __w1, int __s1, int __r1,
	       typename _CharT, typename _Traits>
        friend std::basic_istream<_CharT, _Traits>&
        operator>>(std::basic_istream<_CharT, _Traits>& __is,
		   subtract_with_carry_01<_RealType1, __w1, __s1, __r1>& __x);

    private:
      template<class _Gen>
        void
        seed(_Gen& __g, true_type)
        { return seed(static_cast<unsigned long>(__g)); }

      template<class _Gen>
        void
        seed(_Gen& __g, false_type);

      void
      _M_initialize_npows();

      static const int __n = (__w + 31) / 32;

      typedef __detail::_UInt32Type _UInt32Type;
      _UInt32Type  _M_x[long_lag][__n];
      _RealType    _M_npows[__n];
      _UInt32Type  _M_carry;
      int          _M_p;
    };

  typedef subtract_with_carry_01<float, 24, 10, 24>   ranlux_base_01;

  // _GLIBCXX_RESOLVE_LIB_DEFECTS
  // 508. Bad parameters for ranlux64_base_01.
  typedef subtract_with_carry_01<double, 48, 5, 12> ranlux64_base_01;  


  /**
   * Produces random numbers from some base engine by discarding blocks of
   * data.
   *
   * 0 <= @p __r <= @p __p
   */
  template<class _UniformRandomNumberGenerator, int __p, int __r>
    class discard_block
    {
      // __glibcxx_class_requires(typename base_type::result_type,
      //                          ArithmeticTypeConcept)

    public:
      /** The type of the underlying generator engine. */
      typedef _UniformRandomNumberGenerator   base_type;
      /** The type of the generated random value. */
      typedef typename base_type::result_type result_type;

      // parameter values
      static const int block_size = __p;
      static const int used_block = __r;

      /**
       * Constructs a default %discard_block engine.
       *
       * The underlying engine is default constructed as well.
       */
      discard_block()
      : _M_n(0) { }

      /**
       * Copy constructs a %discard_block engine.
       *
       * Copies an existing base class random number generator.
       * @param rng An existing (base class) engine object.
       */
      explicit
      discard_block(const base_type& __rng)
      : _M_b(__rng), _M_n(0) { }

      /**
       * Seed constructs a %discard_block engine.
       *
       * Constructs the underlying generator engine seeded with @p __s.
       * @param __s A seed value for the base class engine.
       */
      explicit
      discard_block(unsigned long __s)
      : _M_b(__s), _M_n(0) { }

      /**
       * Generator construct a %discard_block engine.
       *
       * @param __g A seed generator function.
       */
      template<class _Gen>
        discard_block(_Gen& __g)
	: _M_b(__g), _M_n(0) { }

      /**
       * Reseeds the %discard_block object with the default seed for the
       * underlying base class generator engine.
       */
      void seed()
      {
	_M_b.seed();
	_M_n = 0;
      }

      /**
       * Reseeds the %discard_block object with the given seed generator
       * function.
       * @param __g A seed generator function.
       */
      template<class _Gen>
        void seed(_Gen& __g)
        {
	  _M_b.seed(__g);
	  _M_n = 0;
	}

      /**
       * Gets a const reference to the underlying generator engine object.
       */
      const base_type&
      base() const
      { return _M_b; }

      /**
       * Gets the minimum value in the generated random number range.
       */
      result_type
      min() const
      { return _M_b.min(); }

      /**
       * Gets the maximum value in the generated random number range.
       */
      result_type
      max() const
      { return _M_b.max(); }

      /**
       * Gets the next value in the generated random number sequence.
       */
      result_type
      operator()();

      /**
       * Compares two %discard_block random number generator objects of
       * the same type for equality.
       *
       * @param __lhs A %discard_block random number generator object.
       * @param __rhs Another %discard_block random number generator
       *              object.
       *
       * @returns true if the two objects are equal, false otherwise.
       */
      friend bool
      operator==(const discard_block& __lhs, const discard_block& __rhs)
      { return (__lhs._M_b == __rhs._M_b) && (__lhs._M_n == __rhs._M_n); }

      /**
       * Compares two %discard_block random number generator objects of
       * the same type for inequality.
       *
       * @param __lhs A %discard_block random number generator object.
       * @param __rhs Another %discard_block random number generator
       *              object.
       *
       * @returns true if the two objects are not equal, false otherwise.
       */
      friend bool
      operator!=(const discard_block& __lhs, const discard_block& __rhs)
      { return !(__lhs == __rhs); }

      /**
       * Inserts the current state of a %discard_block random number
       * generator engine @p __x into the output stream @p __os.
       *
       * @param __os An output stream.
       * @param __x  A %discard_block random number generator engine.
       *
       * @returns The output stream with the state of @p __x inserted or in
       * an error state.
       */
      template<class _UniformRandomNumberGenerator1, int __p1, int __r1,
	       typename _CharT, typename _Traits>
        friend std::basic_ostream<_CharT, _Traits>&
        operator<<(std::basic_ostream<_CharT, _Traits>& __os,
		   const discard_block<_UniformRandomNumberGenerator1,
		   __p1, __r1>& __x);

      /**
       * Extracts the current state of a % subtract_with_carry random number
       * generator engine @p __x from the input stream @p __is.
       *
       * @param __is An input stream.
       * @param __x  A %discard_block random number generator engine.
       *
       * @returns The input stream with the state of @p __x extracted or in
       * an error state.
       */
      template<class _UniformRandomNumberGenerator1, int __p1, int __r1,
	       typename _CharT, typename _Traits>
        friend std::basic_istream<_CharT, _Traits>&
        operator>>(std::basic_istream<_CharT, _Traits>& __is,
		   discard_block<_UniformRandomNumberGenerator1,
		   __p1, __r1>& __x);

    private:
      base_type _M_b;
      int       _M_n;
    };


  /**
   * James's luxury-level-3 integer adaptation of Luescher's generator.
   */
  typedef discard_block<
    subtract_with_carry<unsigned long, (1UL << 24), 10, 24>,
      223,
      24
      > ranlux3;

  /**
   * James's luxury-level-4 integer adaptation of Luescher's generator.
   */
  typedef discard_block<
    subtract_with_carry<unsigned long, (1UL << 24), 10, 24>,
      389,
      24
      > ranlux4;

  typedef discard_block<
    subtract_with_carry_01<float, 24, 10, 24>,
      223,
      24
      > ranlux3_01;

  typedef discard_block<
    subtract_with_carry_01<float, 24, 10, 24>,
      389,
      24
      > ranlux4_01;


  /**
   * A random number generator adaptor class that combines two random number
   * generator engines into a single output sequence.
   */
  template<class _UniformRandomNumberGenerator1, int __s1,
	   class _UniformRandomNumberGenerator2, int __s2>
    class xor_combine
    {
      // __glibcxx_class_requires(typename _UniformRandomNumberGenerator1::
      //                          result_type, ArithmeticTypeConcept)
      // __glibcxx_class_requires(typename _UniformRandomNumberGenerator2::
      //                          result_type, ArithmeticTypeConcept)

    public:
      /** The type of the first underlying generator engine. */
      typedef _UniformRandomNumberGenerator1   base1_type;
      /** The type of the second underlying generator engine. */
      typedef _UniformRandomNumberGenerator2   base2_type;

    private:
      typedef typename base1_type::result_type _Result_type1;
      typedef typename base2_type::result_type _Result_type2;

    public:
      /** The type of the generated random value. */
      typedef typename __gnu_cxx::__conditional_type<(sizeof(_Result_type1)
						      > sizeof(_Result_type2)),
	_Result_type1, _Result_type2>::__type result_type;

      // parameter values
      static const int shift1 = __s1;
      static const int shift2 = __s2;

      // constructors and member function
      xor_combine()
      : _M_b1(), _M_b2()	
      { _M_initialize_max(); }

      xor_combine(const base1_type& __rng1, const base2_type& __rng2)
      : _M_b1(__rng1), _M_b2(__rng2)
      { _M_initialize_max(); }

      xor_combine(unsigned long __s)
      : _M_b1(__s), _M_b2(__s + 1)
      { _M_initialize_max(); }

      template<class _Gen>
        xor_combine(_Gen& __g)
	: _M_b1(__g), _M_b2(__g)
        { _M_initialize_max(); }

      void
      seed()
      {
	_M_b1.seed();
	_M_b2.seed();
      }

      template<class _Gen>
        void
        seed(_Gen& __g)
        {
	  _M_b1.seed(__g);
	  _M_b2.seed(__g);
	}

      const base1_type&
      base1() const
      { return _M_b1; }

      const base2_type&
      base2() const
      { return _M_b2; }

      result_type
      min() const
      { return 0; }

      result_type
      max() const
      { return _M_max; }

      /**
       * Gets the next random number in the sequence.
       */
      // NB: Not exactly the TR1 formula, per N2079 instead.
      result_type
      operator()()
      {
	return ((result_type(_M_b1() - _M_b1.min()) << shift1)
		^ (result_type(_M_b2() - _M_b2.min()) << shift2));
      }

      /**
       * Compares two %xor_combine random number generator objects of
       * the same type for equality.
       *
       * @param __lhs A %xor_combine random number generator object.
       * @param __rhs Another %xor_combine random number generator
       *              object.
       *
       * @returns true if the two objects are equal, false otherwise.
       */
      friend bool
      operator==(const xor_combine& __lhs, const xor_combine& __rhs)
      {
	return (__lhs.base1() == __rhs.base1())
	        && (__lhs.base2() == __rhs.base2());
      }

      /**
       * Compares two %xor_combine random number generator objects of
       * the same type for inequality.
       *
       * @param __lhs A %xor_combine random number generator object.
       * @param __rhs Another %xor_combine random number generator
       *              object.
       *
       * @returns true if the two objects are not equal, false otherwise.
       */
      friend bool
      operator!=(const xor_combine& __lhs, const xor_combine& __rhs)
      { return !(__lhs == __rhs); }

      /**
       * Inserts the current state of a %xor_combine random number
       * generator engine @p __x into the output stream @p __os.
       *
       * @param __os An output stream.
       * @param __x  A %xor_combine random number generator engine.
       *
       * @returns The output stream with the state of @p __x inserted or in
       * an error state.
       */
      template<class _UniformRandomNumberGenerator11, int __s11,
	       class _UniformRandomNumberGenerator21, int __s21,
	       typename _CharT, typename _Traits>
        friend std::basic_ostream<_CharT, _Traits>&
        operator<<(std::basic_ostream<_CharT, _Traits>& __os,
		   const xor_combine<_UniformRandomNumberGenerator11, __s11,
		   _UniformRandomNumberGenerator21, __s21>& __x);

      /**
       * Extracts the current state of a %xor_combine random number
       * generator engine @p __x from the input stream @p __is.
       *
       * @param __is An input stream.
       * @param __x  A %xor_combine random number generator engine.
       *
       * @returns The input stream with the state of @p __x extracted or in
       * an error state.
       */
      template<class _UniformRandomNumberGenerator11, int __s11,
	       class _UniformRandomNumberGenerator21, int __s21,
	       typename _CharT, typename _Traits>
        friend std::basic_istream<_CharT, _Traits>&
        operator>>(std::basic_istream<_CharT, _Traits>& __is,
		   xor_combine<_UniformRandomNumberGenerator11, __s11,
		   _UniformRandomNumberGenerator21, __s21>& __x);

    private:
      void
      _M_initialize_max();

      result_type
      _M_initialize_max_aux(result_type, result_type, int);

      base1_type  _M_b1;
      base2_type  _M_b2;
      result_type _M_max;
    };


  /**
   * A standard interface to a platform-specific non-deterministic
   * random number generator (if any are available).
   */
  class random_device
  {
  public:
    // types
    typedef unsigned int result_type;

    // constructors, destructors and member functions

#ifdef _GLIBCXX_USE_RANDOM_TR1

    explicit
    random_device(const std::string& __token = "/dev/urandom")
    {
      if ((__token != "/dev/urandom" && __token != "/dev/random")
	  || !(_M_file = std::fopen(__token.c_str(), "rb")))
	std::__throw_runtime_error(__N("random_device::"
				       "random_device(const std::string&)"));
    }

    ~random_device()
    { std::fclose(_M_file); }

#else

    explicit
    random_device(const std::string& __token = "mt19937")
    : _M_mt(_M_strtoul(__token)) { }

  private:
    static unsigned long
    _M_strtoul(const std::string& __str)
    {
      unsigned long __ret = 5489UL;
      if (__str != "mt19937")
	{
	  const char* __nptr = __str.c_str();
	  char* __endptr;
	  __ret = std::strtoul(__nptr, &__endptr, 0);
	  if (*__nptr == '\0' || *__endptr != '\0')
	    std::__throw_runtime_error(__N("random_device::_M_strtoul"
					   "(const std::string&)"));
	}
      return __ret;
    }

  public:

#endif

    result_type
    min() const
    { return std::numeric_limits<result_type>::min(); }

    result_type
    max() const
    { return std::numeric_limits<result_type>::max(); }

    double
    entropy() const
    { return 0.0; }

    result_type
    operator()()
    {
#ifdef _GLIBCXX_USE_RANDOM_TR1
      result_type __ret;
      std::fread(reinterpret_cast<void*>(&__ret), sizeof(result_type),
		 1, _M_file);
      return __ret;
#else
      return _M_mt();
#endif
    }

  private:
    random_device(const random_device&);
    void operator=(const random_device&);

#ifdef _GLIBCXX_USE_RANDOM_TR1
    FILE*        _M_file;
#else
    mt19937      _M_mt;
#endif
  };

  /// @} group tr1_random_generators

  /**
   * @addtogroup tr1_random_distributions Random Number Distributions
   * @ingroup tr1_random
   * @{
   */

  /**
   * @addtogroup tr1_random_distributions_discrete Discrete Distributions
   * @ingroup tr1_random_distributions
   * @{
   */

  /**
   * @brief Uniform discrete distribution for random numbers.
   * A discrete random distribution on the range @f$[min, max]@f$ with equal
   * probability throughout the range.
   */
  template<typename _IntType = int>
    class uniform_int
    {
      __glibcxx_class_requires(_IntType, _IntegerConcept)
 
    public:
      /** The type of the parameters of the distribution. */
      typedef _IntType input_type;
      /** The type of the range of the distribution. */
      typedef _IntType result_type;

    public:
      /**
       * Constructs a uniform distribution object.
       */
      explicit
      uniform_int(_IntType __min = 0, _IntType __max = 9)
      : _M_min(__min), _M_max(__max)
      {
	_GLIBCXX_DEBUG_ASSERT(_M_min <= _M_max);
      }

      /**
       * Gets the inclusive lower bound of the distribution range.
       */
      result_type
      min() const
      { return _M_min; }

      /**
       * Gets the inclusive upper bound of the distribution range.
       */
      result_type
      max() const
      { return _M_max; }

      /**
       * Resets the distribution state.
       *
       * Does nothing for the uniform integer distribution.
       */
      void
      reset() { }

      /**
       * Gets a uniformly distributed random number in the range
       * @f$(min, max)@f$.
       */
      template<typename _UniformRandomNumberGenerator>
        result_type
        operator()(_UniformRandomNumberGenerator& __urng)
        {
	  typedef typename _UniformRandomNumberGenerator::result_type
	    _UResult_type;
	  return _M_call(__urng, _M_min, _M_max,
			 typename is_integral<_UResult_type>::type());
	}

      /**
       * Gets a uniform random number in the range @f$[0, n)@f$.
       *
       * This function is aimed at use with std::random_shuffle.
       */
      template<typename _UniformRandomNumberGenerator>
        result_type
        operator()(_UniformRandomNumberGenerator& __urng, result_type __n)
        {
	  typedef typename _UniformRandomNumberGenerator::result_type
	    _UResult_type;
	  return _M_call(__urng, 0, __n - 1,
			 typename is_integral<_UResult_type>::type());
	}

      /**
       * Inserts a %uniform_int random number distribution @p __x into the
       * output stream @p os.
       *
       * @param __os An output stream.
       * @param __x  A %uniform_int random number distribution.
       *
       * @returns The output stream with the state of @p __x inserted or in
       * an error state.
       */
      template<typename _IntType1, typename _CharT, typename _Traits>
        friend std::basic_ostream<_CharT, _Traits>&
        operator<<(std::basic_ostream<_CharT, _Traits>& __os,
		   const uniform_int<_IntType1>& __x);

      /**
       * Extracts a %uniform_int random number distribution
       * @p __x from the input stream @p __is.
       *
       * @param __is An input stream.
       * @param __x  A %uniform_int random number generator engine.
       *
       * @returns The input stream with @p __x extracted or in an error state.
       */
      template<typename _IntType1, typename _CharT, typename _Traits>
        friend std::basic_istream<_CharT, _Traits>&
        operator>>(std::basic_istream<_CharT, _Traits>& __is,
		   uniform_int<_IntType1>& __x);

    private:
      template<typename _UniformRandomNumberGenerator>
        result_type
        _M_call(_UniformRandomNumberGenerator& __urng,
		result_type __min, result_type __max, true_type);

      template<typename _UniformRandomNumberGenerator>
        result_type
        _M_call(_UniformRandomNumberGenerator& __urng,
		result_type __min, result_type __max, false_type)
        {
	  return result_type((__urng() - __urng.min())
			     / (__urng.max() - __urng.min())
			     * (__max - __min + 1)) + __min;
	}

      _IntType _M_min;
      _IntType _M_max;
    };


  /**
   * @brief A Bernoulli random number distribution.
   *
   * Generates a sequence of true and false values with likelihood @f$ p @f$
   * that true will come up and @f$ (1 - p) @f$ that false will appear.
   */
  class bernoulli_distribution
  {
  public:
    typedef int  input_type;
    typedef bool result_type;

  public:
    /**
     * Constructs a Bernoulli distribution with likelihood @p p.
     *
     * @param __p  [IN]  The likelihood of a true result being returned.  Must
     * be in the interval @f$ [0, 1] @f$.
     */
    explicit
    bernoulli_distribution(double __p = 0.5)
    : _M_p(__p)
    { 
      _GLIBCXX_DEBUG_ASSERT((_M_p >= 0.0) && (_M_p <= 1.0));
    }

    /**
     * Gets the @p p parameter of the distribution.
     */
    double
    p() const
    { return _M_p; }

    /**
     * Resets the distribution state.
     *
     * Does nothing for a Bernoulli distribution.
     */
    void
    reset() { }

    /**
     * Gets the next value in the Bernoullian sequence.
     */
    template<class _UniformRandomNumberGenerator>
      result_type
      operator()(_UniformRandomNumberGenerator& __urng)
      {
	if ((__urng() - __urng.min()) < _M_p * (__urng.max() - __urng.min()))
	  return true;
	return false;
      }

    /**
     * Inserts a %bernoulli_distribution random number distribution
     * @p __x into the output stream @p __os.
     *
     * @param __os An output stream.
     * @param __x  A %bernoulli_distribution random number distribution.
     *
     * @returns The output stream with the state of @p __x inserted or in
     * an error state.
     */
    template<typename _CharT, typename _Traits>
      friend std::basic_ostream<_CharT, _Traits>&
      operator<<(std::basic_ostream<_CharT, _Traits>& __os,
		 const bernoulli_distribution& __x);

    /**
     * Extracts a %bernoulli_distribution random number distribution
     * @p __x from the input stream @p __is.
     *
     * @param __is An input stream.
     * @param __x  A %bernoulli_distribution random number generator engine.
     *
     * @returns The input stream with @p __x extracted or in an error state.
     */
    template<typename _CharT, typename _Traits>
      friend std::basic_istream<_CharT, _Traits>&
      operator>>(std::basic_istream<_CharT, _Traits>& __is,
		 bernoulli_distribution& __x)
      { return __is >> __x._M_p; }

  private:
    double _M_p;
  };


  /**
   * @brief A discrete geometric random number distribution.
   *
   * The formula for the geometric probability mass function is 
   * @f$ p(i) = (1 - p)p^{i-1} @f$ where @f$ p @f$ is the parameter of the
   * distribution.
   */
  template<typename _IntType = int, typename _RealType = double>
    class geometric_distribution
    {
    public:
      // types
      typedef _RealType input_type;
      typedef _IntType  result_type;

      // constructors and member function
      explicit
      geometric_distribution(const _RealType& __p = _RealType(0.5))
      : _M_p(__p)
      {
	_GLIBCXX_DEBUG_ASSERT((_M_p > 0.0) && (_M_p < 1.0));
	_M_initialize();
      }

      /**
       * Gets the distribution parameter @p p.
       */
      _RealType
      p() const
      { return _M_p; }

      void
      reset() { }

      template<class _UniformRandomNumberGenerator>
        result_type
        operator()(_UniformRandomNumberGenerator& __urng);

      /**
       * Inserts a %geometric_distribution random number distribution
       * @p __x into the output stream @p __os.
       *
       * @param __os An output stream.
       * @param __x  A %geometric_distribution random number distribution.
       *
       * @returns The output stream with the state of @p __x inserted or in
       * an error state.
       */
      template<typename _IntType1, typename _RealType1,
	       typename _CharT, typename _Traits>
        friend std::basic_ostream<_CharT, _Traits>&
        operator<<(std::basic_ostream<_CharT, _Traits>& __os,
		   const geometric_distribution<_IntType1, _RealType1>& __x);

      /**
       * Extracts a %geometric_distribution random number distribution
       * @p __x from the input stream @p __is.
       *
       * @param __is An input stream.
       * @param __x  A %geometric_distribution random number generator engine.
       *
       * @returns The input stream with @p __x extracted or in an error state.
       */
      template<typename _CharT, typename _Traits>
        friend std::basic_istream<_CharT, _Traits>&
        operator>>(std::basic_istream<_CharT, _Traits>& __is,
		   geometric_distribution& __x)
        {
	  __is >> __x._M_p;
	  __x._M_initialize();
	  return __is;
	}

    private:
      void
      _M_initialize()
      { _M_log_p = std::log(_M_p); }

      _RealType _M_p;
      _RealType _M_log_p;
    };


  template<typename _RealType>
    class normal_distribution;

  /**
   * @brief A discrete Poisson random number distribution.
   *
   * The formula for the Poisson probability mass function is
   * @f$ p(i) = \frac{mean^i}{i!} e^{-mean} @f$ where @f$ mean @f$ is the
   * parameter of the distribution.
   */
  template<typename _IntType = int, typename _RealType = double>
    class poisson_distribution
    {
    public:
      // types
      typedef _RealType input_type;
      typedef _IntType  result_type;

      // constructors and member function
      explicit
      poisson_distribution(const _RealType& __mean = _RealType(1))
      : _M_mean(__mean), _M_nd()
      {
	_GLIBCXX_DEBUG_ASSERT(_M_mean > 0.0);
	_M_initialize();
      }

      /**
       * Gets the distribution parameter @p mean.
       */
      _RealType
      mean() const
      { return _M_mean; }

      void
      reset()
      { _M_nd.reset(); }

      template<class _UniformRandomNumberGenerator>
        result_type
        operator()(_UniformRandomNumberGenerator& __urng);

      /**
       * Inserts a %poisson_distribution random number distribution
       * @p __x into the output stream @p __os.
       *
       * @param __os An output stream.
       * @param __x  A %poisson_distribution random number distribution.
       *
       * @returns The output stream with the state of @p __x inserted or in
       * an error state.
       */
      template<typename _IntType1, typename _RealType1,
	       typename _CharT, typename _Traits>
        friend std::basic_ostream<_CharT, _Traits>&
        operator<<(std::basic_ostream<_CharT, _Traits>& __os,
		   const poisson_distribution<_IntType1, _RealType1>& __x);

      /**
       * Extracts a %poisson_distribution random number distribution
       * @p __x from the input stream @p __is.
       *
       * @param __is An input stream.
       * @param __x  A %poisson_distribution random number generator engine.
       *
       * @returns The input stream with @p __x extracted or in an error state.
       */
      template<typename _IntType1, typename _RealType1,
	       typename _CharT, typename _Traits>
        friend std::basic_istream<_CharT, _Traits>&
        operator>>(std::basic_istream<_CharT, _Traits>& __is,
		   poisson_distribution<_IntType1, _RealType1>& __x);

    private:
      void
      _M_initialize();

      // NB: Unused when _GLIBCXX_USE_C99_MATH_TR1 is undefined.
      normal_distribution<_RealType> _M_nd;

      _RealType _M_mean;

      // Hosts either log(mean) or the threshold of the simple method.
      _RealType _M_lm_thr;
#if _GLIBCXX_USE_C99_MATH_TR1
      _RealType _M_lfm, _M_sm, _M_d, _M_scx, _M_1cx, _M_c2b, _M_cb;
#endif
    };


  /**
   * @brief A discrete binomial random number distribution.
   *
   * The formula for the binomial probability mass function is 
   * @f$ p(i) = \binom{n}{i} p^i (1 - p)^{t - i} @f$ where @f$ t @f$
   * and @f$ p @f$ are the parameters of the distribution.
   */
  template<typename _IntType = int, typename _RealType = double>
    class binomial_distribution
    {
    public:
      // types
      typedef _RealType input_type;
      typedef _IntType  result_type;

      // constructors and member function
      explicit
      binomial_distribution(_IntType __t = 1,
			    const _RealType& __p = _RealType(0.5))
      : _M_t(__t), _M_p(__p), _M_nd()
      {
	_GLIBCXX_DEBUG_ASSERT((_M_t >= 0) && (_M_p >= 0.0) && (_M_p <= 1.0));
	_M_initialize();
      }

      /**
       * Gets the distribution @p t parameter.
       */
      _IntType
      t() const
      { return _M_t; }
      
      /**
       * Gets the distribution @p p parameter.
       */
      _RealType
      p() const
      { return _M_p; }

      void
      reset()
      { _M_nd.reset(); }

      template<class _UniformRandomNumberGenerator>
        result_type
        operator()(_UniformRandomNumberGenerator& __urng);

      /**
       * Inserts a %binomial_distribution random number distribution
       * @p __x into the output stream @p __os.
       *
       * @param __os An output stream.
       * @param __x  A %binomial_distribution random number distribution.
       *
       * @returns The output stream with the state of @p __x inserted or in
       * an error state.
       */
      template<typename _IntType1, typename _RealType1,
	       typename _CharT, typename _Traits>
        friend std::basic_ostream<_CharT, _Traits>&
        operator<<(std::basic_ostream<_CharT, _Traits>& __os,
		   const binomial_distribution<_IntType1, _RealType1>& __x);

      /**
       * Extracts a %binomial_distribution random number distribution
       * @p __x from the input stream @p __is.
       *
       * @param __is An input stream.
       * @param __x  A %binomial_distribution random number generator engine.
       *
       * @returns The input stream with @p __x extracted or in an error state.
       */
      template<typename _IntType1, typename _RealType1,
	       typename _CharT, typename _Traits>
        friend std::basic_istream<_CharT, _Traits>&
        operator>>(std::basic_istream<_CharT, _Traits>& __is,
		   binomial_distribution<_IntType1, _RealType1>& __x);

    private:
      void
      _M_initialize();

      template<class _UniformRandomNumberGenerator>
        result_type
        _M_waiting(_UniformRandomNumberGenerator& __urng, _IntType __t);

      // NB: Unused when _GLIBCXX_USE_C99_MATH_TR1 is undefined.
      normal_distribution<_RealType> _M_nd;

      _RealType _M_q;
#if _GLIBCXX_USE_C99_MATH_TR1
      _RealType _M_d1, _M_d2, _M_s1, _M_s2, _M_c,
	        _M_a1, _M_a123, _M_s, _M_lf, _M_lp1p;
#endif
      _RealType _M_p;
      _IntType  _M_t;

      bool      _M_easy;
    };

  /// @} group tr1_random_distributions_discrete

  /**
   * @addtogroup tr1_random_distributions_continuous Continuous Distributions
   * @ingroup tr1_random_distributions
   * @{
   */

  /**
   * @brief Uniform continuous distribution for random numbers.
   *
   * A continuous random distribution on the range [min, max) with equal
   * probability throughout the range.  The URNG should be real-valued and
   * deliver number in the range [0, 1).
   */
  template<typename _RealType = double>
    class uniform_real
    {
    public:
      // types
      typedef _RealType input_type;
      typedef _RealType result_type;

    public:
      /**
       * Constructs a uniform_real object.
       *
       * @param __min [IN]  The lower bound of the distribution.
       * @param __max [IN]  The upper bound of the distribution.
       */
      explicit
      uniform_real(_RealType __min = _RealType(0),
		   _RealType __max = _RealType(1))
      : _M_min(__min), _M_max(__max)
      {
	_GLIBCXX_DEBUG_ASSERT(_M_min <= _M_max);
      }

      result_type
      min() const
      { return _M_min; }

      result_type
      max() const
      { return _M_max; }

      void
      reset() { }

      template<class _UniformRandomNumberGenerator>
        result_type
        operator()(_UniformRandomNumberGenerator& __urng)
        { return (__urng() * (_M_max - _M_min)) + _M_min; }

      /**
       * Inserts a %uniform_real random number distribution @p __x into the
       * output stream @p __os.
       *
       * @param __os An output stream.
       * @param __x  A %uniform_real random number distribution.
       *
       * @returns The output stream with the state of @p __x inserted or in
       * an error state.
       */
      template<typename _RealType1, typename _CharT, typename _Traits>
        friend std::basic_ostream<_CharT, _Traits>&
        operator<<(std::basic_ostream<_CharT, _Traits>& __os,
		   const uniform_real<_RealType1>& __x);

      /**
       * Extracts a %uniform_real random number distribution
       * @p __x from the input stream @p __is.
       *
       * @param __is An input stream.
       * @param __x  A %uniform_real random number generator engine.
       *
       * @returns The input stream with @p __x extracted or in an error state.
       */
      template<typename _RealType1, typename _CharT, typename _Traits>
        friend std::basic_istream<_CharT, _Traits>&
        operator>>(std::basic_istream<_CharT, _Traits>& __is,
		   uniform_real<_RealType1>& __x);

    private:
      _RealType _M_min;
      _RealType _M_max;
    };


  /**
   * @brief An exponential continuous distribution for random numbers.
   *
   * The formula for the exponential probability mass function is 
   * @f$ p(x) = \lambda e^{-\lambda x} @f$.
   *
   * <table border=1 cellpadding=10 cellspacing=0>
   * <caption align=top>Distribution Statistics</caption>
   * <tr><td>Mean</td><td>@f$ \frac{1}{\lambda} @f$</td></tr>
   * <tr><td>Median</td><td>@f$ \frac{\ln 2}{\lambda} @f$</td></tr>
   * <tr><td>Mode</td><td>@f$ zero @f$</td></tr>
   * <tr><td>Range</td><td>@f$[0, \infty]@f$</td></tr>
   * <tr><td>Standard Deviation</td><td>@f$ \frac{1}{\lambda} @f$</td></tr>
   * </table>
   */
  template<typename _RealType = double>
    class exponential_distribution
    {
    public:
      // types
      typedef _RealType input_type;
      typedef _RealType result_type;

    public:
      /**
       * Constructs an exponential distribution with inverse scale parameter
       * @f$ \lambda @f$.
       */
      explicit
      exponential_distribution(const result_type& __lambda = result_type(1))
      : _M_lambda(__lambda)
      { 
	_GLIBCXX_DEBUG_ASSERT(_M_lambda > 0);
      }

      /**
       * Gets the inverse scale parameter of the distribution.
       */
      _RealType
      lambda() const
      { return _M_lambda; }

      /**
       * Resets the distribution.
       *
       * Has no effect on exponential distributions.
       */
      void
      reset() { }

      template<class _UniformRandomNumberGenerator>
        result_type
        operator()(_UniformRandomNumberGenerator& __urng)
        { return -std::log(__urng()) / _M_lambda; }

      /**
       * Inserts a %exponential_distribution random number distribution
       * @p __x into the output stream @p __os.
       *
       * @param __os An output stream.
       * @param __x  A %exponential_distribution random number distribution.
       *
       * @returns The output stream with the state of @p __x inserted or in
       * an error state.
       */
      template<typename _RealType1, typename _CharT, typename _Traits>
        friend std::basic_ostream<_CharT, _Traits>&
        operator<<(std::basic_ostream<_CharT, _Traits>& __os,
		   const exponential_distribution<_RealType1>& __x);

      /**
       * Extracts a %exponential_distribution random number distribution
       * @p __x from the input stream @p __is.
       *
       * @param __is An input stream.
       * @param __x A %exponential_distribution random number
       *            generator engine.
       *
       * @returns The input stream with @p __x extracted or in an error state.
       */
      template<typename _CharT, typename _Traits>
        friend std::basic_istream<_CharT, _Traits>&
        operator>>(std::basic_istream<_CharT, _Traits>& __is,
		   exponential_distribution& __x)
        { return __is >> __x._M_lambda; }

    private:
      result_type _M_lambda;
    };


  /**
   * @brief A normal continuous distribution for random numbers.
   *
   * The formula for the normal probability mass function is 
   * @f$ p(x) = \frac{1}{\sigma \sqrt{2 \pi}} 
   *            e^{- \frac{{x - mean}^ {2}}{2 \sigma ^ {2}} } @f$.
   */
  template<typename _RealType = double>
    class normal_distribution
    {
    public:
      // types
      typedef _RealType input_type;
      typedef _RealType result_type;

    public:
      /**
       * Constructs a normal distribution with parameters @f$ mean @f$ and
       * @f$ \sigma @f$.
       */
      explicit
      normal_distribution(const result_type& __mean = result_type(0),
			  const result_type& __sigma = result_type(1))
      : _M_mean(__mean), _M_sigma(__sigma), _M_saved_available(false)
      { 
	_GLIBCXX_DEBUG_ASSERT(_M_sigma > 0);
      }

      /**
       * Gets the mean of the distribution.
       */
      _RealType
      mean() const
      { return _M_mean; }

      /**
       * Gets the @f$ \sigma @f$ of the distribution.
       */
      _RealType
      sigma() const
      { return _M_sigma; }

      /**
       * Resets the distribution.
       */
      void
      reset()
      { _M_saved_available = false; }

      template<class _UniformRandomNumberGenerator>
        result_type
        operator()(_UniformRandomNumberGenerator& __urng);

      /**
       * Inserts a %normal_distribution random number distribution
       * @p __x into the output stream @p __os.
       *
       * @param __os An output stream.
       * @param __x  A %normal_distribution random number distribution.
       *
       * @returns The output stream with the state of @p __x inserted or in
       * an error state.
       */
      template<typename _RealType1, typename _CharT, typename _Traits>
        friend std::basic_ostream<_CharT, _Traits>&
        operator<<(std::basic_ostream<_CharT, _Traits>& __os,
		   const normal_distribution<_RealType1>& __x);

      /**
       * Extracts a %normal_distribution random number distribution
       * @p __x from the input stream @p __is.
       *
       * @param __is An input stream.
       * @param __x  A %normal_distribution random number generator engine.
       *
       * @returns The input stream with @p __x extracted or in an error state.
       */
      template<typename _RealType1, typename _CharT, typename _Traits>
        friend std::basic_istream<_CharT, _Traits>&
        operator>>(std::basic_istream<_CharT, _Traits>& __is,
		   normal_distribution<_RealType1>& __x);

    private:
      result_type _M_mean;
      result_type _M_sigma;
      result_type _M_saved;
      bool        _M_saved_available;     
    };


  /**
   * @brief A gamma continuous distribution for random numbers.
   *
   * The formula for the gamma probability mass function is 
   * @f$ p(x) = \frac{1}{\Gamma(\alpha)} x^{\alpha - 1} e^{-x} @f$.
   */
  template<typename _RealType = double>
    class gamma_distribution
    {
    public:
      // types
      typedef _RealType input_type;
      typedef _RealType result_type;

    public:
      /**
       * Constructs a gamma distribution with parameters @f$ \alpha @f$.
       */
      explicit
      gamma_distribution(const result_type& __alpha_val = result_type(1))
      : _M_alpha(__alpha_val)
      { 
	_GLIBCXX_DEBUG_ASSERT(_M_alpha > 0);
	_M_initialize();
      }

      /**
       * Gets the @f$ \alpha @f$ of the distribution.
       */
      _RealType
      alpha() const
      { return _M_alpha; }

      /**
       * Resets the distribution.
       */
      void
      reset() { }

      template<class _UniformRandomNumberGenerator>
        result_type
        operator()(_UniformRandomNumberGenerator& __urng);

      /**
       * Inserts a %gamma_distribution random number distribution
       * @p __x into the output stream @p __os.
       *
       * @param __os An output stream.
       * @param __x  A %gamma_distribution random number distribution.
       *
       * @returns The output stream with the state of @p __x inserted or in
       * an error state.
       */
      template<typename _RealType1, typename _CharT, typename _Traits>
        friend std::basic_ostream<_CharT, _Traits>&
        operator<<(std::basic_ostream<_CharT, _Traits>& __os,
		   const gamma_distribution<_RealType1>& __x);

      /**
       * Extracts a %gamma_distribution random number distribution
       * @p __x from the input stream @p __is.
       *
       * @param __is An input stream.
       * @param __x  A %gamma_distribution random number generator engine.
       *
       * @returns The input stream with @p __x extracted or in an error state.
       */
      template<typename _CharT, typename _Traits>
        friend std::basic_istream<_CharT, _Traits>&
        operator>>(std::basic_istream<_CharT, _Traits>& __is,
		   gamma_distribution& __x)
        {
	  __is >> __x._M_alpha;
	  __x._M_initialize();
	  return __is;
	}

    private:
      void
      _M_initialize();

      result_type _M_alpha;

      // Hosts either lambda of GB or d of modified Vaduva's.
      result_type _M_l_d;
    };

  /// @} group tr1_random_distributions_continuous
  /// @} group tr1_random_distributions
  /// @} group tr1_random
}

_GLIBCXX_END_NAMESPACE_VERSION
}

#endif // _GLIBCXX_TR1_RANDOM_H
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      G6      D            V6      H            Y6      L            [6      P            c6      T            e6      X            j6      \            q6      `            {6      d            6      h            6      l            6      p            6      t            6      x            6      |            6                  6                  6                  6                  6                  6                  "7                  #7                  %7                  *7                  07                  77                  <7                  @7                  C7                  7                  7                  7                  7                  7                  7                  7                  7                  7                  7                  7                  7                  7                  7                  7                  7                  7                  7       	            =8      	            >8      	            @8      	            B8      	            G8      	            P8      	            8      	            8       	            8      $	            8      (	            8      ,	            8      0	            8      4	            8      8	            8      <	            8      @	            8      D	             9      H	            99      L	            @9      P	            r9      T	            9      X	            9      \	            9      `	            9      d	            9      h	            A:      l	            B:      p	            G:      t	            [:      x	            _:      |	            d:      	            q:      	            :      	            :      	            :      	            :      	            :      	            :      	            :      	            :      	            :      	            :      	            :      	            ";      	            );      	            +;      	            -;      	            2;      	            C;      	            I;      	            K;      	            M;      	            \;      	            `;      	            g;      	            l;      	            q;      	            u;      	            y;      	            ;      	            ;      	            ;      	            ;       
            ;      
            ;      
            ;      
            ;      
            ;      
            ;      
            ;      
            ;       
            ;      $
            ;      (
            ;      ,
            ;      0
            <      4
            <      8
            <      <
            !<      @
            0<      D
            7<      H
            <<      L
            @<      P
            D<      T
            <      X
            <      \
            <      `
            <      d
            <      h
            <      l
            <      p
            <      t
            <      x
            <      |
            <      
            <      
            1=      
            2=      
            4=      
            6=      
            8=      
            ==      
            P=      
            W=      
            \=      
            a=      
            f=      
            j=      
            n=      
            =      
            =      
            =      
            =      
            =      
            =      
            =      
            =      
            =      
            =      
            =      
            >      
            >      
            
>      
            >      
            p>      
            q>      
            s>                   u>                  w>                  y>                  ~>                  >                  >                  >                  >                   >      $            >      (            >      ,            >      0            >      4            >      8            >      <            >      @            >      D             ?      H            ?      L            ?      P            ?      T            ?      X            ?      \            ?      `            ?      d            ?      h            ?      l            ?      p            ?      t            ?      x            ?      |            ?                  ?                  ?                  ?                  ?                  ?                  ?                  ?                  &@                  '@                  )@                  +@                  -@                  /@                  4@                  @@                  @                  @                  @                  @                  @                  @                  @                   A                  {A                  |A                  A                  A                                                        A                  A                  A                   A                  A                  B                  $B                  ?B                  @B                  OB                  PB                   ZB      $            `B      (            gB      ,            hB      0            sB      4            wB      8            C      <            C      @            C      D            
C      H            C      L            'C      P            (C      T            )C      X            +C      \            7C      `            9C      d            >C      h            CC      l            NC      p            OC      t            C      x            C      |            C                  C                  C                  C                  C                  C                   D                  D                   D                  4D                  @D                  FD                  YD                  ^D                  `D                  D                  D                  D                  D                  E                   E                  DE                  PE                  {E                  E                  E                  E                  E                  E                  E                  E                  E                  E       
            E      
            E      
            E      
            E      
            F      
            F      
            F      
            !F       
            2F      $
            ;F      (
            DF      ,
            MF      0
            VF      4
            _F      8
            hF      <
            qF      @
            zF      D
            F      H
            F      L
            F      P
            F      T
            F      X
            F      \
            F      `
            F      d
            F      h
            F      l
            F      p
            F      t
            F      x
            F      |
            F      
            AG      
            DG      
            EG      
            JG      
            G      
            G      
            G      
            G      
             H      
            !H      
            &H      
            4H      
            @H      
            kH      
            pH      
            vH      
            .I      
            3I      
            YI      
            `I      
            fI      
            I      
            I      
            I      
            I      
            I      
            I      
            I      
            I      
            I      
            J      
            J                   J                   J                  &J                  J                  J                  J                  J                  J                   J      $            J      (            J      ,            J      0            J      4             K      8            K      <            
K      @            &K      D            'K      H            ,K      L            0K      P            YK      T            `K      X            iK      \            K      `            K      d            K      h            K      l            K      p            K      t            K      x            K      |            DL                  HL                  JL                  LL                  QL                  `L                  fL                  gL                  L                  L                  L                  L                  L                  L                  L                  L                  L                  L                  L                  L                  L                  M                  M                  M                  	M                  M                  9M                  @M                  GM                  HM                  IM                  MM                  M                   M                  M                  M                  M                  N                  N                  #N                  N                   N      $            O      (            !O      ,            0O      0            gO      4            pO      8            O      <            O      @            O      D            O      H            O      L            O      P            O      T            O      X            O      \            O      `            O      d            P      h            P      l            P      p            P      t            AQ      x            PQ      |            WQ                  YQ                  ZQ                  [Q                  Q                  Q                  Q                  Q                  Q                  R                  R                  R                  R                  R                  R                  R                  R                  R                  R                  R                  R                  R                  R                  R                  AS                  FS                  PS                  ZS                  `S                  gS                  iS                  kS                  mS                   nS                  oS                  S                  S                  S                  S                  S                  S                   S      $            S      (            S      ,            S      0            S      4            S      8            S      <            S      @             T      D            
T      H            T      L            0T      P            1T      T            ;T      X            @T      \            `T      `            aT      d            T      h            T      l            T      p            U      t            *U      x            0U      |            6U                  eU                  jU                  zU                  U                  U                  U                  U                  U                  U                  U                  U                  U                  (V                  0V                  5V                  @V                  V                  V                  V                  V                  V                   W                  W                  
W                  W                  W                  W                  W                  W                  W                  W                  'X                   +X                  ,X                  .X                  3X                  @X                  GX                  IX                  SX                   ]X      $            aX      (            lX      ,            Y      0            Y      4            Y      8            Y      <            Y      @            Y      D            "Y      H            )Y      L            0Y      P            HY      T            PY      X            gY      \            pY      `            Y      d            Y      h            Y      l            Y      p            Y      t            Y      x            Y      |            Y                  Y                  Y                  Z                  Z                  Z                  Z                  Z                  Z                  Z                  Z                  Z                  Z                  #Z                  Z                  Z                  Z                  Z                  Z                  Z                  Z                  Z                  F[                  P[                  W[                  h[                  t[                  }[                  [                  [                  [                  [                  [                   [                  [                  [                  [                  [                  [                  [                  [                   [      $            [      (            [      ,            [      0            [      4            \      8            \      <            \      @            ]      D            ]      H            ]      L            ^      P            ^      T            ^      X            ^      \            ^      `            &^      d            0^      h            7^      l            8^      p            9^      t            _      x            _      |            _                   _                  !_                  "_                  $_                  )_                  _                  _                  _                  _                  _                  _                   `                  `                  .`                  3`                  @`                  `                  `                  `                  `                  `                  `                  `                  `                  `                  `                  `                   a                  a                  	a                  a                  a                   a                  a                  a                  b                  b                  b                  b                  b                   b      $            b      (            b      ,            c      0            c      4            c      8            c      <            c      @            c      D            c      H             d      L            d      P            d      T            d      X            d      \            *d      `            0d      d            7d      h            9d      l            :d      p            ;d      t            d      x            d      |            d                  d                  d                  d                  d                  d                  d                  d                  d                  (e                  )e                  +e                  -e                  /e                  4e                  Ee                  Fe                  He                  Je                  Le                  Qe                  `e                  ae                  ce                  ee                  ge                  le                  }e                  e                  e                  e                  e                   f                   f                   f                  :f                  @f                  Gf                  If                  Jf                  Kf                   f      $            f      (            f      ,            f      0            f      4            f      8            f      <            f      @            f      D            ~g      H            g      L            g      P            g      T            g      X            g      \            g      `            Lh      d            Mh      h            Nh      l            Sh      p            h      t            h      x            h      |            h                  h                  h                  h                  h                  h                  li                  ti                  yi                  zi                  {i                  i                  i                  i                  i                  i                  k                  k                  k                  k                  ?k                  @k                  Bk                  Gk                  Nk                  Ok                  Qk                  Vk                  k                  k                  k                  k                  k                   k                  k                  k                  k                  <l                  =l                  ?l                  Dl                   l      $            l      (            l      ,            l      0            dm      4            em      8            jm      <            m      @             n      D            n      H            n      L            n      P            o      T            o      X            o      \             p      `            p      d            p      h            	p      l            p      p            p      t            p      x            p      |            p                  p                  p                  p                  p                  p                  p                  p                  p                  p                  p                  p                  p                  ^q                  _q                  `q                  eq                  tq                  q                  q                  q                  q                  q                  q                  q                  q                  q                   r                  r                  
r                  r                  }r                  ~r                   r                  r                  r                  r                  r                  r                  r                  r                   r      $            r      (            t      ,            t      0            t      4            t      8            t      <            t      @            t      D            t      H            t      L            t      P            t      T            t      X            t      \            u      `            v      d            
v      h            v      l            
v      p            v      t            v      x            v      |            v                  !v                  "v                  #v                  %v                  'v                  )v                  +v                  0v                  v                  v                  v                  v                  v                  w                  
w                  w                  w                  w                  x                  x                  x                  x                  x                                                       v                                                      &                  A                                                                                           =                                      $                                                          N                   S      $            x      (            y      ,             y      0            'y      4            /y      8            8y      <            ?y      @            Fy      D            y      H            y      L            y      P            y      T            y      X            y      \            y      `            y      d            y      h            y      l            y      p            y      t            y      x            y      |            y                  %z                  ?z                  Ez                  Hz                  Iz                  Kz                  Mz                  Oz                  Qz                  Vz                  `z                  z                  z                  z                  z                  z                  z                  z                  z                  z                  {                  {                   {                  ~{                  {                  {                  {                  {                  {                  |                  |                  |                    }                  }                  }                  C}                  X}                  Y}                  Z}                  _}                   `}      $            a}      (            f}      ,            p}      0            }      4            }      8            }      <            }      @            }      D            }      H            &~      L            *~      P            .~      T            y~      X            z~      \            {~      `            ~      d            ~      h            ~      l            ~      p            ~      t            ~      x            ~      |            ~                  ~                  ~                  ~                  ~                  ~                  ~                  ~                  ~                                                       
                  :                  >                  C                                                                                                                                                                                                                                                                                                 Q                  U                  W                   Y                  [                  `                                                      ހ                                                             $                  (                  ,                  0                   4                  8                  <                  @                  D            <      H            =      L            ?      P            A      T            F      X            P      \            d      `            i      d            q      h            y      l            ہ      p                  t                  x                  |                                                                   
                                                                                          %                                                                                                                                                                  ڂ                                                                                                                                                                                    ܄                                                                                                                                                                   !                  &                  0                  7                  9                   ;      $            <      (            =      ,            ?      0            C      4            E      8            G      <            I      @            N      D            j      H            n      L            p      P            r      T            t      X            y      \                  `                  d                  h                  l                  p                  t            s      x                  |                                                                                                                        ڈ                  ވ                                                                                                            2                  F                  e                  i                  k                  m                  o                  q                  v                  }                                                                                                                              Љ                  щ                  Ӊ                  Չ                   ׉                  ܉                  ݉                                                                                                                   $                  (                   ,                  0            	      4                  8            5      <            6      @            8      D            :      H            <      L            A      P            P      T            W      X            `      \            e      `            i      d            p      h                  l                  p                  t                  x                  |                                                                                    Ŋ                  ʊ                  Ί                  Պ                  ۊ                  3                  4                  5                  7                  9                  ;                  =                  B                  F                  P                  W                  \                  e                  j                  n                  u                  {                  ϋ                  Ћ                  ы                  Ӌ                  Ջ                  ׋                  ً                   ދ                                                                            =                  W                  S                  Y                         $                  (                  ,                  0                  4            
      8                  <                  @            )      D            .      H            0      L            6      P            B      T            G      X            P      \            V      `            Y      d                  h                  l                  p                  t                  x                  |            ی                  ܌                                                                                                                              >                  C                  P                  V                  Y                  `                                                                                                                                                                                                                                                                                                                   *                  0                  6                   :                  M                  N                  S                                                                                                 $                  (                  ,            1      0            2      4            4      8            9      <            B      @            P      D            }      H            W      L                  P                  T                  X                  \                   `                  d                  h                   l            &      p            *      t                  x                  |                                                                                    :                  ;                  @                  m                  n                  s                                                                        Ò                  Œ                  ƒ                  ǒ                  ђ                  #                  '                  (                  *                  ,                  .                  3                                                                       X                                        f                       9                f                                       f          $                   (          f          0             h3      4                    <             3      @                    H             6      L                    T             R      X          R          `             F      d          R          l             h      p          R          x             {      |                                 ~                                                                                                                                                              3                   W                   *                    R                   R                   b                     $      $             j      (          X  
       0             g      4             y      8                    @                   D                   H          X  
       P                   T                   X                    `             :      d             S      h             
                                   4                                        PE                   `                
         (         
         0         
         8         
   `      `                  p            `D                  
                  D                                    D                  '                   E               
                  
                   
                   
                      .                                   i                   h                   T                                       
         0                  8            z                                  
   ,               
    ,               
   +               
    +                         8         
         `            z                  @               
   ,               
   @,               
   +               
   @+               
   *               
   *               
   @*               
    *                
   )               
   )               
   @)               
    )                
   (      (         
   (      0         
   @(      8         
    (      @         
   '      H         
   '      P         
   @'      X         
    '      `         
   &      h         
   &      p         
   @&      x         
    &               
   %               
   %               
   @%               
    %               
   $               
   $               
   @$               
    $               
   #               
   #               
   @#               
    #               
   "               
   "               
   @"               
    "                
   !               
   !               
   @!               
    !                
          (         
          0         
   @       8         
           @         
         H         
         P         
   @      X         
          `         
         h         
         p         
   @      x         
                   
                  
                  
   @               
                   
                  
                  
   @               
                   
                  
                  
   @               
                   
                  
                  
   @               
           	         
         	         
         	         
   @      	         
           	         
         (	         
         0	         
   @      8	         
          @	         
         H	         
         P	         
   @      X	         
          `	         
         h	         
         p	         
   @      x	         
          	         
         	         
         	         
   @      	         
          	         
         	         
         	         
   @      	         
          	         
         	         
         	         
   @      	         
          	         
         	         
         	         
   @      	         
           
         
         
         
         
         
   @      
         
           
         
         (
         
         0
         
   @      8
         
          @
         
         H
         
         P
         
   @      X
         
          `
         
         h
         
         p
         
   @      x
         
          
         
   
      
         
   
      
         
   @
      
         
    
      
         
         
         
         
         
   @      
         
          
         
         
         
         
         
   @      
         
                                          {                
   (      @                  P             {      `         
   h                                     {               
                                        {               
                                         {                
   (      @                  P             {      `         
   h                                     {               
                     	                   {               
          
                  
             {       
         
   (
      @
                  P
             {      `
         
   h
      
            )      
             {      
         
   
      
            3      
             {      
         
   
                   @                   {                
   (      @            I      P             {      `         
   h                  S                   {               
                     ]                   {               
                      j                   {                
   (      @            s      P             {      `         
   h                  }                   {               
                                        {               
                                         {                
   (      @                  P             {      `         
   h                                     {               
                                        {               
                                         {                
   (      @                  P             {      `         
   h                                     {               
                                        {               
                                         {                
   (      @                  P             {      `         
   h                                     {               
                                        {               
                                         {                
   (      @                  P             {      `         
   h                  %                   {               
                     /                   {               
                      <                   {                
   (      @            E      P             {      `         
   h                  O                   {               
                     Y                   {               
                      f                   {                
   (      @            o      P             {      `         
   h                  y                   {               
                                        {               
                                         {                
   (      @                  P             {      `         
   h                                     {               
                                        {               
                                         {                
   (      @                  P             {      `         
   h                                     {               
                                        {               
                                         {                
   (      @                  P             {      `         
   h                                     {               
                                        {               
                                         {                
   (      @                  P             {      `         
   h                  !                   {               
                     +                   {               
                      8                   {                
   (      @            A      P             {      `         
   h                  K                   {               
                     U                   {               
                      b                   {                
   (      @            k      P             {      `         
   h                  u                   {               
                                        {               
                                         {                
   (      @                  P             {      `         
   h                                     {               
                                        {               
                                         {                
   (      @                  P             {      `         
   h                                     {               
                                        {               
                                         {                
   (      @                  P             {      `         
   h                                     {               
                                        {               
                      
                   {                
   (      @                  P             {      `         
   h                                     {               
                     '                   {               
                       4                    {                 
   (       @             =      P              {      `          
   h                    G                    {                
                       Q                    {                
           !            ^      !             {       !         
   (!      @!            f      P!             {      `!         
   h!      !            o      !             {      !         
   !      !            x      !             {      !         
   !       "                  "             {       "         
   ("      @"                  P"             {      `"         
   h"      "                  "             {      "         
   "      "                  "             {      "         
   "       #                  #             {       #         
   (#      @#                  P#             {      `#         
   h#      #                  #             {      #         
   #      #                  #             {      #         
   #       $                  $             {       $         
   ($      @$                  P$             {      `$         
   h$      $                  $             {      $         
   $      $                  $             {      $         
   $       %                  %             {       %         
   (%      @%                  P%             {      `%         
   h%      %            	      %             {      %         
   %      %            	      %             {      %         
   %       &            	      &             {       &         
   (&      @&            $	      P&             {      `&         
   h&      &            -	      &             {      &         
   &      &            6	      &             {      &         
   &       '            B	      '             {       '         
   ('      @'            J	      P'             {      `'         
   h'      '            S	      '             {      '         
   '      '            \	      '             {      '         
   '       (            h	      (             {       (         
   ((      @(            p	      P(             {      `(         
   h(      (            y	      (             {      (         
   (      (            	      (             {      (         
   (       )            	      )             {       )         
   ()      @)            	      P)             {      `)         
   h)      )            	      )             {      )         
   )      )            	      )             {      )         
   )       *            	      *             {       *         
   (*      @*            	      P*             {      `*         
   h*      *            	      *             {      *         
   *      *            	      *             {      *                     +            	      +            {       +         
   (+      @+            	      P+             {      `+         
   h+      +            	      +            {      +         
   +      +            	      +             {      +         
   +       ,            	      ,            {       ,         
   (,      @,            	      P,             {      `,         
   h,      ,            	      ,            {      ,         
   ,      ,            	      ,             {      ,         
   ,      -            	      -            
      -            
      -            [      -            
      -            
      -            
       .            
       .            
      (.            %
      .             }      .         
           .         X          .         
   .      .         
    -      0/         P                                            @                    I                            8                   @                   H                   P                   p                   x                                :                                      H
                   p                   O
                   m
                   H
                                      O
                   <
                 5                     T                        `P                _                       SW                _                                       s                       ؀                $                              $          O          (             @      ,          s          0             _      4          $          8             v      <          O                     X                       p}                 
   .                    h                                       {                                     
   -      0          
   0       8          
   0       @          9                     	                     s                               (          P          8         T          P         5           .symtab .strtab .shstrtab .note.gnu.build-id .note.Linux .rela.text .rela.text.unlikely .rela.exit.text .rela.init.text .rela.static_call.text .rela__ksymtab .rela__ksymtab_gpl __kcrctab __kcrctab_gpl .rela.rodata __ksymtab_strings .rela__mcount_loc .rodata.str1.1 .rodata.str1.8 .rela.smp_locks .rela.retpoline_sites .rela.return_sites .orc_unwind .rela.orc_unwind_ip .modinfo .rela__tracepoints_ptrs __tracepoints_strings __versions .rela__bug_table .rela__jump_table .rela.data .rela__dyndbg .data.once .rela.exit.data .rela.init.data .data..ro_after_init .rela.static_call_sites .rela__bpf_raw_tp_map .rela_ftrace_events .rela.ref.data .rela__tracepoints .rela.gnu.linkonce.this_module .bss .comment .note.GNU-stack .BTF .gnu_debuglink                                                                                         @       $                              .                     d       <                              ?                                                         :      @                          G                    J                                                        E      @               |     H	      G                    ^                     ~      $                              Y      @               (            G                    n                                                        i      @                          G   	                 ~                     <                                    y      @                           G                                         D      0                                   @                     %      G   
                                      t                                         @               г           G                                                                                                        4                                                  `                                          @               x           G                          2               8      _                                                                                          @               `           G                          2               '      
                            
     2                     E                                                (                                         @                           G                    .                    D                                    )     @                          G                    D                    0                                   ?     @               @     `      G                    R                          ,                             c                                                      ^     @                          G   !                 r                    ,                                                       ,-                                   {     @               (            G   $                                     0-                                                       @-      #                                                  @P                                        @               @           G   (                                     P     p                                   @                          G   *                                     Q     @/                                   @                    7      G   ,                                                                            @                          G   .                                     ؁                                                                                                @                           G   1                                                                             @                           G   3                                                                        5                    p     @                              0     @                          G   6                 M                                                         H     @               `     0       G   8                 c                                                       ^     @                           G   :                 w                          H                               r     @                           G   <                                     `     H                                    @               h     `       G   >                                                        @                    @                    0       G   @                                     @                                        0               @                                                      Ј                                                         Ј     3                                                  ̼                                                                    H                   	                      V                                                                                          0	*H
01
0	`He0	*H
1a0]080 10UDebian Secure Boot CA2(oe:B&C0	`He0
	*H
  #
ee$b+%(0a WP6803YǚGC5wկa~|Ĭ2tVc?; zZ [U>i ' x^!V	K$i<}KxMT+1/8h@D!T:&)aXϝ1N?9d^Ж%Ά
Sq8ͼ(< e|pu& C¦͒,.q=d^5[         ~Module signature appended~
 070701000A0391000081A4000000000000000000000001682F6DA700003E33000000CA0000000200000000000000000000003D00000000usr/lib/modules/6.1.0-37-amd64/kernel/drivers/net/phy/lxt.ko  ELF          >                    3          @     @ # "          GNU v!HxuR&HLp        Linux                Linux   6.1.0-37-amd64      (  H  1ɺ       f    SH(     H      xu1[    H       [    H    1ې    SH(     H      x;(  H         x Āu1[    H       [    H    1D      H   t1    1         SH(     H      uHǃ      1[    (  H  1    (  H  1%  !    1Hǃ      ǃ     [    f.         SH(     H  x:1ɺ       t[    (  H         1[O           xȋ(        H  [    ff.         SH(     H  xU1ɺ       t[    (  H         xߋ(  H         1[O           x(  H         x(        H  [    fD      AT   USH(  H      Ņ  (  H  1    Ņj  A   (  H           E9Au  	Ј    (  H         Ņ   A   (  H     // class template regex -*- C++ -*-

// Copyright (C) 2007-2022 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library.  This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.

// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.

// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
// <http://www.gnu.org/licenses/>.

/**
 * @file tr1/regex
 * @author Stephen M. Webb  <stephen.webb@bregmasoft.ca>
 * This is a TR1 C++ Library header. 
 */

#ifndef _GLIBCXX_TR1_REGEX
#define _GLIBCXX_TR1_REGEX 1

#pragma GCC system_header

#include <algorithm>
#include <bitset>
#include <iterator>
#include <locale>
#include <stdexcept>
#include <string>
#include <vector>
#include <utility>
#include <sstream>

namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION

namespace tr1
{
/**
 * @defgroup tr1_regex Regular Expressions
 * A facility for performing regular expression pattern matching.
 */
 ///@{

/** @namespace std::regex_constants
 *  @brief ISO C++ 0x entities sub namespace for regex.
 */
namespace regex_constants
{
  /**
   * @name 5.1 Regular Expression Syntax Options
   */
  ///@{
  enum __syntax_option
    {
      _S_icase,
      _S_nosubs,
      _S_optimize,
      _S_collate,
      _S_ECMAScript,
      _S_basic,
      _S_extended,
      _S_awk,
      _S_grep,
      _S_egrep,
      _S_syntax_last
    };

  /**
   * @brief This is a bitmask type indicating how to interpret the regex.
   *
   * The @c syntax_option_type is implementation defined but it is valid to
   * perform bitwise operations on these values and expect the right thing to
   * happen.
   *
   * A valid value of type syntax_option_type shall have exactly one of the
   * elements @c ECMAScript, @c basic, @c extended, @c awk, @c grep, @c egrep
   * %set.
   */
  typedef unsigned int syntax_option_type;

  /** 
   * Specifies that the matching of regular expressions against a character
   * sequence shall be performed without regard to case.
   */
  static const syntax_option_type icase      = 1 << _S_icase;

  /**
   * Specifies that when a regular expression is matched against a character
   * container sequence, no sub-expression matches are to be stored in the
   * supplied match_results structure.
   */
  static const syntax_option_type nosubs     = 1 << _S_nosubs;

  /**
   * Specifies that the regular expression engine should pay more attention to
   * the speed with which regular expressions are matched, and less to the
   * speed with which regular expression objects are constructed. Otherwise
   * it has no detectable effect on the program output.
   */
  static const syntax_option_type optimize   = 1 << _S_optimize;

  /**
   * Specifies that character ranges of the form [a-b] should be locale
   * sensitive.
   */
  static const syntax_option_type collate    = 1 << _S_collate;

  /**
   * Specifies that the grammar recognized by the regular expression engine is
   * that used by ECMAScript in ECMA-262 [Ecma International, ECMAScript
   * Language Specification, Standard Ecma-262, third edition, 1999], as
   * modified in tr1 section [7.13].  This grammar is similar to that defined
   * in the PERL scripting language but extended with elements found in the
   * POSIX regular expression grammar.
   */
  static const syntax_option_type ECMAScript = 1 << _S_ECMAScript;

  /**
   * Specifies that the grammar recognized by the regular expression engine is
   * that used by POSIX basic regular expressions in IEEE Std 1003.1-2001,
   * Portable Operating System Interface (POSIX), Base Definitions and
   * Headers, Section 9, Regular Expressions [IEEE, Information Technology --
   * Portable Operating System Interface (POSIX), IEEE Standard 1003.1-2001].
   */
  static const syntax_option_type basic      = 1 << _S_basic;

  /**
   * Specifies that the grammar recognized by the regular expression engine is
   * that used by POSIX extended regular expressions in IEEE Std 1003.1-2001,
   * Portable Operating System Interface (POSIX), Base Definitions and Headers,
   * Section 9, Regular Expressions.
   */
  static const syntax_option_type extended   = 1 << _S_extended;

  /**
   * Specifies that the grammar recognized by the regular expression engine is
   * that used by POSIX utility awk in IEEE Std 1003.1-2001.  This option is
   * identical to syntax_option_type extended, except that C-style escape
   * sequences are supported.  These sequences are: 
   * \\\\, \\a, \\b, \\f, 
   * \\n, \\r, \\t , \\v, 
   * \\&apos;, &apos;, and \\ddd 
   * (where ddd is one, two, or three octal digits).  
   */
  static const syntax_option_type awk        = 1 << _S_awk;

  /**
   * Specifies that the grammar recognized by the regular expression engine is
   * that used by POSIX utility grep in IEEE Std 1003.1-2001.  This option is
   * identical to syntax_option_type basic, except that newlines are treated
   * as whitespace.
   */
  static const syntax_option_type grep       = 1 << _S_grep;

  /**
   * Specifies that the grammar recognized by the regular expression engine is
   * that used by POSIX utility grep when given the -E option in
   * IEEE Std 1003.1-2001.  This option is identical to syntax_option_type 
   * extended, except that newlines are treated as whitespace.
   */
  static const syntax_option_type egrep      = 1 << _S_egrep;

  ///@}

  /**
   * @name 5.2 Matching Rules
   *
   * Matching a regular expression against a sequence of characters [first,
   * last) proceeds according to the rules of the grammar specified for the
   * regular expression object, modified according to the effects listed
   * below for any bitmask elements set.
   *
   */
  ///@{

  enum __match_flag
    {
      _S_not_bol,
      _S_not_eol,
      _S_not_bow,
      _S_not_eow,
      _S_any,
      _S_not_null,
      _S_continuous,
      _S_prev_avail,
      _S_sed,
      _S_no_copy,
      _S_first_only,
      _S_match_flag_last
    };

  /**
   * @brief This is a bitmask type indicating regex matching rules.
   *
   * The @c match_flag_type is implementation defined but it is valid to
   * perform bitwise operations on these values and expect the right thing to
   * happen.
   */
  typedef std::bitset<_S_match_flag_last> match_flag_type;

  /**
   * The default matching rules.
   */
  static const match_flag_type match_default     = 0;

  /**
   * The first character in the sequence [first, last) is treated as though it
   * is not at the beginning of a line, so the character (^) in the regular
   * expression shall not match [first, first).
   */
  static const match_flag_type match_not_bol     = 1 << _S_not_bol;

  /**
   * The last character in the sequence [first, last) is treated as though it
   * is not at the end of a line, so the character ($) in the regular
   * expression shall not match [last, last).
   */
  static const match_flag_type match_not_eol     = 1 << _S_not_eol;
   
  /**
   * The expression \\b is not matched against the sub-sequence
   * [first,first).
   */
  static const match_flag_type match_not_bow     = 1 << _S_not_bow;
   
  /**
   * The expression \\b should not be matched against the sub-sequence
   * [last,last).
   */
  static const match_flag_type match_not_eow     = 1 << _S_not_eow;
   
  /**
   * If more than one match is possible then any match is an acceptable
   * result.
   */
  static const match_flag_type match_any         = 1 << _S_any;
   
  /**
   * The expression does not match an empty sequence.
   */
  static const match_flag_type match_not_null    = 1 << _S_not_null;
   
  /**
   * The expression only matches a sub-sequence that begins at first .
   */
  static const match_flag_type match_continuous  = 1 << _S_continuous;
   
  /**
   * --first is a valid iterator position.  When this flag is set then the
   * flags match_not_bol and match_not_bow are ignored by the regular
   * expression algorithms 7.11 and iterators 7.12.
   */
  static const match_flag_type match_prev_avail  = 1 << _S_prev_avail;

  /**
   * When a regular expression match is to be replaced by a new string, the
   * new string is constructed using the rules used by the ECMAScript replace
   * function in ECMA- 262 [Ecma International, ECMAScript Language
   * Specification, Standard Ecma-262, third edition, 1999], part 15.5.4.11
   * String.prototype.replace. In addition, during search and replace
   * operations all non-overlapping occurrences of the regular expression
   * are located and replaced, and sections of the input that did not match
   * the expression are copied unchanged to the output string.
   * 
   * Format strings (from ECMA-262 [15.5.4.11]):
   * @li $$  The dollar-sign itself ($)
   * @li $&  The matched substring.
   * @li $`  The portion of @a string that precedes the matched substring.
   *         This would be match_results::prefix().
   * @li $'  The portion of @a string that follows the matched substring.
   *         This would be match_results::suffix().
   * @li $n  The nth capture, where n is in [1,9] and $n is not followed by a
   *         decimal digit.  If n <= match_results::size() and the nth capture
   *         is undefined, use the empty string instead.  If n >
   *         match_results::size(), the result is implementation-defined.
   * @li $nn The nnth capture, where nn is a two-digit decimal number on
   *         [01, 99].  If nn <= match_results::size() and the nth capture is
   *         undefined, use the empty string instead. If
   *         nn > match_results::size(), the result is implementation-defined.
   */
  static const match_flag_type format_default    = 0;

  /**
   * When a regular expression match is to be replaced by a new string, the
   * new string is constructed using the rules used by the POSIX sed utility
   * in IEEE Std 1003.1- 2001 [IEEE, Information Technology -- Portable
   * Operating System Interface (POSIX), IEEE Standard 1003.1-2001].
   */
  static const match_flag_type format_sed        = 1 << _S_sed;

  /**
   * During a search and replace operation, sections of the character
   * container sequence being searched that do not match the regular
   * expression shall not be copied to the output string.
   */
  static const match_flag_type format_no_copy    = 1 << _S_no_copy;

  /**
   * When specified during a search and replace operation, only the first
   * occurrence of the regular expression shall be replaced.
   */
  static const match_flag_type format_first_only = 1 << _S_first_only;

  ///@}

  /**
   * @name 5.3 Error Types
   */
  ///@{
 
  enum error_type
    {
      _S_error_collate,
      _S_error_ctype,
      _S_error_escape,
      _S_error_backref,
      _S_error_brack,
      _S_error_paren,
      _S_error_brace,
      _S_error_badbrace,
      _S_error_range,
      _S_error_space,
      _S_error_badrepeat,
      _S_error_complexity,
      _S_error_stack,
      _S_error_last
    };

  /** The expression contained an invalid collating element name. */
  static const error_type error_collate(_S_error_collate);

  /** The expression contained an invalid character class name. */
  static const error_type error_ctype(_S_error_ctype);

  /**
   * The expression contained an invalid escaped character, or a trailing
   * escape.
   */
  static const error_type error_escape(_S_error_escape);

  /** The expression contained an invalid back reference. */
  static const error_type error_backref(_S_error_backref);

  /** The expression contained mismatched [ and ]. */
  static const error_type error_brack(_S_error_brack);

  /** The expression contained mismatched ( and ). */
  static const error_type error_paren(_S_error_paren);

  /** The expression contained mismatched { and } */
  static const error_type error_brace(_S_error_brace);

  /** The expression contained an invalid range in a {} expression. */
  static const error_type error_badbrace(_S_error_badbrace);

  /**
   * The expression contained an invalid character range,
   * such as [b-a] in most encodings.
   */
  static const error_type error_range(_S_error_range);

  /**
   * There was insufficient memory to convert the expression into a
   * finite state machine.
   */
  static const error_type error_space(_S_error_space);

  /**
   * One of <em>*?+{</em> was not preceded by a valid regular expression.
   */
  static const error_type error_badrepeat(_S_error_badrepeat);

  /**
   * The complexity of an attempted match against a regular expression
   * exceeded a pre-set level.
   */
  static const error_type error_complexity(_S_error_complexity);

  /**
   * There was insufficient memory to determine whether the
   * regular expression could match the specified character sequence.
   */
  static const error_type error_stack(_S_error_stack);

  ///@}
}

  // [7.8] Class regex_error
  /**
   *  @brief A regular expression exception class.
   *  @ingroup exceptions
   *
   *  The regular expression library throws objects of this class on error.
   */
  class regex_error
  : public std::runtime_error
  {
  public:
    /**
     * @brief Constructs a regex_error object.
     *
     * @param ecode the regex error code.
     */
    explicit
    regex_error(regex_constants::error_type __ecode)
    : std::runtime_error("regex_error"), _M_code(__ecode)
    { }

    /**
     * @brief Gets the regex error code.
     *
     * @returns the regex error code.
     */
    regex_constants::error_type
    code() const
    { return _M_code; }

  protected:
    regex_constants::error_type _M_code;
  };

  // [7.7] Class regex_traits
  /**
   * @brief Describes aspects of a regular expression.
   *
   * A regular expression traits class that satisfies the requirements of tr1
   * section [7.2].
   *
   * The class %regex is parameterized around a set of related types and
   * functions used to complete the definition of its semantics.  This class
   * satisfies the requirements of such a traits class.
   */
  template<typename _Ch_type>
    struct regex_traits
    {
    public:
      typedef _Ch_type                     char_type;
      typedef std::basic_string<char_type> string_type;
      typedef std::locale                  locale_type;
      typedef std::ctype_base::mask        char_class_type;

    public:
      /**
       * @brief Constructs a default traits object.
       */
      regex_traits()
      { }
      
      /**
       * @brief Gives the length of a C-style string starting at @p __p.
       *
       * @param __p a pointer to the start of a character sequence.
       *
       * @returns the number of characters between @p *__p and the first
       * default-initialized value of type @p char_type.  In other words, uses
       * the C-string algorithm for determining the length of a sequence of
       * characters.
       */
      static std::size_t
      length(const char_type* __p)
      { return string_type::traits_type::length(__p); }

      /**
       * @brief Performs the identity translation.
       *
       * @param c A character to the locale-specific character set.
       *
       * @returns c.
       */
      char_type
      translate(char_type __c) const
      { return __c; }
      
      /**
       * @brief Translates a character into a case-insensitive equivalent.
       *
       * @param c A character to the locale-specific character set.
       *
       * @returns the locale-specific lower-case equivalent of c.
       * @throws std::bad_cast if the imbued locale does not support the ctype
       *         facet.
       */
      char_type
      translate_nocase(char_type __c) const
      {
	using std::ctype;
	using std::use_facet;
	return use_facet<ctype<char_type> >(_M_locale).tolower(__c);
      }
      
      /**
       * @brief Gets a sort key for a character sequence.
       *
       * @param first beginning of the character sequence.
       * @param last  one-past-the-end of the character sequence.
       *
       * Returns a sort key for the character sequence designated by the
       * iterator range [F1, F2) such that if the character sequence [G1, G2)
       * sorts before the character sequence [H1, H2) then
       * v.transform(G1, G2) < v.transform(H1, H2).
       *
       * What this really does is provide a more efficient way to compare a
       * string to multiple other strings in locales with fancy collation
       * rules and equivalence classes.
       *
       * @returns a locale-specific sort key equivalent to the input range.
       *
       * @throws std::bad_cast if the current locale does not have a collate
       *         facet.
       */
      template<typename _Fwd_iter>
        string_type
        transform(_Fwd_iter __first, _Fwd_iter __last) const
        {
	  using std::collate;
	  using std::use_facet;
	  const collate<_Ch_type>& __c(use_facet<
				       collate<_Ch_type> >(_M_locale));
	  string_type __s(__first, __last);
	  return __c.transform(__s.data(), __s.data() + __s.size());
	}

      /**
       * @brief Dunno.
       *
       * @param first beginning of the character sequence.
       * @param last  one-past-the-end of the character sequence.
       *
       * Effects: if typeid(use_facet<collate<_Ch_type> >) ==
       * typeid(collate_byname<_Ch_type>) and the form of the sort key
       * returned by collate_byname<_Ch_type>::transform(first, last) is known
       * and can be converted into a primary sort key then returns that key,
       * otherwise returns an empty string. WTF??
       *
       * @todo Implement this function.
       */
      template<typename _Fwd_iter>
        string_type
        transform_primary(_Fwd_iter __first, _Fwd_iter __last) const;

      /**
       * @brief Gets a collation element by name.
       *
       * @param first beginning of the collation element name.
       * @param last  one-past-the-end of the collation element name.
       * 
       * @returns a sequence of one or more characters that represents the
       * collating element consisting of the character sequence designated by
       * the iterator range [first, last). Returns an empty string if the
       * character sequence is not a valid collating element.
       *
       * @todo Implement this function.
       */
      template<typename _Fwd_iter>
        string_type
        lookup_collatename(_Fwd_iter __first, _Fwd_iter __last) const;

      /**
       * @brief Maps one or more characters to a named character
       *        classification.
       *
       * @param first beginning of the character sequence.
       * @param last  one-past-the-end of the character sequence.
       *
       * @returns an unspecified value that represents the character
       * classification named by the character sequence designated by the
       * iterator range [first, last). The value returned shall be independent
       * of the case of the characters in the character sequence. If the name
       * is not recognized then returns a value that compares equal to 0.
       *
       * At least the following names (or their wide-character equivalent) are
       * supported.
       * - d
       * - w
       * - s
       * - alnum
       * - alpha
       * - blank
       * - cntrl
       * - digit
       * - graph
       * - lower
       * - print
       * - punct
       * - space
       * - upper
       * - xdigit
       *
       * @todo Implement this function.
       */
      template<typename _Fwd_iter>
        char_class_type
        lookup_classname(_Fwd_iter __first, _Fwd_iter __last) const;

      /**
       * @brief Determines if @p c is a member of an identified class.
       *
       * @param c a character.
       * @param f a class type (as returned from lookup_classname).
       *
       * @returns true if the character @p c is a member of the classification
       * represented by @p f, false otherwise.
       *
       * @throws std::bad_cast if the current locale does not have a ctype
       *         facet.
       */
      bool
      isctype(_Ch_type __c, char_class_type __f) const;

      /**
       * @brief Converts a digit to an int.
       *
       * @param ch    a character representing a digit.
       * @param radix the radix if the numeric conversion (limited to 8, 10,
       *              or 16).
       * 
       * @returns the value represented by the digit ch in base radix if the
       * character ch is a valid digit in base radix; otherwise returns -1.
       */
      int
      value(_Ch_type __ch, int __radix) const;
      
      /**
       * @brief Imbues the regex_traits object with a copy of a new locale.
       *
       * @param loc A locale.
       *
       * @returns a copy of the previous locale in use by the regex_traits
       *          object.
       *
       * @note Calling imbue with a different locale than the one currently in
       *       use invalidates all cached data held by *this.
       */
      locale_type
      imbue(locale_type __loc)
      {
	std::swap(_M_locale, __loc);
	return __loc;
      }
      
      /**
       * @brief Gets a copy of the current locale in use by the regex_traits
       * object.
       */
      locale_type
      getloc() const
      { return _M_locale; }
      
    protected:
      locale_type _M_locale;
    };

  template<typename _Ch_type>
    bool regex_traits<_Ch_type>::
    isctype(_Ch_type __c, char_class_type __f) const
    {
      using std::ctype;
      using std::use_facet;
      const ctype<_Ch_type>& __ctype(use_facet<
				     ctype<_Ch_type> >(_M_locale));
      
      if (__ctype.is(__c, __f))
	return true;
#if 0
      // special case of underscore in [[:w:]]
      if (__c == __ctype.widen('_'))
	{
	  const char* const __wb[] = "w";
	  char_class_type __wt = this->lookup_classname(__wb,
							__wb + sizeof(__wb));
	  if (__f | __wt)
	    return true;
	}
    
      // special case of [[:space:]] in [[:blank:]]
      if (__c == __ctype.isspace(__c))
	{
	  const char* const __bb[] = "blank";
	  char_class_type __bt = this->lookup_classname(__bb,
							__bb + sizeof(__bb));
	  if (__f | __bt)
	    return true;
	}
#endif
      return false;
    }

  template<typename _Ch_type>
    int regex_traits<_Ch_type>::
    value(_Ch_type __ch, int __radix) const
    {
      std::basic_istringstream<_Ch_type> __is(string_type(1, __ch));
      int __v;
      if (__radix == 8)
	__is >> std::oct;
      else if (__radix == 16)
	__is >> std::hex;
      __is >> __v;
      return __is.fail() ? -1 : __v;
    }

  // [7.8] Class basic_regex
  /**
   * Objects of specializations of this class represent regular expressions
   * constructed from sequences of character type @p _Ch_type.
   *
   * Storage for the regular expression is allocated and deallocated as
   * necessary by the member functions of this class.
   */
  template<typename _Ch_type, typename _Rx_traits = regex_traits<_Ch_type> >
    class basic_regex
    {
    public:
      // types:
      typedef _Ch_type                              value_type;
      typedef regex_constants::syntax_option_type flag_type;
      typedef typename _Rx_traits::locale_type  locale_type;
      typedef typename _Rx_traits::string_type  string_type;

      /**
       * @name Constants
       * tr1 [7.8.1] std [28.8.1]
       */
      ///@{
      static const regex_constants::syntax_option_type icase
        = regex_constants::icase;
      static const regex_constants::syntax_option_type nosubs
        = regex_constants::nosubs;
      static const regex_constants::syntax_option_type optimize
        = regex_constants::optimize;
      static const regex_constants::syntax_option_type collate
        = regex_constants::collate;
      static const regex_constants::syntax_option_type ECMAScript
        = regex_constants::ECMAScript;
      static const regex_constants::syntax_option_type basic
        = regex_constants::basic;
      static const regex_constants::syntax_option_type extended
        = regex_constants::extended;
      static const regex_constants::syntax_option_type awk
        = regex_constants::awk;
      static const regex_constants::syntax_option_type grep
        = regex_constants::grep;
      static const regex_constants::syntax_option_type egrep
        = regex_constants::egrep;
      ///@}

      // [7.8.2] construct/copy/destroy
      /**
       * Constructs a basic regular expression that does not match any
       * character sequence.
       */
      basic_regex()
      : _M_flags(regex_constants::ECMAScript), _M_pattern(), _M_mark_count(0)
      { _M_compile(); }

      /**
       * @brief Constructs a basic regular expression from the sequence
       * [p, p + char_traits<_Ch_type>::length(p)) interpreted according to the
       * flags in @p f.
       *
       * @param p A pointer to the start of a C-style null-terminated string
       *          containing a regular expression.
       * @param f Flags indicating the syntax rules and options.
       *
       * @throws regex_error if @p p is not a valid regular expression.
       */
      explicit
      basic_regex(const _Ch_type* __p,
		  flag_type __f = regex_constants::ECMAScript)
      : _M_flags(__f), _M_pattern(__p), _M_mark_count(0)
      { _M_compile(); }

      /**
       * @brief Constructs a basic regular expression from the sequence
       * [p, p + len) interpreted according to the flags in @p f.
       *
       * @param p   A pointer to the start of a string containing a regular
       *            expression.
       * @param len The length of the string containing the regular expression.
       * @param f   Flags indicating the syntax rules and options.
       *
       * @throws regex_error if @p p is not a valid regular expression.
       */
      basic_regex(const _Ch_type* __p, std::size_t __len, flag_type __f)
      : _M_flags(__f) , _M_pattern(__p, __len), _M_mark_count(0)
      { _M_compile(); }

      /**
       * @brief Copy-constructs a basic regular expression.
       *
       * @param rhs A @p regex object.
     */
      basic_regex(const basic_regex& __rhs)
      : _M_flags(__rhs._M_flags), _M_pattern(__rhs._M_pattern),
	_M_mark_count(__rhs._M_mark_count)
      { _M_compile(); }

      /**
       * @brief Constructs a basic regular expression from the string
       * @p s interpreted according to the flags in @p f.
       *
       * @param s A string containing a regular expression.
       * @param f Flags indicating the syntax rules and options.
       *
       * @throws regex_error if @p s is not a valid regular expression.
       */
      template<typename _Ch_traits, typename _Ch_alloc>
        explicit
        basic_regex(const basic_string<_Ch_type, _Ch_traits, _Ch_alloc>& __s,
		    flag_type __f = regex_constants::ECMAScript)
	: _M_flags(__f), _M_pattern(__s.begin(), __s.end()), _M_mark_count(0)
        { _M_compile(); }

      /**
       * @brief Constructs a basic regular expression from the range
       * [first, last) interpreted according to the flags in @p f.
       *
       * @param first The start of a range containing a valid regular
       *              expression.
       * @param last  The end of a range containing a valid regular
       *              expression.
       * @param f     The format flags of the regular expression.
       *
       * @throws regex_error if @p [first, last) is not a valid regular
       *         expression.
       */
      template<typename _InputIterator>
        basic_regex(_InputIterator __first, _InputIterator __last, 
		    flag_type __f = regex_constants::ECMAScript)
	: _M_flags(__f), _M_pattern(__first, __last), _M_mark_count(0)
        { _M_compile(); }

#ifdef _GLIBCXX_INCLUDE_AS_CXX11
      /**
       * @brief Constructs a basic regular expression from an initializer list.
       *
       * @param l  The initializer list.
       * @param f  The format flags of the regular expression.
       *
       * @throws regex_error if @p l is not a valid regular expression.
       */
      basic_regex(initializer_list<_Ch_type> __l,
		  flag_type __f = regex_constants::ECMAScript)
	: _M_flags(__f), _M_pattern(__l.begin(), __l.end()), _M_mark_count(0)
        { _M_compile(); }
#endif

      /**
       * @brief Destroys a basic regular expression.
       */
      ~basic_regex()
      { }
      
      /**
       * @brief Assigns one regular expression to another.
       */
      basic_regex&
      operator=(const basic_regex& __rhs)
      { return this->assign(__rhs); }

      /**
       * @brief Replaces a regular expression with a new one constructed from
       * a C-style null-terminated string.
       *
       * @param A pointer to the start of a null-terminated C-style string
       *        containing a regular expression.
       */
      basic_regex&
      operator=(const _Ch_type* __p)
      { return this->assign(__p, flags()); }
      
      /**
       * @brief Replaces a regular expression with a new one constructed from
       * a string.
       *
       * @param A pointer to a string containing a regular expression.
       */
      template<typename _Ch_typeraits, typename _Allocator>
        basic_regex&
        operator=(const basic_string<_Ch_type, _Ch_typeraits, _Allocator>& __s)
        { return this->assign(__s, flags()); }

      // [7.8.3] assign
      /**
       * @brief the real assignment operator.
       *
       * @param that Another regular expression object.
       */
      basic_regex&
      assign(const basic_regex& __that)
      {
	basic_regex __tmp(__that);
	this->swap(__tmp);
	return *this;
      }
      
      /**
       * @brief Assigns a new regular expression to a regex object from a
       * C-style null-terminated string containing a regular expression
       * pattern.
       *
       * @param p     A pointer to a C-style null-terminated string containing
       *              a regular expression pattern.
       * @param flags Syntax option flags.
       *
       * @throws regex_error if p does not contain a valid regular expression
       * pattern interpreted according to @p flags.  If regex_error is thrown,
       * *this remains unchanged.
       */
      basic_regex&
      assign(const _Ch_type* __p,
	     flag_type __flags = regex_constants::ECMAScript)
      { return this->assign(string_type(__p), __flags); }

      /**
       * @brief Assigns a new regular expression to a regex object from a
       * C-style string containing a regular expression pattern.
       *
       * @param p     A pointer to a C-style string containing a
       *              regular expression pattern.
       * @param len   The length of the regular expression pattern string.
       * @param flags Syntax option flags.
       *
       * @throws regex_error if p does not contain a valid regular expression
       * pattern interpreted according to @p flags.  If regex_error is thrown,
       * *this remains unchanged.
       */
      basic_regex&
      assign(const _Ch_type* __p, std::size_t __len, flag_type __flags)
      { return this->assign(string_type(__p, __len), __flags); }

      /**
       * @brief Assigns a new regular expression to a regex object from a 
       * string containing a regular expression pattern.
       *
       * @param s     A string containing a regular expression pattern.
       * @param flags Syntax option flags.
       *
       * @throws regex_error if p does not contain a valid regular expression
       * pattern interpreted according to @p flags.  If regex_error is thrown,
       * *this remains unchanged.
       */
      template<typename _Ch_typeraits, typename _Allocator>
        basic_regex&
        assign(const basic_string<_Ch_type, _Ch_typeraits, _Allocator>& __s,
	       flag_type __f = regex_constants::ECMAScript)
        { 
	  basic_regex __tmp(__s, __f);
	  this->swap(__tmp);
	  return *this;
	}

      /**
       * @brief Assigns a new regular expression to a regex object.
       *
       * @param first The start of a range containing a valid regular
       *              expression.
       * @param last  The end of a range containing a valid regular
       *              expression.
       * @param flags Syntax option flags.
       *
       * @throws regex_error if p does not contain a valid regular expression
       * pattern interpreted according to @p flags.  If regex_error is thrown,
       * the object remains unchanged.
       */
      template<typename _InputIterator>
        basic_regex&
        assign(_InputIterator __first, _InputIterator __last,
	       flag_type __flags = regex_constants::ECMAScript)
        { return this->assign(string_type(__first, __last), __flags); }

#ifdef _GLIBCXX_INCLUDE_AS_CXX11
      /**
       * @brief Assigns a new regular expression to a regex object.
       *
       * @param l     An initializer list representing a regular expression.
       * @param flags Syntax option flags.
       *
       * @throws regex_error if @p l does not contain a valid regular
       * expression pattern interpreted according to @p flags.  If regex_error
       * is thrown, the object remains unchanged.
       */
      basic_regex&
      assign(initializer_list<_Ch_type> __l,
	     flag_type __f = regex_constants::ECMAScript)
      { return this->assign(__l.begin(), __l.end(), __f); }
#endif

      // [7.8.4] const operations
      /**
       * @brief Gets the number of marked subexpressions within the regular
       * expression.
       */
      unsigned int
      mark_count() const
      { return _M_mark_count; }
      
      /**
       * @brief Gets the flags used to construct the regular expression
       * or in the last call to assign().
       */
      flag_type
      flags() const
      { return _M_flags; }
      
      // [7.8.5] locale
      /**
       * @brief Imbues the regular expression object with the given locale.
       *
       * @param loc A locale.
       */
      locale_type
      imbue(locale_type __loc)
      { return _M_traits.imbue(__loc); }
      
      /**
       * @brief Gets the locale currently imbued in the regular expression
       *        object.
       */
      locale_type
      getloc() const
      { return _M_traits.getloc(); }
      
      // [7.8.6] swap
      /**
       * @brief Swaps the contents of two regular expression objects.
       *
       * @param rhs Another regular expression object.
       */
      void
      swap(basic_regex& __rhs)
      {
	std::swap(_M_flags,      __rhs._M_flags);
	std::swap(_M_pattern,    __rhs._M_pattern);
	std::swap(_M_mark_count, __rhs._M_mark_count);
	std::swap(_M_traits,     __rhs._M_traits);
      }
      
    private:
      /**
       * @brief Compiles a regular expression pattern into a NFA.
       * @todo Implement this function.
       */
      void _M_compile();

    protected:
      flag_type    _M_flags;
      string_type  _M_pattern;
      unsigned int _M_mark_count;
      _Rx_traits   _M_traits;
    };
  
  /** @brief Standard regular expressions. */
  typedef basic_regex<char>    regex;
#ifdef _GLIBCXX_USE_WCHAR_T
  /** @brief Standard wide-character regular expressions. */
  typedef basic_regex<wchar_t> wregex;
#endif


  // [7.8.6] basic_regex swap
  /**
   * @brief Swaps the contents of two regular expression objects.
   * @param lhs First regular expression.
   * @param rhs Second regular expression.
   */
  template<typename _Ch_type, typename _Rx_traits>
    inline void
    swap(basic_regex<_Ch_type, _Rx_traits>& __lhs,
	 basic_regex<_Ch_type, _Rx_traits>& __rhs)
    { __lhs.swap(__rhs); }


  // [7.9] Class template sub_match
  /**
   * A sequence of characters matched by a particular marked sub-expression.
   *
   * An object of this class is essentially a pair of iterators marking a
   * matched subexpression within a regular expression pattern match. Such
   * objects can be converted to and compared with std::basic_string objects
   * of a similar base character type as the pattern matched by the regular
   * expression.
   *
   * The iterators that make up the pair are the usual half-open interval
   * referencing the actual original pattern matched.
   */
  template<typename _BiIter>
    class sub_match : public std::pair<_BiIter, _BiIter>
    {
    public:
      typedef typename iterator_traits<_BiIter>::value_type      value_type;
      typedef typename iterator_traits<_BiIter>::difference_type
                                                            difference_type;
      typedef _BiIter                                              iterator;

    public:
      bool matched;
      
      /**
       * Gets the length of the matching sequence.
       */
      difference_type
      length() const
      { return this->matched ? std::distance(this->first, this->second) : 0; }

      /**
       * @brief Gets the matching sequence as a string.
       *
       * @returns the matching sequence as a string.
       *
       * This is the implicit conversion operator.  It is identical to the
       * str() member function except that it will want to pop up in
       * unexpected places and cause a great deal of confusion and cursing
       * from the unwary.
       */
      operator basic_string<value_type>() const
      {
	return this->matched
	  ? std::basic_string<value_type>(this->first, this->second)
	  : std::basic_string<value_type>();
      }
      
      /**
       * @brief Gets the matching sequence as a string.
       *
       * @returns the matching sequence as a string.
       */
      basic_string<value_type>
      str() const
      {
	return this->matched
	  ? std::basic_string<value_type>(this->first, this->second)
	  : std::basic_string<value_type>();
      }
      
      /**
       * @brief Compares this and another matched sequence.
       *
       * @param s Another matched sequence to compare to this one.
       *
       * @retval <0 this matched sequence will collate before @p s.
       * @retval =0 this matched sequence is equivalent to @p s.
       * @retval <0 this matched sequence will collate after @p s.
       */
      int
      compare(const sub_match& __s) const
      { return this->str().compare(__s.str()); }

      /**
       * @brief Compares this sub_match to a string.
       *
       * @param s A string to compare to this sub_match.
       *
       * @retval <0 this matched sequence will collate before @p s.
       * @retval =0 this matched sequence is equivalent to @p s.
       * @retval <0 this matched sequence will collate after @p s.
       */
      int
      compare(const basic_string<value_type>& __s) const
      { return this->str().compare(__s); }
      
      /**
       * @brief Compares this sub_match to a C-style string.
       *
       * @param s A C-style string to compare to this sub_match.
       *
       * @retval <0 this matched sequence will collate before @p s.
       * @retval =0 this matched sequence is equivalent to @p s.
       * @retval <0 this matched sequence will collate after @p s.
       */
      int
      compare(const value_type* __s) const
      { return this->str().compare(__s); }
    };
  
  
  /** @brief Standard regex submatch over a C-style null-terminated string. */
  typedef sub_match<const char*>             csub_match;
  /** @brief Standard regex submatch over a standard string. */
  typedef sub_match<string::const_iterator>  ssub_match;
#ifdef _GLIBCXX_USE_WCHAR_T
  /** @brief Regex submatch over a C-style null-terminated wide string. */
  typedef sub_match<const wchar_t*>          wcsub_match;
  /** @brief Regex submatch over a standard wide string. */
  typedef sub_match<wstring::const_iterator> wssub_match;
#endif

  // [7.9.2] sub_match non-member operators
  
  /**
   * @brief Tests the equivalence of two regular expression submatches.
   * @param lhs First regular expression submatch.
   * @param rhs Second regular expression submatch.
   * @returns true if @a lhs  is equivalent to @a rhs, false otherwise.
   */
  template<typename _BiIter>
    inline bool
    operator==(const sub_match<_BiIter>& __lhs,
	       const sub_match<_BiIter>& __rhs)
    { return __lhs.compare(__rhs) == 0; }

  /**
   * @brief Tests the inequivalence of two regular expression submatches.
   * @param lhs First regular expression submatch.
   * @param rhs Second regular expression submatch.
   * @returns true if @a lhs  is not equivalent to @a rhs, false otherwise.
   */
  template<typename _BiIter>
    inline bool
    operator!=(const sub_match<_BiIter>& __lhs,
	       const sub_match<_BiIter>& __rhs)
    { return __lhs.compare(__rhs) != 0; }

  /**
   * @brief Tests the ordering of two regular expression submatches.
   * @param lhs First regular expression submatch.
   * @param rhs Second regular expression submatch.
   * @returns true if @a lhs precedes @a rhs, false otherwise.
   */
  template<typename _BiIter>
    inline bool
    operator<(const sub_match<_BiIter>& __lhs,
	      const sub_match<_BiIter>& __rhs)
    { return __lhs.compare(__rhs) < 0; }

  /**
   * @brief Tests the ordering of two regular expression submatches.
   * @param lhs First regular expression submatch.
   * @param rhs Second regular expression submatch.
   * @returns true if @a lhs does not succeed @a rhs, false otherwise.
   */
  template<typename _BiIter>
    inline bool
    operator<=(const sub_match<_BiIter>& __lhs,
	       const sub_match<_BiIter>& __rhs)
    { return __lhs.compare(__rhs) <= 0; }

  /**
   * @brief Tests the ordering of two regular expression submatches.
   * @param lhs First regular expression submatch.
   * @param rhs Second regular expression submatch.
   * @returns true if @a lhs does not precede @a rhs, false otherwise.
   */
  template<typename _BiIter>
    inline bool
    operator>=(const sub_match<_BiIter>& __lhs,
	       const sub_match<_BiIter>& __rhs)
    { return __lhs.compare(__rhs) >= 0; }

  /**
   * @brief Tests the ordering of two regular expression submatches.
   * @param lhs First regular expression submatch.
   * @param rhs Second regular expression submatch.
   * @returns true if @a lhs succeeds @a rhs, false otherwise.
   */
  template<typename _BiIter>
    inline bool
    operator>(const sub_match<_BiIter>& __lhs,
	      const sub_match<_BiIter>& __rhs)
    { return __lhs.compare(__rhs) > 0; }

  /**
   * @brief Tests the equivalence of a string and a regular expression
   *        submatch.
   * @param lhs A string.
   * @param rhs A regular expression submatch.
   * @returns true if @a lhs  is equivalent to @a rhs, false otherwise.
   */
  template<typename _Bi_iter, typename _Ch_traits, typename _Ch_alloc>
    inline bool
    operator==(const basic_string<
	       typename iterator_traits<_Bi_iter>::value_type,
	       _Ch_traits, _Ch_alloc>& __lhs,
	       const sub_match<_Bi_iter>& __rhs)
    { return __lhs == __rhs.str(); }

  /**
   * @brief Tests the inequivalence of a string and a regular expression
   *        submatch.
   * @param lhs A string.
   * @param rhs A regular expression submatch.
   * @returns true if @a lhs  is not equivalent to @a rhs, false otherwise.
   */
  template<typename _Bi_iter, typename _Ch_traits, typename _Ch_alloc>
    inline bool
    operator!=(const basic_string<
	       typename iterator_traits<_Bi_iter>::value_type,
	       _Ch_traits, _Ch_alloc>& __lhs, const sub_match<_Bi_iter>& __rhs)
    { return __lhs != __rhs.str(); }

  /**
   * @brief Tests the ordering of a string and a regular expression submatch.
   * @param lhs A string.
   * @param rhs A regular expression submatch.
   * @returns true if @a lhs precedes @a rhs, false otherwise.
   */
  template<typename _Bi_iter, typename _Ch_traits, typename _Ch_alloc>
    inline bool
    operator<(const basic_string<
	      typename iterator_traits<_Bi_iter>::value_type,
	      _Ch_traits, _Ch_alloc>& __lhs, const sub_match<_Bi_iter>& __rhs)
     { return __lhs < __rhs.str(); }

  /**
   * @brief Tests the ordering of a string and a regular expression submatch.
   * @param lhs A string.
   * @param rhs A regular expression submatch.
   * @returns true if @a lhs succeeds @a rhs, false otherwise.
   */
  template<typename _Bi_iter, typename _Ch_traits, typename _Ch_alloc>
    inline bool
    operator>(const basic_string<
	      typename iterator_traits<_Bi_iter>::value_type, 
	      _Ch_traits, _Ch_alloc>& __lhs, const sub_match<_Bi_iter>& __rhs)
    { return __lhs > __rhs.str(); }

  /**
   * @brief Tests the ordering of a string and a regular expression submatch.
   * @param lhs A string.
   * @param rhs A regular expression submatch.
   * @returns true if @a lhs does not precede @a rhs, false otherwise.
   */
  template<typename _Bi_iter, typename _Ch_traits, typename _Ch_alloc>
    inline bool
    operator>=(const basic_string<
	       typename iterator_traits<_Bi_iter>::value_type,
	       _Ch_traits, _Ch_alloc>& __lhs, const sub_match<_Bi_iter>& __rhs)
    { return __lhs >= __rhs.str(); }

  /**
   * @brief Tests the ordering of a string and a regular expression submatch.
   * @param lhs A string.
   * @param rhs A regular expression submatch.
   * @returns true if @a lhs does not succeed @a rhs, false otherwise.
   */
  template<typename _Bi_iter, typename _Ch_traits, typename _Ch_alloc>
    inline bool
    operator<=(const basic_string<
	       typename iterator_traits<_Bi_iter>::value_type,
	       _Ch_traits, _Ch_alloc>& __lhs, const sub_match<_Bi_iter>& __rhs)
    { return __lhs <= __rhs.str(); }

  /**
   * @brief Tests the equivalence of a regular expression submatch and a
   *        string.
   * @param lhs A regular expression submatch.
   * @param rhs A string.
   * @returns true if @a lhs is equivalent to @a rhs, false otherwise.
   */
  template<typename _Bi_iter, typename _Ch_traits, typename _Ch_alloc>
    inline bool
    operator==(const sub_match<_Bi_iter>& __lhs,
	       const basic_string<
	       typename iterator_traits<_Bi_iter>::value_type,
	       _Ch_traits, _Ch_alloc>& __rhs)
    { return __lhs.str() == __rhs; }

  /**
   * @brief Tests the inequivalence of a regular expression submatch and a
   *        string.
   * @param lhs A regular expression submatch.
   * @param rhs A string.
   * @returns true if @a lhs is not equivalent to @a rhs, false otherwise.
   */
  template<typename _Bi_iter, typename _Ch_traits, typename _Ch_alloc>
    inline bool
    operator!=(const sub_match<_Bi_iter>& __lhs,
	       const basic_string<
	       typename iterator_traits<_Bi_iter>::value_type,
	       _Ch_traits, _Ch_alloc>& __rhs)
    { return __lhs.str() != __rhs; }

  /**
   * @brief Tests the ordering of a regular expression submatch and a string.
   * @param lhs A regular expression submatch.
   * @param rhs A string.
   * @returns true if @a lhs precedes @a rhs, false otherwise.
   */
  template<typename _Bi_iter, class _Ch_traits, class _Ch_alloc>
    inline bool
    operator<(const sub_match<_Bi_iter>& __lhs,
	      const basic_string<
	      typename iterator_traits<_Bi_iter>::value_type,
	      _Ch_traits, _Ch_alloc>& __rhs)
    { return __lhs.str() < __rhs; }

  /**
   * @brief Tests the ordering of a regular expression submatch and a string.
   * @param lhs A regular expression submatch.
   * @param rhs A string.
   * @returns true if @a lhs succeeds @a rhs, false otherwise.
   */
  template<typename _Bi_iter, class _Ch_traits, class _Ch_alloc>
    inline bool
    operator>(const sub_match<_Bi_iter>& __lhs,
	      const basic_string<
	      typename iterator_traits<_Bi_iter>::value_type,
	      _Ch_traits, _Ch_alloc>& __rhs)
    { return __lhs.str() > __rhs; }

  /**
   * @brief Tests the ordering of a regular expression submatch and a string.
   * @param lhs A regular expression submatch.
   * @param rhs A string.
   * @returns true if @a lhs does not precede @a rhs, false otherwise.
   */
  template<typename _Bi_iter, class _Ch_traits, class _Ch_alloc>
    inline bool
    operator>=(const sub_match<_Bi_iter>& __lhs,
	       const basic_string<
	       typename iterator_traits<_Bi_iter>::value_type,
	       _Ch_traits, _Ch_alloc>& __rhs)
    { return __lhs.str() >= __rhs; }

  /**
   * @brief Tests the ordering of a regular expression submatch and a string.
   * @param lhs A regular expression submatch.
   * @param rhs A string.
   * @returns true if @a lhs does not succeed @a rhs, false otherwise.
   */
  template<typename _Bi_iter, class _Ch_traits, class _Ch_alloc>
    inline bool
    operator<=(const sub_match<_Bi_iter>& __lhs,
	       const basic_string<
	       typename iterator_traits<_Bi_iter>::value_type,
	       _Ch_traits, _Ch_alloc>& __rhs)
    { return __lhs.str() <= __rhs; }

  /**
   * @brief Tests the equivalence of a C string and a regular expression
   *        submatch.
   * @param lhs A C string.
   * @param rhs A regular expression submatch.
   * @returns true if @a lhs  is equivalent to @a rhs, false otherwise.
   */
  template<typename _Bi_iter>
    inline bool
    operator==(typename iterator_traits<_Bi_iter>::value_type const* __lhs,
	       const sub_match<_Bi_iter>& __rhs)
    { return __lhs == __rhs.str(); }

  /**
   * @brief Tests the inequivalence of an iterator value and a regular
   *        expression submatch.
   * @param lhs A regular expression submatch.
   * @param rhs A string.
   * @returns true if @a lhs is not equivalent to @a rhs, false otherwise.
   */
  template<typename _Bi_iter>
    inline bool
    operator!=(typename iterator_traits<_Bi_iter>::value_type const* __lhs,
	       const sub_match<_Bi_iter>& __rhs)
    { return __lhs != __rhs.str(); }

  /**
   * @brief Tests the ordering of a string and a regular expression submatch.
   * @param lhs A string.
   * @param rhs A regular expression submatch.
   * @returns true if @a lhs precedes @a rhs, false otherwise.
   */
  template<typename _Bi_iter>
    inline bool
    operator<(typename iterator_traits<_Bi_iter>::value_type const* __lhs,
	      const sub_match<_Bi_iter>& __rhs)
    { return __lhs < __rhs.str(); }

  /**
   * @brief Tests the ordering of a string and a regular expression submatch.
   * @param lhs A string.
   * @param rhs A regular expression submatch.
   * @returns true if @a lhs succeeds @a rhs, false otherwise.
   */
  template<typename _Bi_iter>
    inline bool
    operator>(typename iterator_traits<_Bi_iter>::value_type const* __lhs,
	      const sub_match<_Bi_iter>& __rhs)
    { return __lhs > __rhs.str(); }

  /**
   * @brief Tests the ordering of a string and a regular expression submatch.
   * @param lhs A string.
   * @param rhs A regular expression submatch.
   * @returns true if @a lhs does not precede @a rhs, false otherwise.
   */
  template<typename _Bi_iter>
    inline bool
    operator>=(typename iterator_traits<_Bi_iter>::value_type const* __lhs,
	       const sub_match<_Bi_iter>& __rhs)
    { return __lhs >= __rhs.str(); }

  /**
   * @brief Tests the ordering of a string and a regular expression submatch.
   * @param lhs A string.
   * @param rhs A regular expression submatch.
   * @returns true if @a lhs does not succeed @a rhs, false otherwise.
   */
  template<typename _Bi_iter>
    inline bool
    operator<=(typename iterator_traits<_Bi_iter>::value_type const* __lhs,
	       const sub_match<_Bi_iter>& __rhs)
    { return __lhs <= __rhs.str(); }

  /**
   * @brief Tests the equivalence of a regular expression submatch and a
   *        string.
   * @param lhs A regular expression submatch.
   * @param rhs A pointer to a string?
   * @returns true if @a lhs  is equivalent to @a rhs, false otherwise.
   */
  template<typename _Bi_iter>
    inline bool
    operator==(const sub_match<_Bi_iter>& __lhs,
	       typename iterator_traits<_Bi_iter>::value_type const* __rhs)
    { return __lhs.str() == __rhs; }

  /**
   * @brief Tests the inequivalence of a regular expression submatch and a
   *        string.
   * @param lhs A regular expression submatch.
   * @param rhs A pointer to a string.
   * @returns true if @a lhs is not equivalent to @a rhs, false otherwise.
   */
  template<typename _Bi_iter>
    inline bool
    operator!=(const sub_match<_Bi_iter>& __lhs,
	       typename iterator_traits<_Bi_iter>::value_type const* __rhs)
    { return __lhs.str() != __rhs; }

  /**
   * @brief Tests the ordering of a regular expression submatch and a string.
   * @param lhs A regular expression submatch.
   * @param rhs A string.
   * @returns true if @a lhs precedes @a rhs, false otherwise.
   */
  template<typename _Bi_iter>
    inline bool
    operator<(const sub_match<_Bi_iter>& __lhs,
	      typename iterator_traits<_Bi_iter>::value_type const* __rhs)
    { return __lhs.str() < __rhs; }

  /**
   * @brief Tests the ordering of a regular expression submatch and a string.
   * @param lhs A regular expression submatch.
   * @param rhs A string.
   * @returns true if @a lhs succeeds @a rhs, false otherwise.
   */
  template<typename _Bi_iter>
    inline bool
    operator>(const sub_match<_Bi_iter>& __lhs,
	      typename iterator_traits<_Bi_iter>::value_type const* __rhs)
    { return __lhs.str() > __rhs; }

  /**
   * @brief Tests the ordering of a regular expression submatch and a string.
   * @param lhs A regular expression submatch.
   * @param rhs A string.
   * @returns true if @a lhs does not precede @a rhs, false otherwise.
   */
  template<typename _Bi_iter>
    inline bool
    operator>=(const sub_match<_Bi_iter>& __lhs,
	       typename iterator_traits<_Bi_iter>::value_type const* __rhs)
    { return __lhs.str() >= __rhs; }

  /**
   * @brief Tests the ordering of a regular expression submatch and a string.
   * @param lhs A regular expression submatch.
   * @param rhs A string.
   * @returns true if @a lhs does not succeed @a rhs, false otherwise.
   */
  template<typename _Bi_iter>
    inline bool
    operator<=(const sub_match<_Bi_iter>& __lhs,
	       typename iterator_traits<_Bi_iter>::value_type const* __rhs)
    { return __lhs.str() <= __rhs; }

  /**
   * @brief Tests the equivalence of a string and a regular expression
   *        submatch.
   * @param lhs A string.
   * @param rhs A regular expression submatch.
   * @returns true if @a lhs is equivalent to @a rhs, false otherwise.
   */
  template<typename _Bi_iter>
    inline bool
    operator==(typename iterator_traits<_Bi_iter>::value_type const& __lhs,
	       const sub_match<_Bi_iter>& __rhs)
    { return __lhs == __rhs.str(); }

  /**
   * @brief Tests the inequivalence of a string and a regular expression
   *        submatch.
   * @param lhs A string.
   * @param rhs A regular expression submatch.
   * @returns true if @a lhs is not equivalent to @a rhs, false otherwise.
   */
  template<typename _Bi_iter>
    inline bool
    operator!=(typename iterator_traits<_Bi_iter>::value_type const& __lhs,
	       const sub_match<_Bi_iter>& __rhs)
    { return __lhs != __rhs.str(); }

  /**
   * @brief Tests the ordering of a string and a regular expression submatch.
   * @param lhs A string.
   * @param rhs A regular expression submatch.
   * @returns true if @a lhs precedes @a rhs, false otherwise.
   */
  template<typename _Bi_iter>
    inline bool
    operator<(typename iterator_traits<_Bi_iter>::value_type const& __lhs,
	      const sub_match<_Bi_iter>& __rhs)
    { return __lhs < __rhs.str(); }

  /**
   * @brief Tests the ordering of a string and a regular expression submatch.
   * @param lhs A string.
   * @param rhs A regular expression submatch.
   * @returns true if @a lhs succeeds @a rhs, false otherwise.
   */
  template<typename _Bi_iter>
    inline bool
    operator>(typename iterator_traits<_Bi_iter>::value_type const& __lhs,
	      const sub_match<_Bi_iter>& __rhs)
    { return __lhs > __rhs.str(); }

  /**
   * @brief Tests the ordering of a string and a regular expression submatch.
   * @param lhs A string.
   * @param rhs A regular expression submatch.
   * @returns true if @a lhs does not precede @a rhs, false otherwise.
   */
  template<typename _Bi_iter>
    inline bool
    operator>=(typename iterator_traits<_Bi_iter>::value_type const& __lhs,
	       const sub_match<_Bi_iter>& __rhs)
    { return __lhs >= __rhs.str(); }

  /**
   * @brief Tests the ordering of a string and a regular expression submatch.
   * @param lhs A string.
   * @param rhs A regular expression submatch.
   * @returns true if @a lhs does not succeed @a rhs, false otherwise.
   */
  template<typename _Bi_iter>
    inline bool
    operator<=(typename iterator_traits<_Bi_iter>::value_type const& __lhs,
	       const sub_match<_Bi_iter>& __rhs)
    { return __lhs <= __rhs.str(); }

  /**
   * @brief Tests the equivalence of a regular expression submatch and a
   *        string.
   * @param lhs A regular expression submatch.
   * @param rhs A const string reference.
   * @returns true if @a lhs  is equivalent to @a rhs, false otherwise.
   */
  template<typename _Bi_iter>
    inline bool
    operator==(const sub_match<_Bi_iter>& __lhs,
	       typename iterator_traits<_Bi_iter>::value_type const& __rhs)
    { return __lhs.str() == __rhs; }

  /**
   * @brief Tests the inequivalence of a regular expression submatch and a
   *        string.
   * @param lhs A regular expression submatch.
   * @param rhs A const string reference.
   * @returns true if @a lhs is not equivalent to @a rhs, false otherwise.
   */
  template<typename _Bi_iter>
    inline bool
    operator!=(const sub_match<_Bi_iter>& __lhs,
	       typename iterator_traits<_Bi_iter>::value_type const& __rhs)
    { return __lhs.str() != __rhs; }

  /**
   * @brief Tests the ordering of a regular expression submatch and a string.
   * @param lhs A regular expression submatch.
   * @param rhs A const string reference.
   * @returns true if @a lhs precedes @a rhs, false otherwise.
   */
  template<typename _Bi_iter>
    inline bool
    operator<(const sub_match<_Bi_iter>& __lhs,
	      typename iterator_traits<_Bi_iter>::value_type const& __rhs)
    { return __lhs.str() < __rhs; }

  /**
   * @brief Tests the ordering of a regular expression submatch and a string.
   * @param lhs A regular expression submatch.
   * @param rhs A const string reference.
   * @returns true if @a lhs succeeds @a rhs, false otherwise.
   */
  template<typename _Bi_iter>
    inline bool
    operator>(const sub_match<_Bi_iter>& __lhs,
	      typename iterator_traits<_Bi_iter>::value_type const& __rhs)
    { return __lhs.str() > __rhs; }

  /**
   * @brief Tests the ordering of a regular expression submatch and a string.
   * @param lhs A regular expression submatch.
   * @param rhs A const string reference.
   * @returns true if @a lhs does not precede @a rhs, false otherwise.
   */
  template<typename _Bi_iter>
    inline bool
    operator>=(const sub_match<_Bi_iter>& __lhs,
	       typename iterator_traits<_Bi_iter>::value_type const& __rhs)
    { return __lhs.str() >= __rhs; }

  /**
   * @brief Tests the ordering of a regular expression submatch and a string.
   * @param lhs A regular expression submatch.
   * @param rhs A const string reference.
   * @returns true if @a lhs does not succeed @a rhs, false otherwise.
   */
  template<typename _Bi_iter>
    inline bool
    operator<=(const sub_match<_Bi_iter>& __lhs,
	       typename iterator_traits<_Bi_iter>::value_type const& __rhs)
    { return __lhs.str() <= __rhs; }

  /**
   * @brief Inserts a matched string into an output stream.
   *
   * @param os The output stream.
   * @param m  A submatch string.
   *
   * @returns the output stream with the submatch string inserted.
   */
  template<typename _Ch_type, typename _Ch_traits, typename _Bi_iter>
    inline
    basic_ostream<_Ch_type, _Ch_traits>&
    operator<<(basic_ostream<_Ch_type, _Ch_traits>& __os,
	       const sub_match<_Bi_iter>& __m)
    { return __os << __m.str(); }

  // [7.10] Class template match_results
  /**
   * @brief The results of a match or search operation.
   *
   * A collection of character sequences representing the result of a regular
   * expression match.  Storage for the collection is allocated and freed as
   * necessary by the member functions of class template match_results.
   *
   * This class satisfies the Sequence requirements, with the exception that
   * only the operations defined for a const-qualified Sequence are supported.
   *
   * The sub_match object stored at index 0 represents sub-expression 0, i.e.
   * the whole match. In this case the sub_match member matched is always true.
   * The sub_match object stored at index n denotes what matched the marked
   * sub-expression n within the matched expression. If the sub-expression n
   * participated in a regular expression match then the sub_match member
   * matched evaluates to true, and members first and second denote the range
   * of characters [first, second) which formed that match. Otherwise matched
   * is false, and members first and second point to the end of the sequence
   * that was searched.
   *
   * @nosubgrouping
   */
  template<typename _Bi_iter,
	   typename _Allocator = allocator<sub_match<_Bi_iter> > >
    class match_results
    : private std::vector<std::tr1::sub_match<_Bi_iter>, _Allocator>
    {
    private:
      typedef std::vector<std::tr1::sub_match<_Bi_iter>, _Allocator>
                                                              _Base_type;

    public:
      /**
       * @name 10.? Public Types
       */
      ///@{
      typedef sub_match<_Bi_iter>                             value_type;
      typedef typename _Base_type::const_reference            const_reference;
      typedef const_reference                                 reference;
      typedef typename _Base_type::const_iterator             const_iterator;
      typedef const_iterator                                  iterator;
      typedef typename iterator_traits<_Bi_iter>::difference_type
                                                              difference_type;
      typedef typename _Allocator::size_type                  size_type;
      typedef _Allocator                                      allocator_type;
      typedef typename iterator_traits<_Bi_iter>::value_type  char_type;
      typedef basic_string<char_type>                         string_type;
      ///@}
  
    public:
      /**
       * @name 10.1 Construction, Copying, and Destruction
       */
      ///@{

      /**
       * @brief Constructs a default %match_results container.
       * @post size() returns 0 and str() returns an empty string.
       */
      explicit
      match_results(const _Allocator& __a = _Allocator())
      : _Base_type(__a), _M_matched(false)
      { }

      /**
       * @brief Copy constructs a %match_results.
       */
      match_results(const match_results& __rhs)
      : _Base_type(__rhs), _M_matched(__rhs._M_matched),
	_M_prefix(__rhs._M_prefix), _M_suffix(__rhs._M_suffix)
      { }

      /**
       * @brief Assigns rhs to *this.
       */
      match_results&
      operator=(const match_results& __rhs)
      {
	match_results __tmp(__rhs);
	this->swap(__tmp);
	return *this;
      }

      /**
       * @brief Destroys a %match_results object.
       */
      ~match_results()
      { }
      
      ///@}

      /**
       * @name 10.2 Size
       */
      ///@{

      /**
       * @brief Gets the number of matches and submatches.
       *
       * The number of matches for a given regular expression will be either 0
       * if there was no match or mark_count() + 1 if a match was successful.
       * Some matches may be empty.
       *
       * @returns the number of matches found.
       */
      size_type
      size() const
      { return _M_matched ? _Base_type::size() + 1 : 0; }
      
      //size_type
      //max_size() const;
      using _Base_type::max_size;

      /**
       * @brief Indicates if the %match_results contains no results.
       * @retval true The %match_results object is empty.
       * @retval false The %match_results object is not empty.
       */
      _GLIBCXX_NODISCARD bool
      empty() const
      { return size() == 0; }
      
      ///@}

      /**
       * @name 10.3 Element Access
       */
      ///@{

      /**
       * @brief Gets the length of the indicated submatch.
       * @param sub indicates the submatch.
       *
       * This function returns the length of the indicated submatch, or the
       * length of the entire match if @p sub is zero (the default).
       */
      difference_type
      length(size_type __sub = 0) const
      { return _M_matched ? this->str(__sub).length() : 0; }

      /**
       * @brief Gets the offset of the beginning of the indicated submatch.
       * @param sub indicates the submatch.
       *
       * This function returns the offset from the beginning of the target
       * sequence to the beginning of the submatch, unless the value of @p sub
       * is zero (the default), in which case this function returns the offset
       * from the beginning of the target sequence to the beginning of the
       * match.
       */
      difference_type
      position(size_type __sub = 0) const
      {
	return _M_matched ? std::distance(this->prefix().first,
					  (*this)[__sub].first) : 0;
      }

      /**
       * @brief Gets the match or submatch converted to a string type.
       * @param sub indicates the submatch.
       *
       * This function gets the submatch (or match, if @p sub is zero) extracted
       * from the target range and converted to the associated string type.
       */
      string_type
      str(size_type __sub = 0) const
      { return _M_matched ? (*this)[__sub].str() : string_type(); }
      
      /**
       * @brief Gets a %sub_match reference for the match or submatch.
       * @param sub indicates the submatch.
       *
       * This function gets a reference to the indicated submatch, or the entire
       * match if @p sub is zero.
       *
       * If @p sub >= size() then this function returns a %sub_match with a
       * special value indicating no submatch.
       */
      const_reference
      operator[](size_type __sub) const
      { return _Base_type::operator[](__sub); }

      /**
       * @brief Gets a %sub_match representing the match prefix.
       *
       * This function gets a reference to a %sub_match object representing the
       * part of the target range between the start of the target range and the
       * start of the match.
       */
      const_reference
      prefix() const
      { return _M_prefix; }

      /**
       * @brief Gets a %sub_match representing the match suffix.
       *
       * This function gets a reference to a %sub_match object representing the
       * part of the target range between the end of the match and the end of
       * the target range.
       */
      const_reference
      suffix() const
      { return _M_suffix; }

      /**
       * @brief Gets an iterator to the start of the %sub_match collection.
       */
      const_iterator
      begin() const
      { return _Base_type::begin(); }
      
#ifdef _GLIBCXX_INCLUDE_AS_CXX11
      /**
       * @brief Gets an iterator to the start of the %sub_match collection.
       */
      const_iterator
      cbegin() const
      { return _Base_type::begin(); }
#endif

      /**
       * @brief Gets an iterator to one-past-the-end of the collection.
       */
      const_iterator
      end() const
      { return _Base_type::end(); }
      
#ifdef _GLIBCXX_INCLUDE_AS_CXX11
      /**
       * @brief Gets an iterator to one-past-the-end of the collection.
       */
      const_iterator
      cend() const
      { return _Base_type::end(); }
#endif

      ///@}

      /**
       * @name 10.4 Formatting
       *
       * These functions perform formatted substitution of the matched
       * character sequences into their target.  The format specifiers
       * and escape sequences accepted by these functions are
       * determined by their @p flags parameter as documented above.
       */
       ///@{

      /**
       * @todo Implement this function.
       */
      template<typename _Out_iter>
        _Out_iter
        format(_Out_iter __out, const string_type& __fmt,
	       regex_constants::match_flag_type __flags
	       = regex_constants::format_default) const;

      /**
       * @todo Implement this function.
       */
      string_type
      format(const string_type& __fmt,
	     regex_constants::match_flag_type __flags
	     = regex_constants::format_default) const;

      ///@}

      /**
       * @name 10.5 Allocator
       */
      ///@{ 

      /**
       * @brief Gets a copy of the allocator.
       */
      //allocator_type
      //get_allocator() const;
      using _Base_type::get_allocator;
      
      ///@}

      /**
       * @name 10.6 Swap
       */
       ///@{ 

      /**
       * @brief Swaps the contents of two match_results.
       */
      void
      swap(match_results& __that)
      {
	_Base_type::swap(__that);
	std::swap(_M_matched, __that._M_matched);
	std::swap(_M_prefix,  __that._M_prefix);
	std::swap(_M_suffix,  __that._M_suffix);
      }
      ///@}
      
    private:
      bool       _M_matched;
      value_type _M_prefix;
      value_type _M_suffix;
    };
  
  typedef match_results<const char*>             cmatch;
  typedef match_results<string::const_iterator>  smatch;
#ifdef _GLIBCXX_USE_WCHAR_T
  typedef match_results<const wchar_t*>          wcmatch;
  typedef match_results<wstring::const_iterator> wsmatch;
#endif

  // match_results comparisons
  /**
   * @brief Compares two match_results for equality.
   * @returns true if the two objects refer to the same match,
   * false otherwise.
   * @todo Implement this function.
   */
  template<typename _Bi_iter, typename _Allocator>
    inline bool
    operator==(const match_results<_Bi_iter, _Allocator>& __m1,
	       const match_results<_Bi_iter, _Allocator>& __m2);

  /**
   * @brief Compares two match_results for inequality.
   * @returns true if the two objects do not refer to the same match,
   * false otherwise.
   */
  template<typename _Bi_iter, class _Allocator>
    inline bool
    operator!=(const match_results<_Bi_iter, _Allocator>& __m1,
	       const match_results<_Bi_iter, _Allocator>& __m2)
    { return !(__m1 == __m2); }

  // [7.10.6] match_results swap
  /**
   * @brief Swaps two match results.
   * @param lhs A match result.
   * @param rhs A match result.
   *
   * The contents of the two match_results objects are swapped.
   */
  template<typename _Bi_iter, typename _Allocator>
    inline void
    swap(match_results<_Bi_iter, _Allocator>& __lhs,
	 match_results<_Bi_iter, _Allocator>& __rhs)
    { __lhs.swap(__rhs); }

  // [7.11.2] Function template regex_match
  /**
   * @name Matching, Searching, and Replacing
   */
  ///@{

  /**
   * @brief Determines if there is a match between the regular expression @p e
   * and all of the character sequence [first, last).
   *
   * @param first Beginning of the character sequence to match.
   * @param last  One-past-the-end of the character sequence to match.
   * @param m     The match results.
   * @param re    The regular expression.
   * @param flags Controls how the regular expression is matched.
   *
   * @retval true  A match exists.
   * @retval false Otherwise.
   *
   * @throws an exception of type regex_error.
   *
   * @todo Implement this function.
   */
  template<typename _Bi_iter, typename _Allocator,
	   typename _Ch_type, typename _Rx_traits>
    bool
    regex_match(_Bi_iter __first, _Bi_iter __last,
		match_results<_Bi_iter, _Allocator>& __m,
		const basic_regex<_Ch_type, _Rx_traits>& __re,
		regex_constants::match_flag_type __flags
		= regex_constants::match_default);

  /**
   * @brief Indicates if there is a match between the regular expression @p e
   * and all of the character sequence [first, last).
   *
   * @param first Beginning of the character sequence to match.
   * @param last  One-past-the-end of the character sequence to match.
   * @param re    The regular expression.
   * @param flags Controls how the regular expression is matched.
   *
   * @retval true  A match exists.
   * @retval false Otherwise.
   *
   * @throws an exception of type regex_error.
   */
  template<typename _Bi_iter, typename _Ch_type, typename _Rx_traits>
    bool
    regex_match(_Bi_iter __first, _Bi_iter __last,
		const basic_regex<_Ch_type, _Rx_traits>& __re,
		regex_constants::match_flag_type __flags
		= regex_constants::match_default)
    { 
      match_results<_Bi_iter> __what;
      return regex_match(__first, __last, __what, __re, __flags);
    }

  /**
   * @brief Determines if there is a match between the regular expression @p e
   * and a C-style null-terminated string.
   *
   * @param s  The C-style null-terminated string to match.
   * @param m  The match results.
   * @param re The regular expression.
   * @param f  Controls how the regular expression is matched.
   *
   * @retval true  A match exists.
   * @retval false Otherwise.
   *
   * @throws an exception of type regex_error.
   */
  template<typename _Ch_type, typename _Allocator, typename _Rx_traits>
    inline bool
    regex_match(const _Ch_type* __s,
		match_results<const _Ch_type*, _Allocator>& __m,
		const basic_regex<_Ch_type, _Rx_traits>& __re,
		regex_constants::match_flag_type __f
		= regex_constants::match_default)
    { return regex_match(__s, __s + _Rx_traits::length(__s), __m, __re, __f); }

  /**
   * @brief Determines if there is a match between the regular expression @p e
   * and a string.
   *
   * @param s     The string to match.
   * @param m     The match results.
   * @param re    The regular expression.
   * @param flags Controls how the regular expression is matched.
   *
   * @retval true  A match exists.
   * @retval false Otherwise.
   *
   * @throws an exception of type regex_error.
   */
  template<typename _Ch_traits, typename _Ch_alloc,
	   typename _Allocator, typename _Ch_type, typename _Rx_traits>
    inline bool
    regex_match(const basic_string<_Ch_type, _Ch_traits, _Ch_alloc>& __s,
		match_results<typename basic_string<_Ch_type, 
		_Ch_traits, _Ch_alloc>::const_iterator, _Allocator>& __m,
		const basic_regex<_Ch_type, _Rx_traits>& __re,
		regex_constants::match_flag_type __flags
		= regex_constants::match_default)
    { return regex_match(__s.begin(), __s.end(), __m, __re, __flags); }

  /**
   * @brief Indicates if there is a match between the regular expression @p e
   * and a C-style null-terminated string.
   *
   * @param s  The C-style null-terminated string to match.
   * @param re The regular expression.
   * @param f  Controls how the regular expression is matched.
   *
   * @retval true  A match exists.
   * @retval false Otherwise.
   *
   * @throws an exception of type regex_error.
   */
  template<typename _Ch_type, class _Rx_traits>
    inline bool
    regex_match(const _Ch_type* __s,
		const basic_regex<_Ch_type, _Rx_traits>& __re,
		regex_constants::match_flag_type __f
		= regex_constants::match_default)
    { return regex_match(__s, __s + _Rx_traits::length(__s), __re, __f); }

  /**
   * @brief Indicates if there is a match between the regular expression @p e
   * and a string.
   *
   * @param s     [IN] The string to match.
   * @param re    [IN] The regular expression.
   * @param flags [IN] Controls how the regular expression is matched.
   *
   * @retval true  A match exists.
   * @retval false Otherwise.
   *
   * @throws an exception of type regex_error.
   */
  template<typename _Ch_traits, typename _Str_allocator,
	   typename _Ch_type, typename _Rx_traits>
    inline bool
    regex_match(const basic_string<_Ch_type, _Ch_traits, _Str_allocator>& __s,
		const basic_regex<_Ch_type, _Rx_traits>& __re,
		regex_constants::match_flag_type __flags
		= regex_constants::match_default)
    { return regex_match(__s.begin(), __s.end(), __re, __flags); }

  // [7.11.3] Function template regex_search
  /**
   * Searches for a regular expression within a range.
   * @param first [IN]  The start of the string to search.
   * @param last  [IN]  One-past-the-end of the string to search.
   * @param m     [OUT] The match results.
   * @param re    [IN]  The regular expression to search for.
   * @param flags [IN]  Search policy flags.
   * @retval true  A match was found within the string.
   * @retval false No match was found within the string, the content of %m is
   *               undefined.
   *
   * @throws an exception of type regex_error.
   *
   * @todo Implement this function.
   */
  template<typename _Bi_iter, typename _Allocator,
	   typename _Ch_type, typename _Rx_traits>
    inline bool
    regex_search(_Bi_iter __first, _Bi_iter __last,
		 match_results<_Bi_iter, _Allocator>& __m,
		 const basic_regex<_Ch_type, _Rx_traits>& __re,
		 regex_constants::match_flag_type __flags
		 = regex_constants::match_default);

  /**
   * Searches for a regular expression within a range.
   * @param first [IN]  The start of the string to search.
   * @param last  [IN]  One-past-the-end of the string to search.
   * @param re    [IN]  The regular expression to search for.
   * @param flags [IN]  Search policy flags.
   * @retval true  A match was found within the string.
   * @retval false No match was found within the string.
   * @doctodo
   *
   * @throws an exception of type regex_error.
   */
  template<typename _Bi_iter, typename _Ch_type, typename _Rx_traits>
    inline bool
    regex_search(_Bi_iter __first, _Bi_iter __last,
		 const basic_regex<_Ch_type, _Rx_traits>& __re,
		 regex_constants::match_flag_type __flags
		 = regex_constants::match_default)
    {
      match_results<_Bi_iter> __what;
      return regex_search(__first, __last, __what, __re, __flags);
    }

  /**
   * @brief Searches for a regular expression within a C-string.
   * @param s [IN]  A C-string to search for the regex.
   * @param m [OUT] The set of regex matches.
   * @param e [IN]  The regex to search for in @p s.
   * @param f [IN]  The search flags.
   * @retval true  A match was found within the string.
   * @retval false No match was found within the string, the content of %m is
   *               undefined.
   * @doctodo
   *
   * @throws an exception of type regex_error.
   */
  template<typename _Ch_type, class _Allocator, class _Rx_traits>
    inline bool
    regex_search(const _Ch_type* __s,
		 match_results<const _Ch_type*, _Allocator>& __m,
		 const basic_regex<_Ch_type, _Rx_traits>& __e,
		 regex_constants::match_flag_type __f
		 = regex_constants::match_default)
    { return regex_search(__s, __s + _Rx_traits::length(__s), __m, __e, __f); }

  /**
   * @brief Searches for a regular expression within a C-string.
   * @param s [IN]  The C-string to search.
   * @param e [IN]  The regular expression to search for.
   * @param f [IN]  Search policy flags.
   * @retval true  A match was found within the string.
   * @retval false No match was found within the string.
   * @doctodo
   *
   * @throws an exception of type regex_error.
   */
  template<typename _Ch_type, typename _Rx_traits>
    inline bool
    regex_search(const _Ch_type* __s,
		 const basic_regex<_Ch_type, _Rx_traits>& __e,
		 regex_constants::match_flag_type __f
		 = regex_constants::match_default)
    { return regex_search(__s, __s + _Rx_traits::length(__s), __e, __f); }

  /**
   * @brief Searches for a regular expression within a string.
   * @param s     [IN]  The string to search.
   * @param e     [IN]  The regular expression to search for.
   * @param flags [IN]  Search policy flags.
   * @retval true  A match was found within the string.
   * @retval false No match was found within the string.
   * @doctodo
   *
   * @throws an exception of type regex_error.
   */
  template<typename _Ch_traits, typename _String_allocator,
	   typename _Ch_type, typename _Rx_traits>
    inline bool
    regex_search(const basic_string<_Ch_type, _Ch_traits,
		 _String_allocator>& __s,
		 const basic_regex<_Ch_type, _Rx_traits>& __e,
		 regex_constants::match_flag_type __flags
		 = regex_constants::match_default)
    { return regex_search(__s.begin(), __s.end(), __e, __flags); }

  /**
   * @brief Searches for a regular expression within a string.
   * @param s [IN]  A C++ string to search for the regex.
   * @param m [OUT] The set of regex matches.
   * @param e [IN]  The regex to search for in @p s.
   * @param f [IN]  The search flags.
   * @retval true  A match was found within the string.
   * @retval false No match was found within the string, the content of %m is
   *               undefined.
   *
   * @throws an exception of type regex_error.
   */
  template<typename _Ch_traits, typename _Ch_alloc,
	   typename _Allocator, typename _Ch_type,
	   typename _Rx_traits>
    inline bool
    regex_search(const basic_string<_Ch_type, _Ch_traits, _Ch_alloc>& __s,
		 match_results<typename basic_string<_Ch_type,
		 _Ch_traits, _Ch_alloc>::const_iterator, _Allocator>& __m,
		 const basic_regex<_Ch_type, _Rx_traits>& __e,
		 regex_constants::match_flag_type __f
		 = regex_constants::match_default)
    { return regex_search(__s.begin(), __s.end(), __m, __e, __f); }

  // tr1 [7.11.4] std [28.11.4] Function template regex_replace
  /**
   * @doctodo
   * @param out
   * @param first
   * @param last
   * @param e
   * @param fmt
   * @param flags
   *
   * @returns out
   * @throws an exception of type regex_error.
   *
   * @todo Implement this function.
   */
  template<typename _Out_iter, typename _Bi_iter,
	   typename _Rx_traits, typename _Ch_type>
    inline _Out_iter
    regex_replace(_Out_iter __out, _Bi_iter __first, _Bi_iter __last,
		  const basic_regex<_Ch_type, _Rx_traits>& __e,
		  const basic_string<_Ch_type>& __fmt,
		  regex_constants::match_flag_type __flags
		  = regex_constants::match_default);

  /**
   * @doctodo
   * @param s
   * @param e
   * @param fmt
   * @param flags
   *
   * @returns a copy of string @p s with replacements.
   *
   * @throws an exception of type regex_error.
   */
  template<typename _Rx_traits, typename _Ch_type>
    inline basic_string<_Ch_type>
    regex_replace(const basic_string<_Ch_type>& __s,
		  const basic_regex<_Ch_type, _Rx_traits>& __e,
		  const basic_string<_Ch_type>& __fmt,
		  regex_constants::match_flag_type __flags
		  = regex_constants::match_default)
    {
      std::string __result;
      regex_replace(std::back_inserter(__result),
		    __s.begin(), __s.end(), __e, __fmt, __flags);
      return __result;
    }

  ///@}

  // tr1 [7.12.1] std [28.12] Class template regex_iterator
  /**
   * An iterator adaptor that will provide repeated calls of regex_search over 
   * a range until no more matches remain.
   */
  template<typename _Bi_iter,
	   typename _Ch_type = typename iterator_traits<_Bi_iter>::value_type,
	   typename _Rx_traits = regex_traits<_Ch_type> >
    class regex_iterator
    {
    public:
      typedef basic_regex<_Ch_type, _Rx_traits>  regex_type;
      typedef match_results<_Bi_iter>            value_type;
      typedef std::ptrdiff_t                     difference_type;
      typedef const value_type*                  pointer;
      typedef const value_type&                  reference;
      typedef std::forward_iterator_tag          iterator_category;

    public:
      /**
       * @brief Provides a singular iterator, useful for indicating
       * one-past-the-end of a range.
       * @todo Implement this function.
       * @doctodo
       */
      regex_iterator();
      
      /**
       * Constructs a %regex_iterator...
       * @param a  [IN] The start of a text range to search.
       * @param b  [IN] One-past-the-end of the text range to search.
       * @param re [IN] The regular expression to match.
       * @param m  [IN] Policy flags for match rules.
       * @todo Implement this function.
       * @doctodo
       */
      regex_iterator(_Bi_iter __a, _Bi_iter __b, const regex_type& __re,
		     regex_constants::match_flag_type __m
		     = regex_constants::match_default);

      /**
       * Copy constructs a %regex_iterator.
       * @todo Implement this function.
       * @doctodo
       */
      regex_iterator(const regex_iterator& __rhs);
      
      /**
       * @todo Implement this function.
       * @doctodo
       */
      regex_iterator&
      operator=(const regex_iterator& __rhs);
      
      /**
       * @todo Implement this function.
       * @doctodo
       */
      bool
      operator==(const regex_iterator& __rhs);
      
      /**
       * @todo Implement this function.
       * @doctodo
       */
      bool
      operator!=(const regex_iterator& __rhs);
      
      /**
       * @todo Implement this function.
       * @doctodo
       */
      const value_type&
      operator*();
      
      /**
       * @todo Implement this function.
       * @doctodo
       */
      const value_type*
      operator->();
      
      /**
       * @todo Implement this function.
       * @doctodo
       */
      regex_iterator&
      operator++();
      
      /**
       * @todo Implement this function.
       * @doctodo
       */
      regex_iterator
      operator++(int);
      
    private:
      // these members are shown for exposition only:
      _Bi_iter                         begin;
      _Bi_iter                         end;
      const regex_type*                pregex;
      regex_constants::match_flag_type flags;
      match_results<_Bi_iter>          match;
    };
  
  typedef regex_iterator<const char*>             cregex_iterator;
  typedef regex_iterator<string::const_iterator>  sregex_iterator;
#ifdef _GLIBCXX_USE_WCHAR_T
  typedef regex_iterator<const wchar_t*>          wcregex_iterator;
  typedef regex_iterator<wstring::const_iterator> wsregex_iterator;
#endif

  // [7.12.2] Class template regex_token_iterator
  /**
   * Iterates over submatches in a range (or @a splits a text string).
   *
   * The purpose of this iterator is to enumerate all, or all specified,
   * matches of a regular expression within a text range.  The dereferenced
   * value of an iterator of this class is a std::tr1::sub_match object.
   */
  template<typename _Bi_iter,
	   typename _Ch_type = typename iterator_traits<_Bi_iter>::value_type,
	   typename _Rx_traits = regex_traits<_Ch_type> >
    class regex_token_iterator
    {
    public:
      typedef basic_regex<_Ch_type, _Rx_traits> regex_type;
      typedef sub_match<_Bi_iter>               value_type;
      typedef std::ptrdiff_t                    difference_type;
      typedef const value_type*                 pointer;
      typedef const value_type&                 reference;
      typedef std::forward_iterator_tag         iterator_category;
      
    public:
      /**
       * @brief Default constructs a %regex_token_iterator.
       * @todo Implement this function.
       * 
       * A default-constructed %regex_token_iterator is a singular iterator
       * that will compare equal to the one-past-the-end value for any
       * iterator of the same type.
       */
      regex_token_iterator();
      
      /**
       * Constructs a %regex_token_iterator...
       * @param a          [IN] The start of the text to search.
       * @param b          [IN] One-past-the-end of the text to search.
       * @param re         [IN] The regular expression to search for.
       * @param submatch   [IN] Which submatch to return.  There are some
       *                        special values for this parameter:
       *                        - -1 each enumerated subexpression does NOT
       *                          match the regular expression (aka field
       *                          splitting)
       *                        - 0 the entire string matching the
       *                          subexpression is returned for each match
       *                          within the text.
       *                        - >0 enumerates only the indicated
       *                          subexpression from a match within the text.
       * @param m          [IN] Policy flags for match rules.
       *
       * @todo Implement this function.
       * @doctodo
       */
      regex_token_iterator(_Bi_iter __a, _Bi_iter __b, const regex_type& __re,
			   int __submatch = 0,
			   regex_constants::match_flag_type __m
			   = regex_constants::match_default);

      /**
       * Constructs a %regex_token_iterator...
       * @param a          [IN] The start of the text to search.
       * @param b          [IN] One-past-the-end of the text to search.
       * @param re         [IN] The regular expression to search for.
       * @param submatches [IN] A list of subexpressions to return for each
       *                        regular expression match within the text.
       * @param m          [IN] Policy flags for match rules.
       *
       * @todo Implement this function.
       * @doctodo
       */
      regex_token_iterator(_Bi_iter __a, _Bi_iter __b,
			   const regex_type& __re,
			   const std::vector<int>& __submatches,
			   regex_constants::match_flag_type __m
			     = regex_constants::match_default);

      /**
       * Constructs a %regex_token_iterator...
       * @param a          [IN] The start of the text to search.
       * @param b          [IN] One-past-the-end of the text to search.
       * @param re         [IN] The regular expression to search for.
       * @param submatches [IN] A list of subexpressions to return for each
       *                        regular expression match within the text.
       * @param m          [IN] Policy flags for match rules.
       
       * @todo Implement this function.
       * @doctodo
       */
      template<std::size_t _Nm>
        regex_token_iterator(_Bi_iter __a, _Bi_iter __b,
			     const regex_type& __re,
			     const int (&__submatches)[_Nm],
			     regex_constants::match_flag_type __m
			     = regex_constants::match_default);

      /**
       * @brief Copy constructs a %regex_token_iterator.
       * @param rhs [IN] A %regex_token_iterator to copy.
       * @todo Implement this function.
       */
      regex_token_iterator(const regex_token_iterator& __rhs);
      
      /**
       * @brief Assigns a %regex_token_iterator to another.
       * @param rhs [IN] A %regex_token_iterator to copy.
       * @todo Implement this function.
       */
      regex_token_iterator&
      operator=(const regex_token_iterator& __rhs);
      
      /**
       * @brief Compares a %regex_token_iterator to another for equality.
       * @todo Implement this function.
       */
      bool
      operator==(const regex_token_iterator& __rhs);
      
      /**
       * @brief Compares a %regex_token_iterator to another for inequality.
       * @todo Implement this function.
       */
      bool
      operator!=(const regex_token_iterator& __rhs);
      
      /**
       * @brief Dereferences a %regex_token_iterator.
       * @todo Implement this function.
       */
      const value_type&
      operator*();
      
      /**
       * @brief Selects a %regex_token_iterator member.
       * @todo Implement this function.
       */
      const value_type*
      operator->();
      
      /**
       * @brief Increments a %regex_token_iterator.
       * @todo Implement this function.
       */
      regex_token_iterator&
      operator++();
      
      /**
       * @brief Postincrements a %regex_token_iterator.
       * @todo Implement this function.
       */
      regex_token_iterator
      operator++(int);
      
    private: // data members for exposition only:
      typedef regex_iterator<_Bi_iter, _Ch_type, _Rx_traits> position_iterator;

      position_iterator __position;
      const value_type* __result;
      value_type        __suffix;
      std::size_t       __n;
      std::vector<int>  __subs;
    };

  /** @brief Token iterator for C-style NULL-terminated strings. */
  typedef regex_token_iterator<const char*>             cregex_token_iterator;
  /** @brief Token iterator for standard strings. */
  typedef regex_token_iterator<string::const_iterator>  sregex_token_iterator;
#ifdef _GLIBCXX_USE_WCHAR_T
  /** @brief Token iterator for C-style NULL-terminated wide strings. */
  typedef regex_token_iterator<const wchar_t*>          wcregex_token_iterator;
  /** @brief Token iterator for standard wide-character strings. */
  typedef regex_token_iterator<wstring::const_iterator> wsregex_token_iterator;
#endif
  
  ///@}
}

_GLIBCXX_END_NAMESPACE_VERSION
}

#endif // _GLIBCXX_TR1_REGEX
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       2               .                                         2               X/                                                       1                                          @                      X      '                                         4                                                        8                                          @               x      x       '                                         8      4                                   @                     8      '                                         9      "                                                  D      l                                   @               (      ,      '                                        `L                                                         [      (                                    @                          '                    #                    H{                                         @               X0            '                    3                    P{                                    .     @               p0            '                    C                    {                    @               >     @               0     0       '                     ]                                                          b     0                      P                             k                     P                                     {                     P                                                        T                                                          h            (                    	                             
                                                   0                                  0	*H
01
0	`He0	*H
1a0]080 10UDebian Secure Boot CA2(oe:B&C0	`He0
	*H
  "A[Ɲ~dbWچ$^f97	4K!R9EÊ%\֕ CĤ妽GPo_:K\~ywvRED#?h9?22W9/o8xr^?p'+9]4P)\&ߛ?W+i÷A;Ѿ-[ PH)Ҡv̤*L*[Wp/+?;cCs         ~Module signature appended~
 070701000A0385000081A4000000000000000000000001682F6DA70000B033000000CA0000000200000000000000000000004400000000usr/lib/modules/6.1.0-37-amd64/kernel/drivers/net/phy/marvell10g.ko   ELF          >                    p          @     @ , +          GNU ;|Zmפ6        Linux                Linux   6.1.0-37-amd64      u
$  tut1    $      f    SHxLHH  H   u
  t'u-u(HA0    xi  -$ HH1[    [    f.         HGx@
 t   t
w1҉P1       @
P1        @     HGx@
 uV@
w5   P1    t5t;Vv߃tt"    u   P1    @
   뱺   f    HGxx              B         ff.         J         I    ff.     f             ff.                  I    ff.     f    SFHӃtLu<          x#%   =   t`=         Df1[    [    HGxx t         xt1 1뷸f1ff.     @     H1   u(HtH      tHH<        H/H/H/H/    f    H/H/H/H/H/    ff.     f    H      usHtH      u\Ht
H1   uHHuFH      u1H      u!H      uHH<    H      t    ff.          H/H/H/H/H/H/             H/H/H/H/H/H/H/         HGxx    ATE1   UHS@tj@   @wp^DEDAA	E        H    x?EAf  AE	A	fA E[H  ]   A\    []A\    A   A      늸    ff.          SHF    1A   C            H8  m     HH0  H    xYH8  l     HH0  H    x1H8  k     HH0      x
A  1[    A      n     H    xHE1   n     [    ff.         S     H    x
   t[    H[    ff.         SHH H(  eH%(   HD$1HHT$HD$    HD$    H$        H(  Ht$        1HT$eH+%(   u
H [        f.         `  1҃=	+ t    
         x	1҃            Sn  HHF           xtK [    ff.          U  J  SA   HA   H    tH[]    1A     H߾       u    H                     H       x@tn    H9|           뼺     H       t.xH    H߉D$H        D$"xHHE1    [     ]    ff.         ATE1     U   SHLgx         HH     	+ uA|$ w[]A\    HA   [1]     A\    fD      HH     	+ t1    U     S   H    x'@H߹   [E     ]A       []    @     AVAUATUSHH  L         T  H%   =       P         Åx>    
  (   H    IHt]HEx     H    Åy[]A\A]A^         HA]    Å    []A\A]A^    @     SH"t[    H߾   [f.         U1A      S   HH           H                1Ҿ   H       x=t=    H9|           1Ҿ   H       uxH[]    xH    H߉D$H        T$@     FtXuIftdftftGf=u[A   H         H<$     H        2#E1H<$HA   뫸    ff.     @     USQ  <   `      HD            Å~
H&ÅxtH  t_    Åx]L        HH  IAAD    DE    x1	H[@]    []    É[]    ff.         `  1	+ t              I    f    A   1ɺ         @     S     A   H    ~HA   1ɺ     [    [             `  1	+ t              x言         AT     H   L(  USHH  HǇ(      ID$      HǇ      ƇP       Ņx6t<H'        H  ǃ          1[]A\    H    Ņx      H    ŅxϺ     H    k  ?        f   @         ǃ    ǃ      
@   P  8H    Ņ5     H    ŅO  I,$   2  I,$H    HCxx
 Pu*t%  =	     ~=  tA='    1dt=  uǃ     1
t1~ǃ     1m  Rǃ  
   Cǃ     12     tG  t*  ǃ    ǃ  d   tǃ  	  eǃ  '  VI4$I4$f.         `  1҃=	+ t    
         x	1҃            ATUSHHH    L   HGxH   ƇQ  H"Å   H  tID$ HH          ID$H    ÅxaID$(H    Å    A         H       Å~
HÅu   HtEH[]A\    ff.         USH    ŅuT  t`  =	+ t	[]          H    x#H  /   uH0   tH뾉HH    HH     	+ t    S        H    xH߹     [A          [         HGx@
 u@   1    HGx@
 tt=Vw@   1    V@
vtu@   1    @   뜸        H       H        H    H        H    H        A]H    HA]ǉAD    I$HtH    AEA   1ɺ  H       Å    HuPLuxHtI  H    IF Hh1Hct(    t9t
Hc0IF Hu Hc۾   H     Å    Iv E1HHH        IFH= v
Å    LID$    H[H    ]A\A]A^    H    H        H    HD$    IT$t$H    Å           H                                                                                                                                                                                                                                                                                                                                                  incompatible SFP module inserted
       PHY failed to boot firmware, status=%04x
       MACTYPE configuration invalid
 %s failed: %d
 Firmware version %u.%u.%u.%u
 Changing MACTYPE to %i
 mv88x3310 mv88x3340 mv88e2110 mv88e2111                 `   mv3310_reset            mv2110_set_mactype                                                                                                                                                                                                                                                                                                                                                                                                                                             license=GPL description=Marvell Alaska X/M multi-gigabit Ethernet PHY driver alias=mdio:0000000000101011000010011011???? alias=mdio:0000000000101011000010011010???? depends=libphy retpoline=Y intree=Y name=marvell10g vermagic=6.1.0-37-amd64 SMP preempt mod_unload modversions                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       0            0                                                                                                                                                                 (  0  (                   0  (                   0                                                                                                                                                                                                                                             (               (                                                                      0    0  (                   (                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       m    __fentry__                                              9[    __x86_return_thunk                                      pHe    __x86_indirect_thunk_rax                                ![Ha    phy_drivers_register                                    0@    phy_read_mmd                                            {x    phy_modify_mmd                                          o    phy_write_mmd                                           `G    genphy_c45_aneg_done                                    !Gx    sfp_parse_support                                       A>    sfp_select_interface                                    V
    __stack_chk_fail                                        9I    _dev_err                                                     phy_drivers_unregister                                  e?    ktime_get                                               ]{    __SCT__might_resched                                     ]    usleep_range_state                                          __const_udelay                                          .4    devm_kmalloc                                            fo    _dev_warn                                               ]    _dev_info                                               A    devm_kstrdup                                            ǚ    _ctype                                                  :9    devm_hwmon_device_register_with_info                    Q    phy_sfp_probe                                                phy_modify_mmd_changed                                  ژ
    genphy_c45_an_config_aneg                               +,v    genphy_c45_check_and_restart_aneg                       ۖx    genphy_c45_pma_setup_forced                             uK    genphy_c45_read_link                                    O    genphy_c45_read_lpa                                     rƃ    phy_resolve_aneg_pause                                  |c    __x86_indirect_thunk_rdx                                
*    genphy_c45_pma_read_abilities                           7    genphy_c45_loopback                                     J9    phy_sfp_attach                                              phy_sfp_detach                                          zR    module_layout                                           	+ 	+                                                                                                                                                                         	+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 	+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 	+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 	+                                                                                                                                                                                                                                                                                                                                                        0                                                                                       marvell10g                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               GCC: (Debian 12.2.0-14+deb12u1) 12.2.0  GCC: (Debian 12.2.0-14+deb12u1) 12.2.0             O         
9             X    %          
Y A=      h                    S     P=   _=   n= J  =    =    =     =    >    3>    Y>    >    > P  >    >     >    >     ?    ?    *?     >?    Q?    e? `   |?     ?     ? `   ?   ?    ?   ? 8   @    @   !@    2@    A@   N@    e@    |@    @  @  @     @     @    @ @   @    A    -A    DA     \A B  hA 
  yA   A    A   A     A    B    "B   1B   AB    YB    tB    B     B    B    C    CC    eC    C    C    C    D @  'D C  <D    WD k  mD l  D m  D n  D    D    D   D    E     E    1E   <E    OE   8   [E `     iE b @   E ,j     E Yj     E d    E Yj  @  E ,j           
]       
K       
         _       
                  a       
                 c E   (   E       E *   @   [E K   `   E K   h   F =j     F       F ?                 m                   @j                   [              e        ^ +F       ;F    p         
      
  ^ !?  KF    m       
       
  ^ !?  ZF    o       
      
  iF    q F    q F    q F    q       
         F    v F    v G    v ,G    v       
K      
  MG    {       
      
  bG gj    l   gG    }       
      
  bG gj    k   zG     G    q G    q G    q G    q G    q       
      
  G    G     	H     H           
   ݽ    5H     KH     ^H    q qH     H     H    q H    q H    q H    ǂ H    q       
    k   x   } H           
      
    $   H     I    q       
      
  5 K   I           
   :"    c  R    *   $    ^    0I     BI    q ]I    q xI    E mdio_device_id MV_PMA_FW_VER0 MV_PMA_FW_VER1 MV_PMA_21X0_PORT_CTRL MV_PMA_21X0_PORT_CTRL_SWRST MV_PMA_21X0_PORT_CTRL_MACTYPE_MASK MV_PMA_21X0_PORT_CTRL_MACTYPE_USXGMII MV_PMA_2180_PORT_CTRL_MACTYPE_DXGMII MV_PMA_2180_PORT_CTRL_MACTYPE_QXGMII MV_PMA_21X0_PORT_CTRL_MACTYPE_5GBASER MV_PMA_21X0_PORT_CTRL_MACTYPE_5GBASER_NO_SGMII_AN MV_PMA_21X0_PORT_CTRL_MACTYPE_10GBASER_RATE_MATCH MV_PMA_BOOT MV_PMA_BOOT_FATAL MV_PCS_BASE_T MV_PCS_BASE_R MV_PCS_1000BASEX MV_PCS_CSCR1 MV_PCS_CSCR1_ED_MASK MV_PCS_CSCR1_ED_OFF MV_PCS_CSCR1_ED_RX MV_PCS_CSCR1_ED_NLP MV_PCS_CSCR1_MDIX_MASK MV_PCS_CSCR1_MDIX_MDI MV_PCS_CSCR1_MDIX_MDIX MV_PCS_CSCR1_MDIX_AUTO MV_PCS_DSC1 MV_PCS_DSC1_ENABLE MV_PCS_DSC1_10GBT MV_PCS_DSC1_1GBR MV_PCS_DSC1_100BTX MV_PCS_DSC2 MV_PCS_DSC2_2P5G MV_PCS_DSC2_5G MV_PCS_CSSR1 MV_PCS_CSSR1_SPD1_MASK MV_PCS_CSSR1_SPD1_SPD2 MV_PCS_CSSR1_SPD1_1000 MV_PCS_CSSR1_SPD1_100 MV_PCS_CSSR1_SPD1_10 MV_PCS_CSSR1_DUPLEX_FULL MV_PCS_CSSR1_RESOLVED MV_PCS_CSSR1_MDIX MV_PCS_CSSR1_SPD2_MASK MV_PCS_CSSR1_SPD2_5000 MV_PCS_CSSR1_SPD2_2500 MV_PCS_CSSR1_SPD2_10000 MV_PCS_TEMP MV_PCS_PORT_INFO MV_PCS_PORT_INFO_NPORTS_MASK MV_PCS_PORT_INFO_NPORTS_SHIFT MV_AN_21X0_SERDES_CTRL2 MV_AN_21X0_SERDES_CTRL2_AUTO_INIT_DIS MV_AN_21X0_SERDES_CTRL2_RUN_INIT MV_AN_CTRL1000 MV_AN_STAT1000 MV_V2_PORT_CTRL MV_V2_PORT_CTRL_PWRDOWN MV_V2_33X0_PORT_CTRL_SWRST MV_V2_33X0_PORT_CTRL_MACTYPE_MASK MV_V2_33X0_PORT_CTRL_MACTYPE_RXAUI MV_V2_3310_PORT_CTRL_MACTYPE_XAUI_RATE_MATCH MV_V2_3340_PORT_CTRL_MACTYPE_RXAUI_NO_SGMII_AN MV_V2_33X0_PORT_CTRL_MACTYPE_RXAUI_RATE_MATCH MV_V2_3310_PORT_CTRL_MACTYPE_XAUI MV_V2_33X0_PORT_CTRL_MACTYPE_10GBASER MV_V2_33X0_PORT_CTRL_MACTYPE_10GBASER_NO_SGMII_AN MV_V2_33X0_PORT_CTRL_MACTYPE_10GBASER_RATE_MATCH MV_V2_33X0_PORT_CTRL_MACTYPE_USXGMII MV_V2_PORT_INTR_STS MV_V2_PORT_INTR_MASK MV_V2_PORT_INTR_STS_WOL_EN MV_V2_MAGIC_PKT_WORD0 MV_V2_MAGIC_PKT_WORD1 MV_V2_MAGIC_PKT_WORD2 MV_V2_WOL_CTRL MV_V2_WOL_CTRL_CLEAR_STS MV_V2_WOL_CTRL_MAGIC_PKT_EN MV_V2_TEMP_CTRL MV_V2_TEMP_CTRL_MASK MV_V2_TEMP_CTRL_SAMPLE MV_V2_TEMP_CTRL_DISABLE MV_V2_TEMP MV_V2_TEMP_UNKNOWN mv3310_chip has_downshift init_supported_interfaces get_mactype set_mactype select_mactype init_interface hwmon_read_temp_reg mv3310_priv supported_interfaces firmware_ver rate_match const_interface hwmon_dev hwmon_name phy_module_exit phy_module_init mv3110_set_wol mv3110_get_wol mv2111_match_phy_device mv2110_match_phy_device mv3340_match_phy_device mv3310_match_phy_device mv2111_init_supported_interfaces mv2110_init_supported_interfaces mv3340_init_supported_interfaces mv3310_init_supported_interfaces mv3310_has_downshift tuna mv3310_set_tunable mv3310_get_tunable mv3310_read_status mv3310_aneg_done mv3310_config_aneg mv3310_get_features mv3310_config_init mactype mv3340_init_interface mv3310_init_interface mv2110_init_interface mv3310_select_mactype mv3310_set_mactype mv3310_get_mactype mv2110_select_mactype mv2110_set_mactype mv2110_get_mactype mv3310_resume mv3310_suspend mv3310_remove mv3310_probe mv3310_sfp_insert mv3310_set_downshift mv3310_power_up mv3310_hwmon_config mv3310_hwmon_read mv2110_hwmon_read_temp_reg mv3310_hwmon_read_temp_reg mv3310_hwmon_is_visible  marvell10g.ko   M                                                                                               	                      
                                                                                        M       ,            y       ,       +                   B             @	      O                   h            	       ~                               <                                       $                    .            0       f                   L                   ~           p             &                   6            `      E                 `          #       s                            #           0                       ?                             @      #           p             "           (       C    P      -       d                 y    `                 `      5                                              	                    0      I                 2                 5                              	      z       (    	      l       <    	             I           O      [                 r    @      P           
      &                                    
                                                                p
      >           
                 
      H                  =       7    `            J    P      I       b                 u    h      I                                   ]                                                      A                                             .                   W           8       c           8       o           8       {    @       8                                                                                                                                    
                        "               *   	                9                     S                     f                     t                                                                                                                                                                                                                '                     6                     K                     b                     p                     w                                                                                                                                                                         0                     ?                     T                     ^                     s                                                                                                                             __UNIQUE_ID_alias195 __UNIQUE_ID_alias194 __UNIQUE_ID_depends193 ____versions __UNIQUE_ID_retpoline192 __UNIQUE_ID_intree191 __UNIQUE_ID_name190 __UNIQUE_ID_vermagic189 _note_10 _note_9 mv3310_hwmon_is_visible mv3310_hwmon_read mv2110_init_interface mv3310_init_interface mv3310_has_downshift phy_module_init mv3310_drivers mv2110_hwmon_read_temp_reg mv2110_get_mactype mv3310_hwmon_read_temp_reg mv3310_get_mactype mv3310_get_tunable mv2110_select_mactype mv2111_init_supported_interfaces mv2110_init_supported_interfaces mv3310_select_mactype mv3340_init_supported_interfaces mv3310_init_supported_interfaces mv3310_set_downshift mv3110_set_wol mv3310_aneg_done mv3310_sfp_insert mv3310_sfp_insert.cold phy_module_exit mv3340_match_phy_device mv3110_get_wol mv2110_set_mactype __func__.32 mv3310_power_up mv3310_hwmon_config mv3310_probe mv3310_probe.cold mv3310_hwmon_chip_info mv3310_sfp_ops mv3310_resume mv3310_reset.constprop.0 __func__.33 mv3310_set_tunable mv3310_config_aneg CSWTCH.106 mv2110_match_phy_device mv3310_suspend mv3310_set_mactype mv2111_match_phy_device mv3310_read_status mv3310_match_phy_device mv3310_config_init mv3310_config_init.cold mv3310_get_features mv3310_remove mv3340_init_interface __UNIQUE_ID_license416 __UNIQUE_ID_description415 mv3310_tbl __UNIQUE_ID___addressable_cleanup_module414 __UNIQUE_ID___addressable_init_module413 mv3310_type mv3340_type mv2110_type mv2111_type mv3310_hwmon_ops mv3310_hwmon_info mv3310_hwmon_chip mv3310_hwmon_temp mv3310_hwmon_temp_config mv3310_hwmon_chip_config devm_kmalloc phy_sfp_detach __this_module cleanup_module genphy_c45_an_config_aneg usleep_range_state phy_write_mmd __fentry__ init_module __x86_indirect_thunk_rax phy_drivers_unregister devm_kstrdup __stack_chk_fail genphy_c45_check_and_restart_aneg __x86_indirect_thunk_rdx _dev_info _dev_err phy_modify_mmd genphy_c45_aneg_done phy_modify_mmd_changed phy_sfp_probe _ctype _dev_warn sfp_select_interface genphy_c45_pma_read_abilities __x86_return_thunk devm_hwmon_device_register_with_info genphy_c45_loopback genphy_c45_read_lpa genphy_c45_pma_setup_forced __const_udelay phy_drivers_register ktime_get genphy_c45_read_link phy_read_mmd phy_sfp_attach __mod_mdio__mv3310_tbl_device_table phy_resolve_aneg_pause __SCT__might_resched sfp_parse_support                  \              n   *          n   1          \   h          ^             n             n             \             n             n             n             \            n   D         n   X         n   q         \            n            \            w            \            w            n            \            w            \            w            n   1         \   Q         w   ~         n            n            w            \            n   !         \   :         n   A         \   _         n   q         \            n            n   !         \   D         n   Q         \   y         n            \            f   #         f   1         n   N         n   a         \            f            [            [            [            n   2         f   Q         f   a         \   t         w            n            g            \            |            l                        n   "         a   1         \   J         n   Y         w   u         n            \            w            n            \            f            n            f            u   )         {   =         Z   O         w   d         u   }         Z            w                                                    e            f   	         \   #	         f   /	         s   X	         n   v	         f   	         \   	         n   	         [   	         f   	         n   	         \   
            &       -
            &       <
         w   J
                   \
         U   z
         w   
         n   
         w   
            0       
         n   
         \   
         n            \   !         f   0         u   <         {   P         Z   _         w   t         u            Z            w            n                                                   e            \   :         h   G         n   Q         n   }         n            \                                h            Y   1
         h   G
         b   N
         r   Y
         n   q
         \   
         n   
         w   
         n   
         \   
         f   
         \   
         h            f            n   !         \   9         n   H         w   Y         n   a         \            w            n            v   #         w   ;         w            q            w            z   Q         \   j         n   y         w            n            \            ^               x               ^   )         ^   3            d      P         h            n            \            m            n            w   !         \   9         n   Q         [   s         f   y         n            \            n            n            n            n             \             W                                          t                                  e                                   (       &          k   0             
      ;                    ^          d   o          ^             f                
                `             j                       |	                  
      %                  *         o   @            
      M         ^   X            @      d         i   k            X       s         e   x            {                  -                d            c               {                                             
          _                                      0                                                             p      (                     0                   8                   @                   H                    P             0      X                   `                    h             @      p             p      x                                 P                                      `                   `                                      0                                                          	                   	                   	                   
                                                                             p
                   
                  
                                     `                   P      (                  0                  8                   @                  H                    P                   X                   `                   h                    p                                @                                                                                                                   p                                                           
                   p                                                         p                  P                                     
                   p      (                   0                  @         x           H         V           P                                                                                                                          0                     g                                                          (                   n                    L                                                           )                                                                                                                                            C      $             W      (                   ,                   0                   4             }      8                   <                   @             9      D             ^      H                   L             
      P             C      T             x      X             0      \             M      `                   d                   h                   l             I      p             t      t                   x                   |             W	                   	                   	                   
                   
                   
                                      F                   P                   |                   X
                   
                   
                                      8                   X                                      i                                                                            8                   x                                                                                                                     .                    0                    6                              // C++11 <type_traits> -*- C++ -*-

// Copyright (C) 2007-2022 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library.  This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.

// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.

// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
// <http://www.gnu.org/licenses/>.

/** @file include/type_traits
 *  This is a Standard C++ Library header.
 */

#ifndef _GLIBCXX_TYPE_TRAITS
#define _GLIBCXX_TYPE_TRAITS 1

#pragma GCC system_header

#if __cplusplus < 201103L
# include <bits/c++0x_warning.h>
#else

#include <bits/c++config.h>

namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION

  template<typename _Tp>
    class reference_wrapper;

  /**
   * @defgroup metaprogramming Metaprogramming
   * @ingroup utilities
   *
   * Template utilities for compile-time introspection and modification,
   * including type classification traits, type property inspection traits
   * and type transformation traits.
   *
   * @since C++11
   *
   * @{
   */

  /// integral_constant
  template<typename _Tp, _Tp __v>
    struct integral_constant
    {
      static constexpr _Tp                  value = __v;
      typedef _Tp                           value_type;
      typedef integral_constant<_Tp, __v>   type;
      constexpr operator value_type() const noexcept { return value; }
#if __cplusplus > 201103L

#define __cpp_lib_integral_constant_callable 201304L

      constexpr value_type operator()() const noexcept { return value; }
#endif
    };

#if ! __cpp_inline_variables
  template<typename _Tp, _Tp __v>
    constexpr _Tp integral_constant<_Tp, __v>::value;
#endif

  /// The type used as a compile-time boolean with true value.
  using true_type =  integral_constant<bool, true>;

  /// The type used as a compile-time boolean with false value.
  using false_type = integral_constant<bool, false>;

  /// @cond undocumented
  /// bool_constant for C++11
  template<bool __v>
    using __bool_constant = integral_constant<bool, __v>;
  /// @endcond

#if __cplusplus >= 201703L
# define __cpp_lib_bool_constant 201505L
  /// Alias template for compile-time boolean constant types.
  /// @since C++17
  template<bool __v>
    using bool_constant = integral_constant<bool, __v>;
#endif

  // Metaprogramming helper types.

  template<bool>
    struct __conditional
    {
      template<typename _Tp, typename>
	using type = _Tp;
    };

  template<>
    struct __conditional<false>
    {
      template<typename, typename _Up>
	using type = _Up;
    };

  // More efficient version of std::conditional_t for internal use (and C++11)
  template<bool _Cond, typename _If, typename _Else>
    using __conditional_t
      = typename __conditional<_Cond>::template type<_If, _Else>;

  /// @cond undocumented
  template <typename _Type>
    struct __type_identity
    { using type = _Type; };

  template<typename _Tp>
    using __type_identity_t = typename __type_identity<_Tp>::type;

  template<typename...>
    struct __or_;

  template<>
    struct __or_<>
    : public false_type
    { };

  template<typename _B1>
    struct __or_<_B1>
    : public _B1
    { };

  template<typename _B1, typename _B2>
    struct __or_<_B1, _B2>
    : public __conditional_t<_B1::value, _B1, _B2>
    { };

  template<typename _B1, typename _B2, typename _B3, typename... _Bn>
    struct __or_<_B1, _B2, _B3, _Bn...>
    : public __conditional_t<_B1::value, _B1, __or_<_B2, _B3, _Bn...>>
    { };

  template<typename...>
    struct __and_;

  template<>
    struct __and_<>
    : public true_type
    { };

  template<typename _B1>
    struct __and_<_B1>
    : public _B1
    { };

  template<typename _B1, typename _B2>
    struct __and_<_B1, _B2>
    : public __conditional_t<_B1::value, _B2, _B1>
    { };

  template<typename _B1, typename _B2, typename _B3, typename... _Bn>
    struct __and_<_B1, _B2, _B3, _Bn...>
    : public __conditional_t<_B1::value, __and_<_B2, _B3, _Bn...>, _B1>
    { };

  template<typename _Pp>
    struct __not_
    : public __bool_constant<!bool(_Pp::value)>
    { };
  /// @endcond

#if __cplusplus >= 201703L

  /// @cond undocumented
  template<typename... _Bn>
    inline constexpr bool __or_v = __or_<_Bn...>::value;
  template<typename... _Bn>
    inline constexpr bool __and_v = __and_<_Bn...>::value;
  /// @endcond

#define __cpp_lib_logical_traits 201510L

  template<typename... _Bn>
    struct conjunction
    : __and_<_Bn...>
    { };

  template<typename... _Bn>
    struct disjunction
    : __or_<_Bn...>
    { };

  template<typename _Pp>
    struct negation
    : __not_<_Pp>
    { };

  /** @ingroup variable_templates
   * @{
   */
  template<typename... _Bn>
    inline constexpr bool conjunction_v = conjunction<_Bn...>::value;

  template<typename... _Bn>
    inline constexpr bool disjunction_v = disjunction<_Bn...>::value;

  template<typename _Pp>
    inline constexpr bool negation_v = negation<_Pp>::value;
  /// @}

#endif // C++17

  // Forward declarations
  template<typename>
    struct is_reference;
  template<typename>
    struct is_function;
  template<typename>
    struct is_void;
  template<typename>
    struct remove_cv;
  template<typename>
    struct is_const;

  /// @cond undocumented
  template<typename>
    struct __is_array_unknown_bounds;

  // Helper functions that return false_type for incomplete classes,
  // incomplete unions and arrays of known bound from those.

  template <typename _Tp, size_t = sizeof(_Tp)>
    constexpr true_type __is_complete_or_unbounded(__type_identity<_Tp>)
    { return {}; }

  template <typename _TypeIdentity,
      typename _NestedType = typename _TypeIdentity::type>
    constexpr typename __or_<
      is_reference<_NestedType>,
      is_function<_NestedType>,
      is_void<_NestedType>,
      __is_array_unknown_bounds<_NestedType>
    >::type __is_complete_or_unbounded(_TypeIdentity)
    { return {}; }

  // For several sfinae-friendly trait implementations we transport both the
  // result information (as the member type) and the failure information (no
  // member type). This is very similar to std::enable_if, but we cannot use
  // them, because we need to derive from them as an implementation detail.

  template<typename _Tp>
    struct __success_type
    { typedef _Tp type; };

  struct __failure_type
  { };

  // __remove_cv_t (std::remove_cv_t for C++11).
  template<typename _Tp>
    using __remove_cv_t = typename remove_cv<_Tp>::type;

  // Primary type categories.

  template<typename>
    struct __is_void_helper
    : public false_type { };

  template<>
    struct __is_void_helper<void>
    : public true_type { };
  /// @endcond

  /// is_void
  template<typename _Tp>
    struct is_void
    : public __is_void_helper<__remove_cv_t<_Tp>>::type
    { };

  /// @cond undocumented
  template<typename>
    struct __is_integral_helper
    : public false_type { };

  template<>
    struct __is_integral_helper<bool>
    : public true_type { };

  template<>
    struct __is_integral_helper<char>
    : public true_type { };

  template<>
    struct __is_integral_helper<signed char>
    : public true_type { };

  template<>
    struct __is_integral_helper<unsigned char>
    : public true_type { };

  // We want is_integral<wchar_t> to be true (and make_signed/unsigned to work)
  // even when libc doesn't provide working <wchar.h> and related functions,
  // so don't check _GLIBCXX_USE_WCHAR_T here.
  template<>
    struct __is_integral_helper<wchar_t>
    : public true_type { };

#ifdef _GLIBCXX_USE_CHAR8_T
  template<>
    struct __is_integral_helper<char8_t>
    : public true_type { };
#endif

  template<>
    struct __is_integral_helper<char16_t>
    : public true_type { };

  template<>
    struct __is_integral_helper<char32_t>
    : public true_type { };

  template<>
    struct __is_integral_helper<short>
    : public true_type { };

  template<>
    struct __is_integral_helper<unsigned short>
    : public true_type { };

  template<>
    struct __is_integral_helper<int>
    : public true_type { };

  template<>
    struct __is_integral_helper<unsigned int>
    : public true_type { };

  template<>
    struct __is_integral_helper<long>
    : public true_type { };

  template<>
    struct __is_integral_helper<unsigned long>
    : public true_type { };

  template<>
    struct __is_integral_helper<long long>
    : public true_type { };

  template<>
    struct __is_integral_helper<unsigned long long>
    : public true_type { };

  // Conditionalizing on __STRICT_ANSI__ here will break any port that
  // uses one of these types for size_t.
#if defined(__GLIBCXX_TYPE_INT_N_0)
  __extension__
  template<>
    struct __is_integral_helper<__GLIBCXX_TYPE_INT_N_0>
    : public true_type { };

  __extension__
  template<>
    struct __is_integral_helper<unsigned __GLIBCXX_TYPE_INT_N_0>
    : public true_type { };
#endif
#if defined(__GLIBCXX_TYPE_INT_N_1)
  __extension__
  template<>
    struct __is_integral_helper<__GLIBCXX_TYPE_INT_N_1>
    : public true_type { };

  __extension__
  template<>
    struct __is_integral_helper<unsigned __GLIBCXX_TYPE_INT_N_1>
    : public true_type { };
#endif
#if defined(__GLIBCXX_TYPE_INT_N_2)
  __extension__
  template<>
    struct __is_integral_helper<__GLIBCXX_TYPE_INT_N_2>
    : public true_type { };

  __extension__
  template<>
    struct __is_integral_helper<unsigned __GLIBCXX_TYPE_INT_N_2>
    : public true_type { };
#endif
#if defined(__GLIBCXX_TYPE_INT_N_3)
  __extension__
  template<>
    struct __is_integral_helper<__GLIBCXX_TYPE_INT_N_3>
    : public true_type { };

  __extension__
  template<>
    struct __is_integral_helper<unsigned __GLIBCXX_TYPE_INT_N_3>
    : public true_type { };
#endif
  /// @endcond

  /// is_integral
  template<typename _Tp>
    struct is_integral
    : public __is_integral_helper<__remove_cv_t<_Tp>>::type
    { };

  /// @cond undocumented
  template<typename>
    struct __is_floating_point_helper
    : public false_type { };

  template<>
    struct __is_floating_point_helper<float>
    : public true_type { };

  template<>
    struct __is_floating_point_helper<double>
    : public true_type { };

  template<>
    struct __is_floating_point_helper<long double>
    : public true_type { };

#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) && !defined(__CUDACC__)
  template<>
    struct __is_floating_point_helper<__float128>
    : public true_type { };
#endif
  /// @endcond

  /// is_floating_point
  template<typename _Tp>
    struct is_floating_point
    : public __is_floating_point_helper<__remove_cv_t<_Tp>>::type
    { };

  /// is_array
  template<typename>
    struct is_array
    : public false_type { };

  template<typename _Tp, std::size_t _Size>
    struct is_array<_Tp[_Size]>
    : public true_type { };

  template<typename _Tp>
    struct is_array<_Tp[]>
    : public true_type { };

  template<typename>
    struct __is_pointer_helper
    : public false_type { };

  template<typename _Tp>
    struct __is_pointer_helper<_Tp*>
    : public true_type { };

  /// is_pointer
  template<typename _Tp>
    struct is_pointer
    : public __is_pointer_helper<__remove_cv_t<_Tp>>::type
    { };

  /// is_lvalue_reference
  template<typename>
    struct is_lvalue_reference
    : public false_type { };

  template<typename _Tp>
    struct is_lvalue_reference<_Tp&>
    : public true_type { };

  /// is_rvalue_reference
  template<typename>
    struct is_rvalue_reference
    : public false_type { };

  template<typename _Tp>
    struct is_rvalue_reference<_Tp&&>
    : public true_type { };

  template<typename>
    struct __is_member_object_pointer_helper
    : public false_type { };

  template<typename _Tp, typename _Cp>
    struct __is_member_object_pointer_helper<_Tp _Cp::*>
    : public __not_<is_function<_Tp>>::type { };

  /// is_member_object_pointer
  template<typename _Tp>
    struct is_member_object_pointer
    : public __is_member_object_pointer_helper<__remove_cv_t<_Tp>>::type
    { };

  template<typename>
    struct __is_member_function_pointer_helper
    : public false_type { };

  template<typename _Tp, typename _Cp>
    struct __is_member_function_pointer_helper<_Tp _Cp::*>
    : public is_function<_Tp>::type { };

  /// is_member_function_pointer
  template<typename _Tp>
    struct is_member_function_pointer
    : public __is_member_function_pointer_helper<__remove_cv_t<_Tp>>::type
    { };

  /// is_enum
  template<typename _Tp>
    struct is_enum
    : public integral_constant<bool, __is_enum(_Tp)>
    { };

  /// is_union
  template<typename _Tp>
    struct is_union
    : public integral_constant<bool, __is_union(_Tp)>
    { };

  /// is_class
  template<typename _Tp>
    struct is_class
    : public integral_constant<bool, __is_class(_Tp)>
    { };

  /// is_function
  template<typename _Tp>
    struct is_function
    : public __bool_constant<!is_const<const _Tp>::value> { };

  template<typename _Tp>
    struct is_function<_Tp&>
    : public false_type { };

  template<typename _Tp>
    struct is_function<_Tp&&>
    : public false_type { };

#define __cpp_lib_is_null_pointer 201309L

  template<typename>
    struct __is_null_pointer_helper
    : public false_type { };

  template<>
    struct __is_null_pointer_helper<std::nullptr_t>
    : public true_type { };

  /// is_null_pointer (LWG 2247).
  template<typename _Tp>
    struct is_null_pointer
    : public __is_null_pointer_helper<__remove_cv_t<_Tp>>::type
    { };

  /// __is_nullptr_t (deprecated extension).
  /// @deprecated Non-standard. Use `is_null_pointer` instead.
  template<typename _Tp>
    struct __is_nullptr_t
    : public is_null_pointer<_Tp>
    { } _GLIBCXX_DEPRECATED_SUGGEST("std::is_null_pointer");

  // Composite type categories.

  /// is_reference
  template<typename _Tp>
    struct is_reference
    : public __or_<is_lvalue_reference<_Tp>,
                   is_rvalue_reference<_Tp>>::type
    { };

  /// is_arithmetic
  template<typename _Tp>
    struct is_arithmetic
    : public __or_<is_integral<_Tp>, is_floating_point<_Tp>>::type
    { };

  /// is_fundamental
  template<typename _Tp>
    struct is_fundamental
    : public __or_<is_arithmetic<_Tp>, is_void<_Tp>,
		   is_null_pointer<_Tp>>::type
    { };

  /// is_object
  template<typename _Tp>
    struct is_object
    : public __not_<__or_<is_function<_Tp>, is_reference<_Tp>,
                          is_void<_Tp>>>::type
    { };

  template<typename>
    struct is_member_pointer;

  /// is_scalar
  template<typename _Tp>
    struct is_scalar
    : public __or_<is_arithmetic<_Tp>, is_enum<_Tp>, is_pointer<_Tp>,
                   is_member_pointer<_Tp>, is_null_pointer<_Tp>>::type
    { };

  /// is_compound
  template<typename _Tp>
    struct is_compound
    : public __not_<is_fundamental<_Tp>>::type { };

  /// @cond undocumented
  template<typename _Tp>
    struct __is_member_pointer_helper
    : public false_type { };

  template<typename _Tp, typename _Cp>
    struct __is_member_pointer_helper<_Tp _Cp::*>
    : public true_type { };
  /// @endcond

  /// is_member_pointer
  template<typename _Tp>
    struct is_member_pointer
    : public __is_member_pointer_helper<__remove_cv_t<_Tp>>::type
    { };

  template<typename, typename>
    struct is_same;

  /// @cond undocumented
  template<typename _Tp, typename... _Types>
    using __is_one_of = __or_<is_same<_Tp, _Types>...>;

  // Check if a type is one of the signed integer types.
  __extension__
  template<typename _Tp>
    using __is_signed_integer = __is_one_of<__remove_cv_t<_Tp>,
	  signed char, signed short, signed int, signed long,
	  signed long long
#if defined(__GLIBCXX_TYPE_INT_N_0)
	  , signed __GLIBCXX_TYPE_INT_N_0
#endif
#if defined(__GLIBCXX_TYPE_INT_N_1)
	  , signed __GLIBCXX_TYPE_INT_N_1
#endif
#if defined(__GLIBCXX_TYPE_INT_N_2)
	  , signed __GLIBCXX_TYPE_INT_N_2
#endif
#if defined(__GLIBCXX_TYPE_INT_N_3)
	  , signed __GLIBCXX_TYPE_INT_N_3
#endif
	  >;

  // Check if a type is one of the unsigned integer types.
  __extension__
  template<typename _Tp>
    using __is_unsigned_integer = __is_one_of<__remove_cv_t<_Tp>,
	  unsigned char, unsigned short, unsigned int, unsigned long,
	  unsigned long long
#if defined(__GLIBCXX_TYPE_INT_N_0)
	  , unsigned __GLIBCXX_TYPE_INT_N_0
#endif
#if defined(__GLIBCXX_TYPE_INT_N_1)
	  , unsigned __GLIBCXX_TYPE_INT_N_1
#endif
#if defined(__GLIBCXX_TYPE_INT_N_2)
	  , unsigned __GLIBCXX_TYPE_INT_N_2
#endif
#if defined(__GLIBCXX_TYPE_INT_N_3)
	  , unsigned __GLIBCXX_TYPE_INT_N_3
#endif
	  >;

  // Check if a type is one of the signed or unsigned integer types.
  template<typename _Tp>
    using __is_standard_integer
      = __or_<__is_signed_integer<_Tp>, __is_unsigned_integer<_Tp>>;

  // __void_t (std::void_t for C++11)
  template<typename...> using __void_t = void;

  // Utility to detect referenceable types ([defns.referenceable]).

  template<typename _Tp, typename = void>
    struct __is_referenceable
    : public false_type
    { };

  template<typename _Tp>
    struct __is_referenceable<_Tp, __void_t<_Tp&>>
    : public true_type
    { };
  /// @endcond

  // Type properties.

  /// is_const
  template<typename>
    struct is_const
    : public false_type { };

  template<typename _Tp>
    struct is_const<_Tp const>
    : public true_type { };

  /// is_volatile
  template<typename>
    struct is_volatile
    : public false_type { };

  template<typename _Tp>
    struct is_volatile<_Tp volatile>
    : public true_type { };

  /// is_trivial
  template<typename _Tp>
    struct is_trivial
    : public integral_constant<bool, __is_trivial(_Tp)>
    {
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
	"template argument must be a complete class or an unbounded array");
    };

  /// is_trivially_copyable
  template<typename _Tp>
    struct is_trivially_copyable
    : public integral_constant<bool, __is_trivially_copyable(_Tp)>
    {
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
	"template argument must be a complete class or an unbounded array");
    };

  /// is_standard_layout
  template<typename _Tp>
    struct is_standard_layout
    : public integral_constant<bool, __is_standard_layout(_Tp)>
    {
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
	"template argument must be a complete class or an unbounded array");
    };

  /** is_pod
   * @deprecated Deprecated in C++20.
   * Use `is_standard_layout && is_trivial` instead.
   */
  // Could use is_standard_layout && is_trivial instead of the builtin.
  template<typename _Tp>
    struct
    _GLIBCXX20_DEPRECATED("use is_standard_layout && is_trivial instead")
    is_pod
    : public integral_constant<bool, __is_pod(_Tp)>
    {
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
	"template argument must be a complete class or an unbounded array");
    };

  /** is_literal_type
   * @deprecated Deprecated in C++17, removed in C++20.
   * The idea of a literal type isn't useful.
   */
  template<typename _Tp>
    struct
    _GLIBCXX17_DEPRECATED
    is_literal_type
    : public integral_constant<bool, __is_literal_type(_Tp)>
    {
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
	"template argument must be a complete class or an unbounded array");
    };

  /// is_empty
  template<typename _Tp>
    struct is_empty
    : public integral_constant<bool, __is_empty(_Tp)>
    { };

  /// is_polymorphic
  template<typename _Tp>
    struct is_polymorphic
    : public integral_constant<bool, __is_polymorphic(_Tp)>
    { };

#if __cplusplus >= 201402L
#define __cpp_lib_is_final 201402L
  /// is_final
  /// @since C++14
  template<typename _Tp>
    struct is_final
    : public integral_constant<bool, __is_final(_Tp)>
    { };
#endif

  /// is_abstract
  template<typename _Tp>
    struct is_abstract
    : public integral_constant<bool, __is_abstract(_Tp)>
    { };

  /// @cond undocumented
  template<typename _Tp,
	   bool = is_arithmetic<_Tp>::value>
    struct __is_signed_helper
    : public false_type { };

  template<typename _Tp>
    struct __is_signed_helper<_Tp, true>
    : public integral_constant<bool, _Tp(-1) < _Tp(0)>
    { };
  /// @endcond

  /// is_signed
  template<typename _Tp>
    struct is_signed
    : public __is_signed_helper<_Tp>::type
    { };

  /// is_unsigned
  template<typename _Tp>
    struct is_unsigned
    : public __and_<is_arithmetic<_Tp>, __not_<is_signed<_Tp>>>
    { };

  /// @cond undocumented
  template<typename _Tp, typename _Up = _Tp&&>
    _Up
    __declval(int);

  template<typename _Tp>
    _Tp
    __declval(long);
  /// @endcond

  template<typename _Tp>
    auto declval() noexcept -> decltype(__declval<_Tp>(0));

  template<typename, unsigned = 0>
    struct extent;

  template<typename>
    struct remove_all_extents;

  /// @cond undocumented
  template<typename _Tp>
    struct __is_array_known_bounds
    : public integral_constant<bool, (extent<_Tp>::value > 0)>
    { };

  template<typename _Tp>
    struct __is_array_unknown_bounds
    : public __and_<is_array<_Tp>, __not_<extent<_Tp>>>
    { };

  // Destructible and constructible type properties.

  // In N3290 is_destructible does not say anything about function
  // types and abstract types, see LWG 2049. This implementation
  // describes function types as non-destructible and all complete
  // object types as destructible, iff the explicit destructor
  // call expression is wellformed.
  struct __do_is_destructible_impl
  {
    template<typename _Tp, typename = decltype(declval<_Tp&>().~_Tp())>
      static true_type __test(int);

    template<typename>
      static false_type __test(...);
  };

  template<typename _Tp>
    struct __is_destructible_impl
    : public __do_is_destructible_impl
    {
      typedef decltype(__test<_Tp>(0)) type;
    };

  template<typename _Tp,
           bool = __or_<is_void<_Tp>,
                        __is_array_unknown_bounds<_Tp>,
                        is_function<_Tp>>::value,
           bool = __or_<is_reference<_Tp>, is_scalar<_Tp>>::value>
    struct __is_destructible_safe;

  template<typename _Tp>
    struct __is_destructible_safe<_Tp, false, false>
    : public __is_destructible_impl<typename
               remove_all_extents<_Tp>::type>::type
    { };

  template<typename _Tp>
    struct __is_destructible_safe<_Tp, true, false>
    : public false_type { };

  template<typename _Tp>
    struct __is_destructible_safe<_Tp, false, true>
    : public true_type { };
  /// @endcond

  /// is_destructible
  template<typename _Tp>
    struct is_destructible
    : public __is_destructible_safe<_Tp>::type
    {
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
	"template argument must be a complete class or an unbounded array");
    };

  /// @cond undocumented

  // is_nothrow_destructible requires that is_destructible is
  // satisfied as well.  We realize that by mimicing the
  // implementation of is_destructible but refer to noexcept(expr)
  // instead of decltype(expr).
  struct __do_is_nt_destructible_impl
  {
    template<typename _Tp>
      static __bool_constant<noexcept(declval<_Tp&>().~_Tp())>
      __test(int);

    template<typename>
      static false_type __test(...);
  };

  template<typename _Tp>
    struct __is_nt_destructible_impl
    : public __do_is_nt_destructible_impl
    {
      typedef decltype(__test<_Tp>(0)) type;
    };

  template<typename _Tp,
           bool = __or_<is_void<_Tp>,
                        __is_array_unknown_bounds<_Tp>,
                        is_function<_Tp>>::value,
           bool = __or_<is_reference<_Tp>, is_scalar<_Tp>>::value>
    struct __is_nt_destructible_safe;

  template<typename _Tp>
    struct __is_nt_destructible_safe<_Tp, false, false>
    : public __is_nt_destructible_impl<typename
               remove_all_extents<_Tp>::type>::type
    { };

  template<typename _Tp>
    struct __is_nt_destructible_safe<_Tp, true, false>
    : public false_type { };

  template<typename _Tp>
    struct __is_nt_destructible_safe<_Tp, false, true>
    : public true_type { };
  /// @endcond

  /// is_nothrow_destructible
  template<typename _Tp>
    struct is_nothrow_destructible
    : public __is_nt_destructible_safe<_Tp>::type
    {
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
	"template argument must be a complete class or an unbounded array");
    };

  /// @cond undocumented
  template<typename _Tp, typename... _Args>
    struct __is_constructible_impl
    : public __bool_constant<__is_constructible(_Tp, _Args...)>
    { };
  /// @endcond

  /// is_constructible
  template<typename _Tp, typename... _Args>
    struct is_constructible
      : public __is_constructible_impl<_Tp, _Args...>
    {
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
	"template argument must be a complete class or an unbounded array");
    };

  /// is_default_constructible
  template<typename _Tp>
    struct is_default_constructible
    : public __is_constructible_impl<_Tp>::type
    {
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
	"template argument must be a complete class or an unbounded array");
    };

  /// @cond undocumented
  template<typename _Tp, bool = __is_referenceable<_Tp>::value>
    struct __is_copy_constructible_impl;

  template<typename _Tp>
    struct __is_copy_constructible_impl<_Tp, false>
    : public false_type { };

  template<typename _Tp>
    struct __is_copy_constructible_impl<_Tp, true>
    : public __is_constructible_impl<_Tp, const _Tp&>
    { };
  /// @endcond

  /// is_copy_constructible
  template<typename _Tp>
    struct is_copy_constructible
    : public __is_copy_constructible_impl<_Tp>
    {
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
	"template argument must be a complete class or an unbounded array");
    };

  /// @cond undocumented
  template<typename _Tp, bool = __is_referenceable<_Tp>::value>
    struct __is_move_constructible_impl;

  template<typename _Tp>
    struct __is_move_constructible_impl<_Tp, false>
    : public false_type { };

  template<typename _Tp>
    struct __is_move_constructible_impl<_Tp, true>
    : public __is_constructible_impl<_Tp, _Tp&&>
    { };
  /// @endcond

  /// is_move_constructible
  template<typename _Tp>
    struct is_move_constructible
    : public __is_move_constructible_impl<_Tp>
    {
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
	"template argument must be a complete class or an unbounded array");
    };

  /// @cond undocumented
  template<typename _Tp, typename... _Args>
    using __is_nothrow_constructible_impl
      = __bool_constant<__is_nothrow_constructible(_Tp, _Args...)>;
  /// @endcond

  /// is_nothrow_constructible
  template<typename _Tp, typename... _Args>
    struct is_nothrow_constructible
    : public __is_nothrow_constructible_impl<_Tp, _Args...>::type
    {
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
	"template argument must be a complete class or an unbounded array");
    };

  /// is_nothrow_default_constructible
  template<typename _Tp>
    struct is_nothrow_default_constructible
    : public __bool_constant<__is_nothrow_constructible(_Tp)>
    {
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
	"template argument must be a complete class or an unbounded array");
    };

  /// @cond undocumented
  template<typename _Tp, bool = __is_referenceable<_Tp>::value>
    struct __is_nothrow_copy_constructible_impl;

  template<typename _Tp>
    struct __is_nothrow_copy_constructible_impl<_Tp, false>
    : public false_type { };

  template<typename _Tp>
    struct __is_nothrow_copy_constructible_impl<_Tp, true>
    : public __is_nothrow_constructible_impl<_Tp, const _Tp&>
    { };
  /// @endcond

  /// is_nothrow_copy_constructible
  template<typename _Tp>
    struct is_nothrow_copy_constructible
    : public __is_nothrow_copy_constructible_impl<_Tp>::type
    {
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
	"template argument must be a complete class or an unbounded array");
    };

  /// @cond undocumented
  template<typename _Tp, bool = __is_referenceable<_Tp>::value>
    struct __is_nothrow_move_constructible_impl;

  template<typename _Tp>
    struct __is_nothrow_move_constructible_impl<_Tp, false>
    : public false_type { };

  template<typename _Tp>
    struct __is_nothrow_move_constructible_impl<_Tp, true>
    : public __is_nothrow_constructible_impl<_Tp, _Tp&&>
    { };
  /// @endcond

  /// is_nothrow_move_constructible
  template<typename _Tp>
    struct is_nothrow_move_constructible
    : public __is_nothrow_move_constructible_impl<_Tp>::type
    {
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
	"template argument must be a complete class or an unbounded array");
    };

  /// is_assignable
  template<typename _Tp, typename _Up>
    struct is_assignable
    : public __bool_constant<__is_assignable(_Tp, _Up)>
    {
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
	"template argument must be a complete class or an unbounded array");
    };

  template<typename _Tp, bool = __is_referenceable<_Tp>::value>
    struct __is_copy_assignable_impl;

  template<typename _Tp>
    struct __is_copy_assignable_impl<_Tp, false>
    : public false_type { };

  template<typename _Tp>
    struct __is_copy_assignable_impl<_Tp, true>
    : public __bool_constant<__is_assignable(_Tp&, const _Tp&)>
    { };

  /// is_copy_assignable
  template<typename _Tp>
    struct is_copy_assignable
    : public __is_copy_assignable_impl<_Tp>::type
    {
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
	"template argument must be a complete class or an unbounded array");
    };

  template<typename _Tp, bool = __is_referenceable<_Tp>::value>
    struct __is_move_assignable_impl;

  template<typename _Tp>
    struct __is_move_assignable_impl<_Tp, false>
    : public false_type { };

  template<typename _Tp>
    struct __is_move_assignable_impl<_Tp, true>
    : public __bool_constant<__is_assignable(_Tp&, _Tp&&)>
    { };

  /// is_move_assignable
  template<typename _Tp>
    struct is_move_assignable
    : public __is_move_assignable_impl<_Tp>::type
    {
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
	"template argument must be a complete class or an unbounded array");
    };

  template<typename _Tp, typename _Up>
    using __is_nothrow_assignable_impl
      = __bool_constant<__is_nothrow_assignable(_Tp, _Up)>;

  /// is_nothrow_assignable
  template<typename _Tp, typename _Up>
    struct is_nothrow_assignable
    : public __is_nothrow_assignable_impl<_Tp, _Up>
    {
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
	"template argument must be a complete class or an unbounded array");
    };

  template<typename _Tp, bool = __is_referenceable<_Tp>::value>
    struct __is_nt_copy_assignable_impl;

  template<typename _Tp>
    struct __is_nt_copy_assignable_impl<_Tp, false>
    : public false_type { };

  template<typename _Tp>
    struct __is_nt_copy_assignable_impl<_Tp, true>
    : public __is_nothrow_assignable_impl<_Tp&, const _Tp&>
    { };

  /// is_nothrow_copy_assignable
  template<typename _Tp>
    struct is_nothrow_copy_assignable
    : public __is_nt_copy_assignable_impl<_Tp>
    {
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
	"template argument must be a complete class or an unbounded array");
    };

  template<typename _Tp, bool = __is_referenceable<_Tp>::value>
    struct __is_nt_move_assignable_impl;

  template<typename _Tp>
    struct __is_nt_move_assignable_impl<_Tp, false>
    : public false_type { };

  template<typename _Tp>
    struct __is_nt_move_assignable_impl<_Tp, true>
    : public __is_nothrow_assignable_impl<_Tp&, _Tp&&>
    { };

  /// is_nothrow_move_assignable
  template<typename _Tp>
    struct is_nothrow_move_assignable
    : public __is_nt_move_assignable_impl<_Tp>
    {
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
	"template argument must be a complete class or an unbounded array");
    };

  /// is_trivially_constructible
  template<typename _Tp, typename... _Args>
    struct is_trivially_constructible
    : public __bool_constant<__is_trivially_constructible(_Tp, _Args...)>
    {
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
	"template argument must be a complete class or an unbounded array");
    };

  /// is_trivially_default_constructible
  template<typename _Tp>
    struct is_trivially_default_constructible
    : public __bool_constant<__is_trivially_constructible(_Tp)>
    {
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
	"template argument must be a complete class or an unbounded array");
    };

  struct __do_is_implicitly_default_constructible_impl
  {
    template <typename _Tp>
    static void __helper(const _Tp&);

    template <typename _Tp>
    static true_type __test(const _Tp&,
                            decltype(__helper<const _Tp&>({}))* = 0);

    static false_type __test(...);
  };

  template<typename _Tp>
    struct __is_implicitly_default_constructible_impl
    : public __do_is_implicitly_default_constructible_impl
    {
      typedef decltype(__test(declval<_Tp>())) type;
    };

  template<typename _Tp>
    struct __is_implicitly_default_constructible_safe
    : public __is_implicitly_default_constructible_impl<_Tp>::type
    { };

  template <typename _Tp>
    struct __is_implicitly_default_constructible
    : public __and_<__is_constructible_impl<_Tp>,
		    __is_implicitly_default_constructible_safe<_Tp>>
    { };

  template<typename _Tp, bool = __is_referenceable<_Tp>::value>
    struct __is_trivially_copy_constructible_impl;

  template<typename _Tp>
    struct __is_trivially_copy_constructible_impl<_Tp, false>
    : public false_type { };

  template<typename _Tp>
    struct __is_trivially_copy_constructible_impl<_Tp, true>
    : public __and_<__is_copy_constructible_impl<_Tp>,
		    integral_constant<bool,
			__is_trivially_constructible(_Tp, const _Tp&)>>
    { };

  /// is_trivially_copy_constructible
  template<typename _Tp>
    struct is_trivially_copy_constructible
    : public __is_trivially_copy_constructible_impl<_Tp>
    {
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
	"template argument must be a complete class or an unbounded array");
    };

  template<typename _Tp, bool = __is_referenceable<_Tp>::value>
    struct __is_trivially_move_constructible_impl;

  template<typename _Tp>
    struct __is_trivially_move_constructible_impl<_Tp, false>
    : public false_type { };

  template<typename _Tp>
    struct __is_trivially_move_constructible_impl<_Tp, true>
    : public __and_<__is_move_constructible_impl<_Tp>,
		    integral_constant<bool,
			__is_trivially_constructible(_Tp, _Tp&&)>>
    { };

  /// is_trivially_move_constructible
  template<typename _Tp>
    struct is_trivially_move_constructible
    : public __is_trivially_move_constructible_impl<_Tp>
    {
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
	"template argument must be a complete class or an unbounded array");
    };

  /// is_trivially_assignable
  template<typename _Tp, typename _Up>
    struct is_trivially_assignable
    : public __bool_constant<__is_trivially_assignable(_Tp, _Up)>
    {
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
	"template argument must be a complete class or an unbounded array");
    };

  template<typename _Tp, bool = __is_referenceable<_Tp>::value>
    struct __is_trivially_copy_assignable_impl;

  template<typename _Tp>
    struct __is_trivially_copy_assignable_impl<_Tp, false>
    : public false_type { };

  template<typename _Tp>
    struct __is_trivially_copy_assignable_impl<_Tp, true>
    : public __bool_constant<__is_trivially_assignable(_Tp&, const _Tp&)>
    { };

  /// is_trivially_copy_assignable
  template<typename _Tp>
    struct is_trivially_copy_assignable
    : public __is_trivially_copy_assignable_impl<_Tp>
    {
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
	"template argument must be a complete class or an unbounded array");
    };

  template<typename _Tp, bool = __is_referenceable<_Tp>::value>
    struct __is_trivially_move_assignable_impl;

  template<typename _Tp>
    struct __is_trivially_move_assignable_impl<_Tp, false>
    : public false_type { };

  template<typename _Tp>
    struct __is_trivially_move_assignable_impl<_Tp, true>
    : public __bool_constant<__is_trivially_assignable(_Tp&, _Tp&&)>
    { };

  /// is_trivially_move_assignable
  template<typename _Tp>
    struct is_trivially_move_assignable
    : public __is_trivially_move_assignable_impl<_Tp>
    {
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
	"template argument must be a complete class or an unbounded array");
    };

  /// is_trivially_destructible
  template<typename _Tp>
    struct is_trivially_destructible
    : public __and_<__is_destructible_safe<_Tp>,
		    __bool_constant<__has_trivial_destructor(_Tp)>>
    {
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
	"template argument must be a complete class or an unbounded array");
    };


  /// has_virtual_destructor
  template<typename _Tp>
    struct has_virtual_destructor
    : public integral_constant<bool, __has_virtual_destructor(_Tp)>
    {
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
	"template argument must be a complete class or an unbounded array");
    };


  // type property queries.

  /// alignment_of
  template<typename _Tp>
    struct alignment_of
    : public integral_constant<std::size_t, alignof(_Tp)>
    {
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
	"template argument must be a complete class or an unbounded array");
    };

  /// rank
  template<typename>
    struct rank
    : public integral_constant<std::size_t, 0> { };

  template<typename _Tp, std::size_t _Size>
    struct rank<_Tp[_Size]>
    : public integral_constant<std::size_t, 1 + rank<_Tp>::value> { };

  template<typename _Tp>
    struct rank<_Tp[]>
    : public integral_constant<std::size_t, 1 + rank<_Tp>::value> { };

  /// extent
  template<typename, unsigned _Uint>
    struct extent
    : public integral_constant<std::size_t, 0> { };

  template<typename _Tp, unsigned _Uint, std::size_t _Size>
    struct extent<_Tp[_Size], _Uint>
    : public integral_constant<std::size_t,
			       _Uint == 0 ? _Size : extent<_Tp,
							   _Uint - 1>::value>
    { };

  template<typename _Tp, unsigned _Uint>
    struct extent<_Tp[], _Uint>
    : public integral_constant<std::size_t,
			       _Uint == 0 ? 0 : extent<_Tp,
						       _Uint - 1>::value>
    { };


  // Type relations.

  /// is_same
  template<typename _Tp, typename _Up>
    struct is_same
#ifdef _GLIBCXX_HAVE_BUILTIN_IS_SAME
    : public integral_constant<bool, __is_same(_Tp, _Up)>
#else
    : public false_type
#endif
    { };

#ifndef _GLIBCXX_HAVE_BUILTIN_IS_SAME
  template<typename _Tp>
    struct is_same<_Tp, _Tp>
    : public true_type
    { };
#endif

  /// is_base_of
  template<typename _Base, typename _Derived>
    struct is_base_of
    : public integral_constant<bool, __is_base_of(_Base, _Derived)>
    { };

  template<typename _From, typename _To,
           bool = __or_<is_void<_From>, is_function<_To>,
                        is_array<_To>>::value>
    struct __is_convertible_helper
    {
      typedef typename is_void<_To>::type type;
    };

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wctor-dtor-privacy"
  template<typename _From, typename _To>
    class __is_convertible_helper<_From, _To, false>
    {
      template<typename _To1>
	static void __test_aux(_To1) noexcept;

      template<typename _From1, typename _To1,
	       typename = decltype(__test_aux<_To1>(std::declval<_From1>()))>
	static true_type
	__test(int);

      template<typename, typename>
	static false_type
	__test(...);

    public:
      typedef decltype(__test<_From, _To>(0)) type;
    };
#pragma GCC diagnostic pop

  /// is_convertible
  template<typename _From, typename _To>
    struct is_convertible
    : public __is_convertible_helper<_From, _To>::type
    { };

  // helper trait for unique_ptr<T[]>, shared_ptr<T[]>, and span<T, N>
  template<typename _ToElementType, typename _FromElementType>
    using __is_array_convertible
      = is_convertible<_FromElementType(*)[], _ToElementType(*)[]>;

  template<typename _From, typename _To,
           bool = __or_<is_void<_From>, is_function<_To>,
                        is_array<_To>>::value>
    struct __is_nt_convertible_helper
    : is_void<_To>
    { };

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wctor-dtor-privacy"
  template<typename _From, typename _To>
    class __is_nt_convertible_helper<_From, _To, false>
    {
      template<typename _To1>
	static void __test_aux(_To1) noexcept;

      template<typename _From1, typename _To1>
	static
	__bool_constant<noexcept(__test_aux<_To1>(std::declval<_From1>()))>
	__test(int);

      template<typename, typename>
	static false_type
	__test(...);

    public:
      using type = decltype(__test<_From, _To>(0));
    };
#pragma GCC diagnostic pop

  // is_nothrow_convertible for C++11
  template<typename _From, typename _To>
    struct __is_nothrow_convertible
    : public __is_nt_convertible_helper<_From, _To>::type
    { };

#if __cplusplus > 201703L
#define __cpp_lib_is_nothrow_convertible 201806L
  /// is_nothrow_convertible
  template<typename _From, typename _To>
    struct is_nothrow_convertible
    : public __is_nt_convertible_helper<_From, _To>::type
    { };

  /// is_nothrow_convertible_v
  template<typename _From, typename _To>
    inline constexpr bool is_nothrow_convertible_v
      = is_nothrow_convertible<_From, _To>::value;
#endif // C++2a

  // Const-volatile modifications.

  /// remove_const
  template<typename _Tp>
    struct remove_const
    { typedef _Tp     type; };

  template<typename _Tp>
    struct remove_const<_Tp const>
    { typedef _Tp     type; };

  /// remove_volatile
  template<typename _Tp>
    struct remove_volatile
    { typedef _Tp     type; };

  template<typename _Tp>
    struct remove_volatile<_Tp volatile>
    { typedef _Tp     type; };

  /// remove_cv
  template<typename _Tp>
    struct remove_cv
    { using type = _Tp; };

  template<typename _Tp>
    struct remove_cv<const _Tp>
    { using type = _Tp; };

  template<typename _Tp>
    struct remove_cv<volatile _Tp>
    { using type = _Tp; };

  template<typename _Tp>
    struct remove_cv<const volatile _Tp>
    { using type = _Tp; };

  /// add_const
  template<typename _Tp>
    struct add_const
    { typedef _Tp const     type; };

  /// add_volatile
  template<typename _Tp>
    struct add_volatile
    { typedef _Tp volatile     type; };

  /// add_cv
  template<typename _Tp>
    struct add_cv
    {
      typedef typename
      add_const<typename add_volatile<_Tp>::type>::type     type;
    };

#if __cplusplus > 201103L

#define __cpp_lib_transformation_trait_aliases 201304L

  /// Alias template for remove_const
  template<typename _Tp>
    using remove_const_t = typename remove_const<_Tp>::type;

  /// Alias template for remove_volatile
  template<typename _Tp>
    using remove_volatile_t = typename remove_volatile<_Tp>::type;

  /// Alias template for remove_cv
  template<typename _Tp>
    using remove_cv_t = typename remove_cv<_Tp>::type;

  /// Alias template for add_const
  template<typename _Tp>
    using add_const_t = typename add_const<_Tp>::type;

  /// Alias template for add_volatile
  template<typename _Tp>
    using add_volatile_t = typename add_volatile<_Tp>::type;

  /// Alias template for add_cv
  template<typename _Tp>
    using add_cv_t = typename add_cv<_Tp>::type;
#endif

  // Reference transformations.

  /// remove_reference
  template<typename _Tp>
    struct remove_reference
    { typedef _Tp   type; };

  template<typename _Tp>
    struct remove_reference<_Tp&>
    { typedef _Tp   type; };

  template<typename _Tp>
    struct remove_reference<_Tp&&>
    { typedef _Tp   type; };

  template<typename _Tp, bool = __is_referenceable<_Tp>::value>
    struct __add_lvalue_reference_helper
    { typedef _Tp   type; };

  template<typename _Tp>
    struct __add_lvalue_reference_helper<_Tp, true>
    { typedef _Tp&   type; };

  /// add_lvalue_reference
  template<typename _Tp>
    struct add_lvalue_reference
    : public __add_lvalue_reference_helper<_Tp>
    { };

  template<typename _Tp, bool = __is_referenceable<_Tp>::value>
    struct __add_rvalue_reference_helper
    { typedef _Tp   type; };

  template<typename _Tp>
    struct __add_rvalue_reference_helper<_Tp, true>
    { typedef _Tp&&   type; };

  /// add_rvalue_reference
  template<typename _Tp>
    struct add_rvalue_reference
    : public __add_rvalue_reference_helper<_Tp>
    { };

#if __cplusplus > 201103L
  /// Alias template for remove_reference
  template<typename _Tp>
    using remove_reference_t = typename remove_reference<_Tp>::type;

  /// Alias template for add_lvalue_reference
  template<typename _Tp>
    using add_lvalue_reference_t = typename add_lvalue_reference<_Tp>::type;

  /// Alias template for add_rvalue_reference
  template<typename _Tp>
    using add_rvalue_reference_t = typename add_rvalue_reference<_Tp>::type;
#endif

  // Sign modifications.

  /// @cond undocumented

  // Utility for constructing identically cv-qualified types.
  template<typename _Unqualified, bool _IsConst, bool _IsVol>
    struct __cv_selector;

  template<typename _Unqualified>
    struct __cv_selector<_Unqualified, false, false>
    { typedef _Unqualified __type; };

  template<typename _Unqualified>
    struct __cv_selector<_Unqualified, false, true>
    { typedef volatile _Unqualified __type; };

  template<typename _Unqualified>
    struct __cv_selector<_Unqualified, true, false>
    { typedef const _Unqualified __type; };

  template<typename _Unqualified>
    struct __cv_selector<_Unqualified, true, true>
    { typedef const volatile _Unqualified __type; };

  template<typename _Qualified, typename _Unqualified,
	   bool _IsConst = is_const<_Qualified>::value,
	   bool _IsVol = is_volatile<_Qualified>::value>
    class __match_cv_qualifiers
    {
      typedef __cv_selector<_Unqualified, _IsConst, _IsVol> __match;

    public:
      typedef typename __match::__type __type;
    };

  // Utility for finding the unsigned versions of signed integral types.
  template<typename _Tp>
    struct __make_unsigned
    { typedef _Tp __type; };

  template<>
    struct __make_unsigned<char>
    { typedef unsigned char __type; };

  template<>
    struct __make_unsigned<signed char>
    { typedef unsigned char __type; };

  template<>
    struct __make_unsigned<short>
    { typedef unsigned short __type; };

  template<>
    struct __make_unsigned<int>
    { typedef unsigned int __type; };

  template<>
    struct __make_unsigned<long>
    { typedef unsigned long __type; };

  template<>
    struct __make_unsigned<long long>
    { typedef unsigned long long __type; };

#if defined(__GLIBCXX_TYPE_INT_N_0)
  __extension__
  template<>
    struct __make_unsigned<__GLIBCXX_TYPE_INT_N_0>
    { typedef unsigned __GLIBCXX_TYPE_INT_N_0 __type; };
#endif
#if defined(__GLIBCXX_TYPE_INT_N_1)
  __extension__
  template<>
    struct __make_unsigned<__GLIBCXX_TYPE_INT_N_1>
    { typedef unsigned __GLIBCXX_TYPE_INT_N_1 __type; };
#endif
#if defined(__GLIBCXX_TYPE_INT_N_2)
  __extension__
  template<>
    struct __make_unsigned<__GLIBCXX_TYPE_INT_N_2>
    { typedef unsigned __GLIBCXX_TYPE_INT_N_2 __type; };
#endif
#if defined(__GLIBCXX_TYPE_INT_N_3)
  __extension__
  template<>
    struct __make_unsigned<__GLIBCXX_TYPE_INT_N_3>
    { typedef unsigned __GLIBCXX_TYPE_INT_N_3 __type; };
#endif

  // Select between integral and enum: not possible to be both.
  template<typename _Tp,
	   bool _IsInt = is_integral<_Tp>::value,
	   bool _IsEnum = is_enum<_Tp>::value>
    class __make_unsigned_selector;

  template<typename _Tp>
    class __make_unsigned_selector<_Tp, true, false>
    {
      using __unsigned_type
	= typename __make_unsigned<__remove_cv_t<_Tp>>::__type;

    public:
      using __type
	= typename __match_cv_qualifiers<_Tp, __unsigned_type>::__type;
    };

  class __make_unsigned_selector_base
  {
  protected:
    template<typename...> struct _List { };

    template<typename _Tp, typename... _Up>
      struct _List<_Tp, _Up...> : _List<_Up...>
      { static constexpr size_t __size = sizeof(_Tp); };

    template<size_t _Sz, typename _Tp, bool = (_Sz <= _Tp::__size)>
      struct __select;

    template<size_t _Sz, typename _Uint, typename... _UInts>
      struct __select<_Sz, _List<_Uint, _UInts...>, true>
      { using __type = _Uint; };

    template<size_t _Sz, typename _Uint, typename... _UInts>
      struct __select<_Sz, _List<_Uint, _UInts...>, false>
      : __select<_Sz, _List<_UInts...>>
      { };
  };

  // Choose unsigned integer type with the smallest rank and same size as _Tp
  template<typename _Tp>
    class __make_unsigned_selector<_Tp, false, true>
    : __make_unsigned_selector_base
    {
      // With -fshort-enums, an enum may be as small as a char.
      using _UInts = _List<unsigned char, unsigned short, unsigned int,
			   unsigned long, unsigned long long>;

      using __unsigned_type = typename __select<sizeof(_Tp), _UInts>::__type;

    public:
      using __type
	= typename __match_cv_qualifiers<_Tp, __unsigned_type>::__type;
    };

  // wchar_t, char8_t, char16_t and char32_t are integral types but are
  // neither signed integer types nor unsigned integer types, so must be
  // transformed to the unsigned integer type with the smallest rank.
  // Use the partial specialization for enumeration types to do that.
  template<>
    struct __make_unsigned<wchar_t>
    {
      using __type
	= typename __make_unsigned_selector<wchar_t, false, true>::__type;
    };

#ifdef _GLIBCXX_USE_CHAR8_T
  template<>
    struct __make_unsigned<char8_t>
    {
      using __type
	= typename __make_unsigned_selector<char8_t, false, true>::__type;
    };
#endif

  template<>
    struct __make_unsigned<char16_t>
    {
      using __type
	= typename __make_unsigned_selector<char16_t, false, true>::__type;
    };

  template<>
    struct __make_unsigned<char32_t>
    {
      using __type
	= typename __make_unsigned_selector<char32_t, false, true>::__type;
    };
  /// @endcond

  // Given an integral/enum type, return the corresponding unsigned
  // integer type.
  // Primary template.
  /// make_unsigned
  template<typename _Tp>
    struct make_unsigned
    { typedef typename __make_unsigned_selector<_Tp>::__type type; };

  // Integral, but don't define.
  template<>
    struct make_unsigned<bool>;

  /// @cond undocumented

  // Utility for finding the signed versions of unsigned integral types.
  template<typename _Tp>
    struct __make_signed
    { typedef _Tp __type; };

  template<>
    struct __make_signed<char>
    { typedef signed char __type; };

  template<>
    struct __make_signed<unsigned char>
    { typedef signed char __type; };

  template<>
    struct __make_signed<unsigned short>
    { typedef signed short __type; };

  template<>
    struct __make_signed<unsigned int>
    { typedef signed int __type; };

  template<>
    struct __make_signed<unsigned long>
    { typedef signed long __type; };

  template<>
    struct __make_signed<unsigned long long>
    { typedef signed long long __type; };

#if defined(__GLIBCXX_TYPE_INT_N_0)
  __extension__
  template<>
    struct __make_signed<unsigned __GLIBCXX_TYPE_INT_N_0>
    { typedef __GLIBCXX_TYPE_INT_N_0 __type; };
#endif
#if defined(__GLIBCXX_TYPE_INT_N_1)
  __extension__
  template<>
    struct __make_signed<unsigned __GLIBCXX_TYPE_INT_N_1>
    { typedef __GLIBCXX_TYPE_INT_N_1 __type; };
#endif
#if defined(__GLIBCXX_TYPE_INT_N_2)
  __extension__
  template<>
    struct __make_signed<unsigned __GLIBCXX_TYPE_INT_N_2>
    { typedef __GLIBCXX_TYPE_INT_N_2 __type; };
#endif
#if defined(__GLIBCXX_TYPE_INT_N_3)
  __extension__
  template<>
    struct __make_signed<unsigned __GLIBCXX_TYPE_INT_N_3>
    { typedef __GLIBCXX_TYPE_INT_N_3 __type; };
#endif

  // Select between integral and enum: not possible to be both.
  template<typename _Tp,
	   bool _IsInt = is_integral<_Tp>::value,
	   bool _IsEnum = is_enum<_Tp>::value>
    class __make_signed_selector;

  template<typename _Tp>
    class __make_signed_selector<_Tp, true, false>
    {
      using __signed_type
	= typename __make_signed<__remove_cv_t<_Tp>>::__type;

    public:
      using __type
	= typename __match_cv_qualifiers<_Tp, __signed_type>::__type;
    };

  // Choose signed integer type with the smallest rank and same size as _Tp
  template<typename _Tp>
    class __make_signed_selector<_Tp, false, true>
    {
      typedef typename __make_unsigned_selector<_Tp>::__type __unsigned_type;

    public:
      typedef typename __make_signed_selector<__unsigned_type>::__type __type;
    };

  // wchar_t, char16_t and char32_t are integral types but are neither
  // signed integer types nor unsigned integer types, so must be
  // transformed to the signed integer type with the smallest rank.
  // Use the partial specialization for enumeration types to do that.
  template<>
    struct __make_signed<wchar_t>
    {
      using __type
	= typename __make_signed_selector<wchar_t, false, true>::__type;
    };

#if defined(_GLIBCXX_USE_CHAR8_T)
  template<>
    struct __make_signed<char8_t>
    {
      using __type
	= typename __make_signed_selector<char8_t, false, true>::__type;
    };
#endif

  template<>
    struct __make_signed<char16_t>
    {
      using __type
	= typename __make_signed_selector<char16_t, false, true>::__type;
    };

  template<>
    struct __make_signed<char32_t>
    {
      using __type
	= typename __make_signed_selector<char32_t, false, true>::__type;
    };
  /// @endcond

  // Given an integral/enum type, return the corresponding signed
  // integer type.
  // Primary template.
  /// make_signed
  template<typename _Tp>
    struct make_signed
    { typedef typename __make_signed_selector<_Tp>::__type type; };

  // Integral, but don't define.
  template<>
    struct make_signed<bool>;

#if __cplusplus > 201103L
  /// Alias template for make_signed
  template<typename _Tp>
    using make_signed_t = typename make_signed<_Tp>::type;

  /// Alias template for make_unsigned
  template<typename _Tp>
    using make_unsigned_t = typename make_unsigned<_Tp>::type;
#endif

  // Array modifications.

  /// remove_extent
  template<typename _Tp>
    struct remove_extent
    { typedef _Tp     type; };

  template<typename _Tp, std::size_t _Size>
    struct remove_extent<_Tp[_Size]>
    { typedef _Tp     type; };

  template<typename _Tp>
    struct remove_extent<_Tp[]>
    { typedef _Tp     type; };

  /// remove_all_extents
  template<typename _Tp>
    struct remove_all_extents
    { typedef _Tp     type; };

  template<typename _Tp, std::size_t _Size>
    struct remove_all_extents<_Tp[_Size]>
    { typedef typename remove_all_extents<_Tp>::type     type; };

  template<typename _Tp>
    struct remove_all_extents<_Tp[]>
    { typedef typename remove_all_extents<_Tp>::type     type; };

#if __cplusplus > 201103L
  /// Alias template for remove_extent
  template<typename _Tp>
    using remove_extent_t = typename remove_extent<_Tp>::type;

  /// Alias template for remove_all_extents
  template<typename _Tp>
    using remove_all_extents_t = typename remove_all_extents<_Tp>::type;
#endif

  // Pointer modifications.

  template<typename _Tp, typename>
    struct __remove_pointer_helper
    { typedef _Tp     type; };

  template<typename _Tp, typename _Up>
    struct __remove_pointer_helper<_Tp, _Up*>
    { typedef _Up     type; };

  /// remove_pointer
  template<typename _Tp>
    struct remove_pointer
    : public __remove_pointer_helper<_Tp, __remove_cv_t<_Tp>>
    { };

  template<typename _Tp, bool = __or_<__is_referenceable<_Tp>,
				      is_void<_Tp>>::value>
    struct __add_pointer_helper
    { typedef _Tp     type; };

  template<typename _Tp>
    struct __add_pointer_helper<_Tp, true>
    { typedef typename remove_reference<_Tp>::type*     type; };

  /// add_pointer
  template<typename _Tp>
    struct add_pointer
    : public __add_pointer_helper<_Tp>
    { };

#if __cplusplus > 201103L
  /// Alias template for remove_pointer
  template<typename _Tp>
    using remove_pointer_t = typename remove_pointer<_Tp>::type;

  /// Alias template for add_pointer
  template<typename _Tp>
    using add_pointer_t = typename add_pointer<_Tp>::type;
#endif

  template<std::size_t _Len>
    struct __aligned_storage_msa
    {
      union __type
      {
	unsigned char __data[_Len];
	struct __attribute__((__aligned__)) { } __align;
      };
    };

  /**
   *  @brief Alignment type.
   *
   *  The value of _Align is a default-alignment which shall be the
   *  most stringent alignment requirement for any C++ object type
   *  whose size is no greater than _Len (3.9). The member typedef
   *  type shall be a POD type suitable for use as uninitialized
   *  storage for any object whose size is at most _Len and whose
   *  alignment is a divisor of _Align.
  */
  template<std::size_t _Len, std::size_t _Align =
	   __alignof__(typename __aligned_storage_msa<_Len>::__type)>
    struct aligned_storage
    {
      union type
      {
	unsigned char __data[_Len];
	struct __attribute__((__aligned__((_Align)))) { } __align;
      };
    };

  template <typename... _Types>
    struct __strictest_alignment
    {
      static const size_t _S_alignment = 0;
      static const size_t _S_size = 0;
    };

  template <typename _Tp, typename... _Types>
    struct __strictest_alignment<_Tp, _Types...>
    {
      static const size_t _S_alignment =
        alignof(_Tp) > __strictest_alignment<_Types...>::_S_alignment
	? alignof(_Tp) : __strictest_alignment<_Types...>::_S_alignment;
      static const size_t _S_size =
        sizeof(_Tp) > __strictest_alignment<_Types...>::_S_size
	? sizeof(_Tp) : __strictest_alignment<_Types...>::_S_size;
    };

  /**
   *  @brief Provide aligned storage for types.
   *
   *  [meta.trans.other]
   *
   *  Provides aligned storage for any of the provided types of at
   *  least size _Len.
   *
   *  @see aligned_storage
   */
  template <size_t _Len, typename... _Types>
    struct aligned_union
    {
    private:
      static_assert(sizeof...(_Types) != 0, "At least one type is required");

      using __strictest = __strictest_alignment<_Types...>;
      static const size_t _S_len = _Len > __strictest::_S_size
	? _Len : __strictest::_S_size;
    public:
      /// The value of the strictest alignment of _Types.
      static const size_t alignment_value = __strictest::_S_alignment;
      /// The storage.
      typedef typename aligned_storage<_S_len, alignment_value>::type type;
    };

  template <size_t _Len, typename... _Types>
    const size_t aligned_union<_Len, _Types...>::alignment_value;

  /// @cond undocumented

  // Decay trait for arrays and functions, used for perfect forwarding
  // in make_pair, make_tuple, etc.
  template<typename _Up,
	   bool _IsArray = is_array<_Up>::value,
	   bool _IsFunction = is_function<_Up>::value>
    struct __decay_selector;

  // NB: DR 705.
  template<typename _Up>
    struct __decay_selector<_Up, false, false>
    { typedef __remove_cv_t<_Up> __type; };

  template<typename _Up>
    struct __decay_selector<_Up, true, false>
    { typedef typename remove_extent<_Up>::type* __type; };

  template<typename _Up>
    struct __decay_selector<_Up, false, true>
    { typedef typename add_pointer<_Up>::type __type; };
  /// @endcond

  /// decay
  template<typename _Tp>
    class decay
    {
      typedef typename remove_reference<_Tp>::type __remove_type;

    public:
      typedef typename __decay_selector<__remove_type>::__type type;
    };

  /// @cond undocumented

  // Helper which adds a reference to a type when given a reference_wrapper
  template<typename _Tp>
    struct __strip_reference_wrapper
    {
      typedef _Tp __type;
    };

  template<typename _Tp>
    struct __strip_reference_wrapper<reference_wrapper<_Tp> >
    {
      typedef _Tp& __type;
    };

  // __decay_t (std::decay_t for C++11).
  template<typename _Tp>
    using __decay_t = typename decay<_Tp>::type;

  template<typename _Tp>
    using __decay_and_strip = __strip_reference_wrapper<__decay_t<_Tp>>;
  /// @endcond

  // Primary template.
  /// Define a member typedef `type` only if a boolean constant is true.
  template<bool, typename _Tp = void>
    struct enable_if
    { };

  // Partial specialization for true.
  template<typename _Tp>
    struct enable_if<true, _Tp>
    { typedef _Tp type; };

  /// @cond undocumented

  // __enable_if_t (std::enable_if_t for C++11)
  template<bool _Cond, typename _Tp = void>
    using __enable_if_t = typename enable_if<_Cond, _Tp>::type;

  // Helper for SFINAE constraints
  template<typename... _Cond>
    using _Require = __enable_if_t<__and_<_Cond...>::value>;

  // __remove_cvref_t (std::remove_cvref_t for C++11).
  template<typename _Tp>
    using __remove_cvref_t
     = typename remove_cv<typename remove_reference<_Tp>::type>::type;
  /// @endcond

  // Primary template.
  /// Define a member typedef @c type to one of two argument types.
  template<bool _Cond, typename _Iftrue, typename _Iffalse>
    struct conditional
    { typedef _Iftrue type; };

  // Partial specialization for false.
  template<typename _Iftrue, typename _Iffalse>
    struct conditional<false, _Iftrue, _Iffalse>
    { typedef _Iffalse type; };

  /// common_type
  template<typename... _Tp>
    struct common_type;

  // Sfinae-friendly common_type implementation:

  /// @cond undocumented
  struct __do_common_type_impl
  {
    template<typename _Tp, typename _Up>
      using __cond_t
	= decltype(true ? std::declval<_Tp>() : std::declval<_Up>());

    // if decay_t<decltype(false ? declval<D1>() : declval<D2>())>
    // denotes a valid type, let C denote that type.
    template<typename _Tp, typename _Up>
      static __success_type<__decay_t<__cond_t<_Tp, _Up>>>
      _S_test(int);

#if __cplusplus > 201703L
    // Otherwise, if COND-RES(CREF(D1), CREF(D2)) denotes a type,
    // let C denote the type decay_t<COND-RES(CREF(D1), CREF(D2))>.
    template<typename _Tp, typename _Up>
      static __success_type<__remove_cvref_t<__cond_t<const _Tp&, const _Up&>>>
      _S_test_2(int);
#endif

    template<typename, typename>
      static __failure_type
      _S_test_2(...);

    template<typename _Tp, typename _Up>
      static decltype(_S_test_2<_Tp, _Up>(0))
      _S_test(...);
  };

  // If sizeof...(T) is zero, there shall be no member type.
  template<>
    struct common_type<>
    { };

  // If sizeof...(T) is one, the same type, if any, as common_type_t<T0, T0>.
  template<typename _Tp0>
    struct common_type<_Tp0>
    : public common_type<_Tp0, _Tp0>
    { };

  // If sizeof...(T) is two, ...
  template<typename _Tp1, typename _Tp2,
	   typename _Dp1 = __decay_t<_Tp1>, typename _Dp2 = __decay_t<_Tp2>>
    struct __common_type_impl
    {
      // If is_same_v<T1, D1> is false or is_same_v<T2, D2> is false,
      // let C denote the same type, if any, as common_type_t<D1, D2>.
      using type = common_type<_Dp1, _Dp2>;
    };

  template<typename _Tp1, typename _Tp2>
    struct __common_type_impl<_Tp1, _Tp2, _Tp1, _Tp2>
    : private __do_common_type_impl
    {
      // Otherwise, if decay_t<decltype(false ? declval<D1>() : declval<D2>())>
      // denotes a valid type, let C denote that type.
      using type = decltype(_S_test<_Tp1, _Tp2>(0));
    };

  // If sizeof...(T) is two, ...
  template<typename _Tp1, typename _Tp2>
    struct common_type<_Tp1, _Tp2>
    : public __common_type_impl<_Tp1, _Tp2>::type
    { };

  template<typename...>
    struct __common_type_pack
    { };

  template<typename, typename, typename = void>
    struct __common_type_fold;

  // If sizeof...(T) is greater than two, ...
  template<typename _Tp1, typename _Tp2, typename... _Rp>
    struct common_type<_Tp1, _Tp2, _Rp...>
    : public __common_type_fold<common_type<_Tp1, _Tp2>,
				__common_type_pack<_Rp...>>
    { };

  // Let C denote the same type, if any, as common_type_t<T1, T2>.
  // If there is such a type C, type shall denote the same type, if any,
  // as common_type_t<C, R...>.
  template<typename _CTp, typename... _Rp>
    struct __common_type_fold<_CTp, __common_type_pack<_Rp...>,
			      __void_t<typename _CTp::type>>
    : public common_type<typename _CTp::type, _Rp...>
    { };

  // Otherwise, there shall be no member type.
  template<typename _CTp, typename _Rp>
    struct __common_type_fold<_CTp, _Rp, void>
    { };

  template<typename _Tp, bool = is_enum<_Tp>::value>
    struct __underlying_type_impl
    {
      using type = __underlying_type(_Tp);
    };

  template<typename _Tp>
    struct __underlying_type_impl<_Tp, false>
    { };
  /// @endcond

  /// The underlying type of an enum.
  template<typename _Tp>
    struct underlying_type
    : public __underlying_type_impl<_Tp>
    { };

  /// @cond undocumented
  template<typename _Tp>
    struct __declval_protector
    {
      static const bool __stop = false;
    };
  /// @endcond

  /** Utility to simplify expressions used in unevaluated operands
   *  @since C++11
   *  @ingroup utilities
   */
  template<typename _Tp>
    auto declval() noexcept -> decltype(__declval<_Tp>(0))
    {
      static_assert(__declval_protector<_Tp>::__stop,
		    "declval() must not be used!");
      return __declval<_Tp>(0);
    }

  /// result_of
  template<typename _Signature>
    struct result_of;

  // Sfinae-friendly result_of implementation:

#define __cpp_lib_result_of_sfinae 201210L

  /// @cond undocumented
  struct __invoke_memfun_ref { };
  struct __invoke_memfun_deref { };
  struct __invoke_memobj_ref { };
  struct __invoke_memobj_deref { };
  struct __invoke_other { };

  // Associate a tag type with a specialization of __success_type.
  template<typename _Tp, typename _Tag>
    struct __result_of_success : __success_type<_Tp>
    { using __invoke_type = _Tag; };

  // [func.require] paragraph 1 bullet 1:
  struct __result_of_memfun_ref_impl
  {
    template<typename _Fp, typename _Tp1, typename... _Args>
      static __result_of_success<decltype(
      (std::declval<_Tp1>().*std::declval<_Fp>())(std::declval<_Args>()...)
      ), __invoke_memfun_ref> _S_test(int);

    template<typename...>
      static __failure_type _S_test(...);
  };

  template<typename _MemPtr, typename _Arg, typename... _Args>
    struct __result_of_memfun_ref
    : private __result_of_memfun_ref_impl
    {
      typedef decltype(_S_test<_MemPtr, _Arg, _Args...>(0)) type;
    };

  // [func.require] paragraph 1 bullet 2:
  struct __result_of_memfun_deref_impl
  {
    template<typename _Fp, typename _Tp1, typename... _Args>
      static __result_of_success<decltype(
      ((*std::declval<_Tp1>()).*std::declval<_Fp>())(std::declval<_Args>()...)
      ), __invoke_memfun_deref> _S_test(int);

    template<typename...>
      static __failure_type _S_test(...);
  };

  template<typename _MemPtr, typename _Arg, typename... _Args>
    struct __result_of_memfun_deref
    : private __result_of_memfun_deref_impl
    {
      typedef decltype(_S_test<_MemPtr, _Arg, _Args...>(0)) type;
    };

  // [func.require] paragraph 1 bullet 3:
  struct __result_of_memobj_ref_impl
  {
    template<typename _Fp, typename _Tp1>
      static __result_of_success<decltype(
      std::declval<_Tp1>().*std::declval<_Fp>()
      ), __invoke_memobj_ref> _S_test(int);

    template<typename, typename>
      static __failure_type _S_test(...);
  };

  template<typename _MemPtr, typename _Arg>
    struct __result_of_memobj_ref
    : private __result_of_memobj_ref_impl
    {
      typedef decltype(_S_test<_MemPtr, _Arg>(0)) type;
    };

  // [func.require] paragraph 1 bullet 4:
  struct __result_of_memobj_deref_impl
  {
    template<typename _Fp, typename _Tp1>
      static __result_of_success<decltype(
      (*std::declval<_Tp1>()).*std::declval<_Fp>()
      ), __invoke_memobj_deref> _S_test(int);

    template<typename, typename>
      static __failure_type _S_test(...);
  };

  template<typename _MemPtr, typename _Arg>
    struct __result_of_memobj_deref
    : private __result_of_memobj_deref_impl
    {
      typedef decltype(_S_test<_MemPtr, _Arg>(0)) type;
    };

  template<typename _MemPtr, typename _Arg>
    struct __result_of_memobj;

  template<typename _Res, typename _Class, typename _Arg>
    struct __result_of_memobj<_Res _Class::*, _Arg>
    {
      typedef __remove_cvref_t<_Arg> _Argval;
      typedef _Res _Class::* _MemPtr;
      typedef typename __conditional_t<__or_<is_same<_Argval, _Class>,
        is_base_of<_Class, _Argval>>::value,
        __result_of_memobj_ref<_MemPtr, _Arg>,
        __result_of_memobj_deref<_MemPtr, _Arg>
      >::type type;
    };

  template<typename _MemPtr, typename _Arg, typename... _Args>
    struct __result_of_memfun;

  template<typename _Res, typename _Class, typename _Arg, typename... _Args>
    struct __result_of_memfun<_Res _Class::*, _Arg, _Args...>
    {
      typedef typename remove_reference<_Arg>::type _Argval;
      typedef _Res _Class::* _MemPtr;
      typedef typename __conditional_t<is_base_of<_Class, _Argval>::value,
        __result_of_memfun_ref<_MemPtr, _Arg, _Args...>,
        __result_of_memfun_deref<_MemPtr, _Arg, _Args...>
      >::type type;
    };

  // _GLIBCXX_RESOLVE_LIB_DEFECTS
  // 2219.  INVOKE-ing a pointer to member with a reference_wrapper
  //        as the object expression

  // Used by result_of, invoke etc. to unwrap a reference_wrapper.
  template<typename _Tp, typename _Up = __remove_cvref_t<_Tp>>
    struct __inv_unwrap
    {
      using type = _Tp;
    };

  template<typename _Tp, typename _Up>
    struct __inv_unwrap<_Tp, reference_wrapper<_Up>>
    {
      using type = _Up&;
    };

  template<bool, bool, typename _Functor, typename... _ArgTypes>
    struct __result_of_impl
    {
      typedef __failure_type type;
    };

  template<typename _MemPtr, typename _Arg>
    struct __result_of_impl<true, false, _MemPtr, _Arg>
    : public __result_of_memobj<__decay_t<_MemPtr>,
				typename __inv_unwrap<_Arg>::type>
    { };

  template<typename _MemPtr, typename _Arg, typename... _Args>
    struct __result_of_impl<false, true, _MemPtr, _Arg, _Args...>
    : public __result_of_memfun<__decay_t<_MemPtr>,
				typename __inv_unwrap<_Arg>::type, _Args...>
    { };

  // [func.require] paragraph 1 bullet 5:
  struct __result_of_other_impl
  {
    template<typename _Fn, typename... _Args>
      static __result_of_success<decltype(
      std::declval<_Fn>()(std::declval<_Args>()...)
      ), __invoke_other> _S_test(int);

    template<typename...>
      static __failure_type _S_test(...);
  };

  template<typename _Functor, typename... _ArgTypes>
    struct __result_of_impl<false, false, _Functor, _ArgTypes...>
    : private __result_of_other_impl
    {
      typedef decltype(_S_test<_Functor, _ArgTypes...>(0)) type;
    };

  // __invoke_result (std::invoke_result for C++11)
  template<typename _Functor, typename... _ArgTypes>
    struct __invoke_result
    : public __result_of_impl<
        is_member_object_pointer<
          typename remove_reference<_Functor>::type
        >::value,
        is_member_function_pointer<
          typename remove_reference<_Functor>::type
        >::value,
	_Functor, _ArgTypes...
      >::type
    { };
  /// @endcond

  template<typename _Functor, typename... _ArgTypes>
    struct result_of<_Functor(_ArgTypes...)>
    : public __invoke_result<_Functor, _ArgTypes...>
    { } _GLIBCXX17_DEPRECATED_SUGGEST("std::invoke_result");

#if __cplusplus >= 201402L
  /// Alias template for aligned_storage
  template<size_t _Len, size_t _Align =
	    __alignof__(typename __aligned_storage_msa<_Len>::__type)>
    using aligned_storage_t = typename aligned_storage<_Len, _Align>::type;

  template <size_t _Len, typename... _Types>
    using aligned_union_t = typename aligned_union<_Len, _Types...>::type;

  /// Alias template for decay
  template<typename _Tp>
    using decay_t = typename decay<_Tp>::type;

  /// Alias template for enable_if
  template<bool _Cond, typename _Tp = void>
    using enable_if_t = typename enable_if<_Cond, _Tp>::type;

  /// Alias template for conditional
  template<bool _Cond, typename _Iftrue, typename _Iffalse>
    using conditional_t = typename conditional<_Cond, _Iftrue, _Iffalse>::type;

  /// Alias template for common_type
  template<typename... _Tp>
    using common_type_t = typename common_type<_Tp...>::type;

  /// Alias template for underlying_type
  template<typename _Tp>
    using underlying_type_t = typename underlying_type<_Tp>::type;

  /// Alias template for result_of
  template<typename _Tp>
    using result_of_t = typename result_of<_Tp>::type;
#endif // C++14

#if __cplusplus >= 201703L || !defined(__STRICT_ANSI__) // c++17 or gnu++11
#define __cpp_lib_void_t 201411L
  /// A metafunction that always yields void, used for detecting valid types.
  template<typename...> using void_t = void;
#endif

  /// @cond undocumented

  /// Implementation of the detection idiom (negative case).
  template<typename _Default, typename _AlwaysVoid,
	   template<typename...> class _Op, typename... _Args>
    struct __detector
    {
      using value_t = false_type;
      using type = _Default;
    };

  /// Implementation of the detection idiom (positive case).
  template<typename _Default, template<typename...> class _Op,
	    typename... _Args>
    struct __detector<_Default, __void_t<_Op<_Args...>>, _Op, _Args...>
    {
      using value_t = true_type;
      using type = _Op<_Args...>;
    };

  // Detect whether _Op<_Args...> is a valid type, use _Default if not.
  template<typename _Default, template<typename...> class _Op,
	   typename... _Args>
    using __detected_or = __detector<_Default, void, _Op, _Args...>;

  // _Op<_Args...> if that is a valid type, otherwise _Default.
  template<typename _Default, template<typename...> class _Op,
	   typename... _Args>
    using __detected_or_t
      = typename __detected_or<_Default, _Op, _Args...>::type;

  /**
   *  Use SFINAE to determine if the type _Tp has a publicly-accessible
   *  member type _NTYPE.
   */
#define _GLIBCXX_HAS_NESTED_TYPE(_NTYPE)				\
  template<typename _Tp, typename = __void_t<>>				\
    struct __has_##_NTYPE						\
    : false_type							\
    { };								\
  template<typename _Tp>						\
    struct __has_##_NTYPE<_Tp, __void_t<typename _Tp::_NTYPE>>		\
    : true_type								\
    { };

  template <typename _Tp>
    struct __is_swappable;

  template <typename _Tp>
    struct __is_nothrow_swappable;

  template<typename>
    struct __is_tuple_like_impl : false_type
    { };

  // Internal type trait that allows us to sfinae-protect tuple_cat.
  template<typename _Tp>
    struct __is_tuple_like
    : public __is_tuple_like_impl<__remove_cvref_t<_Tp>>::type
    { };
  /// @endcond

  template<typename _Tp>
    _GLIBCXX20_CONSTEXPR
    inline
    _Require<__not_<__is_tuple_like<_Tp>>,
	     is_move_constructible<_Tp>,
	     is_move_assignable<_Tp>>
    swap(_Tp&, _Tp&)
    noexcept(__and_<is_nothrow_move_constructible<_Tp>,
	            is_nothrow_move_assignable<_Tp>>::value);

  template<typename _Tp, size_t _Nm>
    _GLIBCXX20_CONSTEXPR
    inline
    __enable_if_t<__is_swappable<_Tp>::value>
    swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm])
    noexcept(__is_nothrow_swappable<_Tp>::value);

  /// @cond undocumented
  namespace __swappable_details {
    using std::swap;

    struct __do_is_swappable_impl
    {
      template<typename _Tp, typename
               = decltype(swap(std::declval<_Tp&>(), std::declval<_Tp&>()))>
        static true_type __test(int);

      template<typename>
        static false_type __test(...);
    };

    struct __do_is_nothrow_swappable_impl
    {
      template<typename _Tp>
        static __bool_constant<
          noexcept(swap(std::declval<_Tp&>(), std::declval<_Tp&>()))
        > __test(int);

      template<typename>
        static false_type __test(...);
    };

  } // namespace __swappable_details

  template<typename _Tp>
    struct __is_swappable_impl
    : public __swappable_details::__do_is_swappable_impl
    {
      typedef decltype(__test<_Tp>(0)) type;
    };

  template<typename _Tp>
    struct __is_nothrow_swappable_impl
    : public __swappable_details::__do_is_nothrow_swappable_impl
    {
      typedef decltype(__test<_Tp>(0)) type;
    };

  template<typename _Tp>
    struct __is_swappable
    : public __is_swappable_impl<_Tp>::type
    { };

  template<typename _Tp>
    struct __is_nothrow_swappable
    : public __is_nothrow_swappable_impl<_Tp>::type
    { };
  /// @endcond

#if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11
#define __cpp_lib_is_swappable 201603L
  /// Metafunctions used for detecting swappable types: p0185r1

  /// is_swappable
  template<typename _Tp>
    struct is_swappable
    : public __is_swappable_impl<_Tp>::type
    {
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
	"template argument must be a complete class or an unbounded array");
    };

  /// is_nothrow_swappable
  template<typename _Tp>
    struct is_nothrow_swappable
    : public __is_nothrow_swappable_impl<_Tp>::type
    {
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
	"template argument must be a complete class or an unbounded array");
    };

#if __cplusplus >= 201402L
  /// is_swappable_v
  template<typename _Tp>
    _GLIBCXX17_INLINE constexpr bool is_swappable_v =
      is_swappable<_Tp>::value;

  /// is_nothrow_swappable_v
  template<typename _Tp>
    _GLIBCXX17_INLINE constexpr bool is_nothrow_swappable_v =
      is_nothrow_swappable<_Tp>::value;
#endif // __cplusplus >= 201402L

  /// @cond undocumented
  namespace __swappable_with_details {
    using std::swap;

    struct __do_is_swappable_with_impl
    {
      template<typename _Tp, typename _Up, typename
               = decltype(swap(std::declval<_Tp>(), std::declval<_Up>())),
               typename
               = decltype(swap(std::declval<_Up>(), std::declval<_Tp>()))>
        static true_type __test(int);

      template<typename, typename>
        static false_type __test(...);
    };

    struct __do_is_nothrow_swappable_with_impl
    {
      template<typename _Tp, typename _Up>
        static __bool_constant<
          noexcept(swap(std::declval<_Tp>(), std::declval<_Up>()))
          &&
          noexcept(swap(std::declval<_Up>(), std::declval<_Tp>()))
        > __test(int);

      template<typename, typename>
        static false_type __test(...);
    };

  } // namespace __swappable_with_details

  template<typename _Tp, typename _Up>
    struct __is_swappable_with_impl
    : public __swappable_with_details::__do_is_swappable_with_impl
    {
      typedef decltype(__test<_Tp, _Up>(0)) type;
    };

  // Optimization for the homogenous lvalue case, not required:
  template<typename _Tp>
    struct __is_swappable_with_impl<_Tp&, _Tp&>
    : public __swappable_details::__do_is_swappable_impl
    {
      typedef decltype(__test<_Tp&>(0)) type;
    };

  template<typename _Tp, typename _Up>
    struct __is_nothrow_swappable_with_impl
    : public __swappable_with_details::__do_is_nothrow_swappable_with_impl
    {
      typedef decltype(__test<_Tp, _Up>(0)) type;
    };

  // Optimization for the homogenous lvalue case, not required:
  template<typename _Tp>
    struct __is_nothrow_swappable_with_impl<_Tp&, _Tp&>
    : public __swappable_details::__do_is_nothrow_swappable_impl
    {
      typedef decltype(__test<_Tp&>(0)) type;
    };
  /// @endcond

  /// is_swappable_with
  template<typename _Tp, typename _Up>
    struct is_swappable_with
    : public __is_swappable_with_impl<_Tp, _Up>::type
    {
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
	"first template argument must be a complete class or an unbounded array");
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Up>{}),
	"second template argument must be a complete class or an unbounded array");
    };

  /// is_nothrow_swappable_with
  template<typename _Tp, typename _Up>
    struct is_nothrow_swappable_with
    : public __is_nothrow_swappable_with_impl<_Tp, _Up>::type
    {
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
	"first template argument must be a complete class or an unbounded array");
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Up>{}),
	"second template argument must be a complete class or an unbounded array");
    };

#if __cplusplus >= 201402L
  /// is_swappable_with_v
  template<typename _Tp, typename _Up>
    _GLIBCXX17_INLINE constexpr bool is_swappable_with_v =
      is_swappable_with<_Tp, _Up>::value;

  /// is_nothrow_swappable_with_v
  template<typename _Tp, typename _Up>
    _GLIBCXX17_INLINE constexpr bool is_nothrow_swappable_with_v =
      is_nothrow_swappable_with<_Tp, _Up>::value;
#endif // __cplusplus >= 201402L

#endif// c++1z or gnu++11

  /// @cond undocumented

  // __is_invocable (std::is_invocable for C++11)

  // The primary template is used for invalid INVOKE expressions.
  template<typename _Result, typename _Ret,
	   bool = is_void<_Ret>::value, typename = void>
    struct __is_invocable_impl : false_type { };

  // Used for valid INVOKE and INVOKE<void> expressions.
  template<typename _Result, typename _Ret>
    struct __is_invocable_impl<_Result, _Ret,
			       /* is_void<_Ret> = */ true,
			       __void_t<typename _Result::type>>
    : true_type
    { };

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wctor-dtor-privacy"
  // Used for INVOKE<R> expressions to check the implicit conversion to R.
  template<typename _Result, typename _Ret>
    struct __is_invocable_impl<_Result, _Ret,
			       /* is_void<_Ret> = */ false,
			       __void_t<typename _Result::type>>
    {
    private:
      // The type of the INVOKE expression.
      // Unlike declval, this doesn't add_rvalue_reference.
      static typename _Result::type _S_get();

      template<typename _Tp>
	static void _S_conv(_Tp);

      // This overload is viable if INVOKE(f, args...) can convert to _Tp.
      template<typename _Tp, typename = decltype(_S_conv<_Tp>(_S_get()))>
	static true_type
	_S_test(int);

      template<typename _Tp>
	static false_type
	_S_test(...);

    public:
      using type = decltype(_S_test<_Ret>(1));
    };
#pragma GCC diagnostic pop

  template<typename _Fn, typename... _ArgTypes>
    struct __is_invocable
    : __is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, void>::type
    { };

  template<typename _Fn, typename _Tp, typename... _Args>
    constexpr bool __call_is_nt(__invoke_memfun_ref)
    {
      using _Up = typename __inv_unwrap<_Tp>::type;
      return noexcept((std::declval<_Up>().*std::declval<_Fn>())(
	    std::declval<_Args>()...));
    }

  template<typename _Fn, typename _Tp, typename... _Args>
    constexpr bool __call_is_nt(__invoke_memfun_deref)
    {
      return noexcept(((*std::declval<_Tp>()).*std::declval<_Fn>())(
	    std::declval<_Args>()...));
    }

  template<typename _Fn, typename _Tp>
    constexpr bool __call_is_nt(__invoke_memobj_ref)
    {
      using _Up = typename __inv_unwrap<_Tp>::type;
      return noexcept(std::declval<_Up>().*std::declval<_Fn>());
    }

  template<typename _Fn, typename _Tp>
    constexpr bool __call_is_nt(__invoke_memobj_deref)
    {
      return noexcept((*std::declval<_Tp>()).*std::declval<_Fn>());
    }

  template<typename _Fn, typename... _Args>
    constexpr bool __call_is_nt(__invoke_other)
    {
      return noexcept(std::declval<_Fn>()(std::declval<_Args>()...));
    }

  template<typename _Result, typename _Fn, typename... _Args>
    struct __call_is_nothrow
    : __bool_constant<
	std::__call_is_nt<_Fn, _Args...>(typename _Result::__invoke_type{})
      >
    { };

  template<typename _Fn, typename... _Args>
    using __call_is_nothrow_
      = __call_is_nothrow<__invoke_result<_Fn, _Args...>, _Fn, _Args...>;

  // __is_nothrow_invocable (std::is_nothrow_invocable for C++11)
  template<typename _Fn, typename... _Args>
    struct __is_nothrow_invocable
    : __and_<__is_invocable<_Fn, _Args...>,
             __call_is_nothrow_<_Fn, _Args...>>::type
    { };

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wctor-dtor-privacy"
  struct __nonesuchbase {};
  struct __nonesuch : private __nonesuchbase {
    ~__nonesuch() = delete;
    __nonesuch(__nonesuch const&) = delete;
    void operator=(__nonesuch const&) = delete;
  };
#pragma GCC diagnostic pop
  /// @endcond

#if __cplusplus >= 201703L
# define __cpp_lib_is_invocable 201703L

  /// std::invoke_result
  template<typename _Functor, typename... _ArgTypes>
    struct invoke_result
    : public __invoke_result<_Functor, _ArgTypes...>
    {
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Functor>{}),
	"_Functor must be a complete class or an unbounded array");
      static_assert((std::__is_complete_or_unbounded(
	__type_identity<_ArgTypes>{}) && ...),
	"each argument type must be a complete class or an unbounded array");
    };

  /// std::invoke_result_t
  template<typename _Fn, typename... _Args>
    using invoke_result_t = typename invoke_result<_Fn, _Args...>::type;

  /// std::is_invocable
  template<typename _Fn, typename... _ArgTypes>
    struct is_invocable
    : __is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, void>::type
    {
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Fn>{}),
	"_Fn must be a complete class or an unbounded array");
      static_assert((std::__is_complete_or_unbounded(
	__type_identity<_ArgTypes>{}) && ...),
	"each argument type must be a complete class or an unbounded array");
    };

  /// std::is_invocable_r
  template<typename _Ret, typename _Fn, typename... _ArgTypes>
    struct is_invocable_r
    : __is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, _Ret>::type
    {
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Fn>{}),
	"_Fn must be a complete class or an unbounded array");
      static_assert((std::__is_complete_or_unbounded(
	__type_identity<_ArgTypes>{}) && ...),
	"each argument type must be a complete class or an unbounded array");
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Ret>{}),
	"_Ret must be a complete class or an unbounded array");
    };

  /// std::is_nothrow_invocable
  template<typename _Fn, typename... _ArgTypes>
    struct is_nothrow_invocable
    : __and_<__is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, void>,
	     __call_is_nothrow_<_Fn, _ArgTypes...>>::type
    {
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Fn>{}),
	"_Fn must be a complete class or an unbounded array");
      static_assert((std::__is_complete_or_unbounded(
	__type_identity<_ArgTypes>{}) && ...),
	"each argument type must be a complete class or an unbounded array");
    };

  /// @cond undocumented
  template<typename _Result, typename _Ret, typename = void>
    struct __is_nt_invocable_impl : false_type { };

  template<typename _Result, typename _Ret>
    struct __is_nt_invocable_impl<_Result, _Ret,
				  __void_t<typename _Result::type>>
    : __or_<is_void<_Ret>,
	    __is_nothrow_convertible<typename _Result::type, _Ret>>
    { };
  /// @endcond

  /// std::is_nothrow_invocable_r
  template<typename _Ret, typename _Fn, typename... _ArgTypes>
    struct is_nothrow_invocable_r
    : __and_<__is_nt_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, _Ret>,
             __call_is_nothrow_<_Fn, _ArgTypes...>>::type
    {
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Fn>{}),
	"_Fn must be a complete class or an unbounded array");
      static_assert((std::__is_complete_or_unbounded(
	__type_identity<_ArgTypes>{}) && ...),
	"each argument type must be a complete class or an unbounded array");
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Ret>{}),
	"_Ret must be a complete class or an unbounded array");
    };
#endif // C++17

#if __cplusplus >= 201703L
# define __cpp_lib_type_trait_variable_templates 201510L
  /**
   * @defgroup variable_templates Variable templates for type traits
   * @ingroup metaprogramming
   *
   * Each variable `is_xxx_v<T>` is a boolean constant with the same value
   * as the `value` member of the corresponding type trait `is_xxx<T>`.
   *
   * @since C++17 unless noted otherwise.
   */

  /**
   * @{
   * @ingroup variable_templates
   */
template <typename _Tp>
  inline constexpr bool is_void_v = is_void<_Tp>::value;
template <typename _Tp>
  inline constexpr bool is_null_pointer_v = is_null_pointer<_Tp>::value;
template <typename _Tp>
  inline constexpr bool is_integral_v = is_integral<_Tp>::value;
template <typename _Tp>
  inline constexpr bool is_floating_point_v = is_floating_point<_Tp>::value;
template <typename _Tp>
  inline constexpr bool is_array_v = is_array<_Tp>::value;
template <typename _Tp>
  inline constexpr bool is_pointer_v = is_pointer<_Tp>::value;
template <typename _Tp>
  inline constexpr bool is_lvalue_reference_v =
    is_lvalue_reference<_Tp>::value;
template <typename _Tp>
  inline constexpr bool is_rvalue_reference_v =
    is_rvalue_reference<_Tp>::value;
template <typename _Tp>
  inline constexpr bool is_member_object_pointer_v =
    is_member_object_pointer<_Tp>::value;
template <typename _Tp>
  inline constexpr bool is_member_function_pointer_v =
    is_member_function_pointer<_Tp>::value;
template <typename _Tp>
  inline constexpr bool is_enum_v = is_enum<_Tp>::value;
template <typename _Tp>
  inline constexpr bool is_union_v = is_union<_Tp>::value;
template <typename _Tp>
  inline constexpr bool is_class_v = is_class<_Tp>::value;
template <typename _Tp>
  inline constexpr bool is_function_v = is_function<_Tp>::value;
template <typename _Tp>
  inline constexpr bool is_reference_v = is_reference<_Tp>::value;
template <typename _Tp>
  inline constexpr bool is_arithmetic_v = is_arithmetic<_Tp>::value;
template <typename _Tp>
  inline constexpr bool is_fundamental_v = is_fundamental<_Tp>::value;
template <typename _Tp>
  inline constexpr bool is_object_v = is_object<_Tp>::value;
template <typename _Tp>
  inline constexpr bool is_scalar_v = is_scalar<_Tp>::value;
template <typename _Tp>
  inline constexpr bool is_compound_v = is_compound<_Tp>::value;
template <typename _Tp>
  inline constexpr bool is_member_pointer_v = is_member_pointer<_Tp>::value;
template <typename _Tp>
  inline constexpr bool is_const_v = is_const<_Tp>::value;
template <typename _Tp>
  inline constexpr bool is_volatile_v = is_volatile<_Tp>::value;
template <typename _Tp>
  inline constexpr bool is_trivial_v = is_trivial<_Tp>::value;
template <typename _Tp>
  inline constexpr bool is_trivially_copyable_v =
    is_trivially_copyable<_Tp>::value;
template <typename _Tp>
  inline constexpr bool is_standard_layout_v = is_standard_layout<_Tp>::value;
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
template <typename _Tp>
  _GLIBCXX20_DEPRECATED("use is_standard_layout_v && is_trivial_v instead")
  inline constexpr bool is_pod_v = is_pod<_Tp>::value;
template <typename _Tp>
  _GLIBCXX17_DEPRECATED
  inline constexpr bool is_literal_type_v = is_literal_type<_Tp>::value;
#pragma GCC diagnostic pop
 template <typename _Tp>
  inline constexpr bool is_empty_v = is_empty<_Tp>::value;
template <typename _Tp>
  inline constexpr bool is_polymorphic_v = is_polymorphic<_Tp>::value;
template <typename _Tp>
  inline constexpr bool is_abstract_v = is_abstract<_Tp>::value;
template <typename _Tp>
  inline constexpr bool is_final_v = is_final<_Tp>::value;
template <typename _Tp>
  inline constexpr bool is_signed_v = is_signed<_Tp>::value;
template <typename _Tp>
  inline constexpr bool is_unsigned_v = is_unsigned<_Tp>::value;
template <typename _Tp, typename... _Args>
  inline constexpr bool is_constructible_v =
    is_constructible<_Tp, _Args...>::value;
template <typename _Tp>
  inline constexpr bool is_default_constructible_v =
    is_default_constructible<_Tp>::value;
template <typename _Tp>
  inline constexpr bool is_copy_constructible_v =
    is_copy_constructible<_Tp>::value;
template <typename _Tp>
  inline constexpr bool is_move_constructible_v =
    is_move_constructible<_Tp>::value;
template <typename _Tp, typename _Up>
  inline constexpr bool is_assignable_v = is_assignable<_Tp, _Up>::value;
template <typename _Tp>
  inline constexpr bool is_copy_assignable_v = is_copy_assignable<_Tp>::value;
template <typename _Tp>
  inline constexpr bool is_move_assignable_v = is_move_assignable<_Tp>::value;
template <typename _Tp>
  inline constexpr bool is_destructible_v = is_destructible<_Tp>::value;
template <typename _Tp, typename... _Args>
  inline constexpr bool is_trivially_constructible_v =
    is_trivially_constructible<_Tp, _Args...>::value;
template <typename _Tp>
  inline constexpr bool is_trivially_default_constructible_v =
    is_trivially_default_constructible<_Tp>::value;
template <typename _Tp>
  inline constexpr bool is_trivially_copy_constructible_v =
    is_trivially_copy_constructible<_Tp>::value;
template <typename _Tp>
  inline constexpr bool is_trivially_move_constructible_v =
    is_trivially_move_constructible<_Tp>::value;
template <typename _Tp, typename _Up>
  inline constexpr bool is_trivially_assignable_v =
    is_trivially_assignable<_Tp, _Up>::value;
template <typename _Tp>
  inline constexpr bool is_trivially_copy_assignable_v =
    is_trivially_copy_assignable<_Tp>::value;
template <typename _Tp>
  inline constexpr bool is_trivially_move_assignable_v =
    is_trivially_move_assignable<_Tp>::value;
template <typename _Tp>
  inline constexpr bool is_trivially_destructible_v =
    is_trivially_destructible<_Tp>::value;
template <typename _Tp, typename... _Args>
  inline constexpr bool is_nothrow_constructible_v =
    is_nothrow_constructible<_Tp, _Args...>::value;
template <typename _Tp>
  inline constexpr bool is_nothrow_default_constructible_v =
    is_nothrow_default_constructible<_Tp>::value;
template <typename _Tp>
  inline constexpr bool is_nothrow_copy_constructible_v =
    is_nothrow_copy_constructible<_Tp>::value;
template <typename _Tp>
  inline constexpr bool is_nothrow_move_constructible_v =
    is_nothrow_move_constructible<_Tp>::value;
template <typename _Tp, typename _Up>
  inline constexpr bool is_nothrow_assignable_v =
    is_nothrow_assignable<_Tp, _Up>::value;
template <typename _Tp>
  inline constexpr bool is_nothrow_copy_assignable_v =
    is_nothrow_copy_assignable<_Tp>::value;
template <typename _Tp>
  inline constexpr bool is_nothrow_move_assignable_v =
    is_nothrow_move_assignable<_Tp>::value;
template <typename _Tp>
  inline constexpr bool is_nothrow_destructible_v =
    is_nothrow_destructible<_Tp>::value;
template <typename _Tp>
  inline constexpr bool has_virtual_destructor_v =
    has_virtual_destructor<_Tp>::value;
template <typename _Tp>
  inline constexpr size_t alignment_of_v = alignment_of<_Tp>::value;
template <typename _Tp>
  inline constexpr size_t rank_v = rank<_Tp>::value;
template <typename _Tp, unsigned _Idx = 0>
  inline constexpr size_t extent_v = extent<_Tp, _Idx>::value;
#ifdef _GLIBCXX_HAVE_BUILTIN_IS_SAME
template <typename _Tp, typename _Up>
  inline constexpr bool is_same_v = __is_same(_Tp, _Up);
#else
template <typename _Tp, typename _Up>
  inline constexpr bool is_same_v = std::is_same<_Tp, _Up>::value;
#endif
template <typename _Base, typename _Derived>
  inline constexpr bool is_base_of_v = is_base_of<_Base, _Derived>::value;
template <typename _From, typename _To>
  inline constexpr bool is_convertible_v = is_convertible<_From, _To>::value;
template<typename _Fn, typename... _Args>
  inline constexpr bool is_invocable_v = is_invocable<_Fn, _Args...>::value;
template<typename _Fn, typename... _Args>
  inline constexpr bool is_nothrow_invocable_v
    = is_nothrow_invocable<_Fn, _Args...>::value;
template<typename _Ret, typename _Fn, typename... _Args>
  inline constexpr bool is_invocable_r_v
    = is_invocable_r<_Ret, _Fn, _Args...>::value;
template<typename _Ret, typename _Fn, typename... _Args>
  inline constexpr bool is_nothrow_invocable_r_v
    = is_nothrow_invocable_r<_Ret, _Fn, _Args...>::value;
/// @}

#ifdef _GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP
# define __cpp_lib_has_unique_object_representations 201606L
  /// has_unique_object_representations
  /// @since C++17
  template<typename _Tp>
    struct has_unique_object_representations
    : bool_constant<__has_unique_object_representations(
      remove_cv_t<remove_all_extents_t<_Tp>>
      )>
    {
      static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
	"template argument must be a complete class or an unbounded array");
    };

  /// @ingroup variable_templates
  template<typename _Tp>
    inline constexpr bool has_unique_object_representations_v
      = has_unique_object_representations<_Tp>::value;
#endif

#ifdef _GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE
# define __cpp_lib_is_aggregate 201703L
  /// is_aggregate
  /// @since C++17
  template<typename _Tp>
    struct is_aggregate
    : bool_constant<__is_aggregate(remove_cv_t<_Tp>)>
    { };

  /// @ingroup variable_templates
  template<typename _Tp>
    inline constexpr bool is_aggregate_v = is_aggregate<_Tp>::value;
#endif
#endif // C++17

#if __cplusplus >= 202002L

  /** * Remove references and cv-qualifiers.
   * @since C++20
   * @{
   */
#define __cpp_lib_remove_cvref 201711L

  template<typename _Tp>
    struct remove_cvref
    : remove_cv<_Tp>
    { };

  template<typename _Tp>
    struct remove_cvref<_Tp&>
    : remove_cv<_Tp>
    { };

  template<typename _Tp>
    struct remove_cvref<_Tp&&>
    : remove_cv<_Tp>
    { };

  template<typename _Tp>
    using remove_cvref_t = typename remove_cvref<_Tp>::type;
  /// @}

  /** * Identity metafunction.
   * @since C++20
   * @{
   */
#define __cpp_lib_type_identity 201806L
  template<typename _Tp>
    struct type_identity { using type = _Tp; };

  template<typename _Tp>
    using type_identity_t = typename type_identity<_Tp>::type;
  /// @}

#define __cpp_lib_unwrap_ref 201811L

  /** Unwrap a reference_wrapper
   * @since C++20
   * @{
   */
  template<typename _Tp>
    struct unwrap_reference { using type = _Tp; };

  template<typename _Tp>
    struct unwrap_reference<reference_wrapper<_Tp>> { using type = _Tp&; };

  template<typename _Tp>
    using unwrap_reference_t = typename unwrap_reference<_Tp>::type;
  /// @}

  /** Decay type and if it's a reference_wrapper, unwrap it
   * @since C++20
   * @{
   */
  template<typename _Tp>
    struct unwrap_ref_decay { using type = unwrap_reference_t<decay_t<_Tp>>; };

  template<typename _Tp>
    using unwrap_ref_decay_t = typename unwrap_ref_decay<_Tp>::type;
  /// @}

#define __cpp_lib_bounded_array_traits 201902L

  /// True for a type that is an array of known bound.
  /// @since C++20
  template<typename _Tp>
    struct is_bounded_array
    : public __is_array_known_bounds<_Tp>
    { };

  /// True for a type that is an array of unknown bound.
  /// @since C++20
  template<typename _Tp>
    struct is_unbounded_array
    : public __is_array_unknown_bounds<_Tp>
    { };

  /// @ingroup variable_templates
  /// @since C++20
  template<typename _Tp>
    inline constexpr bool is_bounded_array_v
      = is_bounded_array<_Tp>::value;

  /// @ingroup variable_templates
  /// @since C++20
  template<typename _Tp>
    inline constexpr bool is_unbounded_array_v
      = is_unbounded_array<_Tp>::value;

#if __has_builtin(__is_layout_compatible)

  /// @since C++20
  template<typename _Tp, typename _Up>
    struct is_layout_compatible
    : bool_constant<__is_layout_compatible(_Tp, _Up)>
    { };

  /// @ingroup variable_templates
  /// @since C++20
  template<typename _Tp, typename _Up>
    constexpr bool is_layout_compatible_v
      = __is_layout_compatible(_Tp, _Up);

#if __has_builtin(__builtin_is_corresponding_member)
#define __cpp_lib_is_layout_compatible 201907L

  /// @since C++20
  template<typename _S1, typename _S2, typename _M1, typename _M2>
    constexpr bool
    is_corresponding_member(_M1 _S1::*__m1, _M2 _S2::*__m2) noexcept
    { return __builtin_is_corresponding_member(__m1, __m2); }
#endif
#endif

#if __has_builtin(__is_pointer_interconvertible_base_of)
  /// True if `_Derived` is standard-layout and has a base class of type `_Base`
  /// @since C++20
  template<typename _Base, typename _Derived>
    struct is_pointer_interconvertible_base_of
    : bool_constant<__is_pointer_interconvertible_base_of(_Base, _Derived)>
    { };

  /// @ingroup variable_templates
  /// @since C++20
  template<typename _Base, typename _Derived>
    constexpr bool is_pointer_interconvertible_base_of_v
      = __is_pointer_interconvertible_base_of(_Base, _Derived);

#if __has_builtin(__builtin_is_pointer_interconvertible_with_class)
#define __cpp_lib_is_pointer_interconvertible 201907L

  /// True if `__mp` points to the first member of a standard-layout type
  /// @returns true if `s.*__mp` is pointer-interconvertible with `s`
  /// @since C++20
  template<typename _Tp, typename _Mem>
    constexpr bool
    is_pointer_interconvertible_with_class(_Mem _Tp::*__mp) noexcept
    { return __builtin_is_pointer_interconvertible_with_class(__mp); }
#endif
#endif

#if __cplusplus > 202002L
#define __cpp_lib_is_scoped_enum 202011L

  /// True if the type is a scoped enumeration type.
  /// @since C++23

  template<typename _Tp>
    struct is_scoped_enum
    : false_type
    { };

  template<typename _Tp>
    requires __is_enum(_Tp)
    && requires(_Tp __t) { __t = __t; } // fails if incomplete
    struct is_scoped_enum<_Tp>
    : bool_constant<!requires(_Tp __t, void(*__f)(int)) { __f(__t); }>
    { };

  // FIXME remove this partial specialization and use remove_cv_t<_Tp> above
  // when PR c++/99968 is fixed.
  template<typename _Tp>
    requires __is_enum(_Tp)
    && requires(_Tp __t) { __t = __t; } // fails if incomplete
    struct is_scoped_enum<const _Tp>
    : bool_constant<!requires(_Tp __t, void(*__f)(int)) { __f(__t); }>
    { };

  /// @ingroup variable_templates
  /// @since C++23
  template<typename _Tp>
    inline constexpr bool is_scoped_enum_v = is_scoped_enum<_Tp>::value;

#endif // C++23

#if _GLIBCXX_HAVE_IS_CONSTANT_EVALUATED
#define __cpp_lib_is_constant_evaluated 201811L

  /// Returns true only when called during constant evaluation.
  /// @since C++20
  constexpr inline bool
  is_constant_evaluated() noexcept
  {
#if __cpp_if_consteval >= 202106L
    if consteval { return true; } else { return false; }
#else
    return __builtin_is_constant_evaluated();
#endif
  }
#endif

  /// @cond undocumented
  template<typename _From, typename _To>
    using __copy_cv = typename __match_cv_qualifiers<_From, _To>::__type;

  template<typename _Xp, typename _Yp>
    using __cond_res
      = decltype(false ? declval<_Xp(&)()>()() : declval<_Yp(&)()>()());

  template<typename _Ap, typename _Bp, typename = void>
    struct __common_ref_impl
    { };

  // [meta.trans.other], COMMON-REF(A, B)
  template<typename _Ap, typename _Bp>
    using __common_ref = typename __common_ref_impl<_Ap, _Bp>::type;

  // COND-RES(COPYCV(X, Y) &, COPYCV(Y, X) &)
  template<typename _Xp, typename _Yp>
    using __condres_cvref
      = __cond_res<__copy_cv<_Xp, _Yp>&, __copy_cv<_Yp, _Xp>&>;

  // If A and B are both lvalue reference types, ...
  template<typename _Xp, typename _Yp>
    struct __common_ref_impl<_Xp&, _Yp&, __void_t<__condres_cvref<_Xp, _Yp>>>
    : enable_if<is_reference_v<__condres_cvref<_Xp, _Yp>>,
		__condres_cvref<_Xp, _Yp>>
    { };

  // let C be remove_reference_t<COMMON-REF(X&, Y&)>&&
  template<typename _Xp, typename _Yp>
    using __common_ref_C = remove_reference_t<__common_ref<_Xp&, _Yp&>>&&;

  // If A and B are both rvalue reference types, ...
  template<typename _Xp, typename _Yp>
    struct __common_ref_impl<_Xp&&, _Yp&&,
      _Require<is_convertible<_Xp&&, __common_ref_C<_Xp, _Yp>>,
	       is_convertible<_Yp&&, __common_ref_C<_Xp, _Yp>>>>
    { using type = __common_ref_C<_Xp, _Yp>; };

  // let D be COMMON-REF(const X&, Y&)
  template<typename _Xp, typename _Yp>
    using __common_ref_D = __common_ref<const _Xp&, _Yp&>;

  // If A is an rvalue reference and B is an lvalue reference, ...
  template<typename _Xp, typename _Yp>
    struct __common_ref_impl<_Xp&&, _Yp&,
      _Require<is_convertible<_Xp&&, __common_ref_D<_Xp, _Yp>>>>
    { using type = __common_ref_D<_Xp, _Yp>; };

  // If A is an lvalue reference and B is an rvalue reference, ...
  template<typename _Xp, typename _Yp>
    struct __common_ref_impl<_Xp&, _Yp&&>
    : __common_ref_impl<_Yp&&, _Xp&>
    { };
  /// @endcond

  template<typename _Tp, typename _Up,
	   template<typename> class _TQual, template<typename> class _UQual>
    struct basic_common_reference
    { };

  /// @cond undocumented
  template<typename _Tp>
    struct __xref
    { template<typename _Up> using __type = __copy_cv<_Tp, _Up>; };

  template<typename _Tp>
    struct __xref<_Tp&>
    { template<typename _Up> using __type = __copy_cv<_Tp, _Up>&; };

  template<typename _Tp>
    struct __xref<_Tp&&>
    { template<typename _Up> using __type = __copy_cv<_Tp, _Up>&&; };

  template<typename _Tp1, typename _Tp2>
    using __basic_common_ref
      = typename basic_common_reference<remove_cvref_t<_Tp1>,
					remove_cvref_t<_Tp2>,
					__xref<_Tp1>::template __type,
					__xref<_Tp2>::template __type>::type;
  /// @endcond

  template<typename... _Tp>
    struct common_reference;

  template<typename... _Tp>
    using common_reference_t = typename common_reference<_Tp...>::type;

  // If sizeof...(T) is zero, there shall be no member type.
  template<>
    struct common_reference<>
    { };

  // If sizeof...(T) is one ...
  template<typename _Tp0>
    struct common_reference<_Tp0>
    { using type = _Tp0; };

  /// @cond undocumented
  template<typename _Tp1, typename _Tp2, int _Bullet = 1, typename = void>
    struct __common_reference_impl
    : __common_reference_impl<_Tp1, _Tp2, _Bullet + 1>
    { };

  // If sizeof...(T) is two ...
  template<typename _Tp1, typename _Tp2>
    struct common_reference<_Tp1, _Tp2>
    : __common_reference_impl<_Tp1, _Tp2>
    { };

  // If T1 and T2 are reference types and COMMON-REF(T1, T2) is well-formed, ...
  template<typename _Tp1, typename _Tp2>
    struct __common_reference_impl<_Tp1&, _Tp2&, 1,
				   void_t<__common_ref<_Tp1&, _Tp2&>>>
    { using type = __common_ref<_Tp1&, _Tp2&>; };

  template<typename _Tp1, typename _Tp2>
    struct __common_reference_impl<_Tp1&&, _Tp2&&, 1,
				   void_t<__common_ref<_Tp1&&, _Tp2&&>>>
    { using type = __common_ref<_Tp1&&, _Tp2&&>; };

  template<typename _Tp1, typename _Tp2>
    struct __common_reference_impl<_Tp1&, _Tp2&&, 1,
				   void_t<__common_ref<_Tp1&, _Tp2&&>>>
    { using type = __common_ref<_Tp1&, _Tp2&&>; };

  template<typename _Tp1, typename _Tp2>
    struct __common_reference_impl<_Tp1&&, _Tp2&, 1,
				   void_t<__common_ref<_Tp1&&, _Tp2&>>>
    { using type = __common_ref<_Tp1&&, _Tp2&>; };

  // Otherwise, if basic_common_reference<...>::type is well-formed, ...
  template<typename _Tp1, typename _Tp2>
    struct __common_reference_impl<_Tp1, _Tp2, 2,
				   void_t<__basic_common_ref<_Tp1, _Tp2>>>
    { using type = __basic_common_ref<_Tp1, _Tp2>; };

  // Otherwise, if COND-RES(T1, T2) is well-formed, ...
  template<typename _Tp1, typename _Tp2>
    struct __common_reference_impl<_Tp1, _Tp2, 3,
				   void_t<__cond_res<_Tp1, _Tp2>>>
    { using type = __cond_res<_Tp1, _Tp2>; };

  // Otherwise, if common_type_t<T1, T2> is well-formed, ...
  template<typename _Tp1, typename _Tp2>
    struct __common_reference_impl<_Tp1, _Tp2, 4,
				   void_t<common_type_t<_Tp1, _Tp2>>>
    { using type = common_type_t<_Tp1, _Tp2>; };

  // Otherwise, there shall be no member type.
  template<typename _Tp1, typename _Tp2>
    struct __common_reference_impl<_Tp1, _Tp2, 5, void>
    { };

  // Otherwise, if sizeof...(T) is greater than two, ...
  template<typename _Tp1, typename _Tp2, typename... _Rest>
    struct common_reference<_Tp1, _Tp2, _Rest...>
    : __common_type_fold<common_reference<_Tp1, _Tp2>,
			 __common_type_pack<_Rest...>>
    { };

  // Reuse __common_type_fold for common_reference<T1, T2, Rest...>
  template<typename _Tp1, typename _Tp2, typename... _Rest>
    struct __common_type_fold<common_reference<_Tp1, _Tp2>,
			      __common_type_pack<_Rest...>,
			      void_t<common_reference_t<_Tp1, _Tp2>>>
    : public common_reference<common_reference_t<_Tp1, _Tp2>, _Rest...>
    { };
  /// @endcond

#endif // C++2a

  /// @} group metaprogramming

_GLIBCXX_END_NAMESPACE_VERSION
} // namespace std

#endif  // C++11

#endif  // _GLIBCXX_TYPE_TRAITS
                                                                                                                                                                                                     ;             1             ,                                          >                        
          4                        
          :                                           %          :   *                   1             W       9          :   >                   E             9       M          :   R                   Y                    a          :   f                   m             (       u          :   z                                h                :                                   H                :                                   (                :                                                   :                                                    :                                                    :                                                   :               ~      
                            :               d      !            h       )         :   .            J      5            H       =         :   B            0                                                                                   @                     `       (                    0                    8             p      @                    H             P      P                   X                   `                                                                                                                L                   _                   5                   A                          $                   (                   ,                                                                                               ?                    @                    \                    `                    f                            $                    (                    ,                    0                    4                    8                   <                    @             &      D             L      H             Q      L             _      P             d      T             p      X             v      \             w      `                   d                   h                   l                   p                   t                   x                    |             F                   P                   V                   c                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 #                                                                                                                       j                   F                   t                                       P                                  6                        p      8            `       @                   H                   X                    h                              @                                      .                      2           8         2           P         .            .symtab .strtab .shstrtab .note.gnu.build-id .note.Linux .rela.text .rela.init.text .rela.exit.text .rela.text.unlikely .rela__mcount_loc .rodata.str1.1 .rodata.str1.8 .rodata .modinfo .rela.return_sites .orc_unwind .rela.orc_unwind_ip __versions .rela.data .rela.exit.data .rela.init.data .rela.gnu.linkonce.this_module .bss .comment .note.GNU-stack .BTF .gnu_debuglink                                                                                          @       $                              .                     d       <                              ?                            #                             :      @               '            $                    J                                                         E      @               P/      `       $                    Z                                                         U      @               /      0       $                    j                           F                             e      @               /            $   	                 ~                     7      h                              y      @               `4      8      $                          2                                                        2               (	                                                       
                                                         
                                                               0                                    @               5             $                                                                                                 
                                         @               6      x      $                                                                                                                                             @               0=      8      $                                                                                 @               h>             $                                                                                  @               >             $                    (                    @                    @               #     @               >      0       $                    B                                                         G     0                     P                             P                                                          `                           :                             e                     L                                                          `      H      %   *                 	                      #      "                                                   >      t                             0	*H
01
0	`He0	*H
1a0]080 10UDebian Secure Boot CA2(oe:B&C0	`He0
	*H
  pAVdJS)uzlhl5[^QHƫa	iBdقGw

 4~{T)ZW8jJul!҈S|PXmNpC^.M%}o񵥿LNK~t֢ԍ9-&ި9a߶{pGװ_r5W݊ʰrqzvUklY%:`0Qǜ61 >9k`ב;bLW         ~Module signature appended~
 070701000A038C000081A4000000000000000000000001682F6DA70000590B000000CA0000000200000000000000000000004600000000usr/lib/modules/6.1.0-37-amd64/kernel/drivers/net/phy/microchip_t1.ko ELF          >                    M          @     @ ) (          GNU FMbwYXC6y        Linux                Linux   6.1.0-37-amd64                 @  AVAUATAUSH  HÄ́      @/  D@		ЁP   At:(  H  Aκ       x
A   H[]A\A]A^    H   H    (     H         HA8   A   D(     H         HD$    D$Cg(  H  AtgH[]A\A]A^    (  H     HD$    D$(  AȺ   H         HA[]A\A]A^    H                 SH1ɋ(     H     xf    xW(  H         x<E1	      H߾   xE1      1H1҅O[        x(  H         xE1	      H߾   VxE11      H;x(        H      yA   	      H߾   P    SE11      Hx8(  H         xu1[    H       [    H    1ff.         SH(     H      xI  HHǃ      	Ј  H   H      x	H[    [    ff.     f      <t*v<    1ɺ   	       <    1          	       f    AWAVAUATIUSH    &  I       -   I    2AUAL`   IM9  AmA]Au @uA} uE}    HH$          &       A$(  I$      !A9   x@    H9$|      &       A$(  I$      !A9tA    H    H    L$    $H[]A\A]A^A_        IM9A$  	v1E11      LxA$  tHw4	t<
uȀ`   D   L   1҅Of߀@t둀ǀ俀      SA  
   H      x%E1   1   HrHHI[    ff.          AVE1Z      AUATUHSH 1&xu
[]A\A]A^    E1Z      H߾   xE E11      HE11      HAE11      HAE11      H߉E1   1Aƺ   HpDDIЃ@Љ)`XvK)ʃ`Xw"   9}AtEy   H1    H[]A\A]A^    )ʃ`X   w99    AW1AVAUATUHSH(  H      Å  (  H         Aąd    A  E1111HVÅ8  E1
   11H8Å  @&  A      11HÅ        AA1Ҿ   HÅ   I    I       E1]   1EHÅ   IM9i  EEAEA}Au E@@uE}@<  1EHL$$R$L$  AH   EA!E	'2       gH[]A\A]A^A_    A      1H   Åxˁ        HAؾ   AÅxA      11HÅx     AA1ɺ   1H    ÅRH    Å;      2       12           H       H        H                       H                                                                                                    Unsupported Master/Slave mode
 %s failed: %d
 Microchip LAN87xx T1 Microchip LAN937x T1 access_smi_poll_timeout          -       i    j    k    l    m    n     S
   
   
   
   
   
      U    U a  U a  U "  U "  U   U   U D  U D  U   U   U F  U F  U   U   U   U   U 	  U 	  U 
  U 
  U   U   U   U   U 
  U 
  U   U   U   U   U   U   U   U   U       . r  J    
                                                   ]     ^ 
   _ Z   \ <   O    7   8 ^ F   Z    license=GPL description=Microchip LAN87XX/LAN937x T1 PHY driver author=Nisar Sayed <nisar.sayed@microchip.com> alias=mdio:0000000000000111110000011000???? alias=mdio:0000000000000111110000010101???? depends=libphy retpoline=Y intree=Y name=microchip_t1 vermagic=6.1.0-37-amd64 SMP preempt mod_unload modversions                                                                                 (  0  8  0  (                   8  0  (                   8  0  (                   8                                                                                                                     (    0  8  @  8  0  (                     @                                           (  0  (                   0  (                   0                   (    0  8  @  8  0  (                     @                      @                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   m    __fentry__                                              9[    __x86_return_thunk                                      ![Ha    phy_drivers_register                                    XV    mdiobus_write                                           KM    mutex_lock                                              ;    mdiobus_read                                            82    mutex_unlock                                            D    phy_trigger_machine                                         phy_error                                                   genphy_read_master_slave                                *cd    genphy_read_status_fixed                                3    phy_modify_changed                                      fo    _dev_warn                                               \(    genphy_soft_reset                                       e?    ktime_get                                               ]{    __SCT__might_resched                                     ]    usleep_range_state                                      9I    _dev_err                                                     phy_drivers_unregister                                  cȹ    ethnl_cable_test_result                                 ts    phy_init_hw                                                 msleep                                                  |ad    phy_modify                                              w    phy_basic_t1_features                                   a    genphy_suspend                                          |    genphy_resume                                           zR    module_layout                                           P                                                                                                                                                                          P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                microchip_t1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             GCC: (Debian 12.2.0-14+deb12u1) 12.2.0  GCC: (Debian 12.2.0-14+deb12u1) 12.2.0         \  \           
9             X              
Y A=      h                         P=     s=    =    =    =    >      "  $       SH $      "  $        &         &   0          
]            @j                   [                  ^              
a            ^    @          
c >       ">    p         
      
  2>    g F>    g V>    g j>    g       
      
  XH   ~>    l >    g >    g       
     
  >    p >    g       
      
  "  $   SH $   "  $     &   >    s mdio_device_id ETHTOOL_A_CABLE_RESULT_CODE_UNSPEC ETHTOOL_A_CABLE_RESULT_CODE_OK ETHTOOL_A_CABLE_RESULT_CODE_OPEN ETHTOOL_A_CABLE_RESULT_CODE_SAME_SHORT ETHTOOL_A_CABLE_RESULT_CODE_CROSS_SHORT access_ereg_val phy_module_exit phy_module_init lan87xx_get_sqi_max lan87xx_get_sqi lan87xx_config_aneg lan87xx_read_status lan87xx_cable_test_get_status lan87xx_cable_test_start lan87xx_config_init lan87xx_handle_interrupt lan87xx_phy_config_intr access_ereg    microchip_t1.ko Kq                                                                                               	                      
                                                                                        o       ,                   ,       +                   B                   O                   h            	       ~                               <                                       $                                                                                              /                 e       4          s       H          N       \                   u    `                                                                       	                    `      R                           @            
           @                          2           4       M    @       /       c                   t                                                                                                   	                                     -                     8                   D                     V                     m                     {                                                                                                                                                                                                                                       %                     /                     E                     ^                     j                     ~                                                                                     __UNIQUE_ID_alias195 __UNIQUE_ID_alias194 __UNIQUE_ID_depends193 ____versions __UNIQUE_ID_retpoline192 __UNIQUE_ID_intree191 __UNIQUE_ID_name190 __UNIQUE_ID_vermagic189 _note_10 _note_9 lan87xx_get_sqi_max phy_module_init microchip_t1_phy_driver access_ereg lan87xx_phy_config_intr lan87xx_handle_interrupt lan87xx_read_status lan87xx_config_aneg lan87xx_config_aneg.cold lan87xx_config_init init.33 __func__.34 lan87xx_config_init.cold phy_module_exit lan87xx_get_sqi lan87xx_cable_test_get_status lan87xx_cable_test_start cable_test.32 __UNIQUE_ID_license397 __UNIQUE_ID_description396 __UNIQUE_ID_author395 microchip_t1_tbl __UNIQUE_ID___addressable_cleanup_module394 __UNIQUE_ID___addressable_init_module393 phy_error __this_module __mod_mdio__microchip_t1_tbl_device_table cleanup_module usleep_range_state __fentry__ init_module genphy_soft_reset phy_drivers_unregister genphy_resume _dev_err ethnl_cable_test_result mutex_lock mdiobus_read genphy_read_master_slave phy_modify _dev_warn __x86_return_thunk mutex_unlock mdiobus_write // Predefined symbols and macros -*- C++ -*-

// Copyright (C) 1997-2022 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library.  This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.

// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.

// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
// <http://www.gnu.org/licenses/>.

/** @file bits/c++config.h
 *  This is an internal header file, included by other library headers.
 *  Do not attempt to use it directly. @headername{version}
 */

#ifndef _GLIBCXX_CXX_CONFIG_H
#define _GLIBCXX_CXX_CONFIG_H 1

// The major release number for the GCC release the C++ library belongs to.
#define _GLIBCXX_RELEASE 12

// The datestamp of the C++ library in compressed ISO date format.
#define __GLIBCXX__ 20220819

// Macros for various attributes.
//   _GLIBCXX_PURE
//   _GLIBCXX_CONST
//   _GLIBCXX_NORETURN
//   _GLIBCXX_NOTHROW
//   _GLIBCXX_VISIBILITY
#ifndef _GLIBCXX_PURE
# define _GLIBCXX_PURE __attribute__ ((__pure__))
#endif

#ifndef _GLIBCXX_CONST
# define _GLIBCXX_CONST __attribute__ ((__const__))
#endif

#ifndef _GLIBCXX_NORETURN
# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__))
#endif

// See below for C++
#ifndef _GLIBCXX_NOTHROW
# ifndef __cplusplus
#  define _GLIBCXX_NOTHROW __attribute__((__nothrow__))
# endif
#endif

// Macros for visibility attributes.
//   _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY
//   _GLIBCXX_VISIBILITY
# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1

#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY
# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V)))
#else
// If this is not supplied by the OS-specific or CPU-specific
// headers included below, it will be defined to an empty default.
# define _GLIBCXX_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY(V)
#endif

// Macros for deprecated attributes.
//   _GLIBCXX_USE_DEPRECATED
//   _GLIBCXX_DEPRECATED
//   _GLIBCXX_DEPRECATED_SUGGEST( string-literal )
//   _GLIBCXX11_DEPRECATED
//   _GLIBCXX11_DEPRECATED_SUGGEST( string-literal )
//   _GLIBCXX14_DEPRECATED
//   _GLIBCXX14_DEPRECATED_SUGGEST( string-literal )
//   _GLIBCXX17_DEPRECATED
//   _GLIBCXX17_DEPRECATED_SUGGEST( string-literal )
//   _GLIBCXX20_DEPRECATED( string-literal )
//   _GLIBCXX20_DEPRECATED_SUGGEST( string-literal )
#ifndef _GLIBCXX_USE_DEPRECATED
# define _GLIBCXX_USE_DEPRECATED 1
#endif

#if defined(__DEPRECATED)
# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__))
# define _GLIBCXX_DEPRECATED_SUGGEST(ALT) \
  __attribute__ ((__deprecated__ ("use '" ALT "' instead")))
#else
# define _GLIBCXX_DEPRECATED
# define _GLIBCXX_DEPRECATED_SUGGEST(ALT)
#endif

#if defined(__DEPRECATED) && (__cplusplus >= 201103L)
# define _GLIBCXX11_DEPRECATED _GLIBCXX_DEPRECATED
# define _GLIBCXX11_DEPRECATED_SUGGEST(ALT) _GLIBCXX_DEPRECATED_SUGGEST(ALT)
#else
# define _GLIBCXX11_DEPRECATED
# define _GLIBCXX11_DEPRECATED_SUGGEST(ALT)
#endif

#if defined(__DEPRECATED) && (__cplusplus >= 201402L)
# define _GLIBCXX14_DEPRECATED _GLIBCXX_DEPRECATED
# define _GLIBCXX14_DEPRECATED_SUGGEST(ALT) _GLIBCXX_DEPRECATED_SUGGEST(ALT)
#else
# define _GLIBCXX14_DEPRECATED
# define _GLIBCXX14_DEPRECATED_SUGGEST(ALT)
#endif

#if defined(__DEPRECATED) && (__cplusplus >= 201703L)
# define _GLIBCXX17_DEPRECATED [[__deprecated__]]
# define _GLIBCXX17_DEPRECATED_SUGGEST(ALT) _GLIBCXX_DEPRECATED_SUGGEST(ALT)
#else
# define _GLIBCXX17_DEPRECATED
# define _GLIBCXX17_DEPRECATED_SUGGEST(ALT)
#endif

#if defined(__DEPRECATED) && (__cplusplus >= 202002L)
# define _GLIBCXX20_DEPRECATED(MSG) [[deprecated(MSG)]]
# define _GLIBCXX20_DEPRECATED_SUGGEST(ALT) _GLIBCXX_DEPRECATED_SUGGEST(ALT)
#else
# define _GLIBCXX20_DEPRECATED(MSG)
# define _GLIBCXX20_DEPRECATED_SUGGEST(ALT)
#endif

// Macros for ABI tag attributes.
#ifndef _GLIBCXX_ABI_TAG_CXX11
# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11")))
#endif

// Macro to warn about unused results.
#if __cplusplus >= 201703L
# define _GLIBCXX_NODISCARD [[__nodiscard__]]
#else
# define _GLIBCXX_NODISCARD
#endif



#if __cplusplus

// Macro for constexpr, to support in mixed 03/0x mode.
#ifndef _GLIBCXX_CONSTEXPR
# if __cplusplus >= 201103L
#  define _GLIBCXX_CONSTEXPR constexpr
#  define _GLIBCXX_USE_CONSTEXPR constexpr
# else
#  define _GLIBCXX_CONSTEXPR
#  define _GLIBCXX_USE_CONSTEXPR const
# endif
#endif

#ifndef _GLIBCXX14_CONSTEXPR
# if __cplusplus >= 201402L
#  define _GLIBCXX14_CONSTEXPR constexpr
# else
#  define _GLIBCXX14_CONSTEXPR
# endif
#endif

#ifndef _GLIBCXX17_CONSTEXPR
# if __cplusplus >= 201703L
#  define _GLIBCXX17_CONSTEXPR constexpr
# else
#  define _GLIBCXX17_CONSTEXPR
# endif
#endif

#ifndef _GLIBCXX20_CONSTEXPR
# if __cplusplus >= 202002L
#  define _GLIBCXX20_CONSTEXPR constexpr
# else
#  define _GLIBCXX20_CONSTEXPR
# endif
#endif

#ifndef _GLIBCXX23_CONSTEXPR
# if __cplusplus >= 202100L
#  define _GLIBCXX23_CONSTEXPR constexpr
# else
#  define _GLIBCXX23_CONSTEXPR
# endif
#endif

#ifndef _GLIBCXX17_INLINE
# if __cplusplus >= 201703L
#  define _GLIBCXX17_INLINE inline
# else
#  define _GLIBCXX17_INLINE
# endif
#endif

// Macro for noexcept, to support in mixed 03/0x mode.
#ifndef _GLIBCXX_NOEXCEPT
# if __cplusplus >= 201103L
#  define _GLIBCXX_NOEXCEPT noexcept
#  define _GLIBCXX_NOEXCEPT_IF(...) noexcept(__VA_ARGS__)
#  define _GLIBCXX_USE_NOEXCEPT noexcept
#  define _GLIBCXX_THROW(_EXC)
# else
#  define _GLIBCXX_NOEXCEPT
#  define _GLIBCXX_NOEXCEPT_IF(...)
#  define _GLIBCXX_USE_NOEXCEPT throw()
#  define _GLIBCXX_THROW(_EXC) throw(_EXC)
# endif
#endif

#ifndef _GLIBCXX_NOTHROW
# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT
#endif

#ifndef _GLIBCXX_THROW_OR_ABORT
# if __cpp_exceptions
#  define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC))
# else
#  define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort())
# endif
#endif

#if __cpp_noexcept_function_type
#define _GLIBCXX_NOEXCEPT_PARM , bool _NE
#define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE)
#else
#define _GLIBCXX_NOEXCEPT_PARM
#define _GLIBCXX_NOEXCEPT_QUAL
#endif

// Macro for extern template, ie controlling template linkage via use
// of extern keyword on template declaration. As documented in the g++
// manual, it inhibits all implicit instantiations and is used
// throughout the library to avoid multiple weak definitions for
// required types that are already explicitly instantiated in the
// library binary. This substantially reduces the binary size of
// resulting executables.
// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern
// templates only in basic_string, thus activating its debug-mode
// checks even at -O0.
# define _GLIBCXX_EXTERN_TEMPLATE 1

/*
  Outline of libstdc++ namespaces.

  namespace std
  {
    namespace __debug { }
    namespace __parallel { }
    namespace __cxx1998 { }

    namespace __detail {
      namespace __variant { }				// C++17
    }

    namespace rel_ops { }

    namespace tr1
    {
      namespace placeholders { }
      namespace regex_constants { }
      namespace __detail { }
    }

    namespace tr2 { }
    
    namespace decimal { }

    namespace chrono { }				// C++11
    namespace placeholders { }				// C++11
    namespace regex_constants { }			// C++11
    namespace this_thread { }				// C++11
    inline namespace literals {				// C++14
      inline namespace chrono_literals { }		// C++14
      inline namespace complex_literals { }		// C++14
      inline namespace string_literals { }		// C++14
      inline namespace string_view_literals { }		// C++17
    }
  }

  namespace abi { }

  namespace __gnu_cxx
  {
    namespace __detail { }
  }

  For full details see:
  http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html
*/
namespace std
{
  typedef __SIZE_TYPE__ 	size_t;
  typedef __PTRDIFF_TYPE__	ptrdiff_t;

#if __cplusplus >= 201103L
  typedef decltype(nullptr)	nullptr_t;
#endif

#pragma GCC visibility push(default)
  // This allows the library to terminate without including all of <exception>
  // and without making the declaration of std::terminate visible to users.
  extern "C++" __attribute__ ((__noreturn__, __always_inline__))
  inline void __terminate() _GLIBCXX_USE_NOEXCEPT
  {
    void terminate() _GLIBCXX_USE_NOEXCEPT __attribute__ ((__noreturn__));
    terminate();
  }
#pragma GCC visibility pop
}

# define _GLIBCXX_USE_DUAL_ABI 1

#if ! _GLIBCXX_USE_DUAL_ABI
// Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI
# undef _GLIBCXX_USE_CXX11_ABI
#endif

#ifndef _GLIBCXX_USE_CXX11_ABI
# define _GLIBCXX_USE_CXX11_ABI 1
#endif

#if _GLIBCXX_USE_CXX11_ABI
namespace std
{
  inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { }
}
namespace __gnu_cxx
{
  inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { }
}
# define _GLIBCXX_NAMESPACE_CXX11 __cxx11::
# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 {
# define _GLIBCXX_END_NAMESPACE_CXX11 }
# define _GLIBCXX_DEFAULT_ABI_TAG _GLIBCXX_ABI_TAG_CXX11
#else
# define _GLIBCXX_NAMESPACE_CXX11
# define _GLIBCXX_BEGIN_NAMESPACE_CXX11
# define _GLIBCXX_END_NAMESPACE_CXX11
# define _GLIBCXX_DEFAULT_ABI_TAG
#endif

// Defined if inline namespaces are used for versioning.
# define _GLIBCXX_INLINE_VERSION 0 

// Inline namespace for symbol versioning.
#if _GLIBCXX_INLINE_VERSION
# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __8 {
# define _GLIBCXX_END_NAMESPACE_VERSION }

namespace std
{
inline _GLIBCXX_BEGIN_NAMESPACE_VERSION
#if __cplusplus >= 201402L
  inline namespace literals {
    inline namespace chrono_literals { }
    inline namespace complex_literals { }
    inline namespace string_literals { }
#if __cplusplus > 201402L
    inline namespace string_view_literals { }
#endif // C++17
  }
#endif // C++14
_GLIBCXX_END_NAMESPACE_VERSION
}

namespace __gnu_cxx
{
inline _GLIBCXX_BEGIN_NAMESPACE_VERSION
_GLIBCXX_END_NAMESPACE_VERSION
}

#else
# define _GLIBCXX_BEGIN_NAMESPACE_VERSION
# define _GLIBCXX_END_NAMESPACE_VERSION
#endif

// Inline namespaces for special modes: debug, parallel.
#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL)
namespace std
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION

  // Non-inline namespace for components replaced by alternates in active mode.
  namespace __cxx1998
  {
# if _GLIBCXX_USE_CXX11_ABI
  inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { }
# endif
  }

_GLIBCXX_END_NAMESPACE_VERSION

  // Inline namespace for debug mode.
# ifdef _GLIBCXX_DEBUG
  inline namespace __debug { }
# endif

  // Inline namespaces for parallel mode.
# ifdef _GLIBCXX_PARALLEL
  inline namespace __parallel { }
# endif
}

// Check for invalid usage and unsupported mixed-mode use.
# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL)
#  error illegal use of multiple inlined namespaces
# endif

// Check for invalid use due to lack for weak symbols.
# if __NO_INLINE__ && !__GXX_WEAK__
#  warning currently using inlined namespace mode which may fail \
   without inlining due to lack of weak symbols
# endif
#endif

// Macros for namespace scope. Either namespace std:: or the name
// of some nested namespace within it corresponding to the active mode.
// _GLIBCXX_STD_A
// _GLIBCXX_STD_C
//
// Macros for opening/closing conditional namespaces.
// _GLIBCXX_BEGIN_NAMESPACE_ALGO
// _GLIBCXX_END_NAMESPACE_ALGO
// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
// _GLIBCXX_END_NAMESPACE_CONTAINER
#if defined(_GLIBCXX_DEBUG)
# define _GLIBCXX_STD_C __cxx1998
# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \
	 namespace _GLIBCXX_STD_C {
# define _GLIBCXX_END_NAMESPACE_CONTAINER }
#else
# define _GLIBCXX_STD_C std
# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
# define _GLIBCXX_END_NAMESPACE_CONTAINER
#endif

#ifdef _GLIBCXX_PARALLEL
# define _GLIBCXX_STD_A __cxx1998
# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \
	 namespace _GLIBCXX_STD_A {
# define _GLIBCXX_END_NAMESPACE_ALGO }
#else
# define _GLIBCXX_STD_A std
# define _GLIBCXX_BEGIN_NAMESPACE_ALGO
# define _GLIBCXX_END_NAMESPACE_ALGO
#endif

// GLIBCXX_ABI Deprecated
// Define if compatibility should be provided for -mlong-double-64.
#undef _GLIBCXX_LONG_DOUBLE_COMPAT

// Define if compatibility should be provided for alternative 128-bit long
// double formats. Not possible for Clang until __ibm128 is supported.
#ifndef __clang__
#undef _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT
#endif

// Inline namespaces for long double 128 modes.
#if defined _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT \
  && defined __LONG_DOUBLE_IEEE128__
namespace std
{
  // Namespaces for 128-bit IEEE long double format on 64-bit POWER LE.
  inline namespace __gnu_cxx_ieee128 { }
  inline namespace __gnu_cxx11_ieee128 { }
}
# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ieee128::
# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ieee128 {
# define _GLIBCXX_END_NAMESPACE_LDBL }
# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 __gnu_cxx11_ieee128::
# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 namespace __gnu_cxx11_ieee128 {
# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 }

#else // _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && IEEE128

#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
namespace std
{
  inline namespace __gnu_cxx_ldbl128 { }
}
# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128::
# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 {
# define _GLIBCXX_END_NAMESPACE_LDBL }
#else
# define _GLIBCXX_NAMESPACE_LDBL
# define _GLIBCXX_BEGIN_NAMESPACE_LDBL
# define _GLIBCXX_END_NAMESPACE_LDBL
#endif

#if _GLIBCXX_USE_CXX11_ABI
# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11
# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11
# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_CXX11
#else
# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_LDBL
# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_LDBL
# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_LDBL
#endif

#endif // _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && IEEE128

namespace std
{
#pragma GCC visibility push(default)
  // Internal version of std::is_constant_evaluated().
  // This can be used without checking if the compiler supports the feature.
  // The macro _GLIBCXX_HAVE_IS_CONSTANT_EVALUATED can be used to check if
  // the compiler support is present to make this function work as expected.
  _GLIBCXX_CONSTEXPR inline bool
  __is_constant_evaluated() _GLIBCXX_NOEXCEPT
  {
#if __cpp_if_consteval >= 202106L
# define _GLIBCXX_HAVE_IS_CONSTANT_EVALUATED 1
    if consteval { return true; } else { return false; }
#elif __cplusplus >= 201103L && __has_builtin(__builtin_is_constant_evaluated)
# define _GLIBCXX_HAVE_IS_CONSTANT_EVALUATED 1
    return __builtin_is_constant_evaluated();
#else
    return false;
#endif
  }
#pragma GCC visibility pop
}

// Debug Mode implies checking assertions.
#if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS)
# define _GLIBCXX_ASSERTIONS 1
#endif

// Disable std::string explicit instantiation declarations in order to assert.
#ifdef _GLIBCXX_ASSERTIONS
# undef _GLIBCXX_EXTERN_TEMPLATE
# define _GLIBCXX_EXTERN_TEMPLATE -1
#endif


#if _GLIBCXX_HAVE_IS_CONSTANT_EVALUATED
# define __glibcxx_constexpr_assert(cond) \
  if (std::__is_constant_evaluated() && !bool(cond))	\
    __builtin_unreachable() /* precondition violation detected! */
#else
# define __glibcxx_constexpr_assert(unevaluated)
#endif

#define _GLIBCXX_VERBOSE_ASSERT 1

// Assert.
#if defined(_GLIBCXX_ASSERTIONS) \
  || defined(_GLIBCXX_PARALLEL) || defined(_GLIBCXX_PARALLEL_ASSERTIONS)
# ifdef _GLIBCXX_VERBOSE_ASSERT
namespace std
{
#pragma GCC visibility push(default)
  // Avoid the use of assert, because we're trying to keep the <cassert>
  // include out of the mix.
  extern "C++" _GLIBCXX_NORETURN
  void
  __glibcxx_assert_fail(const char* __file, int __line,
			const char* __function, const char* __condition)
  _GLIBCXX_NOEXCEPT;
#pragma GCC visibility pop
}
#define __glibcxx_assert_impl(_Condition)				\
  if (__builtin_expect(!bool(_Condition), false))			\
  {									\
    __glibcxx_constexpr_assert(false);					\
    std::__glibcxx_assert_fail(__FILE__, __LINE__, __PRETTY_FUNCTION__,	\
			       #_Condition);				\
  }
# else // ! VERBOSE_ASSERT
# define __glibcxx_assert_impl(_Condition)		\
  if (__builtin_expect(!bool(_Condition), false))	\
  {							\
    __glibcxx_constexpr_assert(false);			\
    __builtin_abort();					\
  }
# endif
#endif

#if defined(_GLIBCXX_ASSERTIONS)
# define __glibcxx_assert(cond) \
  do { __glibcxx_assert_impl(cond); } while (false)
#else
# define __glibcxx_assert(cond) \
  do { __glibcxx_constexpr_assert(cond); } while (false)
#endif

// Macro indicating that TSAN is in use.
#if __SANITIZE_THREAD__
#  define _GLIBCXX_TSAN 1
#elif defined __has_feature
# if __has_feature(thread_sanitizer)
#  define _GLIBCXX_TSAN 1
# endif
#endif

// Macros for race detectors.
// _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(A) and
// _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) should be used to explain
// atomic (lock-free) synchronization to race detectors:
// the race detector will infer a happens-before arc from the former to the
// latter when they share the same argument pointer.
//
// The most frequent use case for these macros (and the only case in the
// current implementation of the library) is atomic reference counting:
//   void _M_remove_reference()
//   {
//     _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&this->_M_refcount);
//     if (__gnu_cxx::__exchange_and_add_dispatch(&this->_M_refcount, -1) <= 0)
//       {
//         _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&this->_M_refcount);
//         _M_destroy(__a);
//       }
//   }
// The annotations in this example tell the race detector that all memory
// accesses occurred when the refcount was positive do not race with
// memory accesses which occurred after the refcount became zero.
#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE
# define  _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(A)
#endif
#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER
# define  _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A)
#endif

// Macros for C linkage: define extern "C" linkage only when using C++.
# define _GLIBCXX_BEGIN_EXTERN_C extern "C" {
# define _GLIBCXX_END_EXTERN_C }

# define _GLIBCXX_USE_ALLOCATOR_NEW 1

#ifdef __SIZEOF_INT128__
#if ! defined __GLIBCXX_TYPE_INT_N_0 && ! defined __STRICT_ANSI__
// If __int128 is supported, we expect __GLIBCXX_TYPE_INT_N_0 to be defined
// unless the compiler is in strict mode. If it's not defined and the strict
// macro is not defined, something is wrong.
#warning "__STRICT_ANSI__ seems to have been undefined; this is not supported"
#endif
#endif

#else // !__cplusplus
# define _GLIBCXX_BEGIN_EXTERN_C
# define _GLIBCXX_END_EXTERN_C
#endif


// First includes.

// Pick up any OS-specific definitions.
#include <bits/os_defines.h>

// Pick up any CPU-specific definitions.
#include <bits/cpu_defines.h>

// If platform uses neither visibility nor psuedo-visibility,
// specify empty default for namespace annotation macros.
#ifndef _GLIBCXX_PSEUDO_VISIBILITY
# define _GLIBCXX_PSEUDO_VISIBILITY(V)
#endif

// Certain function definitions that are meant to be overridable from
// user code are decorated with this macro.  For some targets, this
// macro causes these definitions to be weak.
#ifndef _GLIBCXX_WEAK_DEFINITION
# define _GLIBCXX_WEAK_DEFINITION
#endif

// By default, we assume that __GXX_WEAK__ also means that there is support
// for declaring functions as weak while not defining such functions.  This
// allows for referring to functions provided by other libraries (e.g.,
// libitm) without depending on them if the respective features are not used.
#ifndef _GLIBCXX_USE_WEAK_REF
# define _GLIBCXX_USE_WEAK_REF __GXX_WEAK__
#endif

// Conditionally enable annotations for the Transactional Memory TS on C++11.
// Most of the following conditions are due to limitations in the current
// implementation.
#if __cplusplus >= 201103L && _GLIBCXX_USE_CXX11_ABI			\
  && _GLIBCXX_USE_DUAL_ABI && __cpp_transactional_memory >= 201500L	\
  &&  !_GLIBCXX_FULLY_DYNAMIC_STRING && _GLIBCXX_USE_WEAK_REF		\
  && _GLIBCXX_USE_ALLOCATOR_NEW
#define _GLIBCXX_TXN_SAFE transaction_safe
#define _GLIBCXX_TXN_SAFE_DYN transaction_safe_dynamic
#else
#define _GLIBCXX_TXN_SAFE
#define _GLIBCXX_TXN_SAFE_DYN
#endif

#if __cplusplus > 201402L
// In C++17 mathematical special functions are in namespace std.
# define _GLIBCXX_USE_STD_SPEC_FUNCS 1
#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0
// For C++11 and C++14 they are in namespace std when requested.
# define _GLIBCXX_USE_STD_SPEC_FUNCS 1
#endif

// The remainder of the prewritten config is automatic; all the
// user hooks are listed above.

// Create a boolean flag to be used to determine if --fast-math is set.
#ifdef __FAST_MATH__
# define _GLIBCXX_FAST_MATH 1
#else
# define _GLIBCXX_FAST_MATH 0
#endif

// This marks string literals in header files to be extracted for eventual
// translation.  It is primarily used for messages in thrown exceptions; see
// src/functexcept.cc.  We use __N because the more traditional _N is used
// for something else under certain OSes (see BADNAMES).
#define __N(msgid)     (msgid)

// For example, <windows.h> is known to #define min and max as macros...
#undef min
#undef max

// N.B. these _GLIBCXX_USE_C99_XXX macros are defined unconditionally
// so they should be tested with #if not with #ifdef.
#if __cplusplus >= 201103L
# ifndef _GLIBCXX_USE_C99_MATH
#  define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH
# endif
# ifndef _GLIBCXX_USE_C99_COMPLEX
# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX
# endif
# ifndef _GLIBCXX_USE_C99_STDIO
# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO
# endif
# ifndef _GLIBCXX_USE_C99_STDLIB
# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB
# endif
# ifndef _GLIBCXX_USE_C99_WCHAR
# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR
# endif
#else
# ifndef _GLIBCXX_USE_C99_MATH
#  define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH
# endif
# ifndef _GLIBCXX_USE_C99_COMPLEX
# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX
# endif
# ifndef _GLIBCXX_USE_C99_STDIO
# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO
# endif
# ifndef _GLIBCXX_USE_C99_STDLIB
# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB
# endif
# ifndef _GLIBCXX_USE_C99_WCHAR
# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR
# endif
#endif

// Unless explicitly specified, enable char8_t extensions only if the core
// language char8_t feature macro is defined.
#ifndef _GLIBCXX_USE_CHAR8_T
# ifdef __cpp_char8_t
#  define _GLIBCXX_USE_CHAR8_T 1
# endif
#endif
#ifdef _GLIBCXX_USE_CHAR8_T
# define __cpp_lib_char8_t 201907L
#endif

/* Define if __float128 is supported on this host.  */
#if defined(__FLOAT128__) || defined(__SIZEOF_FLOAT128__)
/* For powerpc64 don't use __float128 when it's the same type as long double. */
# if !(defined(_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT) && defined(__LONG_DOUBLE_IEEE128__))
#  define _GLIBCXX_USE_FLOAT128 1
# endif
#endif

// Define if float has the IEEE binary32 format.
#if __FLT_MANT_DIG__ == 24 \
  && __FLT_MIN_EXP__ == -125 \
  && __FLT_MAX_EXP__ == 128
# define _GLIBCXX_FLOAT_IS_IEEE_BINARY32 1
#endif

// Define if double has the IEEE binary64 format.
#if __DBL_MANT_DIG__ == 53 \
  && __DBL_MIN_EXP__ == -1021 \
  && __DBL_MAX_EXP__ == 1024
# define _GLIBCXX_DOUBLE_IS_IEEE_BINARY64 1
#endif

#ifdef __has_builtin
# ifdef __is_identifier
// Intel and older Clang require !__is_identifier for some built-ins:
#  define _GLIBCXX_HAS_BUILTIN(B) __has_builtin(B) || ! __is_identifier(B)
# else
#  define _GLIBCXX_HAS_BUILTIN(B) __has_builtin(B)
# endif
#endif

#if _GLIBCXX_HAS_BUILTIN(__has_unique_object_representations)
# define _GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP 1
#endif

#if _GLIBCXX_HAS_BUILTIN(__is_aggregate)
# define _GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE 1
#endif

#if _GLIBCXX_HAS_BUILTIN(__is_same)
#  define _GLIBCXX_HAVE_BUILTIN_IS_SAME 1
#endif

#if _GLIBCXX_HAS_BUILTIN(__builtin_launder)
# define _GLIBCXX_HAVE_BUILTIN_LAUNDER 1
#endif

#undef _GLIBCXX_HAS_BUILTIN

// PSTL configuration

#if __cplusplus >= 201703L
// This header is not installed for freestanding:
#if __has_include(<pstl/pstl_config.h>)
// Preserved here so we have some idea which version of upstream we've pulled in
// #define PSTL_VERSION 9000

// For now this defaults to being based on the presence of Thread Building Blocks
# ifndef _GLIBCXX_USE_TBB_PAR_BACKEND
#  define _GLIBCXX_USE_TBB_PAR_BACKEND __has_include(<tbb/tbb.h>)
# endif
// This section will need some rework when a new (default) backend type is added
# if _GLIBCXX_USE_TBB_PAR_BACKEND
#  define _PSTL_PAR_BACKEND_TBB
# else
#  define _PSTL_PAR_BACKEND_SERIAL
# endif

# define _PSTL_ASSERT(_Condition) __glibcxx_assert(_Condition)
# define _PSTL_ASSERT_MSG(_Condition, _Message) __glibcxx_assert(_Condition)

#include <pstl/pstl_config.h>
#endif // __has_include
#endif // C++17

// End of prewritten config; the settings discovered at configure time follow.
/* config.h.  Generated from config.h.in by configure.  */
/* config.h.in.  Generated from configure.ac by autoheader.  */

/* Define to 1 if you have the `acosf' function. */
#define _GLIBCXX_HAVE_ACOSF 1

/* Define to 1 if you have the `acosl' function. */
#define _GLIBCXX_HAVE_ACOSL 1

/* Define to 1 if you have the `aligned_alloc' function. */
#define _GLIBCXX_HAVE_ALIGNED_ALLOC 1

/* Define if arc4random is available in <stdlib.h>. */
#define _GLIBCXX_HAVE_ARC4RANDOM 1

/* Define to 1 if you have the <arpa/inet.h> header file. */
#define _GLIBCXX_HAVE_ARPA_INET_H 1

/* Define to 1 if you have the `asinf' function. */
#define _GLIBCXX_HAVE_ASINF 1

/* Define to 1 if you have the `asinl' function. */
#define _GLIBCXX_HAVE_ASINL 1

/* Define to 1 if the target assembler supports .symver directive. */
#define _GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE 1

/* Define to 1 if you have the `atan2f' function. */
#define _GLIBCXX_HAVE_ATAN2F 1

/* Define to 1 if you have the `atan2l' function. */
#define _GLIBCXX_HAVE_ATAN2L 1

/* Define to 1 if you have the `atanf' function. */
#define _GLIBCXX_HAVE_ATANF 1

/* Define to 1 if you have the `atanl' function. */
#define _GLIBCXX_HAVE_ATANL 1

/* Defined if shared_ptr reference counting should use atomic operations. */
#define _GLIBCXX_HAVE_ATOMIC_LOCK_POLICY 1

/* Define to 1 if you have the `at_quick_exit' function. */
#define _GLIBCXX_HAVE_AT_QUICK_EXIT 1

/* Define to 1 if the target assembler supports thread-local storage. */
/* #undef _GLIBCXX_HAVE_CC_TLS */

/* Define to 1 if you have the `ceilf' function. */
#define _GLIBCXX_HAVE_CEILF 1

/* Define to 1 if you have the `ceill' function. */
#define _GLIBCXX_HAVE_CEILL 1

/* Define to 1 if you have the <complex.h> header file. */
#define _GLIBCXX_HAVE_COMPLEX_H 1

/* Define to 1 if you have the `cosf' function. */
#define _GLIBCXX_HAVE_COSF 1

/* Define to 1 if you have the `coshf' function. */
#define _GLIBCXX_HAVE_COSHF 1

/* Define to 1 if you have the `coshl' function. */
#define _GLIBCXX_HAVE_COSHL 1

/* Define to 1 if you have the `cosl' function. */
#define _GLIBCXX_HAVE_COSL 1

/* Define to 1 if you have the declaration of `strnlen', and to 0 if you
   don't. */
#define _GLIBCXX_HAVE_DECL_STRNLEN 1

/* Define to 1 if you have the <dirent.h> header file. */
#define _GLIBCXX_HAVE_DIRENT_H 1

/* Define if dirfd is available in <dirent.h>. */
#define _GLIBCXX_HAVE_DIRFD 1

/* Define to 1 if you have the <dlfcn.h> header file. */
#define _GLIBCXX_HAVE_DLFCN_H 1

/* Define to 1 if you have the <endian.h> header file. */
#define _GLIBCXX_HAVE_ENDIAN_H 1

/* Define to 1 if GCC 4.6 supported std::exception_ptr for the target */
#define _GLIBCXX_HAVE_EXCEPTION_PTR_SINCE_GCC46 1

/* Define to 1 if you have the <execinfo.h> header file. */
#define _GLIBCXX_HAVE_EXECINFO_H 1

/* Define to 1 if you have the `expf' function. */
#define _GLIBCXX_HAVE_EXPF 1

/* Define to 1 if you have the `expl' function. */
#define _GLIBCXX_HAVE_EXPL 1

/* Define to 1 if you have the `fabsf' function. */
#define _GLIBCXX_HAVE_FABSF 1

/* Define to 1 if you have the `fabsl' function. */
#define _GLIBCXX_HAVE_FABSL 1

/* Define to 1 if you have the <fcntl.h> header file. */
#define _GLIBCXX_HAVE_FCNTL_H 1

/* Define if fdopendir is available in <dirent.h>. */
#define _GLIBCXX_HAVE_FDOPENDIR 1

/* Define to 1 if you have the <fenv.h> header file. */
#define _GLIBCXX_HAVE_FENV_H 1

/* Define to 1 if you have the `finite' function. */
#define _GLIBCXX_HAVE_FINITE 1

/* Define to 1 if you have the `finitef' function. */
#define _GLIBCXX_HAVE_FINITEF 1

/* Define to 1 if you have the `finitel' function. */
#define _GLIBCXX_HAVE_FINITEL 1

/* Define to 1 if you have the <float.h> header file. */
#define _GLIBCXX_HAVE_FLOAT_H 1

/* Define to 1 if you have the `floorf' function. */
#define _GLIBCXX_HAVE_FLOORF 1

/* Define to 1 if you have the `floorl' function. */
#define _GLIBCXX_HAVE_FLOORL 1

/* Define to 1 if you have the `fmodf' function. */
#define _GLIBCXX_HAVE_FMODF 1

/* Define to 1 if you have the `fmodl' function. */
#define _GLIBCXX_HAVE_FMODL 1

/* Define to 1 if you have the `fpclass' function. */
/* #undef _GLIBCXX_HAVE_FPCLASS */

/* Define to 1 if you have the <fp.h> header file. */
/* #undef _GLIBCXX_HAVE_FP_H */

/* Define to 1 if you have the `frexpf' function. */
#define _GLIBCXX_HAVE_FREXPF 1

/* Define to 1 if you have the `frexpl' function. */
#define _GLIBCXX_HAVE_FREXPL 1

/* Define if getentropy is available in <unistd.h>. */
#define _GLIBCXX_HAVE_GETENTROPY 1

/* Define if _Unwind_GetIPInfo is available. */
#define _GLIBCXX_HAVE_GETIPINFO 1

/* Define if gets is available in <stdio.h> before C++14. */
#define _GLIBCXX_HAVE_GETS 1

/* Define to 1 if you have the `hypot' function. */
#define _GLIBCXX_HAVE_HYPOT 1

/* Define to 1 if you have the `hypotf' function. */
#define _GLIBCXX_HAVE_HYPOTF 1

/* Define to 1 if you have the `hypotl' function. */
#define _GLIBCXX_HAVE_HYPOTL 1

/* Define if you have the iconv() function. */
#define _GLIBCXX_HAVE_ICONV 1

/* Define to 1 if you have the <ieeefp.h> header file. */
/* #undef _GLIBCXX_HAVE_IEEEFP_H */

/* Define to 1 if you have the <inttypes.h> header file. */
#define _GLIBCXX_HAVE_INTTYPES_H 1

/* Define to 1 if you have the `isinf' function. */
/* #undef _GLIBCXX_HAVE_ISINF */

/* Define to 1 if you have the `isinff' function. */
#define _GLIBCXX_HAVE_ISINFF 1

/* Define to 1 if you have the `isinfl' function. */
#define _GLIBCXX_HAVE_ISINFL 1

/* Define to 1 if you have the `isnan' function. */
/* #undef _GLIBCXX_HAVE_ISNAN */

/* Define to 1 if you have the `isnanf' function. */
#define _GLIBCXX_HAVE_ISNANF 1

/* Define to 1 if you have the `isnanl' function. */
#define _GLIBCXX_HAVE_ISNANL 1

/* Defined if iswblank exists. */
#define _GLIBCXX_HAVE_ISWBLANK 1

/* Define if LC_MESSAGES is available in <locale.h>. */
#define _GLIBCXX_HAVE_LC_MESSAGES 1

/* Define to 1 if you have the `ldexpf' function. */
#define _GLIBCXX_HAVE_LDEXPF 1

/* Define to 1 if you have the `ldexpl' function. */
#define _GLIBCXX_HAVE_LDEXPL 1

/* Define to 1 if you have the <libintl.h> header file. */
#define _GLIBCXX_HAVE_LIBINTL_H 1

/* Only used in build directory testsuite_hooks.h. */
#define _GLIBCXX_HAVE_LIMIT_AS 1

/* Only used in build directory testsuite_hooks.h. */
#define _GLIBCXX_HAVE_LIMIT_DATA 1

/* Only used in build directory testsuite_hooks.h. */
#define _GLIBCXX_HAVE_LIMIT_FSIZE 1

/* Only used in build directory testsuite_hooks.h. */
#define _GLIBCXX_HAVE_LIMIT_RSS 1

/* Only used in build directory testsuite_hooks.h. */
#define _GLIBCXX_HAVE_LIMIT_VMEM 0

/* Define if link is available in <unistd.h>. */
#define _GLIBCXX_HAVE_LINK 1

/* Define to 1 if you have the <link.h> header file. */
#define _GLIBCXX_HAVE_LINK_H 1

/* Define if futex syscall is available. */
#define _GLIBCXX_HAVE_LINUX_FUTEX 1

/* Define to 1 if you have the <linux/random.h> header file. */
#define _GLIBCXX_HAVE_LINUX_RANDOM_H 1

/* Define to 1 if you have the <linux/types.h> header file. */
#define _GLIBCXX_HAVE_LINUX_TYPES_H 1

/* Define to 1 if you have the <locale.h> header file. */
#define _GLIBCXX_HAVE_LOCALE_H 1

/* Define to 1 if you have the `log10f' function. */
#define _GLIBCXX_HAVE_LOG10F 1

/* Define to 1 if you have the `log10l' function. */
#define _GLIBCXX_HAVE_LOG10L 1

/* Define to 1 if you have the `logf' function. */
#define _GLIBCXX_HAVE_LOGF 1

/* Define to 1 if you have the `logl' function. */
#define _GLIBCXX_HAVE_LOGL 1

/* Define to 1 if you have the <machine/endian.h> header file. */
/* #undef _GLIBCXX_HAVE_MACHINE_ENDIAN_H */

/* Define to 1 if you have the <machine/param.h> header file. */
/* #undef _GLIBCXX_HAVE_MACHINE_PARAM_H */

/* Define if mbstate_t exists in wchar.h. */
#define _GLIBCXX_HAVE_MBSTATE_T 1

/* Define to 1 if you have the `memalign' function. */
#define _GLIBCXX_HAVE_MEMALIGN 1

/* Define to 1 if you have the <memory.h> header file. */
#define _GLIBCXX_HAVE_MEMORY_H 1

/* Define to 1 if you have the `modf' function. */
#define _GLIBCXX_HAVE_MODF 1

/* Define to 1 if you have the `modff' function. */
#define _GLIBCXX_HAVE_MODFF 1

/* Define to 1 if you have the `modfl' function. */
#define _GLIBCXX_HAVE_MODFL 1

/* Define to 1 if you have the <nan.h> header file. */
/* #undef _GLIBCXX_HAVE_NAN_H */

/* Define to 1 if you have the <netdb.h> header file. */
#define _GLIBCXX_HAVE_NETDB_H 1

/* Define to 1 if you have the <netinet/in.h> header file. */
#define _GLIBCXX_HAVE_NETINET_IN_H 1

/* Define to 1 if you have the <netinet/tcp.h> header file. */
#define _GLIBCXX_HAVE_NETINET_TCP_H 1

/* Define if <math.h> defines obsolete isinf function. */
/* #undef _GLIBCXX_HAVE_OBSOLETE_ISINF */

/* Define if <math.h> defines obsolete isnan function. */
/* #undef _GLIBCXX_HAVE_OBSOLETE_ISNAN */

/* Define if openat is available in <fcntl.h>. */
#define _GLIBCXX_HAVE_OPENAT 1

/* Define if poll is available in <poll.h>. */
#define _GLIBCXX_HAVE_POLL 1

/* Define to 1 if you have the <poll.h> header file. */
#define _GLIBCXX_HAVE_POLL_H 1

/* Define to 1 if you have the `posix_memalign' function. */
#define _GLIBCXX_HAVE_POSIX_MEMALIGN 1

/* Define to 1 if POSIX Semaphores with sem_timedwait are available in
   <semaphore.h>. */
#define _GLIBCXX_HAVE_POSIX_SEMAPHORE 1

/* Define to 1 if you have the `powf' function. */
#define _GLIBCXX_HAVE_POWF 1

/* Define to 1 if you have the `powl' function. */
#define _GLIBCXX_HAVE_POWL 1

/* Define to 1 if you have the `qfpclass' function. */
/* #undef _GLIBCXX_HAVE_QFPCLASS */

/* Define to 1 if you have the `quick_exit' function. */
#define _GLIBCXX_HAVE_QUICK_EXIT 1

/* Define if readlink is available in <unistd.h>. */
#define _GLIBCXX_HAVE_READLINK 1

/* Define to 1 if you have the `secure_getenv' function. */
#define _GLIBCXX_HAVE_SECURE_GETENV 1

/* Define to 1 if you have the `setenv' function. */
#define _GLIBCXX_HAVE_SETENV 1

/* Define to 1 if you have the `sincos' function. */
#define _GLIBCXX_HAVE_SINCOS 1

/* Define to 1 if you have the `sincosf' function. */
#define _GLIBCXX_HAVE_SINCOSF 1

/* Define to 1 if you have the `sincosl' function. */
#define _GLIBCXX_HAVE_SINCOSL 1

/* Define to 1 if you have the `sinf' function. */
#define _GLIBCXX_HAVE_SINF 1

/* Define to 1 if you have the `sinhf' function. */
#define _GLIBCXX_HAVE_SINHF 1

/* Define to 1 if you have the `sinhl' function. */
#define _GLIBCXX_HAVE_SINHL 1

/* Define to 1 if you have the `sinl' function. */
#define _GLIBCXX_HAVE_SINL 1

/* Defined if sleep exists. */
/* #undef _GLIBCXX_HAVE_SLEEP */

/* Define to 1 if you have the `sockatmark' function. */
#define _GLIBCXX_HAVE_SOCKATMARK 1

/* Define to 1 if you have the `sqrtf' function. */
#define _GLIBCXX_HAVE_SQRTF 1

/* Define to 1 if you have the `sqrtl' function. */
#define _GLIBCXX_HAVE_SQRTL 1

/* Define if the <stacktrace> header is supported. */
/* #undef _GLIBCXX_HAVE_STACKTRACE */

/* Define to 1 if you have the <stdalign.h> header file. */
#define _GLIBCXX_HAVE_STDALIGN_H 1

/* Define to 1 if you have the <stdbool.h> header file. */
#define _GLIBCXX_HAVE_STDBOOL_H 1

/* Define to 1 if you have the <stdint.h> header file. */
#define _GLIBCXX_HAVE_STDINT_H 1

/* Define to 1 if you have the <stdlib.h> header file. */
#define _GLIBCXX_HAVE_STDLIB_H 1

/* Define if strerror_l is available in <string.h>. */
#define _GLIBCXX_HAVE_STRERROR_L 1

/* Define if strerror_r is available in <string.h>. */
#define _GLIBCXX_HAVE_STRERROR_R 1

/* Define to 1 if you have the <strings.h> header file. */
#define _GLIBCXX_HAVE_STRINGS_H 1

/* Define to 1 if you have the <string.h> header file. */
#define _GLIBCXX_HAVE_STRING_H 1

/* Define to 1 if you have the `strtof' function. */
#define _GLIBCXX_HAVE_STRTOF 1

/* Define to 1 if you have the `strtold' function. */
#define _GLIBCXX_HAVE_STRTOLD 1

/* Define to 1 if `d_type' is a member of `struct dirent'. */
#define _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE 1

/* Define if strxfrm_l is available in <string.h>. */
#define _GLIBCXX_HAVE_STRXFRM_L 1

/* Define if symlink is available in <unistd.h>. */
#define _GLIBCXX_HAVE_SYMLINK 1

/* Define to 1 if the target runtime linker supports binding the same symbol
   to different versions. */
#define _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT 1

/* Define to 1 if you have the <sys/filio.h> header file. */
/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */

/* Define to 1 if you have the <sys/ioctl.h> header file. */
#define _GLIBCXX_HAVE_SYS_IOCTL_H 1

/* Define to 1 if you have the <sys/ipc.h> header file. */
#define _GLIBCXX_HAVE_SYS_IPC_H 1

/* Define to 1 if you have the <sys/isa_defs.h> header file. */
/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */

/* Define to 1 if you have the <sys/machine.h> header file. */
/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */

/* Define to 1 if you have the <sys/mman.h> header file. */
/* #undef _GLIBCXX_HAVE_SYS_MMAN_H */

/* Define to 1 if you have the <sys/param.h> header file. */
#define _GLIBCXX_HAVE_SYS_PARAM_H 1

/* Define to 1 if you have the <sys/resource.h> header file. */
#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1

/* Define to 1 if you have a suitable <sys/sdt.h> header file */
#define _GLIBCXX_HAVE_SYS_SDT_H 1

/* Define to 1 if you have the <sys/sem.h> header file. */
#define _GLIBCXX_HAVE_SYS_SEM_H 1

/* Define to 1 if you have the <sys/socket.h> header file. */
#define _GLIBCXX_HAVE_SYS_SOCKET_H 1

/* Define to 1 if you have the <sys/statvfs.h> header file. */
#define _GLIBCXX_HAVE_SYS_STATVFS_H 1

/* Define to 1 if you have the <sys/stat.h> header file. */
#define _GLIBCXX_HAVE_SYS_STAT_H 1

/* Define to 1 if you have the <sys/sysinfo.h> header file. */
#define _GLIBCXX_HAVE_SYS_SYSINFO_H 1

/* Define to 1 if you have the <sys/time.h> header file. */
#define _GLIBCXX_HAVE_SYS_TIME_H 1

/* Define to 1 if you have the <sys/types.h> header file. */
#define _GLIBCXX_HAVE_SYS_TYPES_H 1

/* Define to 1 if you have the <sys/uio.h> header file. */
#define _GLIBCXX_HAVE_SYS_UIO_H 1

/* Define if S_IFREG is available in <sys/stat.h>. */
/* #undef _GLIBCXX_HAVE_S_IFREG */

/* Define if S_ISREG is available in <sys/stat.h>. */
#define _GLIBCXX_HAVE_S_ISREG 1

/* Define to 1 if you have the `tanf' function. */
#define _GLIBCXX_HAVE_TANF 1

/* Define to 1 if you have the `tanhf' function. */
#define _GLIBCXX_HAVE_TANHF 1

/* Define to 1 if you have the `tanhl' function. */
#define _GLIBCXX_HAVE_TANHL 1

/* Define to 1 if you have the `tanl' function. */
#define _GLIBCXX_HAVE_TANL 1

/* Define to 1 if you have the <tgmath.h> header file. */
#define _GLIBCXX_HAVE_TGMATH_H 1

/* Define to 1 if you have the `timespec_get' function. */
#define _GLIBCXX_HAVE_TIMESPEC_GET 1

/* Define to 1 if the target supports thread-local storage. */
#define _GLIBCXX_HAVE_TLS 1

/* Define if truncate is available in <unistd.h>. */
#define _GLIBCXX_HAVE_TRUNCATE 1

/* Define to 1 if you have the <uchar.h> header file. */
#define _GLIBCXX_HAVE_UCHAR_H 1

/* Define to 1 if you have the <unistd.h> header file. */
#define _GLIBCXX_HAVE_UNISTD_H 1

/* Define if unlinkat is available in <fcntl.h>. */
#define _GLIBCXX_HAVE_UNLINKAT 1

/* Define to 1 if you have the `uselocale' function. */
#define _GLIBCXX_HAVE_USELOCALE 1

/* Defined if usleep exists. */
/* #undef _GLIBCXX_HAVE_USLEEP */

/* Define to 1 if you have the <utime.h> header file. */
#define _GLIBCXX_HAVE_UTIME_H 1

/* Defined if vfwscanf exists. */
#define _GLIBCXX_HAVE_VFWSCANF 1

/* Defined if vswscanf exists. */
#define _GLIBCXX_HAVE_VSWSCANF 1

/* Defined if vwscanf exists. */
#define _GLIBCXX_HAVE_VWSCANF 1

/* Define to 1 if you have the <wchar.h> header file. */
#define _GLIBCXX_HAVE_WCHAR_H 1

/* Defined if wcstof exists. */
#define _GLIBCXX_HAVE_WCSTOF 1

/* Define to 1 if you have the <wctype.h> header file. */
#define _GLIBCXX_HAVE_WCTYPE_H 1

/* Defined if Sleep exists. */
/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */

/* Define if writev is available in <sys/uio.h>. */
#define _GLIBCXX_HAVE_WRITEV 1

/* Define to 1 if you have the <xlocale.h> header file. */
/* #undef _GLIBCXX_HAVE_XLOCALE_H */

/* Define to 1 if you have the `_acosf' function. */
/* #undef _GLIBCXX_HAVE__ACOSF */

/* Define to 1 if you have the `_acosl' function. */
/* #undef _GLIBCXX_HAVE__ACOSL */

/* Define to 1 if you have the `_aligned_malloc' function. */
/* #undef _GLIBCXX_HAVE__ALIGNED_MALLOC */

/* Define to 1 if you have the `_asinf' function. */
/* #undef _GLIBCXX_HAVE__ASINF */

/* Define to 1 if you have the `_asinl' function. */
/* #undef _GLIBCXX_HAVE__ASINL */

/* Define to 1 if you have the `_atan2f' function. */
/* #undef _GLIBCXX_HAVE__ATAN2F */

/* Define to 1 if you have the `_atan2l' function. */
/* #undef _GLIBCXX_HAVE__ATAN2L */

/* Define to 1 if you have the `_atanf' function. */
/* #undef _GLIBCXX_HAVE__ATANF */

/* Define to 1 if you have the `_atanl' function. */
/* #undef _GLIBCXX_HAVE__ATANL */

/* Define to 1 if you have the `_ceilf' function. */
/* #undef _GLIBCXX_HAVE__CEILF */

/* Define to 1 if you have the `_ceill' function. */
/* #undef _GLIBCXX_HAVE__CEILL */

/* Define to 1 if you have the `_cosf' function. */
/* #undef _GLIBCXX_HAVE__COSF */

/* Define to 1 if you have the `_coshf' function. */
/* #undef _GLIBCXX_HAVE__COSHF */

/* Define to 1 if you have the `_coshl' function. */
/* #undef _GLIBCXX_HAVE__COSHL */

/* Define to 1 if you have the `_cosl' function. */
/* #undef _GLIBCXX_HAVE__COSL */

/* Define to 1 if you have the `_expf' function. */
/* #undef _GLIBCXX_HAVE__EXPF */

/* Define to 1 if you have the `_expl' function. */
/* #undef _GLIBCXX_HAVE__EXPL */

/* Define to 1 if you have the `_fabsf' function. */
/* #undef _GLIBCXX_HAVE__FABSF */

/* Define to 1 if you have the `_fabsl' function. */
/* #undef _GLIBCXX_HAVE__FABSL */

/* Define to 1 if you have the `_finite' function. */
/* #undef _GLIBCXX_HAVE__FINITE */

/* Define to 1 if you have the `_finitef' function. */
/* #undef _GLIBCXX_HAVE__FINITEF */

/* Define to 1 if you have the `_finitel' function. */
/* #undef _GLIBCXX_HAVE__FINITEL */

/* Define to 1 if you have the `_floorf' function. */
/* #undef _GLIBCXX_HAVE__FLOORF */

/* Define to 1 if you have the `_floorl' function. */
/* #undef _GLIBCXX_HAVE__FLOORL */

/* Define to 1 if you have the `_fmodf' function. */
/* #undef _GLIBCXX_HAVE__FMODF */

/* Define to 1 if you have the `_fmodl' function. */
/* #undef _GLIBCXX_HAVE__FMODL */

/* Define to 1 if you have the `_fpclass' function. */
/* #undef _GLIBCXX_HAVE__FPCLASS */

/* Define to 1 if you have the `_frexpf' function. */
/* #undef _GLIBCXX_HAVE__FREXPF */

/* Define to 1 if you have the `_frexpl' function. */
/* #undef _GLIBCXX_HAVE__FREXPL */

/* Define to 1 if you have the `_hypot' function. */
/* #undef _GLIBCXX_HAVE__HYPOT */

/* Define to 1 if you have the `_hypotf' function. */
/* #undef _GLIBCXX_HAVE__HYPOTF */

/* Define to 1 if you have the `_hypotl' function. */
/* #undef _GLIBCXX_HAVE__HYPOTL */

/* Define to 1 if you have the `_isinf' function. */
/* #undef _GLIBCXX_HAVE__ISINF */

/* Define to 1 if you have the `_isinff' function. */
/* #undef _GLIBCXX_HAVE__ISINFF */

/* Define to 1 if you have the `_isinfl' function. */
/* #undef _GLIBCXX_HAVE__ISINFL */

/* Define to 1 if you have the `_isnan' function. */
/* #undef _GLIBCXX_HAVE__ISNAN */

/* Define to 1 if you have the `_isnanf' function. */
/* #undef _GLIBCXX_HAVE__ISNANF */

/* Define to 1 if you have the `_isnanl' function. */
/* #undef _GLIBCXX_HAVE__ISNANL */

/* Define to 1 if you have the `_ldexpf' function. */
/* #undef _GLIBCXX_HAVE__LDEXPF */

/* Define to 1 if you have the `_ldexpl' function. */
/* #undef _GLIBCXX_HAVE__LDEXPL */

/* Define to 1 if you have the `_log10f' function. */
/* #undef _GLIBCXX_HAVE__LOG10F */

/* Define to 1 if you have the `_log10l' function. */
/* #undef _GLIBCXX_HAVE__LOG10L */

/* Define to 1 if you have the `_logf' function. */
/* #undef _GLIBCXX_HAVE__LOGF */

/* Define to 1 if you have the `_logl' function. */
/* #undef _GLIBCXX_HAVE__LOGL */

/* Define to 1 if you have the `_modf' function. */
/* #undef _GLIBCXX_HAVE__MODF */

/* Define to 1 if you have the `_modff' function. */
/* #undef _GLIBCXX_HAVE__MODFF */

/* Define to 1 if you have the `_modfl' function. */
/* #undef _GLIBCXX_HAVE__MODFL */

/* Define to 1 if you have the `_powf' function. */
/* #undef _GLIBCXX_HAVE__POWF */

/* Define to 1 if you have the `_powl' function. */
/* #undef _GLIBCXX_HAVE__POWL */

/* Define to 1 if you have the `_qfpclass' function. */
/* #undef _GLIBCXX_HAVE__QFPCLASS */

/* Define to 1 if you have the `_sincos' function. */
/* #undef _GLIBCXX_HAVE__SINCOS */

/* Define to 1 if you have the `_sincosf' function. */
/* #undef _GLIBCXX_HAVE__SINCOSF */

/* Define to 1 if you have the `_sincosl' function. */
/* #undef _GLIBCXX_HAVE__SINCOSL */

/* Define to 1 if you have the `_sinf' function. */
/* #undef _GLIBCXX_HAVE__SINF */

/* Define to 1 if you have the `_sinhf' function. */
/* #undef _GLIBCXX_HAVE__SINHF */

/* Define to 1 if you have the `_sinhl' function. */
/* #undef _GLIBCXX_HAVE__SINHL */

/* Define to 1 if you have the `_sinl' function. */
/* #undef _GLIBCXX_HAVE__SINL */

/* Define to 1 if you have the `_sqrtf' function. */
/* #undef _GLIBCXX_HAVE__SQRTF */

/* Define to 1 if you have the `_sqrtl' function. */
/* #undef _GLIBCXX_HAVE__SQRTL */

/* Define to 1 if you have the `_tanf' function. */
/* #undef _GLIBCXX_HAVE__TANF */

/* Define to 1 if you have the `_tanhf' function. */
/* #undef _GLIBCXX_HAVE__TANHF */

/* Define to 1 if you have the `_tanhl' function. */
/* #undef _GLIBCXX_HAVE__TANHL */

/* Define to 1 if you have the `_tanl' function. */
/* #undef _GLIBCXX_HAVE__TANL */

/* Define to 1 if you have the `_wfopen' function. */
/* #undef _GLIBCXX_HAVE__WFOPEN */

/* Define to 1 if you have the `__cxa_thread_atexit' function. */
/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT */

/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */
#define _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL 1

/* Define as const if the declaration of iconv() needs const. */
#define _GLIBCXX_ICONV_CONST 

/* Define to the sub-directory in which libtool stores uninstalled libraries.
   */
#define _GLIBCXX_LT_OBJDIR ".libs/"

/* Name of package */
/* #undef _GLIBCXX_PACKAGE */

/* Define to the address where bug reports for this package should be sent. */
#define _GLIBCXX_PACKAGE_BUGREPORT ""

/* Define to the full name of this package. */
#define _GLIBCXX_PACKAGE_NAME "package-unused"

/* Define to the full name and version of this package. */
#define _GLIBCXX_PACKAGE_STRING "package-unused version-unused"

/* Define to the one symbol short name of this package. */
#define _GLIBCXX_PACKAGE_TARNAME "libstdc++"

/* Define to the home page for this package. */
#define _GLIBCXX_PACKAGE_URL ""

/* Define to the version of this package. */
#define _GLIBCXX_PACKAGE__GLIBCXX_VERSION "version-unused"

/* The size of `char', as computed by sizeof. */
/* #undef SIZEOF_CHAR */

/* The size of `int', as computed by sizeof. */
/* #undef SIZEOF_INT */

/* The size of `long', as computed by sizeof. */
/* #undef SIZEOF_LONG */

/* The size of `short', as computed by sizeof. */
/* #undef SIZEOF_SHORT */

/* The size of `void *', as computed by sizeof. */
/* #undef SIZEOF_VOID_P */

/* Define to 1 if you have the ANSI C header files. */
#define _GLIBCXX_STDC_HEADERS 1

/* Version number of package */
/* #undef _GLIBCXX_VERSION */

/* Enable large inode numbers on Mac OS X 10.5.  */
#ifndef _GLIBCXX_DARWIN_USE_64_BIT_INODE
# define _GLIBCXX_DARWIN_USE_64_BIT_INODE 1
#endif

/* Number of bits in a file offset, on hosts where this is settable. */
/* #undef _GLIBCXX_FILE_OFFSET_BITS */

/* Define if C99 functions in <complex.h> should be used in <complex> for
   C++11. Using compiler builtins for these functions requires corresponding
   C99 library functions to be present. */
#define _GLIBCXX11_USE_C99_COMPLEX 1

/* Define if C99 functions or macros in <math.h> should be imported in <cmath>
   in namespace std for C++11. */
#define _GLIBCXX11_USE_C99_MATH 1

/* Define if C99 functions or macros in <stdio.h> should be imported in
   <cstdio> in namespace std for C++11. */
#define _GLIBCXX11_USE_C99_STDIO 1

/* Define if C99 functions or macros in <stdlib.h> should be imported in
   <cstdlib> in namespace std for C++11. */
#define _GLIBCXX11_USE_C99_STDLIB 1

/* Define if C99 functions or macros in <wchar.h> should be imported in
   <cwchar> in namespace std for C++11. */
#define _GLIBCXX11_USE_C99_WCHAR 1

/* Define if C99 functions in <complex.h> should be used in <complex> for
   C++98. Using compiler builtins for these functions requires corresponding
   C99 library functions to be present. */
#define _GLIBCXX98_USE_C99_COMPLEX 1

/* Define if C99 functions or macros in <math.h> should be imported in <cmath>
   in namespace std for C++98. */
#define _GLIBCXX98_USE_C99_MATH 1

/* Define if C99 functions or macros in <stdio.h> should be imported in
   <cstdio> in namespace std for C++98. */
#define _GLIBCXX98_USE_C99_STDIO 1

/* Define if C99 functions or macros in <stdlib.h> should be imported in
   <cstdlib> in namespace std for C++98. */
#define _GLIBCXX98_USE_C99_STDLIB 1

/* Define if C99 functions or macros in <wchar.h> should be imported in
   <cwchar> in namespace std for C++98. */
#define _GLIBCXX98_USE_C99_WCHAR 1

/* Define if the compiler supports C++11 atomics. */
#define _GLIBCXX_ATOMIC_BUILTINS 1

/* Define to use concept checking code from the boost libraries. */
/* #undef _GLIBCXX_CONCEPT_CHECKS */

/* Define to 1 if a fully dynamic basic_string is wanted, 0 to disable,
   undefined for platform defaults */
#define _GLIBCXX_FULLY_DYNAMIC_STRING 0

/* Define if gthreads library is available. */
#define _GLIBCXX_HAS_GTHREADS 1

/* Define to 1 if a full hosted library is built, or 0 if freestanding. */
#define _GLIBCXX_HOSTED 1

/* Define if compatibility should be provided for alternative 128-bit long
   double formats. */

/* Define if compatibility should be provided for -mlong-double-64. */

/* Define to the letter to which size_t is mangled. */
#define _GLIBCXX_MANGLE_SIZE_T m

/* Define if C99 llrint and llround functions are missing from <math.h>. */
/* #undef _GLIBCXX_NO_C99_ROUNDING_FUNCS */

/* Defined if no way to sleep is available. */
/* #undef _GLIBCXX_NO_SLEEP */

/* Define if ptrdiff_t is int. */
/* #undef _GLIBCXX_PTRDIFF_T_IS_INT */

/* Define if using setrlimit to set resource limits during "make check" */
#define _GLIBCXX_RES_LIMITS 1

/* Define if size_t is unsigned int. */
/* #undef _GLIBCXX_SIZE_T_IS_UINT */

/* Define to the value of the EOF integer constant. */
#define _GLIBCXX_STDIO_EOF -1

/* Define to the value of the SEEK_CUR integer constant. */
#define _GLIBCXX_STDIO_SEEK_CUR 1

/* Define to the value of the SEEK_END integer constant. */
#define _GLIBCXX_STDIO_SEEK_END 2

/* Define to use symbol versioning in the shared library. */
#define _GLIBCXX_SYMVER 1

/* Define to use darwin versioning in the shared library. */
/* #undef _GLIBCXX_SYMVER_DARWIN */

/* Define to use GNU versioning in the shared library. */
#define _GLIBCXX_SYMVER_GNU 1

/* Define to use GNU namespace versioning in the shared library. */
/* #undef _GLIBCXX_SYMVER_GNU_NAMESPACE */

/* Define to use Sun versioning in the shared library. */
/* #undef _GLIBCXX_SYMVER_SUN */

/* Define if C11 functions in <uchar.h> should be imported into namespace std
   in <cuchar>. */
#define _GLIBCXX_USE_C11_UCHAR_CXX11 1

/* Define if C99 functions or macros from <wchar.h>, <math.h>, <complex.h>,
   <stdio.h>, and <stdlib.h> can be used or exposed. */
#define _GLIBCXX_USE_C99 1

/* Define if C99 functions in <complex.h> should be used in <tr1/complex>.
   Using compiler builtins for these functions requires corresponding C99
   library functions to be present. */
#define _GLIBCXX_USE_C99_COMPLEX_TR1 1

/* Define if C99 functions in <ctype.h> should be imported in <tr1/cctype> in
   namespace std::tr1. */
#define _GLIBCXX_USE_C99_CTYPE_TR1 1

/* Define if C99 functions in <fenv.h> should be imported in <tr1/cfenv> in
   namespace std::tr1. */
#define _GLIBCXX_USE_C99_FENV_TR1 1

/* Define if C99 functions in <inttypes.h> should be imported in
   <tr1/cinttypes> in namespace std::tr1. */
#define _GLIBCXX_USE_C99_INTTYPES_TR1 1

/* Define if wchar_t C99 functions in <inttypes.h> should be imported in
   <tr1/cinttypes> in namespace std::tr1. */
#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1

/* Define if C99 functions or macros in <math.h> should be imported in
   <tr1/cmath> in namespace std::tr1. */
#define _GLIBCXX_USE_C99_MATH_TR1 1

/* Define if C99 types in <stdint.h> should be imported in <tr1/cstdint> in
   namespace std::tr1. */
#define _GLIBCXX_USE_C99_STDINT_TR1 1

/* Defined if clock_gettime syscall has monotonic and realtime clock support.
   */
/* #undef _GLIBCXX_USE_CLOCK_GETTIME_SYSCALL */

/* Defined if clock_gettime has monotonic clock support. */
#define _GLIBCXX_USE_CLOCK_MONOTONIC 1

/* Defined if clock_gettime has realtime clock support. */
#define _GLIBCXX_USE_CLOCK_REALTIME 1

/* Define if ISO/IEC TR 24733 decimal floating point types are supported on
   this host. */
#define _GLIBCXX_USE_DECIMAL_FLOAT 1

/* Define if /dev/random and /dev/urandom are available for
   std::random_device. */
#define _GLIBCXX_USE_DEV_RANDOM 1

/* Define if fchmod is available in <sys/stat.h>. */
#define _GLIBCXX_USE_FCHMOD 1

/* Define if fchmodat is available in <sys/stat.h>. */
#define _GLIBCXX_USE_FCHMODAT 1

/* Defined if gettimeofday is available. */
#define _GLIBCXX_USE_GETTIMEOFDAY 1

/* Define if get_nprocs is available in <sys/sysinfo.h>. */
#define _GLIBCXX_USE_GET_NPROCS 1

/* Define if LFS support is available. */
#define _GLIBCXX_USE_LFS 1

/* Define if code specialized for long long should be used. */
#define _GLIBCXX_USE_LONG_LONG 1

/* Define if lstat is available in <sys/stat.h>. */
#define _GLIBCXX_USE_LSTAT 1

/* Defined if nanosleep is available. */
#define _GLIBCXX_USE_NANOSLEEP 1

/* Define if NLS translations are to be used. */
#define _GLIBCXX_USE_NLS 1

/* Define if pthreads_num_processors_np is available in <pthread.h>. */
/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */

/* Define if pthread_cond_clockwait is available in <pthread.h>. */
#define _GLIBCXX_USE_PTHREAD_COND_CLOCKWAIT 1

/* Define if pthread_mutex_clocklock is available in <pthread.h>. */
#define _GLIBCXX_USE_PTHREAD_MUTEX_CLOCKLOCK 1

/* Define if pthread_rwlock_clockrdlock and pthread_rwlock_clockwrlock are
   available in <pthread.h>. */
#define _GLIBCXX_USE_PTHREAD_RWLOCK_CLOCKLOCK 1

/* Define if POSIX read/write locks are available in <gthr.h>. */
#define _GLIBCXX_USE_PTHREAD_RWLOCK_T 1

/* Define if /dev/random and /dev/urandom are available for the random_device
   of TR1 (Chapter 5.1). */
#define _GLIBCXX_USE_RANDOM_TR1 1

/* Define if usable realpath is available in <stdlib.h>. */
#define _GLIBCXX_USE_REALPATH 1

/* Defined if sched_yield is available. */
#define _GLIBCXX_USE_SCHED_YIELD 1

/* Define if _SC_NPROCESSORS_ONLN is available in <unistd.h>. */
#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1

/* Define if _SC_NPROC_ONLN is available in <unistd.h>. */
/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */

/* Define if sendfile is available in <sys/sendfile.h>. */
#define _GLIBCXX_USE_SENDFILE 1

/* Define to restrict std::__basic_file<> to stdio APIs. */
/* #undef _GLIBCXX_USE_STDIO_PURE */

/* Define if struct stat has timespec members. */
#define _GLIBCXX_USE_ST_MTIM 1

/* Define if sysctl(), CTL_HW and HW_NCPU are available in <sys/sysctl.h>. */
/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */

/* Define if obsolescent tmpnam is available in <stdio.h>. */
#define _GLIBCXX_USE_TMPNAM 1

/* Define if c8rtomb and mbrtoc8 functions in <uchar.h> should be imported
   into namespace std in <cuchar> for C++20. */
#define _GLIBCXX_USE_UCHAR_C8RTOMB_MBRTOC8_CXX20 1

/* Define if c8rtomb and mbrtoc8 functions in <uchar.h> should be imported
   into namespace std in <cuchar> for -fchar8_t. */
#define _GLIBCXX_USE_UCHAR_C8RTOMB_MBRTOC8_FCHAR8_T 1

/* Define if utime is available in <utime.h>. */
#define _GLIBCXX_USE_UTIME 1

/* Define if utimensat and UTIME_OMIT are available in <sys/stat.h> and
   AT_FDCWD in <fcntl.h>. */
#define _GLIBCXX_USE_UTIMENSAT 1

/* Define if code specialized for wchar_t should be used. */
#define _GLIBCXX_USE_WCHAR_T 1

/* Define to 1 if a verbose library is built, or 0 otherwise. */
#define _GLIBCXX_VERBOSE 1

/* Defined if as can handle rdrand. */
#define _GLIBCXX_X86_RDRAND 1

/* Defined if as can handle rdseed. */
#define _GLIBCXX_X86_RDSEED 1

/* Define to 1 if mutex_timedlock is available. */
#define _GTHREAD_USE_MUTEX_TIMEDLOCK 1

/* Define for large files, on AIX-style hosts. */
/* #undef _GLIBCXX_LARGE_FILES */

/* Define if all C++11 floating point overloads are available in <math.h>.  */
#if __cplusplus >= 201103L
/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP */
#endif

/* Define if all C++11 integral type overloads are available in <math.h>.  */
#if __cplusplus >= 201103L
/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT */
#endif

#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF)
# define _GLIBCXX_HAVE_ACOSF 1
# define acosf _acosf
#endif

#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL)
# define _GLIBCXX_HAVE_ACOSL 1
# define acosl _acosl
#endif

#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF)
# define _GLIBCXX_HAVE_ASINF 1
# define asinf _asinf
#endif

#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL)
# define _GLIBCXX_HAVE_ASINL 1
# define asinl _asinl
#endif

#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F)
# define _GLIBCXX_HAVE_ATAN2F 1
# define atan2f _atan2f
#endif

#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L)
# define _GLIBCXX_HAVE_ATAN2L 1
# define atan2l _atan2l
#endif

#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF)
# define _GLIBCXX_HAVE_ATANF 1
# define atanf _atanf
#endif

#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL)
# define _GLIBCXX_HAVE_ATANL 1
# define atanl _atanl
#endif

#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF)
# define _GLIBCXX_HAVE_CEILF 1
# define ceilf _ceilf
#endif

#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL)
# define _GLIBCXX_HAVE_CEILL 1
# define ceill _ceill
#endif

#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF)
# define _GLIBCXX_HAVE_COSF 1
# define cosf _cosf
#endif

#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF)
# define _GLIBCXX_HAVE_COSHF 1
# define coshf _coshf
#endif

#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL)
# define _GLIBCXX_HAVE_COSHL 1
# define coshl _coshl
#endif

#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL)
# define _GLIBCXX_HAVE_COSL 1
# define cosl _cosl
#endif

#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF)
# define _GLIBCXX_HAVE_EXPF 1
# define expf _expf
#endif

#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL)
# define _GLIBCXX_HAVE_EXPL 1
# define expl _expl
#endif

#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF)
# define _GLIBCXX_HAVE_FABSF 1
# define fabsf _fabsf
#endif

#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL)
# define _GLIBCXX_HAVE_FABSL 1
# define fabsl _fabsl
#endif

#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE)
# define _GLIBCXX_HAVE_FINITE 1
# define finite _finite
#endif

#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF)
# define _GLIBCXX_HAVE_FINITEF 1
# define finitef _finitef
#endif

#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL)
# define _GLIBCXX_HAVE_FINITEL 1
# define finitel _finitel
#endif

#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF)
# define _GLIBCXX_HAVE_FLOORF 1
# define floorf _floorf
#endif

#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL)
# define _GLIBCXX_HAVE_FLOORL 1
# define floorl _floorl
#endif

#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF)
# define _GLIBCXX_HAVE_FMODF 1
# define fmodf _fmodf
#endif

#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL)
# define _GLIBCXX_HAVE_FMODL 1
# define fmodl _fmodl
#endif

#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS)
# define _GLIBCXX_HAVE_FPCLASS 1
# define fpclass _fpclass
#endif

#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF)
# define _GLIBCXX_HAVE_FREXPF 1
# define frexpf _frexpf
#endif

#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL)
# define _GLIBCXX_HAVE_FREXPL 1
# define frexpl _frexpl
#endif

#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT)
# define _GLIBCXX_HAVE_HYPOT 1
# define hypot _hypot
#endif

#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF)
# define _GLIBCXX_HAVE_HYPOTF 1
# define hypotf _hypotf
#endif

#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL)
# define _GLIBCXX_HAVE_HYPOTL 1
# define hypotl _hypotl
#endif

#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF)
# define _GLIBCXX_HAVE_ISINF 1
# define isinf _isinf
#endif

#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF)
# define _GLIBCXX_HAVE_ISINFF 1
# define isinff _isinff
#endif

#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL)
# define _GLIBCXX_HAVE_ISINFL 1
# define isinfl _isinfl
#endif

#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN)
# define _GLIBCXX_HAVE_ISNAN 1
# define isnan _isnan
#endif

#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF)
# define _GLIBCXX_HAVE_ISNANF 1
# define isnanf _isnanf
#endif

#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL)
# define _GLIBCXX_HAVE_ISNANL 1
# define isnanl _isnanl
#endif

#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF)
# define _GLIBCXX_HAVE_LDEXPF 1
# define ldexpf _ldexpf
#endif

#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL)
# define _GLIBCXX_HAVE_LDEXPL 1
# define ldexpl _ldexpl
#endif

#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F)
# define _GLIBCXX_HAVE_LOG10F 1
# define log10f _log10f
#endif

#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L)
# define _GLIBCXX_HAVE_LOG10L 1
# define log10l _log10l
#endif

#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF)
# define _GLIBCXX_HAVE_LOGF 1
# define logf _logf
#endif

#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL)
# define _GLIBCXX_HAVE_LOGL 1
# define logl _logl
#endif

#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF)
# define _GLIBCXX_HAVE_MODF 1
# define modf _modf
#endif

#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF)
# define _GLIBCXX_HAVE_MODFF 1
# define modff _modff
#endif

#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL)
# define _GLIBCXX_HAVE_MODFL 1
# define modfl _modfl
#endif

#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF)
# define _GLIBCXX_HAVE_POWF 1
# define powf _powf
#endif

#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL)
# define _GLIBCXX_HAVE_POWL 1
# define powl _powl
#endif

#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS)
# define _GLIBCXX_HAVE_QFPCLASS 1
# define qfpclass _qfpclass
#endif

#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS)
# define _GLIBCXX_HAVE_SINCOS 1
# define sincos _sincos
#endif

#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF)
# define _GLIBCXX_HAVE_SINCOSF 1
# define sincosf _sincosf
#endif

#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL)
# define _GLIBCXX_HAVE_SINCOSL 1
# define sincosl _sincosl
#endif

#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF)
# define _GLIBCXX_HAVE_SINF 1
# define sinf _sinf
#endif

#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF)
# define _GLIBCXX_HAVE_SINHF 1
# define sinhf _sinhf
#endif

#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL)
# define _GLIBCXX_HAVE_SINHL 1
# define sinhl _sinhl
#endif

#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL)
# define _GLIBCXX_HAVE_SINL 1
# define sinl _sinl
#endif

#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF)
# define _GLIBCXX_HAVE_SQRTF 1
# define sqrtf _sqrtf
#endif

#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL)
# define _GLIBCXX_HAVE_SQRTL 1
# define sqrtl _sqrtl
#endif

#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF)
# define _GLIBCXX_HAVE_STRTOF 1
# define strtof _strtof
#endif

#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD)
# define _GLIBCXX_HAVE_STRTOLD 1
# define strtold _strtold
#endif

#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF)
# define _GLIBCXX_HAVE_TANF 1
# define tanf _tanf
#endif

#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF)
# define _GLIBCXX_HAVE_TANHF 1
# define tanhf _tanhf
#endif

#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL)
# define _GLIBCXX_HAVE_TANHL 1
# define tanhl _tanhl
#endif

#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL)
# define _GLIBCXX_HAVE_TANL 1
# define tanl _tanl
#endif

#endif // _GLIBCXX_CXX_CONFIG_H
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           mscc                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     GCC: (Debian 12.2.0-14+deb12u1) 12.2.0  GCC: (Debian 12.2.0-14+deb12u1) 12.2.0  GCC: (Debian 12.2.0-14+deb12u1) 12.2.0  GCC: (Debian 12.2.0-14+deb12u1) 12.2.0  GCC: (Debian 12.2.0-14+deb12u1) 12.2.0         $  $           
9             X    ?          
Y A=      L=          
      
  W=    \       
      
  n= +   y=    ^       
      
  = +   =    ` =      b         S $   @   '  &   P     &   `          
b =      =        = &       = D  @   = $      7
 e    0    @  =        $     i       q` ]e     > `   @  >      >       ( 1j  @  %> K     W g    4> M  @  >>      K> $     W> G    _> G           c h>         
      F   @   a Ǣ     t>   @  (w      0w      }> $   @        f >       > G               >     >    >    >    >    >      >     ?    ?    #?    7? 
  "    $        $      F? A        $       M? $   (   ]  A   0    C   @   T? B      [? C      h? A      @ A      3v  $      t? $     ?      u   *        -      0QF     P   ?      ?     ?    ?    ?    ?    ?    ?    
@    @      @     %@    ,@           h        d        k 6@    \ M@    \       
     
  _@    t {@    \ @    ǂ       
K   ( 3j     c     @    x       
    ( 3j     c     @    z       
   ( 3j  P  j?  @    |       
   ( 3j  
   @    ~ @    ǂ @    ǂ       
   P  ʢ  ] ,   A           
   P  ʢ  8X   'A     7A    E       
   P  ʢ  ` 2   GA           
       
  ( n   &     *   WA           
*      
  ( n   &   lA     A      h                A      A     A    A    A    A    B    +B    BB    YB      S &         *              
            c              
            c    	          
            @j                                                   
                          
                          
                .          
                          
                          
                          
 aB       qB    p   B    \ B    \ B    \ B    \ B    \ B    \ B    t B    \ C    \       
      
  S *   "C $   &C     9C           
      
  S *   "C $   [  *   LC     `C    \ tC    t C    \ C    ǂ C    ǂ C    \       
      
  o~ L  C           
      
    &     &   ! '  C           
      
    &   	D           
      
    [ S *     *   D           
*      
    [ S *   'D    È       
      
  
 *   8D    ň       
      
  
 *     &   FD    ǈ       
       
    &     *   UD    Ɉ       
      
  fD gj    l   kD    ˈ       
      
  fD gj    k   D    ͈       
       
  ^ !?  D    ψ       
      
  ^ !?  D    ш       
      
  D $   "  $   D    ӈ       
       
  0  I?      D    Ո       
       
       D    ׈ D    \       
      
  '     
E    ڈ $E    \ :E      XE     lE    ~E    E    E      E     E    E    F    'F      >F     RF    dF    yF    F      F     F    F    F      F    G    G    G    !G    (G 8   4G <            !_ $      w
 $     ?G $     uW $              Rk $        $     HG        `        i  ݈    SH     ,  *      `       TG K      (  $       ?G        Ve  @       uW &     1Q             gG    ǂ G    ǂ G    \       
     _e  G     G     G     G     H     .H     FH     ^H     vH     H     H     H     H     H           
    Z  p .v   I           
 Z  p SH  I           
      
  .v   9I           
     O-  6C  &   WI    \I           
       
  .v   vI      I            
       
  SH  I     I           
       
  SH  Oy  K   I           
       
  SH  S *     *   I           
*      
  SH  S *   J    
 csr_target MACRO_CTRL vsc85xx_sd6g_config_v2 gp_cfg_val vsc85xx_sd6g_gp_cfg_wr lane_rst vsc85xx_sd6g_misc_cfg_wr vsc85xx_hw_stat vsc8531_private rate_magic supp_led_modes leds_mode nleds nstats macsec_flows ingr_flows egr_flows input_clk_init load_save ts_base_addr ts_base_phy ts_lock phc_lock vsc85xx_ptp tx_queue configured vsc85xx_shared_private gpio_lock PHC_CLK_125MHZ PHC_CLK_156_25MHZ PHC_CLK_200MHZ PHC_CLK_250MHZ PHC_CLK_500MHZ ptp_cmd PTP_NOP PTP_WRITE_1588 PTP_WRITE_NS PTP_SAVE_IN_TS_FIFO vsc85xx_ptphdr msglen rsrvd1 rsrvd2 clk_identity src_port_id log_interval vsc85xx_ts_fifo ts_blk_hw INGRESS_ENGINE_0 EGRESS_ENGINE_0 INGRESS_ENGINE_1 EGRESS_ENGINE_1 INGRESS_ENGINE_2 EGRESS_ENGINE_2 PROCESSOR_0 PROCESSOR_1 ts_blk INGRESS EGRESS PROCESSOR vsc8584_ptp_probe_once vsc8584_ptp_probe vsc8584_handle_ts_interrupt vsc8584_ptp_init vsc8584_config_ts_intr vsc85xx_rxtstamp vsc85xx_txtstamp vsc85xx_ts_info vsc85xx_hwtstamp vsc85xx_ts_reset_fifo vsc85xx_link_change_notify vsc85xx_adjtime vsc85xx_settime vsc85xx_gettime vsc85xx_adjfine vsc85xx_ts_write_csr vsc85xx_ts_read_csr mdio_device_id rgmii_clock_delay RGMII_CLK_DELAY_0_2_NS RGMII_CLK_DELAY_0_8_NS RGMII_CLK_DELAY_1_1_NS RGMII_CLK_DELAY_1_7_NS RGMII_CLK_DELAY_2_0_NS RGMII_CLK_DELAY_2_3_NS RGMII_CLK_DELAY_2_6_NS RGMII_CLK_DELAY_3_4_NS reg_val phy_module_exit phy_module_init vsc85xx_probe vsc8584_probe vsc8574_probe vsc8514_probe vsc85xx_read_status vsc85xx_config_aneg vsc85xx_handle_interrupt vsc85xx_config_intr vsc8514_config_init mcb phy_commit_mcb_s6g phy_update_mcb_s6g __phy_write_mcb_s6g vsc85xx_config_init vsc8584_handle_interrupt vsc8584_config_init vsc85xx_coma_mode_release vsc8584_get_base_addr vsc8584_pll5g_reset vsc8584_patch_fw vsc8584_get_fw_crc vsc8584_cmd vsc85xx_csr_write vsc85xx_csr_read phy_base_read phy_base_write vsc85xx_tr_write tuna vsc85xx_set_tunable vsc85xx_get_tunable vsc85xx_wol_get vsc85xx_wol_set led_num vsc85xx_led_cntl_set vsc85xx_get_stats vsc85xx_get_strings vsc85xx_get_sset_count vsc85xx_phy_write_page vsc85xx_phy_read_page mscc_macsec_destination_ports MSCC_MS_PORT_COMMON MSCC_MS_PORT_RSVD MSCC_MS_PORT_CONTROLLED MSCC_MS_PORT_UNCONTROLLED mscc_macsec_drop_actions MSCC_MS_ACTION_BYPASS_CRC MSCC_MS_ACTION_BYPASS_BAD MSCC_MS_ACTION_DROP MSCC_MS_ACTION_BYPASS mscc_macsec_flow_types MSCC_MS_FLOW_BYPASS MSCC_MS_FLOW_DROP MSCC_MS_FLOW_INGRESS MSCC_MS_FLOW_EGRESS mscc_macsec_validate_levels MSCC_MS_VALIDATE_DISABLED MSCC_MS_VALIDATE_CHECK MSCC_MS_VALIDATE_STRICT macsec_bank FC_BUFFER HOST_MAC LINE_MAC PROC_0 PROC_2 MACSEC_INGR MACSEC_EGR untagged macsec_flow has_transformation vsc8584_config_macsec_intr vsc8584_handle_macsec_interrupt vsc8584_macsec_init vsc8584_macsec_del_txsa vsc8584_macsec_upd_txsa vsc8584_macsec_add_txsa vsc8584_macsec_del_rxsa vsc8584_macsec_upd_rxsa vsc8584_macsec_add_rxsa vsc8584_macsec_del_rxsc vsc8584_macsec_upd_rxsc vsc8584_macsec_add_rxsc vsc8584_macsec_upd_secy vsc8584_macsec_del_secy vsc8584_macsec_add_secy vsc8584_macsec_dev_stop vsc8584_macsec_dev_open vsc8584_macsec_free_flow vsc8584_macsec_alloc_flow vsc8584_macsec_transformation hkey vsc8584_macsec_derive_key vsc8584_macsec_flow_enable vsc8584_macsec_flow vsc8584_macsec_mac_init vsc8584_macsec_block_init vsc8584_macsec_flow_default_action vsc8584_macsec_phy_write vsc8584_macsec_phy_read   mscc.ko 7                                                                                                   	                                                                                                              $                      (                      +                             ,                   ,       +           ,       @     H      ,       U     t      ,       j           ,                  ,                  ,            $      ,            P      ,            |      ,                  ,                  ,                  ,       '    ,             >                  K    B             d    N      	       z    W      
           a      <                                     $                                                  @       k                                                             +           m       D    @      <      Z                 o          ]                              p      E                                  Z                                                        
                       `      R       /   	                ?                 S    
      8       g    
             {          S                                                                              @      P                 ,                ,          -                  P      s       :    F              M    0             o    `                 0                                  `                                                   _                                   p            1                  >    z       3       W                 c    @!      !
      w                                       $         8           `      p                p          $ 8       8                                                                         6       $    6       6       <    l              S                  i           )                   x                              "                     x                   .      0                 #                         *    .      0       C          #       a                 l    /      >                 #                                  .                                            0                 P                 p                              "                 -                 8                 D                 P                  \    P             h    8      
       t    8                 8                 8                 :                 ;                 ;      J       	     <             +	    <            E	    >      t      ]	     @             v	    @      Q      	    C             	    D            	    F             	    G      K      	   (               
    H      #      
     J      S       @
    J             X
     K      P       p
    pK             
    pL      .      
   (                
    M             
    0N             
    N             
    O                 pP             )                 <     h              A    pS      6       Q    S             b    PT      I      v    V      L          Y                 Z                 [      Q           [                 \                 @]                  ^      G       +    p^             D    @_      0      T    p`      G       d    `      \      u     b      >          `c                 `d                 Pe                @g      u      
                  	
    h            
    @             +
   +                 3
   +                 ;
                 R
   +                 Z
                  a
                   f
                     z
                     
                     
                     
                     
    n      A       
                     
    0             
   )               
                                              o      Y      $   	                3                     C                     J                     P                     c     |      *       z                                                                                                                                                                                                                                     -    P      y      A                     O                     `    R                                      0                                                                                                                                                                                    
                     #                     3                     J                     `                     m    P      	          P{                                                                                                                          pw                                                                                                                                          )                                          >    p.             Q                     a                     v                                                    ^           P/      h	                                                                                 x           R             )          Q       7    n      ;       R                     g    .             z                                                                __UNIQUE_ID_alias207 __UNIQUE_ID_alias206 __UNIQUE_ID_alias205 __UNIQUE_ID_alias204 __UNIQUE_ID_alias203 __UNIQUE_ID_alias202 __UNIQUE_ID_alias201 __UNIQUE_ID_alias200 __UNIQUE_ID_alias199 __UNIQUE_ID_alias198 __UNIQUE_ID_alias197 __UNIQUE_ID_alias196 __UNIQUE_ID_alias195 __UNIQUE_ID_alias194 __UNIQUE_ID_depends193 ____versions __UNIQUE_ID_retpoline192 __UNIQUE_ID_intree191 __UNIQUE_ID_name190 __UNIQUE_ID_vermagic189 _note_10 _note_9 vsc85xx_get_sset_count vsc85xx_phy_write_page vsc85xx_tr_write vsc85xx_phy_read_page phy_module_init vsc85xx_driver vsc8584_handle_interrupt vsc8584_get_base_addr vsc85xx_led_cntl_set vsc85xx_set_tunable vsc85xx_set_tunable.cold vsc85xx_get_tunable vsc85xx_get_stats vsc85xx_get_strings vsc85xx_wol_get vsc85xx_wol_set vsc85xx_config_init init_eee.46 vsc85xx_handle_interrupt phy_module_exit vsc85xx_config_aneg vsc85xx_read_status vsc85xx_config_intr vsc85xx_coma_mode_release vsc8584_probe vsc8584_hw_stats vsc8584_probe.cold vsc85xx_probe vsc85xx_hw_stats vsc8514_probe vsc8574_probe phy_base_write.cold vsc8584_micro_deassert_reset.isra.0 phy_base_read.cold vsc8584_micro_assert_reset.part.0 __phy_write_mcb_s6g vsc8584_mcb_wr_trig.constprop.0 vsc8584_mcb_rd_trig.constprop.0 vsc8584_pll5g_reset vsc8584_get_fw_crc vsc8584_patch_fw vsc8584_patch_fw.cold __func__.39 vsc8514_config_init pre_init1.34 vsc8514_config_init.cold __func__.35 vsc8584_config_init pre_init1.40 pre_init2.41 __UNIQUE_ID_ddebug385.0 pre_init1.36 pre_init2.37 __UNIQUE_ID_ddebug383.1 vsc8584_config_init.cold __func__.38 __func__.42 __UNIQUE_ID_firmware393 __UNIQUE_ID_firmware392 __UNIQUE_ID_license391 __UNIQUE_ID_author390 __UNIQUE_ID_description389 vsc85xx_tbl __UNIQUE_ID___addressable_cleanup_module388 __UNIQUE_ID___addressable_init_module387 .LC13 vsc85xx_sd6g_gp_cfg_wr vsc85xx_sd6g_gp_cfg_wr.cold __func__.13 vsc85xx_sd6g_misc_cfg_wr vsc85xx_sd6g_misc_cfg_wr.cold __func__.0 vsc85xx_sd6g_pll_cfg_wr.constprop.0 vsc85xx_sd6g_pll_cfg_wr.constprop.0.cold __func__.1 vsc85xx_sd6g_config_v2.cold __func__.3 __func__.4 __func__.5 __func__.6 __func__.7 __func__.8 __func__.2 __func__.9 __func__.10 __func__.11 __func__.12 __func__.15 __func__.14 vsc8584_macsec_add_rxsc vsc8584_macsec_upd_rxsc vsc8584_macsec_phy_read vsc8584_macsec_phy_write vsc8584_macsec_flow_enable vsc8584_macsec_dev_open vsc8584_macsec_flow_default_action vsc8584_macsec_block_init vsc8584_macsec_mac_init vsc8584_macsec_free_flow vsc8584_macsec_flow vsc8584_macsec_derive_key vsc8584_macsec_transformation vsc8584_macsec_alloc_flow vsc8584_macsec_add_rxsa __already_done.1 vsc8584_macsec_add_secy vsc8584_macsec_flow_disable.isra.0 vsc8584_macsec_del_rxsc vsc8584_macsec_dev_stop vsc8584_macsec_upd_rxsa vsc8584_macsec_add_txsa __already_done.0 vsc8584_macsec_del_rxsa vsc8584_macsec_del_txsa vsc8584_macsec_upd_txsa vsc8584_macsec_del_secy vsc8584_macsec_upd_secy vsc8584_macsec_ops .LC2 vsc85xx_ts_info vsc85xx_txtstamp vsc85xx_ts_read_csr vsc85xx_ts_write_csr vsc85xx_ts_set_latencies.part.0 vsc85xx_adjfine vsc85xx_ts_reset_fifo vsc85xx_ip1_conf.isra.0 vsc85xx_eth1_conf.isra.0 __vsc85xx_settime.isra.0 vsc85xx_settime __vsc85xx_gettime.isra.0 vsc85xx_adjtime vsc85xx_gettime vsc85xx_rxtstamp vsc85xx_ip_cmp1_init.isra.0 vsc85xx_eth_cmp1_init.isra.0 vsc85xx_ptp_cmp_init.isra.0 vsc85xx_ts_disable_flows.isra.0 vsc85xx_ptp_conf.isra.0 msgs.5 vsc85xx_hwtstamp vsc85xx_clk_caps __key.2 __key.1 vsc8584_ptp_probe.cold __key.0 msgs.4 .LC0 genphy_restart_aneg phy_error release_firmware _copy_from_user devm_kmalloc vsc8584_config_ts_intr gpiod_set_value vsc8584_cmd __this_module __mdiobus_read request_firmware vsc8584_ptp_init cleanup_module ptp_clock_index memcpy kfree usleep_range_state vsc8584_ptp_probe_once devm_gpiod_get_optional __dynamic_dev_dbg aes_expandkey __fentry__ init_module phy_read_paged phy_restore_page genphy_soft_reset phy_drivers_unregister dump_stack __mdiobus_write vsc8584_macsec_init genphy_resume __stack_chk_fail vsc8584_handle_macsec_interrupt genphy_aneg_done vsc85xx_csr_read __list_add_valid __phy_modify _dev_err ptp_clock_register kfree_skb_reason skb_complete_tx_timestamp phy_modify_paged mutex_lock mutex_is_locked __list_del_entry_valid devm_phy_package_join __mutex_init vsc85xx_csr_write vsc8584_ptp_probe ns_to_timespec64 _dev_warn __x86_return_thunk _copy_to_user vsc8584_handle_ts_interrupt netif_rx jiffies macsec_pn_wrapped sprintf strscpy mutex_unlock __genphy_config_aneg phy_update_mcb_s6g phy_select_page phy_drivers_register ktime_get __warn_printk phy_base_write vsc85xx_sd6g_config_v2 phy_trigger_machine kmalloc_trace genphy_read_status __mod_mdio__vsc85xx_tbl_device_table vsc8584_config_macsec_intr phy_base_read vsc85xx_link_change_notify __SCT__might_resched phy_commit_mcb_s6g kmalloc_caches aes_encrypt genphy_suspend                                            !             ;             A             n                                                                                                                    '            7            A            d                                                                        <            x                                                                                                 &            .            W            i            q                                                            n                                                                                     -            J            g            y                                                            B            O                                                            0            K            b                                                                                                !            5            N            g            x                                                            		            N	            X	            m	            {	            	            	            	            	            	            

            
            
            0
            U
            _
            
                    
                   
            
            
            
            K            o                                                            6            @            a            |                                                                                    

            
            :
            h
            t
            }
            
            
            
            
            
                        8            E            O            [           c                                                                                    9                   H            v                                                                              ?                    I            o                                                @                  @                    J            {                                                            !            @      -            q                    {                                                            /            Q                  ]                                                                                                        )       <            J            Q            o                                                                                    B                               1            D            Q           e            w                                                                                                                                             1            Y            j                                                                                                         '            @            Q            ~                                                                                               "            ;            N            a                                                                                                1            J            O            [           m            v                                                                                                           	            "            8            H            a                                                                                    &            1            T            d            k                                                                                               "            2            ?            W            d           x                                                            [                   [                                                       .            F            U            c            q                                                                                                                               *           >            P            t                                                                                                                      .            @            c            t                                                                                               ,             C             M             v       Z             s                                                                             A!            !            
"            3"            j"                   {"                   "            "                  "           "            "            "           "            "            "            #            #            +#           ?#            Q#            c#            p#           #            #            #            #            #            #                   #            $             $            F$            W$            g$            n$                   $            $           $            $            $           $            $                  $            $                  =%                  x%                   %            %            %            %            %            %            &           &            A&            K&            d&            {&           &            &            &            
'            ''            N'            `'            '            '            '            '            '            	(            (            (            (            `      (            (           (            (            (            (            (            (            )            !)            .)           B)            T)            z)            )            )            )                  )                  )            )            )            *            *            (*            /*            P      C*            P*           d*            s*            *           *            *                   *            *            8      +            i      +            *+            <+            N+            +            U      +            +            +            +            +            +           7,            P,            ,            ,            ,            ,            -                   -         	   8       -             -                   *-         	           /-            <-            {-            -            -            -           -            -            -                   -                   .           $.           4.           S.            ].            q.            .            .            .            .            }      .            .            .            /                  /            /            8/            @/                  J/            Q/            n/            /            /            /                  /            /            /                  /           0            0            '0                  >0            F0            e      ]0            e0            B      |0            0                  0            0                  0            0                  0            0                  1           61           E1            `1            l1            1            1            1            1                  1           2            '2                  >2            F2            p      ]2            t2           2            2            M      2            2            *      2           2            2                  2           03           \3           3            3            9      3           3            3                  3           3            3            4            4            )4            [4            c4                  z4            4                  4           4            4                  4           4            4                  4            5            D      5            55           O5            f5            n5            !      5            5                  5           5            5           5                  5            6            \      6            :6            B6                  W6            r6            6            6            6                  6           6            6                  7            
7            r      !7            )7            O      M7            U7            ,      l7            t7            	      7            7                  7            7                  7           8           8            ,8            ;8            U8            a8            8           8            g      8                  8                  8            8            8            8            8            9            /9            b9            i9            9            9            9            9            9            9            :            $:            [:            :            :            :            :            :            :            ;            !;            ;            ;            ;            <            <            >            !@            <@            @            @            C            C            C           D            
D            D            <F            F            F            G                  G            MG            qG            G            G            H            H            H            H         
   H                  H                  H         
   H            H            I            J            !J            J            K            !K            lK            qK            ;L            bL            qL            L            0M            QM            dM            jM         
   }M                  M                  M         
   M            M            
N            1N            N            N            gO            O            O            eP            qP            P            P            P                  R            R            R            R            R            S            S            6S            qS            S            S            S            S            1T            BT            GT            QT            T            T            T            U            /U            IU            jU            U            U            U            U            V            *V            =V            JV            V            UW            oW            W            W            W            W            !X            ;X            aX            {X            X            X            X            Y            CY            dY            Y            Y            Y            Z            5[            z[            [            [            [            [            \            A]            ]            ]            	^            ^            !^            E^            X^            c^            q^            ^            ^            *_            8_            A_            _            _            _            `            F`            b`            l`            q`            `            `            `            `            3a            Ga            a            b            b            !b            ac            ad            Qe            :g            Ag            ^g                   h                   gh            h            i            ti            i            m            1m            am            rn            n            n            n            n            n            n            o            o            u            `      u            <      "u            S      )u            @      1u            h      <u            pS      Uu                  u            u            v            )v            Cv            iv            v            v            v            v            v            ew            qw            w            w            x            z            z            z            {            @{            Q{            l{            {                    {                  {            {                    {            !      {            {            3      {            {                  {            |            |                    |            =      |            &|                                                                                                                                           (       $             )                   0                    8             =             B                   I                    Q             V             [                   b                   i             P       q             v             U                                      J                                 P                   -                                 P                                      P                                                           !                   -                                 !                   X                              x%                  (                              =%      $                  +                   3            8            !      A                   H                   P            U            !      \            X      d            i            +      p            (      x            }            +                                                                   .                                                                  /                                                                  @/                                                       	            /                                          #            ,            /      3            0      :                  F            O            /      V            P      ]                  i            r            /      y            p                                                /                                                                  /                                                                  /                                                                  /                  0                                    !            /      (                  /                  ;            D            /      K                  R                  ^            g            /      n                  u                                          /                                                                   /                  0                                                /                  P                                                /                  p                        
                        /                  P      $                  0            9            /      @            P      G                  S            \            /      e            P      s                  x                        /                  P                                                6                  p                                                /                  P                                                /                                                                  /                                          !            *            /      1            p      8                  D            M            /      T            P      [                  g            p            /      w                  ~                                          /                                                                  /                                                                   /                  0                                                /                  0      
                                          /      &                  -                  9            B            /      I            P      P                  \            e            /      l            p      s                                          /                                                                  /                  0                                                /                  8                                                /                                                                  /                        &            1            {                          
                                                                                                 +                  H                   e                                           @                  P                  `                  p                              +                  ;                   K                  H                  pP                  O                  8                  8                  J                  G                  pK                  M                  pL                  N                  0N      @                                Z                  @_                  p`                   ^                                                              @                                                 (                    0             @      8                   @                   H             p      P                   X                   `                    h                   p                   x             `                                      
                   
                                                                                                                                     P                                      0                   0                   P                   `                   0                                     `                  0                                           (            p      0            @!      8            p.      @            .      H            .      P            .      X            /      `            P/      h            8      p            8      x            8                   :                   ;                  ;                   <                  <                  >                   @                  @                  C                  D                  F                  G                  H                   J                  J                   K                   pK                  pL                  M                  0N                   N      (            O      0            pP      8            P      @            R      H            R      P            pS      X            S      `            PT      h            V      p            Y      x            Z                  [                  [                  \                  @]                   ^                  p^                  @_                  p`                  `                   b                  `c                  `d                  Pe                  @g                  h                  n                   n                  o                  pw                  P{                    |                                                          !                   j@                   "G                                                                               ;                   w                                      h                                             $                   (                   ,                   0             l	      4             	      8             	
      <                   @                   D             |
      H             D      L                   P             z      T                   X                   \             I      `                   d                   h                   l             ?      p             M      t                   x                   |                                G                   %                                                         b                   s                   2"                                       .                   /                   I/                   0                   8                   8                   9                   ;                   ;                   D                   ;F                   pG                   G                   H                   H                   I                   J                   K                   kK                   :L                   aL                   /M                   PM                   cM                   N                  N                  fO                  O                  dP                  P                  R                  R                   S      $            FT      (            IV      ,            [      0            [      4            b^      8            _      <            `      @            b      D            9g      H            fh      L            `m      P            o      T            x      X            {      \            %|                                         ?                    @                    G                    R                    X                                                                    $                    (                    ,                    0                    4                    8                    <                   @                   D             #      H             =      L             @      P             G      T             I      X             J      \             K      `             6      d             7      h             9      l             ;      p             @      t             r      x             s      |             u                   w                   |                                                                                                                                                                                                                                    m                   p                   |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          $                  (                   ,                  0            	      4                  8                  <                  @                  D            o      H            p      L            r      P            t      T            v      X            x      \            }      `                  d                  h                  l                  p                  t            $      x            %      |            )                  0                                                                                                                                                                                                                                                                                                                   a	                  d	                  f	                  h	                  j	                  l	                  q	                  	                  	                  	                  	                  	                  	                  	                   
                   
                  
                  
                  
                  	
                  
                  Q                  `                   f      $                  (                  ,                  0                  4                  8                  <                  @                  D            
      H            
      L            "
      P            {
      T            |
      X            
      \            
      `            
      d            
      h            
      l            
      p            
      t            D      x            I      |                                                                                                                                                                                                                                                                                                              s                                                                                          x                  y                  z                                                                                                                                                                                                                                                                                                                                            $                  (                  ,                  0                  4                  8                  <            5      @            9      D            ;      H            @      L            A      P            G      T            I      X            N      \            P      `            W      d            c      h            k      l                  p                  t                  x                  |                                                                                                                                                                              !                  0                  6                                    !                  0                  7                  9                  B                  J                  X                                                                                                                              4                  8                  9                  =                  ?                  D                  P                   W                  Y                  ^                  g                  o                  }                  E                  F                   G      $            I      (            K      ,            M      0            R      4            Y      8            `      <            g      @            i      D            k      H            t      L            |      P                  T                  X                  \                  `                  d                  h                  l                  p                  t            
      x                  |                                                                                    $                  0                  6                  F                                                                                                                                                F                  G                  L                  S                  `                  f                  m                  $                  %                  *                  0                  7                  >                  B                  C                  S                                                                                                                                                                                                              $            
      (                  ,                  0                  4                  8                  <                  @                  D                  H                  L                  P            Z      T            ^      X            `      \            b      `            g      d            p      h            w      l            y      p            {      t            }      x            ~      |                              j                  k                  m                  o                  q                  s                  x                  <!                  @!                  G!                  I!                  K!                  M!                  N!                  O!                  V!                  &"                  )"                  *"                  ,"                  ."                  0"                  2"                  7"                  a.                  p.                  .                  .                  .                                                                                                 -                   F                   _                   z                                                                                    $            .      (            .      ,            .      0            .      4            .      8            .      <            .      @            
/      D            /      H            /      L            1/      P            H/      T            I/      X            N/      \            P/      `            W/      d            `/      h            b/      l            d/      p            e/      t            f/      x            m/      |            /                  /                  /                  0                  0                  0                  0                  0                  8                  8                  8                  8                  8                  8                  8                  8                  8                                                                        8                  8                  8                  8                  8                  8                  8                  8                  8                  8                  9                  9                  9                   9                  9                  9                  9                  9                   :                  :                  	:                   :      $            :      (            :      ,            :      0            #:      4            ;      8            
;      <            ;      @            ;      D            ;      H            ;      L            ;      P            ;      T             ;      X            ';      \            (;      `            );      d            ;      h            ;      l            ;      p            ;      t            ;      x            ;      |            ;                  ;                  ;                  ;                  ;                  ;                  ;                  ;                  ;                  ;                   <                  <                  !<                  .<                  o<                  s<                  z<                  <                  <                  <                  <                  <                  =                  =                  =                  =                  >                  >                  >                  >                  >                  ?                  ?                   ?                  ?                  @                   @                  *@                  /@                  @                  @                   @      $            @      (            @      ,            @      0            @      4            @      8            @      <            @      @            @      D            A      H            A      L            A      P            A      T            A      X            A      \            A      `            A      d            C      h            C      l            C      p            C      t            C      x            C      |            .C                  C                  C                   D                  D                  D                  	D                  D                  D                  D                  D                  D                  D                  !D                  "D                  )D                  1F                  2F                  3F                  5F                  7F                  9F                  ;F                  @F                  F                  F                  F                  F                  F                  F                  F                  iG                  jG       	            lG      	            nG      	            pG      	            uG      	            G      	            G      	            G      	            G       	            G      $	            G      (	            G      ,	            G      0	            G      4	            G      8	            G      <	            G      @	            G      D	            G      H	            uH      L	            xH      P	            zH      T	            |H      X	            ~H      \	            H      `	            H      d	            H      h	            H      l	            H      p	            H      t	            H      x	            H      |	            H      	            H      	            H      	            H      	            H      	            I      	            I      	            J      	            J      	            J      	            J      	            J      	             J      	            'J      	            2J      	            9J      	            aJ      	            jJ      	            lJ      	            sJ      	            J      	            J      	            J      	            J      	            J      	            J      	            K      	            K      	            K      	            K      	            K      	            K      	             K       
            'K      
            +K      
            ,K      
            fK      
            iK      
            kK      
            K      
            K       
            9L      $
            :L      (
            ?L      ,
            \L      0
            fL      4
            pL      8
            wL      <
            ~L      @
            L      D
            L      H
            L      L
            L      P
            &M      T
            'M      X
            )M      \
            +M      `
            -M      d
            /M      h
            4M      l
            GM      p
            HM      t
            JM      x
            LM      |
            NM      
            PM      
            UM      
            XM      
            [M      
            ]M      
            _M      
            aM      
            cM      
            hM      
            M      
            M      
            M      
            M      
            N      
            N      
            N      
            #N      
            0N      
            6N      
            7N      
            N      
            N      
            N      
            N      
            N      
            N      
            N      
            eO      
            fO      
            kO      
            }O      
            O                   O                  O                  O                  O                  O                  O                  O                  [P                   \P      $            ^P      (            `P      ,            bP      0            dP      4            iP      8            pP      <            vP      @            P      D            P      H            P      L            P      P            P      T            R      X            R      \            	R      `            R      d            R      h            #R      l            %R      p            'R      t            +R      x            ,R      |            R                  R                  R                  R                  R                  R                  R                  R                  R                  R                  R                  R                  R                  R                  R                  R                  ZS                  iS                  pS                  vS                  S                  S                  S                  S                  S                  S                  -T                  .T                  0T                  5T                  >T                  ?T                  AT                   KT                  PT                  WT                  YT                  ]T                  ^T                  DV                  EV                   GV      $            IV      (            NV      ,            V      0            V      4            V      8            V      <            V      @            V      D            V      H            V      L            V      P            X      T            X      X            X      \            X      `             Y      d            Y      h            Y      l            	Y      p            Y      t            Y      x            Y      |            Z                  Z                  Z                  Z                  Z                  Z                  [                  [                  [                  [                  [                  [                  [                  [                  [                  [                  [                  [                  [                  \                  \                  x\                  ~\                  \                  \                  \                  \                  \                  \                  ]                  ]                  ]                  ]       
            =]      
            @]      
            G]      
            N]      
            O]      
            S]      
            ^      
            ^       
            ^      $
            ^      (
            ^      ,
             ^      0
            '^      4
            +^      8
            /^      <
            _^      @
            `^      D
            b^      H
            g^      L
            p^      P
            w^      T
            ~^      X
            ^      \
            ^      `
            2_      d
            3_      h
            5_      l
            7_      p
            <_      t
            @_      x
            F_      |
            I_      
            _      
            _      
            p`      
            w`      
            {`      
            `      
            `      
            `      
            `      
            `      
            `      
            `      
            `      
            `      
            `      
            `      
            b      
            
b      
            b      
            b      
            b      
            b      
            b      
             b      
            'b      
            3b      
            4b      
            7b      
            Oc      
            Uc      
            Wc      
            Yc                   ^c                  `c                  gc                  pc                  qc                  tc                  Id                  Jd                   Nd      $            Pd      (            Xd      ,            `d      0            gd      4            sd      8            vd      <            9e      @            ?e      D            Ae      H            Fe      L            Pe      P            We      T            ce      X            ge      \            ke      `            4g      d            5g      h            7g      l            9g      p            >g      t            @g      x            Gg      |            Lg                  Qg                  Vg                  Zg                  cg                  ]h                  ^h                  `h                  bh                  dh                  fh                  kh                  h                  h                  h                  h                  h                  h                  h                  h                  h                  Vm                  Wm                  Xm                  Zm                  \m                  ^m                  `m                  em                  vn                  n                  n                  n                   n                  n                  n                  n                  n                  n                  n                  n                   o      $            o      (            o      ,            o      0            o      4            o      8            o      <            !o      @            {o      D            |o      H            }o      L            o      P            o      T            o      X            o      \            iw      `            pw      d            ww      h            yw      l            {w      p            }w      t            w      x            w      |            w                  x                  x                  x                  x                  x                  x                  x                  "x                  D{                  P{                  V{                  a{                  {                  {                  {                  {                   |                  *|                                    5                    ,                c                        H                                        M                           $             NV      (                     0             yV      4                     <             }V      @                     H             V      L                     T             V      X                     `             V      d                     l             !Y      p                     x             Y      |                                  Y                                        Y                                        Y                                        Y                                        Y                                        Y                                        Hw                                        Ow                                        Vw                                        ]w                                         '%                   -                	   *                    *                   -                	   b                    `       H                    P                  X                  p                   x                                                  
                  
                  `                                                                                                                         (                  0            p      8                              {                            (            @!      0                  H                   P                    X                  `                    h            
      p            
      x            `                                                                                                                                                       p                                                                            p                                            (                    0                  @            
      H            
      P            `      h                  p                                                                                                                              p                                                                                                                                                                         
                   
      (            `      @                  H                   h                   p                                                                                        p                                                                                                                                                                        
                  
       	            `      	                   	                   @	                   H	                    x	                    	                  	                  	            p      	                  X
                   
                    
                  
                  
                   
                    
                  
            
      
            
      
            `      
                  
                                                           P                    X                  `                  h            p      p                  0                   X                    `                  h                                                                                       
                  
                  `                                                                                  (
                    0
                  8
                  @
            p      H
                                    0                    8            @!      @                  X                   `                    h                  x            
                  
                  `                                                                                                                                                       p                                     &                                      @!                        0                   8                    @                  P            
      X            
      `            `                                                                                                                 p                                    A                                      @!                                                                                                      (            
      0            
      8                   P                  X                   x                                                                                                           p                                    \                                      @!                                                                                                                  
                  
                  `      (                  0                   P                   X                                                                                        p                        h            w                                      @!                                                                                                                 
                  
                         (                   0                    `                    h                  p                  x            p                        @                  h                    p            @!      x                                                                                                           
                  
                                                                 8                    @                  H                  P            p      X                                    @                    H            @!      P                  h                   p                    x                                                  
                  
                                                                                                                                            (            p      0                                                                                                                   x                           8                   @                   H             x       P                                  Z                                                                 8                    P                     .symtab .strtab .shstrtab .note.gnu.build-id .note.Linux .rela.text .rela.init.text .rela.text.unlikely .rela.exit.text .rela.rodata .rela__mcount_loc .rodata.str1.8 .rodata.str1.1 .rela.smp_locks .modinfo .rela.return_sites .orc_unwind .rela.orc_unwind_ip __versions .rela__bug_table .rela__jump_table .rela.data .rela.exit.data .rela.init.data .rela__dyndbg .rela.static_call_sites .data.once .rela.gnu.linkonce.this_module .bss .comment .note.GNU-stack .BTF .gnu_debuglink                                                                                         @       $                              .                     d       <                              ?                            *|                             :      @               @=     PR      0                    J                     |                                    E      @                    `       0                    Z                     |      5                             U      @                          0                    n                                                         i      @                    0       0   	                 ~                     @                                    y      @               ؤ           0                                         8      (                                   @                    x	      0   
                       2               `                                        2               p      P                                                                                           @               h     x       0                                         Ԗ                                                        q      `                                   @                    @      0                                         ћ                                                                                                 @                     ^      0                                        `                                                                                             
     @                           0                    #                                                               @                           0                    5                    @      P                              0     @                          0                    @                                                        ;     @               X6            0                     P                                                        K     @               p6            0   "                 `                          p                              [     @               6            0   $                 n                                                        i     @               H7     `       0   &                                                                                              @                    @                    @               7     0       0   )                                                                               0                                                                                                                                       &                                                                                                                      1                    	                      *                                                        7                                  0	*H
01
0	`He0	*H
1a0]080 10UDebian Secure Boot CA2(oe:B&C0	`He0
	*H
  j-=QNj9`qXl'W-{w?*Ѻ5p4'Q_sbӮըS QpBUqnƁ}O7fy139EGСS/4lt([QY1_Ub>$ƮSZᆓ5}dd*}6Wa"<qkvw9Nx`o72ڦ-)8z	RUya3{F{"FGy[:IZR1         ~Module signature appended~
 070701000A03A1000081A4000000000000000000000001682F6DA700002E33000000CA0000000200000000000000000000004200000000usr/lib/modules/6.1.0-37-amd64/kernel/drivers/net/phy/national.ko ELF          >                    0"          @     @ ) (          GNU 2.oҝ|kƮUT
        Linux                Linux   6.1.0-37-amd64      SH(     H      x@  u1[    (  %     H      H       [    H    1    SH(     H  xP1ɺ       t[    (  H         xߋ(  %     H  [           x%  (     H      u(       H  [    @     U1SH(  H      (  H  1҉ŀ    (  1H         (    H         (     H         (  1H        (     H         (    H         (     H      (    H  ź       (  H  @ͺ       f(  H         x(  %     H  []    (       H      (     H      H    H    H    H    HE    f[]        H       H           H                                        off on NatSemi DP83865 national drivers/net/phy/national.c 10BASE-T HDX loopback %s
       national: 10BASE-T HDX loopback %s
             ns_10_base_t_hdx_loopack license=GPL author=Stuart Menefy description=NatSemi PHY driver alias=mdio:0010000000000000010111000111???? depends=libphy retpoline=Y intree=Y name=national vermagic=6.1.0-37-amd64 SMP preempt mod_unload modversions                                                                                                                                                                                                                                                       m    __fentry__                                              ![Ha    phy_drivers_register                                    ;    mdiobus_read                                            9[    __x86_return_thunk                                      XV    mdiobus_write                                           D    phy_trigger_machine                                         phy_error                                                    phy_drivers_unregister                                  eb,    __dynamic_pr_debug                                      zR    module_layout                                                                           z\                                                                                                                                                                                  z\                                                                                                                                                                                                                                                                                                                                                                                                                        national                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 GCC: (Debian 12.2.0-14+deb12u1) 12.2.0  GCC: (Debian 12.2.0-14+deb12u1) 12.2.0                       
9             X    
          
Y A=      h                P=      ]=     m=               @j                   [       ~=       =    p         
      
  =    a =    a       
     
  =    d mdio_device_id hdx_loopback hdx_loopback_on hdx_loopback_off phy_module_exit phy_module_init ns_config_init ns_config_intr ns_handle_interrupt  national.ko                                                                                                                                                
                                                                  @       ,            l              -                   :     {              S            	       i                   }            <                                       $                                                           p                                p                   0                        8          
                +                   2                   I                  _    !              z                                                                                                                                        
                     $                   D                     Q                     d                     r                                                                __UNIQUE_ID_alias194 __UNIQUE_ID_depends193 ____versions __UNIQUE_ID_retpoline192 __UNIQUE_ID_intree191 __UNIQUE_ID_name190 __UNIQUE_ID_vermagic189 _note_10 _note_9 phy_module_init dp83865_driver ns_handle_interrupt phy_module_exit ns_config_intr ns_config_init __UNIQUE_ID_ddebug383.0 __func__.33 ns_tbl __UNIQUE_ID_license389 __UNIQUE_ID_author388 __UNIQUE_ID_description387 __UNIQUE_ID___addressable_cleanup_module386 __UNIQUE_ID___addressable_init_module385 phy_error __this_module cleanup_module __fentry__ init_module phy_drivers_unregister __mod_mdio__ns_tbl_device_table mdiobus_read __x86_return_thunk mdiobus_write phy_drivers_register __dynamic_pr_debug phy_trigger_machine             #             '   /          (   M          )   U          ,   `          (   h              q          #             )             (             '             )             '            )   (         )   1         #   J         '   h         )            )            )            )            )            )   
         )   $         '   B         )   `         )   y         '            )            )            '                                                                                           +            (             #             !                                          *                        
          %                                                           p                    0                    .                    _                                                                                                     .                    3                    _                    d                    p                    v                            $                    (                    ,                    0             '      4             ,      8             0      <             6      @             9      D                   H                   L                   P                   T                   X                   \                     `                    d                     h                                  d                                      *                                        0      8            p       @                               "                      $                                                                                       ;       8         $           P         "            .symtab .strtab .shstrtab .note.gnu.build-id .note.Linux .rela.text .rela.init.text .rela.exit.text .rela__mcount_loc .rodata.str1.1 .rodata.str1.8 .rodata .modinfo .rela.return_sites .orc_unwind .rela.orc_unwind_ip __versions .rela__jump_table .rela.data .rela.exit.data .rela.init.data .rela__dyndbg .rela.gnu.linkonce.this_module .bss .comment .note.GNU-stack .BTF .gnu_debuglink                                                                                      @       $                              .                     d       <                              ?                                                         :      @                     x      &                    J                                                         E      @               p      `       &                    Z                                                         U      @                     0       &                    j                                                          e      @                      `       &   	                 w      2                     U                                   2               P      $                                                                                                                                                                    s                                          @               `      `       &                                                                                                  %      l                                    @                           &                                                                                                   	                                          @               H      H       &                                         @	                                          @                     `       &                                        8                                         @                            &                                        @                                         @                             &                    &                    H      8                              !     @                       `       &                    4                                        @               /     @                      0       &                    N                                                          S     0                      P                             \                     P                                     l                     P                                   q                                                                                     8      '                     	                      H                                                                                             0	*H
01
0	`He0	*H
1a0]080 10UDebian Secure Boot CA2(oe:B&C0	`He0
	*H
  >Z|n~1`yϾ"=߈,+VA9	4m-,H&
_EqAHt(J*Gqu}VcclM<(q!5YfPq5n,A&WhAD5L`)q`wK~akgs*^MGhk0'/4w{}.KB=ӗ1ߓ$ǓЍX.         ~Module signature appended~
 070701000A037E000081A4000000000000000000000001682F6DA70001E7AB000000CA0000000200000000000000000000004100000000usr/lib/modules/6.1.0-37-amd64/kernel/drivers/net/phy/phylink.ko  ELF          >                    h         @     @ 2 1          GNU Xܽ"zyp;"/        Linux                Linux   6.1.0-37-amd64         w   vo@  uP    a  tv*w%(#         t    '    E      d   E    ww0d   E    d   t2	%|            	      '          f         WD1t
   t    Gx        HH      ff.         HHǀ                   f% f= t]w'f= tN  f= u)1   W$G(    f= t f= 
u  ׺
   ft̀g4    	  뽺d   붺'  ff.         H/H/H/	H/
H/H/             HH@tH/
tH(tH( tH(\   HtH(Z   H tH(C   H[   H@tH(tH(H()   HD   Ht/   HH(t	0   HtAH(H(H(H(*   H+   H,   H-   H.   HtH(    H!   H tH(H(H(H(@tH"   H#   H(   H4   H5   H6   H7   H8   HƀtH(H(H(H(   t~$   H%   H&   H'   H9   H:   H;   H<   H=   HK   HL   HM   HN   HO   H   tZ>   H?   H@   HA   HB   HP   HQ   HR   HS   HT   H   tZE   HF   HG   HH   HI   HU   HV   HW   HX   HY   H             SHHeH%(   HD$HGXHHG`HFHGhHFHGpHFHGxHF H   HF(H   HF0HWHBHt9H    {(D$ D$ C,    t>HD$eH+%(   u\H[    H   Ht    C4	ЈC4HsHL$HHT$    |$ tK,|$ tK,    ff.         SHH?Ht    HC   sEH{H@8    HC@        [        AWAVAUATUHSHHHGu%fHCsEHH@ H[]A\A]A^A_    ̃uD  ы~0Df4D~,    }(EAIA    }$AH$    I    HE    CEI    wL    AEH3H    RH    ATAWUj]AVt$0QH        H{H@,~0Df4D~,    }(EAIA    }$AH$    I    HE vgCEI    wL    AEHs H    RH    ATAWUj]AVt$0QH        H{H@L    L    ff.     f    GD<t'<tH8 u(H?1    BwHX   u        @     UHSH    t0   C   C   C[]    =     uǺE	  H    H            ff.          H8Ht                 SHHX      H   Ht    H0      H[    D      AUATUSH    tdHk8HtPL   L   L    L    HC8    L    L    H0      H[]A\A]    []A\A]    =     u/  H    H            mfD      FfD      SH       HX  Ht    H{8Ht    H          uHC0K0Ht[    H    ǃ       H0  H5        H    H[    =     r  H    H            LfD      USH    tZ@t=HHt	  t,H   H    Hk0H;Ht    H[]    H[]c(H[]    =     u  H    H            wf    UHSH    t"HC    H}8Ht
H[]    []    =     uպ  H    H            ff.         UHSH    tH{8Ht6H[]    =     u0  H    H            []    ff.     @     SH    tH{8Ht[    1[    =     uັ	  H    H            ff.         H8Ht	@        ff.     @     UHSH    tH{8Ht6H[]    =     u	  H    H            []    ff.     @     UHSH    tH{8Ht6H[]    =     u	  H    H            []    ff.     @     SH(  1H      y[    (  H  1Ҁ[    ff.          USHH V$eH%(   HD$1F4H H	H$F(D$HFH
D$HFHHD$    uC4DHT$eH+%(   uH []        ff.     f    USH    t'HX   t	1[]    H{8Ht@[]    =     uк
  H    H                     SH(   @H      x"S4	ЈC4t{ t[    c4[    H'     HC$[    ff.         SH    t!HX   t1[    H{8Ht[    =     uֺ
  H    H            볐       tGxv    EuHGHtHHHR    HGx tHWHHR0             AVAAUATUHSHGH@  D  DQ  E  HCu H{H@    IH=   E1H   H9CAŀ{D   H       HCH@H   E   HHSH{H0  D   HHU sEAH@A          HHCH@(HtU sEH{       HCHtx t
{D:  []A\A]A^    E1{D/HCH@H;U sEH{    #HSR        []A\A]A^    LcB H       H3H    H        XHSR        E)f"HSR        B H    vhHs H    H        HC@        H5    H   []A\H   A]A^    H    H    f.         USH    t#H{81Ht    H[]    =     uԺ3	  H    H            ff.          HG0u^USHHHCHkXHtM@t=   D   HHSxsEAH@A       []    f    x tHH_H[]CxI    wL    CEI    wL       H3H    H    H    PUj]    H{HEH[]f4CxI    vMCEI    wL       Hs H    H    H    PUj]    H{HL    ff.         AVAUATIUSH    Y  {E  HCH u
HCH@v  HKHAT$AD$@u9Q  At$1L   L@EE    A|$ED$1҅H{X1E@       1AA   A   H{8       L    H{8HtAD$AL$1҅1@    Eu1[]A\A]A^    H{0 ƃP  uH5    H0          @zE1   AH{8 qHd=     Y	  H    H            t]S    SH    t8HC0K0Ht[    H0  H5        H    H[    =     u	  H    H            f.         H~0 t
       H0  H5                            ATAUHS0  v:/      -  
                HH  A   AujH    1;tHtQ;uDBEuHcHHH#    t1H   HHH?   H)HH!H!H	[H]A\       H  u=?   A  u5          "      tܾ   HH!A HHuH    1Hi;uzuHcHH#    KH   HHH?   H)HH!HH	tTvH    (H    dH   TH      AH    .3   H      f.         U   HAUAATSHHH@eH%(   HD$81ILHCE<t/<   tdHD$8eH+%(     He[A\A]]    LHD$4T$4ud$,   uD$,ALHH   H$H   HD$H  HD$H  HD$H  HD$ H   HD$(H(  HD$0rHCXH   H$HC`HT$(H   HD$HChHT$0HD$HCpHD$HCxHD$ %D$,                SH5    HH       H{ t[    H5    H       [    ff.          tOv8wEHHH
<f @E       E           ff.     f    SH    t+c0H{0 t[    H5    H0      [    =     u̺  H    H                    USH@uƇP  H{0 tJHC@u	f[]    uf@H    H3[H    H    H    ]HE    H5    H0          @H    Hs [H    H    H    ]HE    ff.     @     AVE1AUAHATIUSH    y9E1Ata(  1ҹ   EH      AI[]A\A]A^    (  H  D         xAE1AutuA   M$IAA   u     S   HHeH%(   HD$1)   	  D$ HED$ HCH @  t{H(@ƀt{H(
   t{H( tSHH;rnc4HL$HT$HH    |$ tK,|$ tK,HD$eH+%(   uBH[    HH0@ƀuH0
   uH0H{sS$C(       @     fW4f		ЈG4<uKG ttwCtctuPfyKf% f= tcf= u4  G$1G(        uf% f= t/f= tftg4      R	  H
   머d   f.         ATI   USH(  H      (     H      	yAd$4[]A\    [L]A\f.         USH      HC@        H;Ht       HWc0H{0    CD<tY<t!H{8Ht    HX  Ht4[]    HCHt@tH5    H   H       []    H   Ht@    Ņ~1II    ǹ   H        uCD   <[HC@
H5    H0          ,=     e  H    H                USH    tkHC0t?H   H    H.H       Hc0H{0 t[]    H[]<H5    H0      []    =     u  H    H            f     AWAVAUATAUHSHH0  eH%(   HD$1HT$Ht$D$ L   D$     L               (  D$|$ $  t	$    DL  ,  	Ј,      H{0    HC@u)fHD$eH+%(     H[]A\A]A^A_    uD  ͋$  I    2          I      I    I    I    H3EAUH    AWH    H    H    AVHE    H7H5    H0          
$  I               I      I    I    I  wL    Hs EAUH    AWH    H    H    AVHE    HL,    L,    gL        fD      H]   eH%(   HD$1HH$o HD$        HT$eH+%(   uH                 ATIUHSQ   H   HCHr H@    HH= wiHtBHH    H Ht.LH    xPH2uD]   HLL    HCH{LHH     Hu[]A\    H눸     UHSHHR0Hw eH%(   HD$1{ H$ HD$        HH    ]   HHH    ]   HHH    HD$eH+%(   uH[]        ff.          ATLf@]   UHLSHLHeH%(   HD$1HH$ HD$        ]   HLL    HE{ HCPHEHCXuE$CE(CE4CHD$eH+%(   u
H[]A\        f    UHAWIAVAUI͹   ATIS1HHĀH|$Lt$@LeH%(   HD$x1HD$    HD$    HD$     HD$(    HD$0    HD$8    HHH    I] sIH|$LHt$0HD$0IGHD$8I$HD$@ID$HD$HID$HD$PID$HD$XID$ HD$`ID$(\$`HD$hID$0HD$pwHt$ ]   HT$0HH    ]   LHt$H    H KHD$ LIHD$(IGHD$I$HD$ID$u#HT$xeH+%(   uHe[A\A]A^A_]        ff.         HGHtJ L@tHHs
L!            HGXHHHG`HF    HFHF    GxF F4   	ЈF4   V0t6H   HF$1F,F4F4HyHt$HH@    ̋G|F$   F(   HAH@HtHy t    ̀f4    ff.     f    LT$H   ArUHAWLAVLuAUATARSHLLcH`LeH%(   HE1HL    H    IE8HAH     UC  UEt:E11ɉ	ʈ   L'EĨu	E  L    HEeH+%(     He[AZA\A]A^A_]Ib    Dk E1  U1ɃUĉA8tDA9MEDMUDuMELA  A$  ׉UnEUE1ɉAH`Ht=HH@ Ht1DMED|M    `D|DMMEHAHARAAPAH@@щH    XZMtL    H@  q  E<c  <   tCEĉA8-[C  H5    Hڿ        >EAAHCHSHEHCHUHEHCHEHCHEHCHEHCHEHH ueTuUE1   LLDEEDE1  EE  H   Kƃ!΃!ЈEĄ  1ɋS9UE   DEU	EċCtEHCHEC   EEĨueTu%M LLDEE1EDEt;H9u   EuvL1L<EE1HEĉDMUUDMA   GLLEDEE11:L{H uHz tLLDEEDEz    DI    wL<    }    }I    HMMHH    H        7DI    wL<    }    }I    HMMHH    H        Ed        U   HAUATISHHH@eH%(   HD$81ILH       H{8HtNL    HCHID$0HCPID$8CE<t7<uH{8 tDHD$8eH+%(   uHe1[A\A]]    CFAD$	LHLLaLHLLI뤀=     a_  H    H            ;    ff.     @     UHAVAUIATISHH@eH%(   HD$81    v  IE8HtMH    I     G  tXHT$8eH+%(   a  HeLH[A\A]A^]    H  G  I  8  G  <  y(  fAD$IE8ED$   D         fA.  X  HD	   @H      xfAD$1HT$8eH+%(     He[A\A]A^]    At$EL$AL$DA      $      fA   X  HD	ʁ   @H|$8eH+<%(     H  He[A\A]A^]    A}E GH1ҹ   Et$HfAT$HAEE<C  <   f7  X  *  1AR @A|$`f   X     1AR @H  D    x=     }
  H    H            WH   Et$AT$HHAEE<tN<HL|HDAHT$8eH+%(      H  D{HLHDD	ǁ   @H      HT$8eH+%(   uAADD	ʁ   @        LT$H   ArUHAWAVAULmATILARSHL  L  H`|eH%(   HE1HE    HE    HH    HE    Hߋ|HE    HE    HE    HE    H  HEIGHEH  HEIFHE    E  ttg|LHuLEAÅt_ID$@        HEeH+%(   %  HeD[AZA\A]A^A_]Ib    |Av1uL0  HHǃX      p    DpIID$@        LL   DxM$       L    L    |I\$8LIǄ$$      ML$HA$  H   I$  HELpID$HHEID$PHEHUID$`IT$XH  IF    L    ID$LpDx@uAfx  vHD|    D|ID$x ~  ruf븋|H    wH    D|I4$A]   H    AVH    j]    D|Y^h|H    wH    D|It$ H    A]   AVH    j]    D|XZ    f.         UHSHHW@u  W@WxHHxSxHH_uH[]    HD$    D$H[]    D      AUATUSGDH<   HA<uC@v~    HH=    H    HI    MtqK@uA$  K@KxH;DL    L    t
[]A\A]    SxLHŅu1[]A\A]    L    ƀ{D uff.     f    1@     AWAVAUIATAUHSHGH@   D  L{H]   LE1L      LkX]   HL       D8cE   DcEHCU Sx@U      HC0   []A\A]A^A_    A I      AH    AwH    H3AUH    A]   H        Z.E 9CxgEt낃fHE HCXHEHC`D:cE6E 9Cx*GIE A   HCHIEHCPH1[]A\A]A^A_"A I    vKAH    AwH    Hs AUA]   H    H        XdL    L        f         LT$HArUHAVAUATIHARSHHxeH%(   HE1        `  =PQAEEHǅp    ID$Hǅx    H@#    HE    HH  H  IL$HE    HEH  HE    HEH  HE    HEH   EHEH      HEA$   Eċy>  HHUHuL   IT$R        yKHUeH+%(   *  He[AZA\A]A^]Ib    HMHUDLA$  AD$FzEl$xHLD7xDHLtH߉l    lsA   A   }I$X  Hu    tgHUEHpLHEHxHUHpCIT$R        HUHuLID$@                 LT$H   ArUHAVAUATLeARSHLHhHSeH%(   HE1HE    HE    Hǅx    HB   D  HB#h  HxHj  HE    Lp  HHxHE    LHE    HE    Hp  HUIEHULHEHEH      EHEE   HSR        HUeH+%(     He[AZA\A]A^]Ib    #D  Hh  H3LB    PH    A    H        HSY1    Hxr,HHuHC@        MD4    HC@Etхu6fLHuHDuCt)HSR        uD    L   H߉tSFL3tH    AwDH    H3H    H        _Hh  Hs LBA    PH        H        HSXH    AwDH    Hs H    H        B            ff.         HG8Hu`   u1    H    1    ff.          ATUHSH       Hǃp      HX  HLp  Hǃx      Hh  LHǃh          HX  LH    HX  H      `  t[1]A\    H[]A\=     j  H    H            D         AWAVIAUIATAUHSH(eH%(   HD$ HAHt 1    Htu    A   E1H=      
      HHi  H   H    H        HkH   H0  H8  H8  H@  EHǃH        H  HE HC ADQ  D  D    CFH      Dc@DcxC|H   LsHk0 E11H   1H    HkHLcX    LHHHCHHEHCXID$|H    LH$        IH  CDL    H    LH    uH<$H        tHCx    {D  HE     HE    Hm 	Hm Hm Hm 
Cx   CD  9  8    Z    Hm  Hm Hm Hm Hm Hm HE LHHI$HEID$b  HCH   H	Ј   CD<  CEMt\L    HH= <  HX  HH    H    HA    EyHIc    H    HHD$ eH+%(     H(H[]A\A]A^A_    u?0   HE        )   HE D  Hm  Hm Hm Hm Hm Hm )   HE Hm /   HE Hm 0   HE Hm Hm Hm *   HE +   HE ,   HE -   HE .   HE <PHSR    B      H} H0  H;    YH    L$        IH   H    Hǹ   H    H    Lǃ       Lc$C|    t
ǃ      H    L    tHkh
H    L    tHkhE`  L    E)  CD11H    LHD$    HD$    D$             HT$H    L    H  K|  ~!   tHC@        HELHHHE I$HEID${|   Hꋳ       HE     HE    Hm 	Hm 
Hm Hm H   PHU @HCh]   HLL       H    L    I       1LH        IH= wnH   L    HC@    q    T$1L$   D$C|tHkh
D$Hkh{LH=      bHm     HE !   HE Hm Hm Hm Hm "   HE #   HE (   HE 4   HE 5   HE 6   HE 7   HE 8   HE $   HE %   HE &   HE '   HE 9   HE :   HE ;   HE <   HE =   HE ^Hm SHC@        AHC@        IHL    Hm     HE !   HE HC@        H    oHC@    u            HEHSR    u    HSR    u    HSR    x        LT$H   ArUHAVAULmATIARSHLHXeH%(   HE1HE    HE    H    	  H{8Ht2L    HUeH+%(     He[AZA\A]A^]Ib    HCXLsHIt$@L]   LHEHC`HEHChHEHCpHEHCxHEH   HEH   HE    AD$t<>  cAt$A|$1L    Ht܀{E  UAL$@EE҃	ЈEĀ   HuHX  H%  L    E  HCHLHuHHEIFHE  EtL=L   LsXL    HEUHC|   	Ј   E9Cx  C(   HC0   ECxHEHCXHEIFL    1/{E   H   MHEHm=       H    H            HCHLHuHHEIFHE<L1H7CHڷc(&9S|@;    1f]   LL    HEHHCXHEIFHsX]   L    1HC@        HC@    o            H    H(H(H(H(H(H(H(H(1    H3H    H    [    Hs H    H    [    Hs Hc[H    ]H    A\A]A^    H3Hc[H    ]H    A\A]A^    Hs L[H    ]H    A\A]A^    H3L[H    ]H    A\A]A^    H3HcH    H            Hs HcH    H            H3HcH    H            Hs HcH    H            CxvoI    CEwsH    Hs H    H            Cxv=I    CEw@H    H3H    H            L    L    H    H    HC@u1AD$ vVH    H3H    H                uAD$ v*H    Hs H    H        H    H    HH  HKPL   HtvI4$MH    H    Dp    Dp    HH  HKPL   H   It$ MH    H    Dp    Dp    H녋EIcӃ   H    D|MA]   H    RH    AUj]I4$    D|H    EIcӃvYH    D|It$ MA]   RH    H    AUj]    D|H    H    hHH    뤃v5I    AAwqH    Hs H    H            L    ȃv4I    AAw6H    H3H    H            L    H    H    It$ LcLE]   H    H    l    l    UHc!  I    lHEEA]   VJ    H    H    PI4$    lY^    I4$LcLE]   H    H    l    l    UHc   I    lHEIt$ EWJ    H    A]   PH        XlZ    It$ LE]   H    H            I4$LE]   H    H            L    L    XHs H    H            H3H    H            H3LcLE]   H    H    t    t    H3LE]   H    H    t    t    Hs LcLE]   H    H    t    t    Hs LE]   H    H    t    t    Hs H    H            H3H    H            H} H              H    Hs H    H            Hs H    H            H       H    DC|HDH3H    H            H       H    Hs HDDC|H    H            Hs H    H            H3H    H            u/H    H3H    H            H    H    Hs H    H            H3H    H            Hs H    H            H3H    H            Hs HH    H            H3HH    H            H3H    H            E   I    CE   H    HEHs A]   H    PH        X    E   I    CE   H    HEH    A]   H    PH3    Z    L    gHs M]   H    H            H3M]   H    H            L    cH    H    `                                                                                                                                                                                                                                                                                                                                                                                                                                                              fnu;:v2(,BVV9!_0Ĵn&orrW&AbjxB[R~59E@s\S0%	#bA:G]»9@jҭWbLZ]iYM]l܊phylink_set_port_modes  phylink_caps_to_linkmodes  phylink_get_capabilities  phylink_generic_validate  phylink_create  phylink_destroy  phylink_expects_phy  phylink_connect_phy  phylink_of_phy_connect  phylink_fwnode_phy_connect  phylink_disconnect_phy  phylink_mac_change  phylink_start  phylink_stop  phylink_suspend  phylink_resume  phylink_ethtool_get_wol  phylink_ethtool_set_wol  phylink_ethtool_ksettings_get  phylink_ethtool_ksettings_set  phylink_ethtool_nway_reset  phylink_ethtool_get_pauseparam  phylink_ethtool_set_pauseparam  phylink_get_eee_err  phylink_init_eee  phylink_ethtool_get_eee  phylink_ethtool_set_eee  phylink_mii_ioctl  phylink_speed_down  phylink_speed_up  phylink_decode_usxgmii_word  phylink_mii_c22_pcs_decode_state  phylink_mii_c22_pcs_get_state  phylink_mii_c22_pcs_encode_advertisement  phylink_mii_c22_pcs_config  phylink_mii_c22_pcs_an_restart  phylink_mii_c45_pcs_get_state  drivers/net/phy/phylink.c Link is Down
 6 unknown major config %s
 3 mac_prepare failed: %pe
 pcs_config failed: %pe
 mac_finish failed: %pe
 up down mac link %s
 netdev link off phy link %s %s/%s/%s/%s/%s
 4 switched to %s/%s link mode
 full half &pl->state_mutex fixed-link managed in-band-status speed full-duplex pause asym-pause ? link broken fixed-link?
 rx tx rx/tx  internal mii gmii sgmii tbi rev-mii rmii rev-rmii rgmii rgmii-id rgmii-rxid rgmii-txid rtbi smii xgmii xlgmii moca qsgmii trgmii 100base-x 1000base-x 2500base-x 5gbase-r rxaui xaui 10gbase-r 25gbase-r usxgmii 10gbase-kr qusgmii 1000base-kx phy fixed inband phylink                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          %s: mode=%s/%s/%s/%s/%s adv=%*pb pause=%02x link=%u an=%u
      RTNL: assertion failed at %s (%d)
      mac_select_pcs unexpectedly failed: %pe
        %s: mode=%s/%s adv=%*pb pause=%02x
     configuring for %s/%s link mode
        interface %s: uninitialised PCS
        Link is Up - %s/%s - flow control %s
   validation of %s with support %*pb and advertisement %*pb failed: %pe
  PHY [%s] driver [%s] (irq=%s)
  phy: %s setting supported %*pb advertising %*pb
        requesting link mode %s/%s with support %*pb
   validation with support %*pb failed: %pe
       selection of interface failed, advertisement %*pb
      validation of %s/%s with support %*pb failed: %pe
      optical SFP: interfaces=[mac=%*pbl, sfp=%*pbl]
 unsupported SFP module: no common interface modes
      unsupported SFP module: validation with support %*pb failed
    failed to select SFP interface
 optical SFP: chosen %s interface
       phylink: error: empty supported_interfaces but mac_select_pcs() method present
 can't use both fixed-link and in-band-status
   incorrect link mode %s for in-band status
      failed to validate link configuration for in-band status
       fixed link specifies half duplex for %dMbps link?
      fixed link %s duplex %dMbps not recognised
     unable to attach SFP bus: %pe
  validation of %s/%s with support %*pb failed
                                                                                                                                                                                                                                                                                                                           phylink_change_inband_advert    phylink_mac_change              phylink_sfp_config_optical      phylink_phy_change              phylink_bringup_phy             phylink_sfp_set_config                                          phylink_mac_config              phylink_major_config                                                                                                                                                      @
                            @      P             @            a             N            '                        	                 @                     d             d              
             
       license=GPL v2 depends=libphy retpoline=Y intree=Y name=phylink vermagic=6.1.0-37-amd64 SMP preempt mod_unload modversions                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     (    0  8  @  8  0  (                           @  H  P  X  `  h  p  x    @  H  P  X  `  h  p  x    @                                                                                   (                 (                 (                                                                                                                                                                                                                                                                                  8          8                                                                                                                                           (  0  (                   0  (                   0  (                   0                                                               (  0               (  0                           (  0  (                   0                                                                                                                                                                                                                     (  0  (                   0                                                                                                                                                                           (    0  8  H  8  0  (                     H  P  X  `  H  P  X  `  H                                                                        0          0                     8               8                                                                                 F   H     F            H                                                                  F   H     F            H                                                          (                 (                 (                                   (    0  8  0  (                     8  @  8  0  (                     8  @  8                     F   H     F            H                    F   H     F            H                                                                               (    0  8  `  8  0  (                     `                     F   H     F            H                                 0  (                   0  (                   0  (                   0  (                   0         H 8    H `    H                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               m    __fentry__                                              9[    __x86_return_thunk                                      pHe    __x86_indirect_thunk_rax                                []@(    gpiod_get_value_cansleep                                    linkmode_resolve_pause                                  V
    __stack_chk_fail                                            netif_carrier_off                                       ;.	B    netdev_printk                                           Y    _dev_printk                                             Y    phy_rate_matching_to_str                                =S    phy_duplex_to_str                                           phy_speed_to_str                                         g    __dynamic_netdev_dbg                                    n    __dynamic_dev_dbg                                       .R1    phy_attach_direct                                       g    rtnl_is_locked                                          GV    __warn_printk                                           :C    phy_stop                                                u     sfp_bus_del_upstream                                    h|    gpiod_put                                               -    cancel_work_sync                                        z    kfree                                                   KM    mutex_lock                                              82    mutex_unlock                                            ĕ,/    flush_work                                              '    phy_disconnect                                          b    sfp_upstream_stop                                       ܐ    timer_delete_sync                                       ;JQ    free_irq                                                HG    system_power_efficient_wq                               6    queue_work_on                                           HMvO    phy_ethtool_get_wol                                     	&_f    phy_ethtool_set_wol                                     -    phy_get_eee_err                                             phy_init_eee                                            1E    phy_ethtool_get_eee                                     n    phy_ethtool_set_eee                                     ;    mdiobus_read                                            XV    mdiobus_write                                               swphy_read_reg                                          >    phy_speed_down                                          K    phy_speed_up                                            |c    __x86_indirect_thunk_rdx                                UH    timer_delete                                            P    jiffies                                                     mod_timer                                               ^@    phy_restart_aneg                                        Ph    linkmode_set_pause                                      G    phy_set_asym_pause                                      FW    mdiobus_modify                                          
    mdiobus_modify_changed                                  n")    phy_start                                               +    sfp_upstream_start                                      e2    gpiod_to_irq                                            Ւ    request_threaded_irq                                    W8E    phy_get_pause                                           g!2    __bitmap_subset                                         W    __bitmap_and                                            `-k    dump_stack                                              t    __bitmap_or                                             I    netif_carrier_on                                        L    phy_ethtool_ksettings_get                               lΥ    phy_mii_ioctl                                           N\    phy_support_asym_pause                                  7
    phy_get_rate_matching                                   S    phy_attached_info_irq                                   
    phy_request_interrupt                                   7H    phy_detach                                              A     fwnode_get_phy_node                                     Q    fwnode_phy_find_device                                  ԛj    fwnode_handle_put                                       7|    phy_device_free                                             __bitmap_equal                                          A>    sfp_select_interface                                    !Gx    sfp_parse_support                                           sfp_parse_port                                          Vc    sfp_may_have_phy                                        -    kmalloc_caches                                          wX    kmalloc_trace                                               __mutex_init                                            9c    init_timer_key                                          .'    fwnode_get_named_child_node                             kf    fwnode_property_read_string                             Z%    strcmp                                                  ب    sfp_bus_find_fwnode                                     B$    sfp_bus_add_upstream                                    [w    sfp_bus_put                                             ¨    fwnode_property_read_u32_array                          U    fwnode_property_present                                 I     phy_lookup_setting                                      `+    fwnode_gpiod_get_index                                  9I    _dev_err                                                
w    phy_ethtool_ksettings_set                               zR    module_layout                                                    	        	        E			        /		        		        		        		        0		        			        			        			        
		        
		        3			        Y			        			        		        e		        		        _		        
		        		        		                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        9                                                     9                                                     L                                                     L                                                                                                                                                               =                                                     =                                                     5                                                     5                                                                                                                                                                                                                                                                                         phylink                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  GCC: (Debian 12.2.0-14+deb12u1) 12.2.0  GCC: (Debian 12.2.0-14+deb12u1) 12.2.0         (  (           
9             X    ^          
Y E    H   V         [     @   d       t         ^        @           \     b           @       @       @      @       @       @       @       @         [       
      \                   k          ] A=      h        #       P=        W=    0          
=j        %      _=  @   L m    g= v    :"       k=    @ z=         
    = =j     = $      = $   (  = $   0  _\ 
   @  = h   = =j    = M    =       = I  @  >    > G     h   w Q  	  > K   
  /> K   
    
  
   K      D>   @  S> 
     _> $             a h>      \y *       by $       K $   (          
c t>      \v         \y        by    @   T    `   Z              
e          >     >    >    >    >    >     >    >    >    ?    ?    ?    $?    +?    5?     ?? 0   G? @   R?    ]?    f?    q?    |?    ?    ?    ?     ?  @  ?    ?    ?    ?    ? 
  8   %{ 
       1{ 
      J =j     \y       by    @  T    `  y      \v      ?     	@            
h @      %@     4@    @@ 	  (   :"        c  j @   O@ K   `   d@ K   h    K   p   u@ K   x   > o    @      @             
        m     n        k        h        l @ 	  H   O s     @ w @   @ o    @ y    @ |    @ y @  @ ~   A    A            
p       
        m            n        r %A      )       	  K   @         
v     m     =j         t        u       
       m            =j         x       
        m            {        i        z       
        m        }       
        m            =j                
        m     
             =j                    K       K           1A   (   AA      NA  @   \A     gA     vA            
               
       v            {               
        v     n               
       v            =j            K                 
        v               
        v            =j                                 A     A    A           q       
        %      n                           \y    @   by    `                                `              
        f        d        _ A    p         
    g= _    n A           
    g= _  A           
   g= _  "     J =j  %{   B           
   J =j  %{   ,B     UB           
      n sB &   xB &   |B           
      n xB t  B           
      n B t  \y    B           
     k   B           
    k    
  B     C     #C     9C           
    k   QC           
    k   x   } jC           
   V b C           
    V b "  $   _\      n C           
     k     
  C     C     C           
   V b Ni  K   C           
   V b 
   :     D           
   S      n D           
   V b +
	 p?  (D    Ĉ @D    Ĉ       
   V b XD K   hD    ǈ yD           
   V b T =?  D    ʈ       
    V b T =?  D    ̈ D           
   V b a  }?  D    ψ       
   V b a  z?  E    ш       
      { a  z?  "E    ӈ       
   V b ^ !?  8E    Ո       
    V b ^ !?  PE    ׈       
    V b hE    و       
    V b wE K   E    ۈ E    و E    و E    N        
    V b < K   E     E    و       
   V b T    ]  *   E           
   V b 
   ]  *   F           
   V b  
  F           
   V b  
  J =j  /F     BF           
       
  < K   VF           
K   V b iF     }F    و       
b L m T    v =j  _=  F     F    }Y  F    .  F    و       
    V b F K   F           
    V b   n F     G           
    V b ^ K     { ,G     AG    و       
    V b   { \G           
   V b _\      n oG            
   V b _\      n ݽ   G     G            
    L m _\      n G           
   J =j  @    y    G           
    G    a    G    	       
   J =j  	H           
   %H   .H    
       
         HH     mii_ioctl_data val_in val_out mac_ops pcs old_link_state phylink_disable_state link_interface cfg_link_an_mode cur_link_an_mode link_port link_config cur_interface link_gpio link_irq link_poll get_fixed_state state_mutex mac_link_dropped using_mac_select_pcs sfp_interfaces sfp_support sfp_port phy_setting fixed_phy_status MLO_PAUSE_NONE MLO_PAUSE_RX MLO_PAUSE_TX MLO_PAUSE_TXRX_MASK MLO_PAUSE_AN MLO_AN_PHY MLO_AN_FIXED MLO_AN_INBAND MAC_SYM_PAUSE MAC_ASYM_PAUSE MAC_10HD MAC_10FD MAC_10 MAC_100HD MAC_100FD MAC_100 MAC_1000HD MAC_1000FD MAC_1000 MAC_2500FD MAC_5000FD MAC_10000FD MAC_20000FD MAC_25000FD MAC_40000FD MAC_50000FD MAC_56000FD MAC_100000FD MAC_200000FD MAC_400000FD phylink_link_state an_enabled an_complete phylink_op_type PHYLINK_NETDEV PHYLINK_DEV phylink_config legacy_pre_march2020 poll_fixed_state ovr_an_inband supported_interfaces mac_capabilities phylink_mac_ops mac_select_pcs mac_pcs_get_state mac_prepare mac_config mac_finish mac_an_restart mac_link_down mac_link_up phylink_pcs phylink_pcs_ops pcs_validate pcs_get_state pcs_config pcs_an_restart pcs_link_up PHYLINK_DISABLE_STOPPED PHYLINK_DISABLE_LINK PHYLINK_DISABLE_MAC_WOL phylink_init phylink_mii_c45_pcs_get_state phylink_mii_c22_pcs_an_restart phylink_mii_c22_pcs_config phylink_mii_c22_pcs_encode_advertisement phylink_mii_c22_pcs_get_state bmsr lpa phylink_mii_c22_pcs_decode_state phylink_decode_usxgmii_word config_reg phylink_decode_c37_word phylink_sfp_disconnect_phy phylink_sfp_connect_phy phylink_sfp_link_up phylink_sfp_link_down phylink_sfp_module_stop phylink_sfp_module_start phylink_sfp_module_insert phylink_sfp_config_optical phylink_sfp_set_config phylink_sfp_detach phylink_sfp_attach phylink_speed_up phylink_speed_down phylink_mii_ioctl phylink_mii_emul_read phylink_ethtool_set_eee phylink_ethtool_get_eee clk_stop_enable phylink_init_eee phylink_get_eee_err phylink_ethtool_set_pauseparam phylink_ethtool_get_pauseparam phylink_ethtool_nway_reset phylink_ethtool_ksettings_set phylink_ethtool_ksettings_get phylink_get_ksettings phylink_ethtool_set_wol phylink_ethtool_get_wol phylink_resume mac_wol phylink_suspend phylink_stop phylink_start phylink_link_handler phylink_mac_change phylink_disconnect_phy phylink_fwnode_phy_connect phylink_of_phy_connect phylink_connect_phy phylink_attach_phy phylink_bringup_phy phylink_phy_change phylink_expects_phy phylink_destroy phylink_create phylink_fixed_poll phylink_resolve phylink_link_down force_restart phylink_mac_initial_config phylink_get_fixed_state phylink_mac_pcs_get_state phylink_major_config phylink_mac_pcs_an_restart phylink_mac_config phylink_validate phylink_validate_mask phylink_validate_mac_and_pcs phylink_generic_validate phylink_get_capabilities linkmodes phylink_caps_to_linkmodes phylink_interface_max_speed linkmode phylink_is_empty_linkmode phylink_set_port_modes   phylink.ko  Wr                                                                                               
                                                                  %                      &                      *                       |                                     >      H               ]      D               |                                                <                                          t                     @                                   6     T               O                    c                    v                         x                                         8                    $                    (               %     ,               F                    k     4                    L                    P                                        0                    p                                   .                    E                    g     `                    h                    d                    \                    X               '     l               K                  b                  o                      *       	           3       
           @       <                                     $                                                    	 t              @                    d     2                   	                      3                    L                   	                     M               <     f               a    	                     g                    v                   	                     w                                       	 0               !                    ?                    _    	                }                                            	                                                            	 \              >                    c                        	                                                            	 <               	                    1	                   P	    	                m	                   	                    	    	               	     !              	     .              	    	               	     /              
     ?              4
    	               N
     @              g
     O              
    	 h              
     P              
     h              
    	 `                    i              %                   I    	                k                                          	 l                                  
                   7    	 x               _                                          	                                                      $
    	 T               M
                   v
                   
    	                
                   
     0                  	                &     1              A     B              ^    	                y     C                   [                  	 H                    \                   t              '    	                I     u              e                       	 P                                                        	                                                     0    	               K                   q                       	 $                                                         	                B                   j                       	 8                                      5              $    	 ,              W     6              |     Q                  	                    R                   q                  	               E     r              m                       	 D                                                       @                         ;          *                %                  =           O       O            /       f    P            y   &       8          &       8                                                                       L          % 
                               
   %                   	      
       7   %               I   %               [   %               m   %                  %                  %                  %                                   %                  %                         X       	    P               & H      8       7   &       8       P    /              j   %               |    p      e         &       8                            &       8          % 	                        v          %                          8       ,                @          i      [    P      B       n          i          %                   &       8          & P      8                            %                   /                %                   P"            '   & h      8       @   & 0      8       Y                   d    $      X       ~    @%                                  &                 P'                 )      9           @)                 *      i      $   % 
              6   %               H    4      V      \   &       8       u   &       8           K      R          @9               &       8          &        8                        
    0;            "    6            ?    =            Z   &        8       r   & p       8           @                 & 8       8          &         8                 6          @      2            A             .   %               ?   *                 H    `      P       X          	      l   %               ~                    @                 `                                                                                                         #                )    
                 .                     B                     [                     d                     u                                                             (                                                                                  `      u                            )          (            `      v                                                                                                                                    +                     B                     [                     m                     |                                                      ;            B      ?	      i           0                                                 &    
      B                                                                                                                           b                            3                     F                     >
    
             _                     ~                               a                            :          _                                                                                                                    @	                                                       .
    `      r       h          !                                       d                            $                     1                     @                     P                     e                     |                     	    @       `      
    !             k     &             
                                               f       1    P
      a       
    p      d                                                     @                                      P8                                  	     
                                                                                                  .          c       -                      @                      T                      [                      p                      A    @K            x                                                P      U                                                                                               Z	                                       !                     !                     "!                     3!                     A!                               h       S!                     g!                          	      ;           /            x!                     !                  !                     S          a       !                     !                     !                         0            '    09             !                     !                     !                     "                     "                     ."                     ="                     L"                         7      k       a"                     l"                      __crc_phylink_set_port_modes __crc_phylink_caps_to_linkmodes __crc_phylink_get_capabilities __crc_phylink_generic_validate __crc_phylink_create __crc_phylink_destroy __crc_phylink_expects_phy __crc_phylink_connect_phy __crc_phylink_of_phy_connect __crc_phylink_fwnode_phy_connect __crc_phylink_disconnect_phy __crc_phylink_mac_change __crc_phylink_start __crc_phylink_stop __crc_phylink_suspend __crc_phylink_resume __crc_phylink_ethtool_get_wol __crc_phylink_ethtool_set_wol __crc_phylink_ethtool_ksettings_get __crc_phylink_ethtool_ksettings_set __crc_phylink_ethtool_nway_reset __crc_phylink_ethtool_get_pauseparam __crc_phylink_ethtool_set_pauseparam __crc_phylink_get_eee_err __crc_phylink_init_eee __crc_phylink_ethtool_get_eee __crc_phylink_ethtool_set_eee __crc_phylink_mii_ioctl __crc_phylink_speed_down __crc_phylink_speed_up __crc_phylink_decode_usxgmii_word __crc_phylink_mii_c22_pcs_decode_state __crc_phylink_mii_c22_pcs_get_state __crc_phylink_mii_c22_pcs_encode_advertisement __crc_phylink_mii_c22_pcs_config __crc_phylink_mii_c22_pcs_an_restart __crc_phylink_mii_c45_pcs_get_state __UNIQUE_ID_depends193 ____versions __UNIQUE_ID_retpoline192 __UNIQUE_ID_intree191 __UNIQUE_ID_name190 __UNIQUE_ID_vermagic189 _note_10 _note_9 __kstrtab_phylink_set_port_modes __kstrtabns_phylink_set_port_modes __ksymtab_phylink_set_port_modes __kstrtab_phylink_caps_to_linkmodes __kstrtabns_phylink_caps_to_linkmodes __ksymtab_phylink_caps_to_linkmodes __kstrtab_phylink_get_capabilities __kstrtabns_phylink_get_capabilities __ksymtab_phylink_get_capabilities __kstrtab_phylink_generic_validate __kstrtabns_phylink_generic_validate __ksymtab_phylink_generic_validate __kstrtab_phylink_create __kstrtabns_phylink_create __ksymtab_phylink_create __kstrtab_phylink_destroy __kstrtabns_phylink_destroy __ksymtab_phylink_destroy __kstrtab_phylink_expects_phy __kstrtabns_phylink_expects_phy __ksymtab_phylink_expects_phy __kstrtab_phylink_connect_phy __kstrtabns_phylink_connect_phy __ksymtab_phylink_connect_phy __kstrtab_phylink_of_phy_connect __kstrtabns_phylink_of_phy_connect __ksymtab_phylink_of_phy_connect __kstrtab_phylink_fwnode_phy_connect __kstrtabns_phylink_fwnode_phy_connect __ksymtab_phylink_fwnode_phy_connect __kstrtab_phylink_disconnect_phy __kstrtabns_phylink_disconnect_phy __ksymtab_phylink_disconnect_phy __kstrtab_phylink_mac_change __kstrtabns_phylink_mac_change __ksymtab_phylink_mac_change __kstrtab_phylink_start __kstrtabns_phylink_start __ksymtab_phylink_start __kstrtab_phylink_stop __kstrtabns_phylink_stop __ksymtab_phylink_stop __kstrtab_phylink_suspend __kstrtabns_phylink_suspend __ksymtab_phylink_suspend __kstrtab_phylink_resume __kstrtabns_phylink_resume __ksymtab_phylink_resume __kstrtab_phylink_ethtool_get_wol __kstrtabns_phylink_ethtool_get_wol __ksymtab_phylink_ethtool_get_wol __kstrtab_phylink_ethtool_set_wol __kstrtabns_phylink_ethtool_set_wol __ksymtab_phylink_ethtool_set_wol __kstrtab_phylink_ethtool_ksettings_get __kstrtabns_phylink_ethtool_ksettings_get __ksymtab_phylink_ethtool_ksettings_get __kstrtab_phylink_ethtool_ksettings_set __kstrtabns_phylink_ethtool_ksettings_set __ksymtab_phylink_ethtool_ksettings_set __kstrtab_phylink_ethtool_nway_reset __kstrtabns_phylink_ethtool_nway_reset __ksymtab_phylink_ethtool_nway_reset __kstrtab_phylink_ethtool_get_pauseparam __kstrtabns_phylink_ethtool_get_pauseparam __ksymtab_phylink_ethtool_get_pauseparam __kstrtab_phylink_ethtool_set_pauseparam __kstrtabns_phylink_ethtool_set_pauseparam __ksymtab_phylink_ethtool_set_pauseparam __kstrtab_phylink_get_eee_err __kstrtabns_phylink_get_eee_err __ksymtab_phylink_get_eee_err __kstrtab_phylink_init_eee __kstrtabns_phylink_init_eee __ksymtab_phylink_init_eee __kstrtab_phylink_ethtool_get_eee __kstrtabns_phylink_ethtool_get_eee __ksymtab_phylink_ethtool_get_eee __kstrtab_phylink_ethtool_set_eee __kstrtabns_phylink_ethtool_set_eee __ksymtab_phylink_ethtool_set_eee __kstrtab_phylink_mii_ioctl __kstrtabns_phylink_mii_ioctl __ksymtab_phylink_mii_ioctl __kstrtab_phylink_speed_down __kstrtabns_phylink_speed_down __ksymtab_phylink_speed_down __kstrtab_phylink_speed_up __kstrtabns_phylink_speed_up __ksymtab_phylink_speed_up __kstrtab_phylink_decode_usxgmii_word __kstrtabns_phylink_decode_usxgmii_word __ksymtab_phylink_decode_usxgmii_word __kstrtab_phylink_mii_c22_pcs_decode_state __kstrtabns_phylink_mii_c22_pcs_decode_state __ksymtab_phylink_mii_c22_pcs_decode_state __kstrtab_phylink_mii_c22_pcs_get_state __kstrtabns_phylink_mii_c22_pcs_get_state __ksymtab_phylink_mii_c22_pcs_get_state __kstrtab_phylink_mii_c22_pcs_encode_advertisement __kstrtabns_phylink_mii_c22_pcs_encode_advertisement __ksymtab_phylink_mii_c22_pcs_encode_advertisement __kstrtab_phylink_mii_c22_pcs_config __kstrtabns_phylink_mii_c22_pcs_config __ksymtab_phylink_mii_c22_pcs_config __kstrtab_phylink_mii_c22_pcs_an_restart __kstrtabns_phylink_mii_c22_pcs_an_restart __ksymtab_phylink_mii_c22_pcs_an_restart __kstrtab_phylink_mii_c45_pcs_get_state __kstrtabns_phylink_mii_c45_pcs_get_state __ksymtab_phylink_mii_c45_pcs_get_state phylink_interface_max_speed phylink_sfp_attach phylink_sfp_detach phylink_init phylink_sfp_interfaces phylink_get_fixed_state phylink_link_down phylink_link_down.cold phylink_mac_config __UNIQUE_ID_ddebug389.38 __UNIQUE_ID_ddebug391.37 modestr.75 __func__.74 CSWTCH.138 phylink_attach_phy __already_done.16 phylink_sfp_module_stop __already_done.28 phylink_sfp_disconnect_phy __already_done.24 __already_done.23 __already_done.21 __already_done.20 __already_done.14 __already_done.13 __already_done.12 phylink_mii_emul_read __already_done.10 __already_done.9 phylink_mac_pcs_an_restart phylink_major_config __UNIQUE_ID_ddebug393.36 __UNIQUE_ID_ddebug395.35 phylink_major_config.cold __already_done.17 phylink_change_inband_advert.isra.0 __UNIQUE_ID_ddebug397.34 __func__.82 __UNIQUE_ID_ddebug399.33 __already_done.15 phylink_sfp_link_down __already_done.1 phylink_link_handler phylink_caps_params phylink_mac_initial_config phylink_fixed_poll phylink_sfp_link_up __already_done.0 __UNIQUE_ID_ddebug416.27 __UNIQUE_ID_ddebug418.26 phylink_decode_c37_word __already_done.25 phylink_start.cold __already_done.22 phylink_phy_change __UNIQUE_ID_ddebug404.32 __UNIQUE_ID_ddebug406.31 CSWTCH.147 phylink_is_empty_linkmode phylink_validate_mac_and_pcs phylink_validate_mac_and_pcs.cold phylink_get_ksettings phylink_validate_mask phylink_validate phylink_mac_pcs_get_state phylink_resolve __already_done.19 __already_done.11 phylink_bringup_phy __UNIQUE_ID_ddebug408.30 __UNIQUE_ID_ddebug410.29 phylink_bringup_phy.cold phylink_sfp_set_config __UNIQUE_ID_ddebug439.8 __UNIQUE_ID_ddebug441.7 phylink_sfp_set_config.cold phylink_sfp_connect_phy phylink_sfp_connect_phy.cold phylink_sfp_config_optical __UNIQUE_ID_ddebug443.6 __UNIQUE_ID_ddebug445.5 phylink_sfp_interface_preference __UNIQUE_ID_ddebug447.4 __UNIQUE_ID_ddebug449.3 phylink_sfp_config_optical.cold phylink_sfp_module_start phylink_sfp_module_insert __already_done.2 __key.71 sfp_phylink_ops phylink_create.cold __already_done.18 phylink_ethtool_ksettings_set.cold __func__.81 __func__.80 __func__.79 __func__.78 __func__.76 __func__.73 __UNIQUE_ID_license459 __UNIQUE_ID___addressable_init_module458 .LC0 sfp_bus_find_fwnode gpiod_get_value_cansleep free_irq phy_restart_aneg gpiod_put rtnl_is_locked __this_module queue_work_on phy_mii_ioctl sfp_bus_put phy_ethtool_set_eee gpiod_to_irq kfree phy_ethtool_set_wol __bitmap_and timer_delete timer_delete_sync fwnode_phy_find_device phy_rate_matching_to_str __dynamic_dev_dbg sfp_parse_port __fentry__ phy_speed_to_str init_module phy_get_eee_err __bitmap_equal __x86_indirect_thunk_rax dump_stack __stack_chk_fail phy_speed_up fwnode_gpiod_get_index linkmode_resolve_pause phy_lookup_setting __x86_indirect_thunk_rdx fwnode_property_read_u32_array phy_request_interrupt phy_init_eee phy_detach _dev_err request_threaded_irq mod_timer phy_attached_info_irq netdev_printk mutex_lock phy_speed_down sfp_upstream_stop mdiobus_read mdiobus_modify __bitmap_subset sfp_bus_add_upstream mdiobus_modify_changed sfp_upstream_start __mutex_init fwnode_get_phy_node phy_start linkmode_set_pause sfp_select_interface phy_device_free __bitmap_or __x86_return_thunk fwnode_get_named_child_node phy_set_asym_pause phy_ethtool_get_eee strcmp __dynamic_netdev_dbg jiffies fwnode_property_read_string fwnode_property_present mutex_unlock phy_get_rate_matching init_timer_key sfp_may_have_phy phy_support_asym_pause phy_get_pause mdiobus_write cancel_work_sync __warn_printk netif_carrier_off phy_ethtool_get_wol netif_carrier_on phy_ethtool_ksettings_get phy_ethtool_ksettings_set swphy_read_reg kmalloc_trace fwnode_handle_put phy_attach_direct phy_stop _dev_printk phy_duplex_to_str system_power_efficient_wq phy_disconnect kmalloc_caches sfp_bus_del_upstream flush_work sfp_parse_support             %  &          `  K          `  \          `  q          `            `            `            `            `            `            `            `            %           `           `  !         %  0         `  A         %  T         `  a         %           `           `           %           `           %           `           %  i         -           `           
           3           /           %           v  -         -  <            E                   K         `  Q         %           -           "                      &              +                   +                                                               4                   9         f  W         "  l           |         &              +                   +                                                                                           #                                                   %  0           N         `  X         `  a         %  n                    `                                                     @                                   u           %                      `  	         %  	           "	           .	         t  7	           A	         %  O	           r	         C  z	         C  	         l  	         l  	           	           	         `  	                   	                    	            @       	                   	         u  	         %  
         %  

           #
         H  1
           =
            [
         `  c
           }
           
           
           
            
       
                    
            @       
            
       
         u  
         %  
                    C           v  #         l  ;         l  A                   P                    W            @       ]                   c         u  q         %  ~                    x           `              
                                       @                   
                u           %                                    	                           !            @       '            	       -         u  =         `  Q         %  Z           m         *  u         `  {                                                   @                                   u           %           :           `           %             
         d  
                   
                    !
            @       '
                   -
         u  =
         `  Q
         %  ^
           u
           {
                   
                    
            @       
                   
         u  
         `  
         %  
         I  
         `  
         s           %  n                    `           /           %                      `           F                                              @       
                     u  !         %  <         I  b         `  l         `           `           %                      `           0                                              @                            u           %  
         `  (         5  C         5  Q         %           -             +         -  ^         -           `           -              M                   +                `              +       
            3                   H               f  -                   6                  c                   q                   {            +                   3                                  #                                 n                g           ?                                                   %                        2         `  8                   G                    N            @       T                   Z         u  q         %           -           `           `              +                                       +       &                  6                  =                   D                   M         f  u            +                   +                                                                                          #                               %             j         C           Z           l           c           `             "           [                   n                    u            @       {                            u           %                      `                                                                               @                            u  !         %  2         `  @           J           T         `  a         %                                       _         `                                               %  M         `  E         /  Q         %  Y         g  h         ?  u         `  |                               %           `           `           `           %             0         `  7           I           O            ^                    e            @       k            q         u           %           `                                                                                      f                        	                                                         #            P      -         #  A         %  a         b           J           `           M           %           3           `           /           %  v         `  {         `           `           %           I            I             `  A          %  K            b             g      k             +      x          v            X            N            g            ?            `  !           !                   '!                   ,!         >  S!           d!           o!                   !                    !            @       !                   !         u  !         %  !           !         C  !         l  !         `  "           "            "                   /"                    6"            @       <"                   B"         u  Q"         %  "         r  "         C  #         l  P#         `  i#                   #         "  #           #         &  #            +       #                   #                   #                   #            h      #         f  #           
$           $                   6$         "  D$           R$         &  Y$            +       o$                    $                   $                   $                   $            0      $         #  $                    $                    $                    $         /  $         %  %         K  /%         `  4%         /  A%         %  o%         -  %                  %         -  %           %         -  %         `  &         %  =&           H&           [&           n&           &         `  &         /  &         %  &           &         _  E'         `  J'         /  Q'         %  r(         _  (         _  (         `  (         /  )         %  5)         `  A)         %  )         -  )         -  )         `  *         %  l*         C  *         l  +         `  +         -  &,         -  5,         y  ,           ,           .         /  .                   .                    .           .         &  /                  /            (       /           #/                   6/                    >/           I/         &  `/                  g/            (       l/         B  /         %  /           /         |  0         `  [0                   n0                    u0            @       {0                   0         u  0         /  0         %  0           /1           1         I  1         `  2         s  J3         I  U3                    h3                    o3            @       u3                    {3         u  C4         I  |4         /  4         %  4         q  M5         m  5                  5            +      5         `  5            P"      5         @  6            G      6                  <6           D6         C  L6         C  6         l  6         l  7         8  97            +       F7                    ^7                  g7                  n7         f  7            +       7                    7                  7                  7         #  7         /  7         %  ,8         `  88         <  G8         `  Q8         %  8         W  8         !  8           8           8         ^  8         `  9         `  9         <  19         %  A9         %  9         +  9         +  9                  9         `  9            +       :            +       :                  %:                  2:                  7:         f  :            +       :            +       :                  :                  :                   ;         #  ;                    ;                    #;                  1;         %  l;         q  ;         	   j<                  s<            2      <         `  <         <  &=         \  n=            g      |=                  =            r      =            L      =         /  =         %  >                  >                  ?         `  1?                  >?                   C?         f  V?            @      y?                  ?                  ?            @      ?                  ?            K      @            +       ,@                    6@            p      =@            8       B@         f  d@                  p@            p       u@         #  @            +       @                    @            p      @                    @         #  @                  @                  @         /  @         %  @         `  A         X  A         `  !A         %  0A           yA           A         $  A         o  A         `  A            A                    A            @       A            A         u  B         %  9B         -  JB                  \B           D       kB           B         	           B                   B         S  B            *      DC            P      QC         n  C                  C         a  C           C                  C         i  C                  C         e  D           D            `      E         L  E            E           *E           [E         `  cF                  qF                  F         v  F                  F         a  F            .      F         7  F            4      F         j  F            @      G         j  G            F      G         j  5G           RG                  tG         7  G                  G         7  G                  G            )      H         4  eH           xH                  H         j  H            Q      H            S      H         1  H           H            E      H            }      7I           7J                  @J                  WJ            }      `J            a      rJ           J                  J                  J           J            F      J            *      J           J         /  J                  K                  K                  K                  -K                  ;K                  AK         %  K           K         ~  K         `  2L           cL         4  L         \  M         C  {M         l  M                   M                    M            @       M                   M         u  [N         +  N         +  N            	      N            	      N            @	      N                  N         /            %            	           7          `                      
             (                 B                      %             (       +            :             G       B             D       M            [             G       c             D       n          B  }             h                    D                                h                    D                 B               x                    D                 B               f                   x                    D                                f                   `                   D                B              6                  `       !            D       &           +            6      :            +       K                  V                   ]            (       b           g            k       v            +                                                        (                B              k                                                           +                   +                   +                                      D                B           .              %                  +       %                   ,            D       1           ;                    E                    l                  s            (                B              6                                    (                              6                  +                                      8               B  +            5      =            +       Z                   a            8      j           z            5                                                          +                                                        (                              9                                      +                                                        (                B              9                          '            +       0            +       J                  Q            D       \           g            s<      }            +                                     p                  D                B              s<                                    D                B              s<      	            +       %                  ,            p      :            D       ?           L            s<      a            8      h            D       m           r            =                  8                  D                B              =                                                          P                  D                              ?                  P                  D                B              ?                                    D                B              >      .                  5            D       @         B  K            >      b                  i            D       t                       >                                    D                              >                                    D                              ?                                    D                B              ?                                 =              *E      
                                                  D       $           )            J      4                  ;                   @           E            G      L                   Z                   l                  s                   x         B  }            RH                                                                                                        RH                                    D                              J                                    D                B              J                                                        D                B              J                  +       (            +       5            H      <            D       A           F            J      P            H      W            D       \         B  a            J      l            X      s            D       x           }            `J                  X                  D                B              `J                                    D                              @J                                    D                B              @J                                                    B              G      	            +       	                  -	                  5	            D       :	           @	            DL      S	            +       h	                  s	                  	            D       	         B  	            DL      	                    	            8      	            D       	           	            DL      	            8      	            D       	         B  	            DL      	                    	            +       
            +                                      :                     ;                                         L                     M                     (                    C                      D           $                    (                     ,                     0          z          4          F           8          G           <          A          @          U           D          V           H          9          L                     P                     T          D          X          v           \          w           `          V          d          g           h          h           l          {          p          m           t          n           x          h          |          p                     q                     2                    s                     t                     U                                                              R                    y                     z                                         j                     k                     )                    I                     J                     [                    R                     S                     Q                    @                     A                                         =                     >                     k                    |                     }                     E                                                              p                    X                    Y                    ,                                                           Y                                                            }          $                    (                    ,         b          0                    4                    8         T          <                    @                    D         G          H                    L                    P                   T                    X                    \                   `         O           d         P           h         P          l         d           p         e           t                   x         7           |         8                    w                                                           ;                                                           O                   [                    \                    ]                   ^                    _                    6                   a                    b                                                                                      @                    `      (                   0                   8                     @                    H                    P             P      X                   `             `      h                   p              	      x             @	                   	                    
                   
                   p                                      P                                                         P
                   
                                                                                                                   P                                      p                                                              (            `      0                  8            P      @                  H                  P                  X            @      `                   h                   p                  x            @                   !                  P"                  $                  @%                   &                  &                  P'                   )                  @)                  *                  /                  0                  4                  7                  P8                  09                   @9                  0;                  =                  @                    A      (             B      0            @K                    O
                                      "                                       !                    l                   o                   r                    x      (             y      0                   8                   @                   H                   P                   X                   `                   h                   p                   x                                                                                                                                                                                                                                                                    #                   )                   .                   8                   B                  J                  U                  ]                  i                  m                  s      `                   h            @      p             A                  @                                                                        0;                  	                                       '                   B                   )                   )                   h                   ,                                       *      $             ]      (                   ,                   0             n%      4             %      8             %      <             +      @             %,      D             8B                    %                    J                    [                    p                                                                                                            $                    (                    ,             
      0                   4             /      8             S      <                   @                   D                   H                   L                   P             J      T             M      X             W      \                   `                   d             	      h             Z
      l                   p             <      t             t      x                   |             <
                   
                   
                                                         a                   k                                                         	                                                         1                                                                                               1                   S                   ^                   L                   t                                                                            /                                                                            u                   z                                                                             !                  O#                  .%                  %                  &                  D'                  (                   4)      $            )      (            +      ,            0      0            1      4            5      8            +8      <            F8      @            8      D            9      H            9      L            <      P            ?      T            @      X            
A      \            A      `            ZE      d            K      h            6                                                                                  4                   @                   X                   `                                             $                   (                   ,                   0                    4                   8             
      <                   @                   D                   H                   L                    P                   T             J      X             O      \             P      `             W      d             Y      h             [      l             ]      p             ^      t             b      x             i      |                                                                                                                                                                                                           %                   '                   (                   *                   ,                   0                   1                   E                                                                                                                                                                                                                                    \                   `                   f                   j                                                                                                                                	                  	                   6	      $            ;	      (            @	      ,            G	      0            I	      4            J	      8            K	      <            	      @            	      D            	      H            	      L            	      P            	      T            	      X            	      \            	      `            	      d            	      h            	      l            	      p             
      t            
      x            Z
      |            _
                  
                  
                  
                  
                  
                  
                  !                  "                  '                  +                  ,                  1                  9                  :                  ?                  n                  p                  v                  z                                                                                                                                                                                                                                          	                   ;                  <                  A                  P                  V                  l                  q                  t                   y      $                  (                  ,                  0                  4                  8                  <            
      @            
      D            	
      H            ;
      L            <
      P            A
      T            P
      X            V
      \            Z
      `            s
      d            t
      h            y
      l            
      p            
      t            
      x            
      |            
                  
                  
                  
                                                                                                                                                                                                                                                                                                                                                                                                              &                  a                  f                  k                  p                                                                                                                                                                                                       ,                   -      $            G      (            P      ,            W      0            \      4            ^      8            _      <            c      @                  D                  H                  L                  P                  T                  X                  \                  `                  d                  h                  l                  p                  t                  x                  |                                                                                                                                           0                  1                  6                  b                  p                  ~                                                                                                                                                                                    I                  J                  L                  Y                  b                  c                  h                                                                                                                                                                                                                                                  $                  (                  ,                  0                   4                  8                  <                  @                  D                  H                  L                  P                   T            X      X            `      \            g      `            k      d            o      h            X      l            \      p            ^      t            c      x                  |                                                                  L                  Q                  I                  P                  V                  t                  y                                                                                                                              /                  4                  H                  M                  y                                                                                                                                                                                                      (                  1                   @                  G                  L                  T                  X                  [                                                             $                  (                  ,                  0                  4                   8                  <                  @                  D                  H                  L                  P                   T                  X                  \                  `                  d                  h                   l                   p                   t            $       x            %       |            ,                   1                   6                   @                   F                   G                                                                                                                                     !                  !                  !                  !                  !                  !                  !                  !                  "                  "                  "                  "                  M"                  P"                  W"                  Y"                  ["                  ]"                  a"                  e"                  i"                   E#                  F#                  G#                  I#                  K#                  M#                  O#                  T#                   #      $            #      (            #      ,            #      0            |$      4            $      8            $      <            $      @            $      D            $      H            $      L            .%      P            3%      T            8%      X            @%      \            G%      `            K%      d            O%      h            %      l            %      p            %      t            %      x            %      |             &                  &                  
&                  &                  &                  &                  &                  &                  &                  &                  &                  &                  &                  &                  @'                  A'                  B'                  D'                  I'                  N'                  P'                  V'                  Y'                  (                  (                  (                   )                  9)                  @)                  )                  )                  )                  )                   *                  *                  *                  +*                  @*                  +                  +                  +                   +      $            y/      (            /      ,            /      0            /      4            0      8            0      <            0      @            0      D            0      H            0      L            .1      P            31      T            1      X            1      \            ~2      `            2      d            4      h            4      l            4      p            4      t            5      x            5      |            5                  5                  7                  7                  7                  7                  7                  )8                  *8                  +8                  08                  D8                  E8                  F8                  K8                  P8                  W8                  Y8                  Z8                  [8                  8                  8                  8                  8                  8                   9                  9                  9                  9                  9                  #9                  09                  <9                   @9                  G9                  I9                  K9                  P9                  T9                  X9                  9                   9      $            9      (            9      ,            9      0            9      4            9      8            ":      <            <:      @            :      D            :      H            :      L            :      P            :      T            :      X            :      \            :      `            ;      d            ';      h            0;      l            >;      p            F;      t            T;      x            <      |            <                  <                  <                  =                  =                  =                  =                  =                  >                  >                  ?                  ?                  @                  @                  A                   A                  'A                  (A                  ,A                  A                  A                  A                  A                  A                  A                  A                  A                  A                   B                  B                  	B                  B                  B       	            B      	            B      	            B      	            ME      	            QE      	            RE      	            TE      	            VE       	            XE      $	            ZE      (	            _E      ,	            ?K      0	            @K      4	            NK      8	            [K      <	            jK      @	            K      D	            K      H	            K      L	            K      P	            N      T	                    X	            ;       \	                    `	                   d	                   h	            *       l	            /       p	            7       t	            ?       x	            H       |	            J       	            L       	            Q       	            X       	            `       	            i       	            k       	            m       	            r       	            z       	                   	                   	                   	                   	                   	                   	                   	                   	                   	                   	                   	            /      	                  	            K      	                  	            6      	                  	                  	            
                    Y                                        F                                                                 $             	      (                    0             
      4                    <             g      @                    H                   L                    T             1      X                    `                   d                    l             1
      p                    x             
      |                                                                                                               ^                                                                                                                     u                                       !                                       F"                                       0                                       3                                       A                                      M                                       t                                                                            J                                       u      $                   (             r      0             Q      4             u      8             :      @                   D                   H                   P             h      T             o      X                   `                   d                   h                   p                   t                   x             z                   +#                   `#                                      Y#                   $                   Z                   6                   07                   "                   ,7                   7                                      j9                   9                   B                   ]:                   :                   
                   .>                   ?                                       ?                   K@                                       ?                  @                  b                   ?                  @                  *                  '                        z                   `                                        p      8             z      @             `      H                     P             p      p             z      x             `                                                           z                   `                                                           z                                                                             z                         (                    0                  P            z      X            @      `                    h                               z                  @                                                         z                                                                          z                                                               0            z      8                  @                    H                   h            z      p                  x                                                   z                                                                            z                                                                            z                                              (            3       H            z      P                   X                    `            3                   z                                                                             z                                                                 8         '           .symtab .strtab .shstrtab .note.gnu.build-id .note.Linux .rela.text .rela.init.text .rela.text.unlikely .rela__ksymtab_gpl __kcrctab_gpl __ksymtab_strings .rodata.str1.1 .rela__mcount_loc .rodata.str1.8 .rela.smp_locks .rela.rodata .modinfo .rela.retpoline_sites .rela.return_sites .orc_unwind .rela.orc_unwind_ip __versions .rela__bug_table .rela__jump_table .rela.init.data .data.once .rela__dyndbg .rela.gnu.linkonce.this_module .bss .comment .note.GNU-stack .BTF .gnu_debuglink                                                                                           @       $                              .                     d       <                              ?                            N                             :      @                    B      /                    J                     O      ;                              E      @               S     H       /                    Z                     O      
                             U      @               S           /                    n                     Y                                   i      @               hk     h
      /   	                 |                     [                                          2               \                                        2               _                                                       /b      8                                   @               u           /                          2               hd      >                                                 i                                          @               x|     x       /                                         i                                          @               |     h      /                                         m      |                                                   n      H                                    @               X           /                    
                    Tn      l                                  @                          /                                        o                                   ,                    ~      	                             '     @                    ;      /                    ;                                                        K                                                        F     @               0     P      /                    \                    8                                    W     @                          /                     s                    X                                     n                    X                                    i     @                           /   #                 y                    `                                                        x                                        @                          /   &                                                         @                    @               h            /   (                                                                               0                      P                                                  P                                                          P      ^                                                                                                                  %      0                   	                      @      ~"                                                                                     0	*H
01
0	`He0	*H
1a0]080 10UDebian Secure Boot CA2(oe:B&C0	`He0
	*H
  -DJ[ÇuZhJRds=O",󨱚W2<83,VH5*E=c	~έEJp Vw
T4ǇiUJ!z;d|Z }u<V1i!._Z;)H	N'XPD6aqԞcZ%@`r$䗾`ٍ"1lIX ~
ӕ&ۥ?<u]u11-@fI!&L0*J         ~Module signature appended~
 070701000A0399000081A4000000000000000000000001682F6DA70000267B000000CA0000000200000000000000000000003F00000000usr/lib/modules/6.1.0-37-amd64/kernel/drivers/net/phy/qsemi.ko    ELF          >                              @     @ # "          GNU y~^YW ֩^(?        Linux                Linux   6.1.0-37-amd64      (  
     H      ff.     @     SH(     H      x9(  H         x(  H         1҅O[    ff.     f    SH(     H      x':u1[    HXH       [    H    1f         S   Hx,(  H  1ɺ       t[    H[u苳(  :      H  [        H       H           H                                                QS6612 license=GPL author=Andy Fleming description=Quality Semiconductor PHY driver alias=mdio:0000000000011000000101000100???? depends=libphy retpoline=Y intree=Y name=qsemi vermagic=6.1.0-37-amd64 SMP preempt mod_unload modversions                                                                                                                                                                                                                                                       m    __fentry__                                              ![Ha    phy_drivers_register                                    XV    mdiobus_write                                                phy_drivers_unregister                                  ;    mdiobus_read                                            9[    __x86_return_thunk                                      D    phy_trigger_machine                                         phy_error                                               zR    module_layout                                           @                                                                                                                                                                                 @                                                                                                                                                                                                                                                                                                                                                                                         qsemi                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    GCC: (Debian 12.2.0-14+deb12u1) 12.2.0  GCC: (Debian 12.2.0-14+deb12u1) 12.2.0                         
9             X    	          
Y A=      h                           @j                   [       P=       `=    p         
     
  p=    `       
      
  =    b =    b =    b mdio_device_id phy_module_exit phy_module_init qs6612_handle_interrupt qs6612_config_intr qs6612_ack_interrupt qs6612_config_init   qsemi.ko    CYn                                                                                                                                           M       ,            y              -             @      :                   S            	       i                   }            <                                       $                                                           !                                0       c                   W                  d       '                   2                   ^                                                                    -                                                                                                         
                     $                   H                     U                     h                     v                                           __UNIQUE_ID_alias194 __UNIQUE_ID_depends193 ____versions __UNIQUE_ID_retpoline192 __UNIQUE_ID_intree191 __UNIQUE_ID_name190 __UNIQUE_ID_vermagic189 _note_10 _note_9 phy_module_init qs6612_driver qs6612_config_init phy_module_exit qs6612_ack_interrupt qs6612_handle_interrupt qs6612_config_intr qs6612_tbl __UNIQUE_ID___addressable_cleanup_module389 __UNIQUE_ID___addressable_init_module388 __UNIQUE_ID_license387 __UNIQUE_ID_author386 __UNIQUE_ID_description385 phy_error __this_module cleanup_module __fentry__ init_module phy_drivers_unregister __mod_mdio__qs6612_tbl_device_table mdiobus_read __x86_return_thunk mdiobus_write phy_drivers_register phy_trigger_machine                         %   1             L          #   g          #             #             $                          #             $             '             $                            '         %   1         $   `         %                                                                    &                        
          !                                                           0                                                                                                                          0                                         !                    0                    6                                                                                                            $                    (                    ,                    0                    4                    8                   <             0      @             5      D             9      H             >      L             _      P             d      T                     X                    \                     `                                                              8                   @                                                                8                     P                     .symtab .strtab .shstrtab .note.gnu.build-id .note.Linux .rela.text .rela.init.text .rela.exit.text .rela__mcount_loc .rodata.str1.1 .modinfo .rela.return_sites .orc_unwind .rela.orc_unwind_ip __versions .rela.data .rela.exit.data .rela.init.data .rela.gnu.linkonce.this_module .bss .comment .note.GNU-stack .BTF .gnu_debuglink                                                                                             @       $                              .                     d       <                              ?                            d                             :      @                                                J                                                         E      @               (      `                            Z                     !                                    U      @                     0                            j                     2      (                              e      @                     x           	                 w      2               Z                                                        a                                                         E                                          @               0      `           
                                      U                                                               d                                    @                     X                                                `      @                                                                                             @                     `                                                                                           @               H                                                                                                 @               `                                                                           @                     @               x      0                                                @                                          0               @      P                             %                                                          5                                                        :                                                                                0            !                    	                                                                                     I                             0	*H
01
0	`He0	*H
1a0]080 10UDebian Secure Boot CA2(oe:B&C0	`He0
	*H
  xglv[df-ϥFP͢7[>)/P5I\iybIJ58IMlc=+q3h2395ҔKp`!ˊBJ['/KAexJ@*Z_W$jnDda>/5CpwX^ C>Bt2D&Ŏ08DQ,ce]_5+H%,ߜ1gɋBb(AFZ-B|@Jb1EerDLxTwXl         ~Module signature appended~
 070701000A039D000081A4000000000000000000000001682F6DA70000C433000000CA0000000200000000000000000000004100000000usr/lib/modules/6.1.0-37-amd64/kernel/drivers/net/phy/realtek.ko  ELF          >                              @     @ + *          GNU Ɲ(zE~1        Linux                Linux   6.1.0-37-amd64  1    f         Hd        H  1    ff.         SH(     H      xu1[    H       [    H    1ې    U   SH(  H      x>(  H         x!u	1[]    H       []    H         SH(     H      x Ĩu1[    H       [    H    1    S  H<t9v'<    1ɺ   	   H    t[    <    1[       H[         S1ҹ      HH        H[           1Ҿ	       f.         ΋(  H             (  H         @     Ua
     SH(  H      (     H      (  1H  ź       1[
]H    f    1P    t    s    ff.         1P    t    C             SH(  1H         H[    D      SH(     H         H[    f       u1    S   C
  H    x$%0  =   tZ.tE uǃ    1[    uǃ  
   1=  t1=   uǃ    1ǃ  d   1ǃ  '  1ǃ  	  1f    S   C
  H    xu1[    H       [    H    1f         SH    x	H[[    ff.     @     S1H    xI  d(  H  u	  t0!         (  1H         1[    8!         (  `  H         1ff.          S           [            x       1        AT
     USHH  HD       Ht_   C
  HH    xf%Ax fE EuH  1[]A\       C
  H    xfEϸff.         AU     C
  ATUSHHH  DE           	v1H[]A\A]          
  HD     D     E        ukD  EĹ      H߾
          tvD  } tDE      H߾C
          HH[]A\A]    ffEH    HH    HEH    H        effEH    HH    HEH    H        ZfEH    HH    HEH    H        )fEH    HH    HEH    H        f.           	v1    AT   D     USH    1҉Ņx:(        H      u 8  A̾   H    H[]A\    ff.         USHƇ  Ƈ      Ņt	[]    (  H  	       xB(  
   H        x@  []    []    ff.         S   Hx:1ɺ   B
      t[       H߾C
      1[O       C
      xH߹      [B
      f         SH  t?      ]
  L  I/AA       x@H[@    H1[    [    ff.          S   Hx?1ɺ          t[    (  H         1[O    (  H         xH߹ 8     [       ff.         S   HxM     B
      t[    (  H           Hߺ   B
  [    (  H         x     B
  H               S   a
  H    xYH  /    u$H
0   @t$H
t$H*H[    H
0   @uH
uH2H[    [    D      SH  t>   ]
      x@H(  u:H20   @t:H
 /   t:HH    x	H[K[    H*0   @uH
 /   uHH    y         SH(     H  x:1ɺ       t[    (  H         1[O           xȋ(   d     H  [    ff.         SH(     H  x:1ɺ       t[    (  H         1[O           xȋ(        H  [    ff.         USuef<u_H(  ͺ   H  ]
      (  H         (  1H         []             USHf<u]tY(  ]
     H      (  H         (  1H         []    f>u6t2(  m
     H      (  H     뛽        USHuftof<      (     ]
  H      (     H      (  1H         []    (     \
  H      (     H  f=u7t3(     ]
  H      (     H  j         AUAATAUSHŃu|AufAt|AfA>u   fA?uRtN(     m
  H      (     H      (  1H         []A\A]    (     n
  H      (     H  룋(     m
  H      (     H  p    H       H        H    H        H    H߉D$    D$    H    H߉D$    D$    HcH    H߉D$    D$    H    H߉D$    D$    HcH    H߉D$    D$       H                                                                                                                                                                                                                                                                                                                Unsupported Master/Slave mode
  error enabling power management
        aldps mode  configuration failed: %pe
  Failed to update the TX delay register
 %s 2ns TX delay (and changing the value from pin-strapping RXD1 or the bootloader)
     2ns TX delay was already %s (by pin-strapping RXD1 or bootloader configuration)
        Failed to update the RX delay register
 %s 2ns RX delay (and changing the value from pin-strapping RXD0 or the bootloader)
     2ns RX delay was already %s (by pin-strapping RXD0 or bootloader configuration)
        clkout configuration failed: %pe
       RTL8226B-CG_RTL8221B-CG 2.5Gbps PHY Enabling Disabling enabled disabled RTL8201CP Ethernet RTL8201F Fast Ethernet RTL8208 Fast Ethernet RTL8211 Gigabit Ethernet RTL8211B Gigabit Ethernet RTL8211C Gigabit Ethernet RTL8211DN Gigabit Ethernet RTL8211E Gigabit Ethernet RTL8211F Gigabit Ethernet RTL8211F-VD Gigabit Ethernet Generic FE-GE Realtek PHY RTL8226 2.5Gbps PHY RTL8226B_RTL8221B 2.5Gbps PHY RTL8226-CG 2.5Gbps PHY RTL8221B-VB-CG 2.5Gbps PHY RTL8221B-VM-CG 2.5Gbps PHY RTL8366RB Gigabit Ethernet RTL9000AA_RTL9000AN Ethernet RTL8365MB-VC Gigabit Ethernet realtek drivers/net/phy/realtek.c          8 ( 0                    rtl8211f_config_init                       license=GPL author=Johnson Leung description=Realtek PHY driver alias=mdio:0000000000011100110010?????????? depends=libphy retpoline=Y intree=Y name=realtek vermagic=6.1.0-37-amd64 SMP preempt mod_unload modversions                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             (  0  (                 0  (                 0                                                                                                                                                                                                                                                                                                                                                                                                                                  (                 (                          0                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     9[    __x86_return_thunk                                      m    __fentry__                                              ![Ha    phy_drivers_register                                    ;    mdiobus_read                                            D    phy_trigger_machine                                         phy_error                                               3    phy_modify_changed                                      \(    genphy_soft_reset                                       fo    _dev_warn                                               |ad    phy_modify                                              9I    _dev_err                                                hz    __mdiobus_write                                         ⨇    __mdiobus_read                                          XV    mdiobus_write                                           |    genphy_resume                                           a    genphy_suspend                                          <    phy_read_paged                                          X$    genphy_read_status                                      (    __genphy_config_aneg                                        msleep                                                  .4    devm_kmalloc                                            S    phy_modify_paged_changed                                ")    phy_modify_paged                                        n    __dynamic_dev_dbg                                           phy_select_page                                         zfU    __phy_modify                                            .=    phy_restore_page                                             phy_drivers_unregister                                      genphy_update_link                                      +	    phy_write_paged                                         ՚    genphy_read_abilities                                       genphy_read_mmd_unsupported                                 genphy_write_mmd_unsupported                            x    genphy_handle_interrupt_no_ack                          w    phy_basic_t1_features                                   zR    module_layout                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             x                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 @                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 8                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 H                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 I                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 J                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 a                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   B                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     realtek                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  GCC: (Debian 12.2.0-14+deb12u1) 12.2.0  GCC: (Debian 12.2.0-14+deb12u1) 12.2.0         T  T  @         
9             X    $          
Y A=      h                       
[ P=      ]= &       d= &      k= K                  @j                   \              
_        ] v=       =    p         
     
  =    d       
      
  =    f =    f =    f =    f >    f >    f +>    f       
K      
  C>    n [>    f o>    f >    f       
      
  O&    
 &     &   >    s       
      
  O&    
 &   >    u >    s >    u >    f >    f  ?    f ?    f &?    f 7?    f L?    f [?    f p?    f ?    f ?    d ?    d ?    d ?    f ?    f @    f $@    f 8@    f       
      
  '     F@     Y@    f k@    f mdio_device_id rtl821x_priv phycr1 phycr2 has_phycr2 phy_module_exit phy_module_init rtl9000a_handle_interrupt rtl9000a_config_intr rtl9000a_read_status rtl9000a_config_aneg rtl9000a_config_init rtlgen_resume rtl8226_match_phy_device rtlgen_match_phy_device rtlgen_supports_2_5gbps rtl822x_read_status rtl822x_config_aneg rtl822x_get_features rtl822x_write_mmd rtl822x_read_mmd rtlgen_write_mmd rtlgen_read_mmd rtlgen_read_status rtlgen_get_speed rtl8366rb_config_init rtl8211b_resume rtl8211b_suspend rtl8211e_config_init rtl821x_resume rtl8211f_config_init rtl8211c_config_init rtl8211_config_aneg rtl8211f_handle_interrupt rtl821x_handle_interrupt rtl8201_handle_interrupt rtl8211f_config_intr rtl8211e_config_intr rtl8211b_config_intr rtl8201_config_intr rtl821x_probe rtl821x_write_page rtl821x_read_page genphy_no_config_intr realtek.ko  	                                                                                                   	                      
                                                                                                              @       ,            l              -              	      :     {              S            	       i            
       }            <                                       $                                       $                                        $           @       O                  m       !           P       :    P      ]       O                   i          0                                                                                  @      n                 %                 (                 +       -    @      .       >    p             O           G       i    p      !       |                     @                 `                                                                                       p       8           8       8                  8       ,            8       D    5       v       ^                 s                   }   	                                      	      w           	      b           
                 
                 @      {       	                     `             2                 G    
      x       X                  j                 z                                       @                                                                                         %    !              @                     Y                     c                     p                        !                                       	                                                                                                                                                                 *                     :                     H    @              m                     z                                                                                                                              o                                                                                    ,                                          (                     =                     M                     c                     v                                                                                                          __UNIQUE_ID_alias194 __UNIQUE_ID_depends193 ____versions __UNIQUE_ID_retpoline192 __UNIQUE_ID_intree191 __UNIQUE_ID_name190 __UNIQUE_ID_vermagic189 _note_10 _note_9 genphy_no_config_intr rtl9000a_config_init phy_module_init realtek_drvs rtl9000a_handle_interrupt rtl821x_handle_interrupt rtl8201_handle_interrupt rtl9000a_config_aneg rtl9000a_config_aneg.cold rtl8366rb_config_init rtl8366rb_config_init.cold rtl8211c_config_init rtl821x_write_page rtl821x_read_page rtlgen_supports_2_5gbps rtl8226_match_phy_device rtlgen_match_phy_device rtl8211b_resume rtl8211b_suspend rtlgen_get_speed rtl8211f_handle_interrupt rtlgen_read_status rtl8211_config_aneg rtlgen_resume rtl821x_resume rtl821x_probe rtl8211f_config_init CSWTCH.83 CSWTCH.84 __UNIQUE_ID_ddebug320.2 __UNIQUE_ID_ddebug322.1 __UNIQUE_ID_ddebug318.3 __UNIQUE_ID_ddebug324.0 rtl8211f_config_init.cold rtl8211e_config_init CSWTCH.86 phy_module_exit rtl9000a_read_status rtl8211f_config_intr rtl822x_config_aneg rtl8201_config_intr rtl9000a_config_intr rtl822x_get_features rtl822x_read_status rtl8211b_config_intr rtl8211e_config_intr rtlgen_write_mmd rtl822x_write_mmd rtlgen_read_mmd rtl822x_read_mmd __func__.35 realtek_tbl __UNIQUE_ID___addressable_cleanup_module327 __UNIQUE_ID___addressable_init_module326 __UNIQUE_ID_license317 __UNIQUE_ID_author316 __UNIQUE_ID_description315 phy_modify_paged_changed phy_error devm_kmalloc genphy_read_mmd_unsupported __this_module __mdiobus_read cleanup_module __dynamic_dev_dbg __fentry__ init_module phy_read_paged phy_restore_page genphy_soft_reset phy_drivers_unregister __mdiobus_write genphy_resume __mod_mdio__realtek_tbl_device_table __phy_modify _dev_err genphy_write_mmd_unsupported genphy_read_abilities phy_modify_paged genphy_handle_interrupt_no_ack _dev_warn __x86_return_thunk __genphy_config_aneg phy_select_page phy_drivers_register phy_write_paged phy_basic_t1_features genphy_update_link phy_trigger_machine genphy_read_status phy_modify_changed msleep genphy_suspend             f             T   0          f   A          T   \          c   l          f   t          n             f             M             T             c             c             f             n             f             M            T            c   -         f   5         n   @         f   H         M   Q         T   j            ~         p            f                        f            X            T            d                               f            T            d            T            Z   !         T   8         Q   A         T   b         h   y         c            h            f            T            f            f            T            f            f            T   .         h   7         [   A         T   a         h   j         r   q         T            f            V            f   !         T   4         V   D         f   L         n   W         f   _         M   q         T   z         o            f            T            g            h            h            f            h   *         h   A         T   G         [   S         q   [         f   a         T   f         [   t         q   {         f            T            N            V            f            V   !         T   N         L   V            M       u         f                                                  L               l                L               1                a                               X   %                    /            	       :                   A         	          F         S   Z                   d                   o                  v         	           {         S                                   	                   p               	   8                S                                                                     	   p                S            T            f                                 i   D         Z   `         ]   p         W            T            m            f            c            c   	         f   	         f   !	         T   ?	         k   I	         f   [	         V   h	         f   w	         V   	         k   	         T   	         L   	         g   	         g   	         f   
         T   /
         k   9
         f   P
         c   ]
         f   t
         c   
         k   
         T   
         k   
         f   
         c   
         k            c   -         k   A         T   T         V            `            `            f            T            V            o   '         f   N         o   a         T            h            f            c            f            c            h            T   
         h   !
         f   8
         c   E
         f   O
         c   p
         h   
         T   
         Z   
         Z   
         Z   
         f            T   5         Z   N         Z   i         Z   r         f            Z            T            Z            Q   7         Z   @         f   \         Z            Z            T   )         Z   @         Q   [         Z   h         f            Z            Z             T             P                                          j                                  e                                           (          ^   1                   8             H      D          ^   M             f      W             H       c          ^   l             f      s             p                 ^                f                                    ^                f                           
          Y                                                          @                                                (             P      0                   8                   @                    H                    P             @      X                   `                   h                   p             @      x             p                                       p                                      @                   `                                                                                                 	                   	                   
                   
                   @                                      `                                     
                                                                                                /                    k                    ~                                                            ,                   ?                          $                   (                   ,                   0                   4                   8                   <                   @                   D                   H             C      L             V      P                   T                   X             Z      \             z      `                   d             t      h                   l                   p             	      t             	      x             H	      |             g	                   	                   8
                   \
                   
                                      &                                                          
                   D
                   
                   q                   ?                   g                                                                                 4                    @                    F                    k                    p                     ~       $                    (                    ,                    0                    4                    8                    <                    @                    D                    H                    L                    P                    T                    X                   \             ,      `             1      d             ?      h             D      l             P      p             V      t                   x                   |                                                                                                                                                                                                                                                                      <                   @                   F                   Q                                                                                                                                                                                              6                   ;                   @                   F                   i                   n                   p                                                                                                              &                  C                  H                   V      $            [      (            g      ,            p      0            v      4                  8                  <                  @                  D                  H                  L                  P                  T            2      X            @      \            F      `            Z      d            _      h            `      l                  p                  t                  x                  |                                                                                                                                           '                  8                  9                  :                  A                  n                  o                  p                  r                  t                  y                                                                                                                                                                                                                        l                  m                  o                  t                                                                                                                               	                  	                   		      $            	      (            	      ,            	      0             	      4            &	      8            H	      <            M	      @            b	      D            l	      H            	      L            	      P            	      T            	      X            	      \            	      `            	      d            	      h            	      l            
      p            
      t            
      x            8
      |            =
                  W
                  a
                  
                  
                  
                  
                  
                  
                  
                  
                  8                  @                  F                                                                                                                                                                                     %                  &                  +                  X                  `                  f                                                                                                                                                                    
                  %
                  ?
                  I
                   o
      $            t
      (            
      ,            
      0            
      4            
      8            
      <            
      @            
      D                   H            	      L            
      P            p      T            q      X            v      \                  `                  d                  h                  l            >      p            ?      t            D      x                  |                                                                                                      `                  c                  e                  g                  l                                                                                                                  5                                                                                                                  	                                                          	   b                           $                   (          	          0             O      4             S      8          	   *                    $       `                   h                   x            7                r                    [                       
                         8                   @                   P            N                r                    [                     O                    _                                                 (            d                                  O                    _                                                              }       P            @      X                  x            `                                  O                    _                                                 	                   
                  
         O           
         _           
                   
                                                r                    [           (                  0                   p                   x                   
                   
                  
         r           
         [                                                 H                   P                   `                                                                 r                       `                  p                   	                                             (                   8                   h                   p                           r                       `                  p                   	                                                                                  `         r           h            @                  p                                                      
                                                        7      (            @      8         r           @            @      H            	      X                  x                                                                                                         K                   @               r                       @                   	      0                  p                  x                                                                     i                  @               r                       @                  	                        X                   `                   p            H                  @               r                       @                  	                        0                   8                   H                              @               r                       @                  	                                                                                 `            @      p         r           x            @                  	                                                                                (                   H          r           P          [           p                     x          b           !                  !         l            "                    "         r           ("         [           0"            P      @"                  H"            
      P"            @       "                   "                   #                  #         r            $         [            $                    ($         b                      R                      U                                                                                          8                   @                     H                   P             p      p                   x                                                                                                                                           8         U           P         R            .symtab .strtab .shstrtab .note.gnu.build-id .note.Linux .rela.text .rela.init.text .rela.text.unlikely .rela.exit.text .rela__mcount_loc .rodata.str1.8 .rodata.str1.1 .rodata .modinfo .rela.return_sites .orc_unwind .rela.orc_unwind_ip __versions .rela__jump_table .rela.data .rela.exit.data .rela.init.data .rela__dyndbg .rela.gnu.linkonce.this_module .bss .comment .note.GNU-stack .BTF .gnu_debuglink                                                                                          @       $                              .                     d       <                              ?                                                         :      @               o            (                    J                     o                                    E      @                     `       (                    Z                                                         U      @                           (                    n                     7                                    i      @                     0       (   	                 ~                     H      (                             y      @                     x      (                          2               p      l                                  2                     .                                                       P                                                   `                                                         9                                          @               `      P      (                                                                                                                                          @                           (                                         #       	                                                   ,      @                                    @               `             (                                        ,      $                              
     @                           (                                        Q                                         @               8             (                    *                    Q                                    %     @               P             (                    :                    Q                                    5     @               h            (                    H                    R                    @               C     @                     0       (   !                 b                    @V                                     g     0               @V      P                             p                     V                                                          V                                                        <]                                                          P]      
      )   L                 	                      h                                                                                            0	*H
01
0	`He0	*H
1a0]080 10UDebian Secure Boot CA2(oe:B&C0	`He0
	*H
  ;xEcwG
N3huC??oK$#t@k;Zn>
n~q9
KY%1lG^|R0 #w"D{_cłf	&H3?I@Hv=
+57ZA c	Bϓ죴gΉcdNBMy-__U;?SMP.W{t y|SqܱzP Idxq^oeHJ+LaKlTP3         ~Module signature appended~
 070701000A0392000081A4000000000000000000000001682F6DA700002D53000000CA0000000200000000000000000000004200000000usr/lib/modules/6.1.0-37-amd64/kernel/drivers/net/phy/rockchip.ko ELF          >                    "          @     @ & %          GNU  2Ǯ?Tz>        Linux                Linux   6.1.0-37-amd64      U   SHP  (  H      xH@t9@u'Ѓ@9t(  H  Ⱥ       xH1[]    $?[]    D      SH(     H         t[    (  H  1ɺ       u݋(        H      u(        H      u(  D     H      y(  H  1ɺ   [    fD        t      duHH<$H<$    H    f    SH(     H      x"%  (     H      t[    H[ff.         SH    H[    H       H           H        H    X                                                           rockchip_integrated_phy_analog_init err: %d.
 license=GPL description=Rockchip Ethernet PHY driver author=David Wu <david.wu@rock-chips.com> alias=mdio:0001001000110100110101000000???? depends=libphy retpoline=Y intree=Y name=rockchip vermagic=6.1.0-37-amd64 SMP preempt mod_unload modversions  Rockchip integrated EPHY                                                                                                                                                                                                                                                                                                                                       m    __fentry__                                              ![Ha    phy_drivers_register                                         phy_drivers_unregister                                  ;    mdiobus_read                                            XV    mdiobus_write                                           (    __genphy_config_aneg                                    9[    __x86_return_thunk                                      9I    _dev_err                                                |    genphy_resume                                           \(    genphy_soft_reset                                       a    genphy_suspend                                          zR    module_layout                                            4                                                                                                                                                                                 4                                                                                                                                                                                                                                                                                                                                                                                        rockchip                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 GCC: (Debian 12.2.0-14+deb12u1) 12.2.0  GCC: (Debian 12.2.0-14+deb12u1) 12.2.0                  A=      h                           @j                   X       P=       `=    p         
      
  p=    ] =    ] =    ǂ =    ] =    ]        
9             c              
d mdio_device_id phy_module_exit phy_module_init rockchip_phy_resume rockchip_config_aneg rockchip_link_change_notify rockchip_integrated_phy_config_init rockchip_integrated_phy_analog_init rockchip.ko H1                                                                                               	                      
                                                                  _       ,                          -                    :                   S            	       i                   }            <                                       $                                                                               {                              P      >       /   	                P          U       t                                               )           5       *                                             
                   6                  D                   S                   }                                                                                                                                                                                           	                                          ,                      __UNIQUE_ID_alias194 __UNIQUE_ID_depends193 ____versions __UNIQUE_ID_retpoline192 __UNIQUE_ID_intree191 __UNIQUE_ID_name190 __UNIQUE_ID_vermagic189 _note_10 _note_9 phy_module_init rockchip_phy_driver phy_module_exit rockchip_config_aneg rockchip_integrated_phy_analog_init rockchip_link_change_notify rockchip_link_change_notify.cold rockchip_integrated_phy_config_init rockchip_phy_resume __UNIQUE_ID_license387 __UNIQUE_ID_description386 __UNIQUE_ID_author385 rockchip_phy_tbl __UNIQUE_ID___addressable_cleanup_module384 __UNIQUE_ID___addressable_init_module383 __this_module cleanup_module __mod_mdio__rockchip_phy_tbl_device_table __fentry__ init_module genphy_soft_reset phy_drivers_unregister genphy_resume _dev_err mdiobus_read __x86_return_thunk __genphy_config_aneg mdiobus_write phy_drivers_register genphy_suspend                #   $          )   \          ,   l          +   w          *             #             ,             *             ,             ,            ,   $         ,   F         ,   Q         #   _         *                        *            #            )            ,            *            #            '             #                                                        -                        
          &                                  (                                                                               P                          (                                 v                                        ^                                                                                                                       j                    k                    p                    u                    v                     {       $                    (                    ,                    0                    4             E      8             J      <             P      @             p      D                   H                   L                   P                   T                   X                   \                   `                   d                   h                   l                   p                   t                     x                    |                                                                           
                                                          %                                       .                                                  h            P                 !                      $           8         $           P         !            .symtab .strtab .shstrtab .note.gnu.build-id .note.Linux .rela.text .rela.init.text .rela.exit.text .rela.text.unlikely .rela__mcount_loc .rodata.str1.8 .modinfo .rodata.str1.1 .rela.return_sites .orc_unwind .rela.orc_unwind_ip __versions .rela.data .rela.exit.data .rela.init.data .rela.gnu.linkonce.this_module .bss .comment .note.GNU-stack .BTF .gnu_debuglink                                                                                          @       $                              .                     d       <                              ?                                                         :      @               H      (      #                    J                                                         E      @               p      `       #                    Z                                                         U      @                     0       #                    j                                                         e      @                      0       #   	                 ~                           0                              y      @               0             #                          2                     .                                                  F                                          2               ?                                                        X                                          @                     x       #                                         l                                                         D                                          @               8      `      #                                                                                                                                             @                            #                                         
                                          @               @              #                                        
                                         @               X              #                                                              @                    @               p       0       #                    :                                                         ?     0                     P                             H                                                          X                                                        ]                                                                                     h      $                     	                            ;                                                          l                             0	*H
01
0	`He0	*H
1a0]080 10UDebian Secure Boot CA2(oe:B&C0	`He0
	*H
  
o	y`l^|c#2L!6-bDfAY+ѨFlPp(^u3(-e 8_k_ub=)HA1	Kp)::Axw<kTYZ._O)sE^g36C1Bqy	o&IKHĎԳCR-jV4Dpjn_ٓFɽ"3"'&+z_  YoYe" ֆ"e         ~Module signature appended~
 070701000A0381000081A4000000000000000000000001682F6DA700013E73000000CA0000000200000000000000000000003D00000000usr/lib/modules/6.1.0-37-amd64/kernel/drivers/net/phy/sfp.ko  ELF          >                    p1         @     @ - ,          GNU ?c<ROVKX;        Linux                Linux   6.1.0-37-amd64      1?t             Ǉ  :      ff.         Ƈ      ff.     @            ff.     @     G    Ǉ  j      D      G    Ǉ  j  Ƈ      ff.             wJ      
   wk$  tk1   f
  ff%$    uP  ttB   w/$  	t 1v    
tpv1v    v1    $  t1w    w׸   H੨ X%   Hff%$        $          tWw t:uH    
t5    uuHcH    I 1    uH    I 1    H    
t볐       t-  %      ҉F1V          F1V    ff.          AVAUATUS^   IԋVHӁ   w.   L9F1AAHGXA)M    xFMD  wE   v=   LH9FAHEXA)Љ       1҅O[]A\A]A^    [1]A\A]A^    @     H.H*    ff.         <t1<ut        HUBNT    H9Gt1H-5".4H9GuHUF-INSTAHW(H9G(t   HNT      H9Bu1ff.     @     H    H    H           ff.     f    ATUSH   H   L   3tH} H    HL9uH       H0  []A\    ff.         UA   v   S   HHeH%(   HD$1HL$D$ HGX        D$@8t7LK`@u5HL$v   H߈D$A      .        1    HL$v   H߈D$A      .            @     UHSHH    Ht:HH=     H    uUH}H    uH](H[]    H߉D$    H    H} HcT$H        D$H߉D$    H} HcT$H        D$f         SHHǈ      H       H0      H{Ht    H{    H{Ht    H[    D      ATE1UHS1ۃ<    u H|hHt    t
   HA	HHuD[]A\    ff.     @         ff.          H~	    ~ u_F
Hw%E1<QHNADFHGXHD    H    H$    H$HtH    H    H    H$    H$HtH    H    H$    H$HtH    @     USHH    HxHHO1A\      H    x]HxHxPHtH    HChHH=     HxE1H    H    HC`H=     []    H8볋SXJKX    H5    Hڹ  [    ]    @     UP@HAWAVAUATSHH@Lo8T$eH%(   HD$81HD$HL$(HD$   HD$    HD$     ft$D$   ft$ fD$"MtvIIMHT$(uZH \$HT$(I)tIM9LI   IFHt$f\$$    yHT$8eH+%(   uHe[A\A]A^A_]    D)1    fD      UP@HAVMAUAATISHIxHH eH%(   HD$1H$    A@f4$  HD$    fD$    HD$HtbD(HxLL    H{   H    H|$    x    ADHD$eH+%(   uHe[A\A]A^]            ATUSHHD   eH%(   HD$1HGH    A#   Etu#HD$eH+%(      H[]A\    D$ HCXA   HL$n      H    Aău#T$E#   	H    H                   ff.     @     HHH    Hp      f    UH    SHopH  <wH    H    H      H߹   
   H    )  )      H    <wH    H    H      H    f
wH    HH          HH          HH           HH           HH           HH           HH        1[]    ff.     f    H        ff.     @     USHHeH%(   HD$HGP    @t	   uHD$eH+%(   upH[]    D$ HCXA   HL$n      H    uD$A   HL$H߾   ࿃@Eºn   D$HC`        D      SHf   H߃   [   H7A   H    H             UHSH   tHt
ރ    u$[]    Ht    tH   []    H   []        AHHAt-fHH~UH  HHIHfHH=  H  HOHi  H~-H  HHHHH    HFHƀHIHHHHHHHH    ff.         H    )   HF    H    ff.          S  Hf% f= tJf= t"H{       H0  f  [       tպ   H0  f  [       uܐ    ATL0  US  Ht          f  L[   H5    ]    A\         AHHAt-fHH~MH  HHIHfHHHHHHHgfffffffHHH?HH)H    HFHƀHIHff.     f    AHHAt-fHH~SH  HHIHfHH   HHHS㥛 HHH?HH)H    HFHƀHIH        AHHAt-fHH~MH  HHIHfHHHHHHHgfffffffHHH?HH)H    HFHƀHIHff.     f    SLHHxeH%(   HD$1  wf   unD$
 }  k      2  fI     H  1u    HT$eH+%(   <	  H[    D$
 	  vG     uHGXA   HL$
p          xHD$
H?H1닃4  v>r,  fI ~  |  H  <1B  +*  fI 뷃@  HGXA   HL$
t          7  D$
   +    $  :  fI v  t  H  1D$
   d    1  THGXA   HL$
q          3HT$
H?Q  D$
   G       HGXA   HL$
p          D$
H1  6  fI Z
  >  fI   WHGXA   HL$
t          d1  HGXA   HL$
u               HGXA   HL$
p          D$
H12     HGXA   HL$
p          cD$
H1N  
7HGXA   HL$
t          `&  
HGXA   HL$
t          vHGXA   HL$
p          D$
H1E1H<$HL$`   fDD$   HGXA       fD$H<$fH.  fI HGXA   HL$
t          v
S  )  H  fHtHHHHH1    @  fI z  x  H  ,1HGXA   HL$
t          \D$
H1JHGXA   HL$
u          $T$
A8  fI U(  fI 0  fI 	  N  fH	  F  fI 4  fI *HGXA   HL$
p          @D$
H1+1H<$HL$b   ft$A   HGX       D$H<$fHHGXA   HL$
t          yHGXA   HL$
t          D$
H11H<$d      fL$A   HGXHL$    OD$H<$fHHGXA   HL$
p          y<  fI Q1H<$HL$   fT$A   HGXf       D$H<$fHL  fHJ  fHB  fI HGXA   HL$
q          8HGXA   HL$
p          
D  fI Q1A   HL$h   fD$   HGX    T$fH    ff.          AWAVIAUATUH  SHHĀeH%(   HD$x1    fA  <   <    A         A    vt
1LAƆ  I0        A  I    f
wL    A  I    <wL    A  H    <wH    HcI6H    H    4        XA  <    A  
  Ѐ      <uOI   I~I  M0  M    6	  A      AƆ  L    ]  <  A  A    fu;  B  D  HD$xeH+%(   
  HH[]A\A]A^A_        H     H      I#  H9q  f  I~( t#I~    I~(    I~(    IF(    I~Ht
    IF    L1:fA  I0  Aǆ           )A  I    f
wL    A  I    <wL    A  H    <wH    I6H    H        uKM0  
AƆ  L    kA  AƆ  <  Y  <E<=5AƆ  K       H5    I0          fA  thAƆ  A  dA  AƆ   oK  k
   H|$11A  IF8   A@   D$1HIFXHL$L      @    Mn8ItIIEA?   A   H$MM)I?  H$I9HHD$IFJ< 1    Htͺ   H    H|$,       H    H|$@A    T$D	L|$W  1HD$HL9uD$W8    L|$X1IFX@   A    LL      |$    A  M0  tA  :  A  ;  A  )  <    H5      L        fp    fJ  f   
A   u!LƧ      LA     I0  fA    9  I~      I      I  Ht%H w    I  Iǆ          I  1   H    H1A  I>    AƆ   I0      f{  f
  AV   AƆ  I~    G  L1AƆ    A  f% f= :  1  I~       I0  fA      Xf+  f	u
_  6    f'A  A  f% f=   	  I~       I0  fA      M0     Lf    I~    AƆ  L    oA   a
yA   A  A  A       fE  H5    )9I0     HC    #
A   u!L.Ƨ      LA  	   fA  I0  d  H    
AF ?    1Ҿ   L  A   I0  fE      VAƆ  K   L    H5        
I~    A  y<A   1A     LA       1Ҿ   LA    D  A   LA   A  A   AƆ  fE  I0  H5            Nf= D	6f= ,$AƆ  L    I~    sH5       L        I~          LA      A   
       H5    fE  I0            L      LA   I6E1H    H        {D$     |$    |$!    IvI>    HH=    H@    H    Hǀ         I^AƆ  AF A
   EA   E!A   A    H
    H5        I       H5       L        H    G    |$Y    I>     HT$HL$71B@HH9u    I>H        I>H        11IFXIF8   A@   HL$L                     SH   H      H{        H߾   <    1[    ff.     @                                 SH    H
   [    ff.         AWIAVAUL   ATLUSH    LAA   D1A      D$    ADD1H$HsfHHuD	A       A   D$t1L@ƃ At1L@ƃ    LH[]A\A]A^A_    H$I7H    H    HH    AHAAA    A   AAl$ALփcBff.          H       f         SHH   kCu{ tH
    H5    Hڿ    [    [    ff.     f    AV   
  AULoATUHSH   H=    eH%(   H$   1    H  L(HH  H    H@8   H    I       H   H    H        E11ɺ    H   L   H   H    H   Hǃ       H       E11ɺ    H8  L0  HP  H    H8  HǃH      H@      E11ɺ    H  L  H  H    H  Hǃ      H      H   H   H;HH        Aą$  L  HC0    M  H        H  HH       H    ILIDL1H   H}    Aą    H<$        H,$H       L    HHC  H@HH@       HkA   1HCX    HC`    HH   Is    H4    H;    HDhH= vAH^EH$   eH+%(      HĘ   D[]A\A]A^    II-Lu$H{h    LH    H    HCP    H    ǃ      HDHS@HCH    K@        HAXH    AEA6    H;HcH        HT$eH+%(   u\H[]    H;HcH        ̋  d   1ҿ
   1  H    1H;                Ht8ATIUHSH    H1H9uHLH    []A\        H} HH            HxHc[H    ]    HxH        Hx[H    ]    HxH[H    ]    HxH    []    H;IcH            H?H        Lfǃ  
 []A\    H;H            I>HcH            L$w8tE  H        HD$lHt$   A   I     PH    jHD$lPjHD$pPjI>LL$pHL$\    IF0H0H@H|$    u?A  A  H    M0  I>        HcH            A  tI>H        A  A  ȃfAF@         =    d   1ҿ  
   1H    1I>    I   	I~x A   t
A   I~p tA   HK   
   AƆ   I  A  P  <  A  AF E11T,HLEHuE11T@HLEHuI    I<$LHt$,  I|$LHt$@  M   MtID$HtL    H5           I       A   tA  @t  AƆ  I0          t 9b  u`Aǆ    |A  @u9  d   1ҿ  
   1M0  H    1I>          A    d   1ҿ  
   1H    1I>    I>EK  H            H           A   H    j   H    j`LL$(       1LA\A]0I>H            11D$A   HL$LfD$IF`    O  I>HcH    $    $  L|$W    |$    I>HcH            @    I>HcH              '   A  @t\  =  hPH        A         jH    H    j`LL$(    A_XM0      =  0  I>H        L        I>HcH            I>HcH            A2   XA     Iu1HD$L|$WHL9uT$1IF`A   HL$?   L        I>HcH    $    $T    I>H            I>H            I I    1I   A  H5           I      Aǆ      H    LA        C@  s@d   1ҿ  
   1H    1H;    H    H      Ht    t      H    H       t    1H        1<    tqHHu쀻    tH
    H5        H       H    H;uH        H;H    H    HCHu:A    H|hHt       yW1   ƃ   `HHxPHt11    I    Hپ  H  HH            H8H;L    HOPHtJH          IHS   S1A   H;H        ZPH                                                                                                                                                                                                                                                                                                                                                                                                                temperature VCC bias UBNT             UF-INSTANT       Failed to read EEPROM: %pe
 Failed to write EEPROM: %pe
 mdiobus scan returned %pe
 sfp_add_phy failed: %pe
 hwmon probe failed: %pe
 out of memory for hwmon name
 Unknown module state Unknown device state Unknown state Module state: %s
 Module probe attempts: %d %d
 Device state: %s
 Main state: %s
 moddef0: %d
 rx_los: %d
 tx_fault: %d
 tx_disable: %d
 tx disable %u -> %u
 SM: enter %s:%s:%s event %s
 module removed
 failed to read EEPROM: %pe
 EEPROM short read: %pe
 COTSWORKS        SFBG sfp EE:  3 SFP I2C Bus no PHY detected
 SM: exit %s:%s:%s
 %s %u -> %u
 &sfp->sm_mutex &sfp->st_mutex drivers/net/phy/sfp.c i2c-bus missing 'i2c-bus' property
 maximum-power-milliwatt Host maximum power %u.%uW
 %s-%s state sfp TX_power RX_power ALCATELLUCENT G010SP 3FE46541AA HALNy HL-GSFP HG GENUINE MXPD-483II HUAWEI MA5671A Lantech 8330-262D-E UBNT UF-INSTANT OEM SFP-10G-T RTSFP-10 RTSFP-10G Turris mod-def0 los tx-fault tx-disable rate-select0 down fail wait init init_phy init_tx_fault wait_los link_up tx_fault reinit tx_disable insert remove dev_attach dev_detach dev_down dev_up tx_clear los_high los_low timeout detached up empty error probe waitdev hpower waitpwr present      Module switched to %u.%uW power level
  phy_device_register failed: %pe
        skipping hwmon device registration due to broken EEPROM
        diagnostic EEPROM area cannot be read atomically to guarantee data coherency
   failed to register hwmon device: %ld
   failed to read SFP soft status: %pe
    Fault recovery remaining retries: %d
   PHY probe remaining retries: %d
        module persistently indicates fault, disabling
 module transmit fault indicated
        Rewriting fiber module EEPROM with corrected values
    Failed to rewrite module EEPROM: %pe
   Failed to update base structure checksum in fiber module EEPROM: %pe
   EEPROM base structure checksum failure (0x%02x != 0x%02x)
      EEPROM base structure checksum failure: 0x%02x != 0x%02x
       EEPROM extended structure checksum failure (0x%02x != 0x%02x)
  EEPROM extended structure checksum failure: 0x%02x != 0x%02x
   module %.*s %.*s rev %.*s sn %.*s dc %.*s
      module is not supported - phys id 0x%02x 0x%02x
        module address swap to access page 0xA2 is not supported.
      Host does not support %u.%uW modules
   Host does not support %u.%uW modules, module left in power mode 1
      Address Change Sequence not supported but module requires %u.%uW, module may not be functional
 please wait, module slow to respond
    module transmit fault recovered
        Detected broken RTL8672/RTL9601C emulated EEPROM
       Switching to reading EEPROM to one byte at a time
      No tx_disable pin: SFP modules will always be emitting.
                                sfp_soft_get_state              sfp_check_state                 Only address 0x50 and 0x51 supported            Only page 0 supported           Banks not supported             sfp_module_tx_enable            sfp_module_tx_disable   sfp_sm_event                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            sff,sff                                                                                                                                                                                                 sff,sfp                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    license=GPL v2 author=Russell King alias=platform:sfp alias=of:N*T*Csff,sfpC* alias=of:N*T*Csff,sfp alias=of:N*T*Csff,sffC* alias=of:N*T*Csff,sff depends=libphy,mdio-i2c retpoline=Y intree=Y name=sfp vermagic=6.1.0-37-amd64 SMP preempt mod_unload modversions  
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             (  0  (                   0  (                   0                                                                           (                                                                                                                                                                                                                  0               0                                                        (          (                                                                                                                                                                             (            (                           (    0  8        8  0  (                                                                                                                          (    0  8  H  8  0  (                     H                                                             (  0    0  (                           (          (                                                            0                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    m    __fentry__                                              9[    __x86_return_thunk                                      pHe    __x86_indirect_thunk_rax                                J    __platform_driver_register                              )    devm_free_irq                                           J    cancel_delayed_work_sync                                /    __x86_indirect_thunk_r9                                 9I    _dev_err                                                ]    _dev_info                                               V
    __stack_chk_fail                                        SMu    strlen                                                  Z    strncmp                                                 B    get_phy_device                                          #ʟ    phy_device_register                                     (I    sfp_add_phy                                             GL    phy_device_remove                                       7|    phy_device_free                                         c    mdiobus_unregister                                      e>    mdiobus_free                                            ~V_    i2c_put_adapter                                         z    kfree                                                   []@(    gpiod_get_value_cansleep                                E    do_trace_netlink_extack                                 w\[    hwmon_sanitize_name                                     <    hwmon_device_register_with_info                         Ӆ3-    system_wq                                               tK    mod_delayed_work_on                                     fo    _dev_warn                                               L`	    i2c_transfer                                            E:#    __kmalloc                                               8߬i    memcpy                                                  $    ___ratelimit                                            
Ќ    single_open                                             ʑ    seq_printf                                              |z    platform_driver_unregister                              n    __dynamic_dev_dbg                                       Y    gpiod_direction_output                                  (vֱ    gpiod_direction_input                                   !tf    sfp_link_up                                             x=    cancel_delayed_work                                     HG    system_power_efficient_wq                               KM    mutex_lock                                              Yd    sfp_module_insert                                       82    mutex_unlock                                            )a    sfp_remove_phy                                          f/    memchr_inv                                              КD    memcmp                                                      __const_udelay                                          ~A    sfp_module_stop                                         
    hwmon_device_unregister                                 1
2    sfp_module_start                                        <Ak    sfp_link_down                                           X    sfp_module_remove                                       ]j    mdio_i2c_alloc                                          "    __mdiobus_register                                      gY|    print_hex_dump                                              debugfs_remove                                          Fsx    sfp_unregister_socket                                       rtnl_lock                                               rn    rtnl_unlock                                             -    kmalloc_caches                                          wX    kmalloc_trace                                               __mutex_init                                            j    delayed_work_timer_fn                                   9c    init_timer_key                                          N    devm_add_action                                             is_acpi_device_node                                         __acpi_node_get_property_reference                      {Q    i2c_acpi_find_adapter_by_handle                         3Д]    devm_gpiod_get_optional                                     device_property_read_u32_array                          s    sfp_register_socket                                     e2    gpiod_to_irq                                            SP    debugfs_create_dir                                      )8    debugfs_create_file                                     o    devm_kasprintf                                          u_    devm_request_threaded_irq                               ~C    seq_lseek                                               Q]]g    seq_read                                                {    single_release                                          zR    module_layout                                                   |
	                                                                                          
                                                                                                                                                                                                                                                                                                                                                       | |                       >                             #                            >                                                                                     
                                                     	                                                     	                                                                                                                                                                       sfp                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      GCC: (Debian 12.2.0-14+deb12u1) 12.2.0  GCC: (Debian 12.2.0-14+deb12u1) 12.2.0                        
9             X    Q          
Y A=      P=     ^=    s=    =    = )  \   = A       = A      = A       = A   0   = A   @   = A   P   = A   `   > A   p   > A      #> A      2> A      A> A      O> A      `> A      p> A      > A      > A      > A     > A      > A   0  > A   @  > A   P  > A   `  ? A   p  #? A     6? A     H? A     Z? A     k? B     v? B     ? B      ? B      ? B   @  ? A   `  ? A   p  ? A     ? A     ? A     ? A     ? A     @ A         B     @     @    .@    <@    K@    X@    g@ 
   s@    @    @    @    @    @    A    A    ,A %   ;A (   IA 8   XA <   sA =   A <   A ?   A @   A B   A C   A D   A T   A \   A ]   A ^   B _    B    4B     QB    gB    {B    B    B    B    B @   B     C    )C    >C    WC    nC @   ~C     C    C    C    C    C @   D     D    5D    RD    qD    D     D    D    D    E    %E    DE    cE    E        Q     E     E    E    E    E    F 
   F    'F    9F    MF    `F    sF    F    F    F    F    F     F "   F $   G &   %G (   ?G *   XG ,   qG .   G 0   G 2   G 4   G 6   G 8   G <   G @   H D   H H   ,H L   >H N   QH P   eH R   zH T   H V   H X   H Z   H _   H `   H b   H d   H f   H h   H j   
I l   I n   $I    :I @   VI    jI    |I p   I    I @   I     I    I    I    J    J    1J q   <J    RJ @   gJ t   qJ    J @   J     J    J    J    J    J    K u   K    2K @   FK v   UK x   ]K    r       b            @   a }    d  e           
_       
        b        c n *     :"         `  @   fK _       
     nK [    |K 
  @  c  s   K Q     K *        u @  ? w   k	  y   p	  y    ϑ z @  K 80    K K      K G  @  K    @  K    `         	  R    O  R  	  K G  @  K    @
  K    H
  L    P
  L    X
  L    `
  %L    p
  6L    x
  x   {} 
  EL      UL      gL      uL K      {    -i \ @  L R  @  L       L   @  L ?     	X             
c        a       
       b     m?         f       
       b     -?                h       
       b     ?      s	         j     +     L     L    L    L    L    L     M    M    M    'M    8M    JM     WM    dM    uM    M    M    M    M    M    M 	   M 
   M     M    N    N    %N    4N    DN    TN     eN    rN    }N     N    N    N    N    N    N    N    N    N 	   O 
              N               
m O              O r @          
o       
K       }        q        p       
       b        t       
        b               v       
       b     K       $       k       Q          x            M               `            `              
|            m        .                       {}        d 0O       9O    p   BO      OO    M  ZO    M  dO    I  pO      yO    N        
    n b O     O            
   n b '  ?   s	  O           
   n b  -?       O           
   n b 
 m?  O     O     O     O     O           
    n b @     P           
   n b 5 K   P           
    n b t     
 K   !P     .P           
   n b      w K   DP     UP      jP    E  P     P      P    E       
   :"    c  R    *   $    ^    P     P    E       
    n b      P           
   n b P           
   n b PY
 K     $   [  k   4&  Q   P     	Q     Q     )Q     <Q           
K   OQ          4&  Q   RQ           
    x   } a    ݽ    \Q     vQ     Q     Q     Q     Q     Q           
K   x   } Q     R     mdio_i2c_proto MDIO_I2C_NONE MDIO_I2C_MARVELL_C22 MDIO_I2C_C45 MDIO_I2C_ROLLBALL sfp_diag temp_high_alarm temp_low_alarm temp_high_warn temp_low_warn volt_high_alarm volt_low_alarm volt_high_warn volt_low_warn bias_high_alarm bias_low_alarm bias_high_warn bias_low_warn txpwr_high_alarm txpwr_low_alarm txpwr_high_warn txpwr_low_warn rxpwr_high_alarm rxpwr_low_alarm rxpwr_high_warn rxpwr_low_warn laser_temp_high_alarm laser_temp_low_alarm laser_temp_high_warn laser_temp_low_warn tec_cur_high_alarm tec_cur_low_alarm tec_cur_high_warn tec_cur_low_warn cal_rxpwr4 cal_rxpwr3 cal_rxpwr2 cal_rxpwr1 cal_rxpwr0 cal_txi_slope cal_txi_offset cal_txpwr_slope cal_txpwr_offset cal_t_slope cal_t_offset cal_v_slope cal_v_offset SFP_PHYS_ID SFP_PHYS_EXT_ID SFP_CONNECTOR SFP_COMPLIANCE SFP_ENCODING SFP_BR_NOMINAL SFP_RATE_ID SFP_LINK_LEN_SM_KM SFP_LINK_LEN_SM_100M SFP_LINK_LEN_50UM_OM2_10M SFP_LINK_LEN_62_5UM_OM1_10M SFP_LINK_LEN_COPPER_1M SFP_LINK_LEN_50UM_OM4_10M SFP_LINK_LEN_50UM_OM3_10M SFP_VENDOR_NAME SFP_VENDOR_OUI SFP_VENDOR_PN SFP_VENDOR_REV SFP_OPTICAL_WAVELENGTH_MSB SFP_OPTICAL_WAVELENGTH_LSB SFP_CABLE_SPEC SFP_CC_BASE SFP_OPTIONS SFP_BR_MAX SFP_BR_MIN SFP_VENDOR_SN SFP_DATECODE SFP_DIAGMON SFP_ENHOPTS SFP_SFF8472_COMPLIANCE SFP_CC_EXT SFP_PHYS_EXT_ID_SFP SFP_OPTIONS_HIGH_POWER_LEVEL SFP_OPTIONS_PAGING_A2 SFP_OPTIONS_RETIMER SFP_OPTIONS_COOLED_XCVR SFP_OPTIONS_POWER_DECL SFP_OPTIONS_RX_LINEAR_OUT SFP_OPTIONS_RX_DECISION_THRESH SFP_OPTIONS_TUNABLE_TX SFP_OPTIONS_RATE_SELECT SFP_OPTIONS_TX_DISABLE SFP_OPTIONS_TX_FAULT SFP_OPTIONS_LOS_INVERTED SFP_OPTIONS_LOS_NORMAL SFP_DIAGMON_DDM SFP_DIAGMON_INT_CAL SFP_DIAGMON_EXT_CAL SFP_DIAGMON_RXPWR_AVG SFP_DIAGMON_ADDRMODE SFP_ENHOPTS_ALARMWARN SFP_ENHOPTS_SOFT_TX_DISABLE SFP_ENHOPTS_SOFT_TX_FAULT SFP_ENHOPTS_SOFT_RX_LOS SFP_ENHOPTS_SOFT_RATE_SELECT SFP_ENHOPTS_APP_SELECT_SFF8079 SFP_ENHOPTS_SOFT_RATE_SFF8431 SFP_SFF8472_COMPLIANCE_NONE SFP_SFF8472_COMPLIANCE_REV9_3 SFP_SFF8472_COMPLIANCE_REV9_5 SFP_SFF8472_COMPLIANCE_REV10_2 SFP_SFF8472_COMPLIANCE_REV10_4 SFP_SFF8472_COMPLIANCE_REV11_0 SFP_SFF8472_COMPLIANCE_REV11_3 SFP_SFF8472_COMPLIANCE_REV11_4 SFP_SFF8472_COMPLIANCE_REV12_0 SFP_TEMP_HIGH_ALARM SFP_TEMP_LOW_ALARM SFP_TEMP_HIGH_WARN SFP_TEMP_LOW_WARN SFP_VOLT_HIGH_ALARM SFP_VOLT_LOW_ALARM SFP_VOLT_HIGH_WARN SFP_VOLT_LOW_WARN SFP_BIAS_HIGH_ALARM SFP_BIAS_LOW_ALARM SFP_BIAS_HIGH_WARN SFP_BIAS_LOW_WARN SFP_TXPWR_HIGH_ALARM SFP_TXPWR_LOW_ALARM SFP_TXPWR_HIGH_WARN SFP_TXPWR_LOW_WARN SFP_RXPWR_HIGH_ALARM SFP_RXPWR_LOW_ALARM SFP_RXPWR_HIGH_WARN SFP_RXPWR_LOW_WARN SFP_LASER_TEMP_HIGH_ALARM SFP_LASER_TEMP_LOW_ALARM SFP_LASER_TEMP_HIGH_WARN SFP_LASER_TEMP_LOW_WARN SFP_TEC_CUR_HIGH_ALARM SFP_TEC_CUR_LOW_ALARM SFP_TEC_CUR_HIGH_WARN SFP_TEC_CUR_LOW_WARN SFP_CAL_RXPWR4 SFP_CAL_RXPWR3 SFP_CAL_RXPWR2 SFP_CAL_RXPWR1 SFP_CAL_RXPWR0 SFP_CAL_TXI_SLOPE SFP_CAL_TXI_OFFSET SFP_CAL_TXPWR_SLOPE SFP_CAL_TXPWR_OFFSET SFP_CAL_T_SLOPE SFP_CAL_T_OFFSET SFP_CAL_V_SLOPE SFP_CAL_V_OFFSET SFP_CHKSUM SFP_TEMP SFP_VCC SFP_TX_BIAS SFP_TX_POWER SFP_RX_POWER SFP_LASER_TEMP SFP_TEC_CUR SFP_STATUS SFP_STATUS_TX_DISABLE SFP_STATUS_TX_DISABLE_FORCE SFP_STATUS_TX_FAULT SFP_STATUS_RX_LOS SFP_ALARM0 SFP_ALARM0_TEMP_HIGH SFP_ALARM0_TEMP_LOW SFP_ALARM0_VCC_HIGH SFP_ALARM0_VCC_LOW SFP_ALARM0_TX_BIAS_HIGH SFP_ALARM0_TX_BIAS_LOW SFP_ALARM0_TXPWR_HIGH SFP_ALARM0_TXPWR_LOW SFP_ALARM1 SFP_ALARM1_RXPWR_HIGH SFP_ALARM1_RXPWR_LOW SFP_WARN0 SFP_WARN0_TEMP_HIGH SFP_WARN0_TEMP_LOW SFP_WARN0_VCC_HIGH SFP_WARN0_VCC_LOW SFP_WARN0_TX_BIAS_HIGH SFP_WARN0_TX_BIAS_LOW SFP_WARN0_TXPWR_HIGH SFP_WARN0_TXPWR_LOW SFP_WARN1 SFP_WARN1_RXPWR_HIGH SFP_WARN1_RXPWR_LOW SFP_EXT_STATUS SFP_VSL SFP_PAGE i2c_mii mdio_protocol mod_phy i2c_block_size max_power_mW gpio_irq need_poll st_mutex state_hw_mask state_soft_mask sm_mutex sm_mod_state sm_mod_tries_init sm_mod_tries sm_dev_state sm_state sm_fault_retries sm_phy_retries module_power_mW module_t_start_up module_t_wait tx_fault_ignore hwmon_probe hwmon_tries hwmon_dev hwmon_name GPIO_MODDEF0 GPIO_LOS GPIO_TX_FAULT GPIO_TX_DISABLE GPIO_RATE_SELECT GPIO_MAX SFP_F_PRESENT SFP_F_LOS SFP_F_TX_FAULT SFP_F_TX_DISABLE SFP_F_RATE_SELECT SFP_E_INSERT SFP_E_REMOVE SFP_E_DEV_ATTACH SFP_E_DEV_DETACH SFP_E_DEV_DOWN SFP_E_DEV_UP SFP_E_TX_FAULT SFP_E_TX_CLEAR SFP_E_LOS_HIGH SFP_E_LOS_LOW SFP_E_TIMEOUT SFP_MOD_EMPTY SFP_MOD_ERROR SFP_MOD_PROBE SFP_MOD_WAITDEV SFP_MOD_HPOWER SFP_MOD_WAITPWR SFP_MOD_PRESENT SFP_DEV_DETACHED SFP_DEV_DOWN SFP_DEV_UP SFP_S_DOWN SFP_S_FAIL SFP_S_WAIT SFP_S_INIT SFP_S_INIT_PHY SFP_S_INIT_TX_FAULT SFP_S_WAIT_LOS SFP_S_LINK_UP SFP_S_TX_FAULT SFP_S_REINIT SFP_S_TX_DISABLE sff_data module_supported sfp_exit sfp_init sfp_shutdown sfp_remove sfp_probe sfp_cleanup sfp_poll sfp_irq sfp_check_state sfp_timeout sfp_module_eeprom_by_page sfp_module_eeprom sfp_module_info sfp_stop sfp_start sfp_detach sfp_attach sfp_sm_event sfp_sm_mod_hpower sfp_sm_fault sfp_sm_link_check_los sfp_sm_probe_phy sfp_debug_state_open sfp_debug_state_show sfp_module_tx_disable sfp_hwmon_probe sfp_hwmon_read_string sfp_hwmon_read sfp_hwmon_is_visible sfp_set_state sfp_get_state sfp_i2c_write sfp_i2c_read sfp_gpio_set_state sff_gpio_get_state sfp_gpio_get_state qs sfp_match sfp_quirk_ubnt_uf_instant sfp_quirk_2500basex sfp_fixup_rollball_cc sfp_fixup_rollball sfp_fixup_halny_gsfp sfp_fixup_ignore_tx_fault sfp_fixup_long_startup sfp_module_supported sff_module_supported   sfp.ko  `q                                                                         	                      
                                                                  !                      %                     
 6                  
 N              +    
 d              @    
 |              U    
               l             @      y    
                   
        	           
        	           
        <                                       $                                                   @              +    `              @                  S           "       i                 ~          o                            P      R                            p                                         #           @              
   %                    P      U       $                 6                   M           I       W                 h                  ~    @      [                 Q                                                                @       %           p                                                      `                        m       )                 6    	             D    
             R                   ^            (       e    X             x                           S                 8                                   X            
                  
                 
      M          !        8           0      `       /                 O    @      "       i    p      o                 ]           o      8           @                                  `                       
                 
         ! p       8       5          X       C   ! 8       8       [   !        8       s                                    )      A           )                 )                  *                 *                  *      %           P*      R         !         8                 (           +                 +      C            ,            !   %                 *   %                 3                 <    E            K           8       Z    @            o                   {                                               
          
                   
                  
 #                                 
                   6    @      X      C                  Q           0       `                 u                                      p                 P                 `                                                                                 2                 ;                     A                    G    	               M                     f                     r                                                                  #                    
                                                                                                 	                     	                     $	                     3	                     E	                     P	           #       \	                     r	                     ~	                     	                     	                     	                     	                     	                     	                     	
                     
                     "
                     2
                     >
                     G
                     R
                     d
                     
                     
                     
                     
                     
                     
                     
                     
                     
                                          (                     2                     B                     U                     p                                                                                                                                                                                                                                       -                     <                     G                     U                     m                                                                                                                                  @      X                           
                     

                     
                     ,
                     L
                     ^
                     u
                     
                     
                     
                     
                     
                     
                      __UNIQUE_ID_alias197 __UNIQUE_ID_alias196 __UNIQUE_ID_alias195 __UNIQUE_ID_alias194 __UNIQUE_ID_depends193 ____versions __UNIQUE_ID_retpoline192 __UNIQUE_ID_intree191 __UNIQUE_ID_name190 __UNIQUE_ID_vermagic189 _note_10 _note_9 sff_module_supported sfp_fixup_long_startup sfp_fixup_ignore_tx_fault sfp_fixup_halny_gsfp sfp_fixup_rollball sfp_fixup_rollball_cc sfp_hwmon_is_visible sfp_hwmon_read_string sfp_hwmon_power_labels sfp_module_info sfp_module_eeprom sfp_quirk_2500basex sfp_module_supported sfp_init sfp_driver poll_jiffies sfp_shutdown sfp_sm_mod_hpower sfp_sm_mod_hpower.cold sfp_match sfp_sm_probe_phy sfp_sm_probe_phy.cold sfp_cleanup sfp_gpio_get_state gpio_flags sff_gpio_get_state sfp_module_eeprom_by_page __msg.47 __msg.46 __msg.45 sfp_hwmon_probe sfp_hwmon_chip_info sfp_hwmon_probe.cold sfp_i2c_read sfp_i2c_write sfp_get_state __func__.55 _rs.54 sfp_get_state.cold sfp_debug_state_open sfp_debug_state_show mod_state_strings dev_state_strings sm_state_strings sfp_exit sfp_set_state sfp_module_tx_disable __UNIQUE_ID_ddebug415.4 sfp_gpio_set_state sfp_hwmon_calibrate_temp.isra.0 sfp_quirk_ubnt_uf_instant sfp_sm_link_check_los sfp_sm_fault sfp_sm_fault.cold sfp_hwmon_calibrate_tx_power.isra.0 sfp_hwmon_calibrate_bias.isra.0 sfp_hwmon_calibrate_vcc.isra.0 sfp_hwmon_read sfp_sm_event __UNIQUE_ID_ddebug421.2 event_strings __UNIQUE_ID_ddebug423.1 __UNIQUE_ID_ddebug417.3 sfp_sm_event.cold sfp_quirks sfp_remove sfp_stop sfp_start sfp_detach sfp_attach sfp_timeout sfp_check_state __UNIQUE_ID_ddebug429.0 gpio_of_names sfp_irq sfp_poll sfp_probe __key.49 __key.50 sfp_data sfp_probe.cold sfp_module_ops sfp_debug_state_fops __func__.48 __func__.44 __func__.43 __func__.39 __UNIQUE_ID_license435 __UNIQUE_ID_author434 __UNIQUE_ID_alias433 __UNIQUE_ID___addressable_cleanup_module432 __UNIQUE_ID___addressable_init_module431 sfp_of_match sfp_hwmon_ops sfp_hwmon_info __compound_literal.1 __compound_literal.3 __compound_literal.5 __compound_literal.7 __compound_literal.9 __compound_literal.8 __compound_literal.6 __compound_literal.4 __compound_literal.2 __compound_literal.0 sff_data .LC40 .LC46 .LC72 gpiod_get_value_cansleep rtnl_unlock is_acpi_device_node devm_request_threaded_irq platform_driver_unregister __this_module cleanup_module sfp_module_stop gpiod_to_irq memcpy kfree seq_lseek devm_gpiod_get_optional mdio_i2c_alloc __dynamic_dev_dbg __fentry__ init_module sfp_unregister_socket sfp_link_up __x86_indirect_thunk_rax do_trace_netlink_extack sfp_remove_phy ___ratelimit __stack_chk_fail devm_free_irq device_property_read_u32_array _dev_info print_hex_dump devm_add_action sfp_add_phy _dev_err memchr_inv phy_device_remove hwmon_device_register_with_info gpiod_direction_input mutex_lock debugfs_remove strncmp mod_delayed_work_on memcmp mdiobus_free __mutex_init __acpi_node_get_property_reference cancel_delayed_work _dev_warn phy_device_free __x86_return_thunk __platform_driver_register devm_kasprintf phy_device_register seq_read mdiobus_unregister debugfs_create_file sfp_register_socket sfp_module_start i2c_put_adapter mutex_unlock cancel_delayed_work_sync init_timer_key __const_udelay seq_printf sfp_link_down __x86_indirect_thunk_r9 delayed_work_timer_fn hwmon_device_unregister i2c_transfer __mdiobus_register rtnl_lock single_release __mod_of__sfp_of_match_device_table kmalloc_trace strlen single_open debugfs_create_dir i2c_acpi_find_adapter_by_handle sfp_module_remove gpiod_direction_output system_power_efficient_wq __kmalloc kmalloc_caches sfp_module_insert hwmon_sanitize_name get_phy_device system_wq               
                          !             0             A             M             a             m                                                                              &            ]            s                                                                                                                                     '            3                    =            D                   Q                                                            >            R            a            q                                                            !            (                    /            @       6            ?            Q            |                                                                        .       5            >            E                   j            s            x            B                                                                                                                                                         (            (       -            A            Q            ]            i            w                                                                                                                              !            e            m            @       v                        @                               p                               p                                                                                                    4            G            ?      X            `      `            p            '      w                                                                   o	            	            	            	            
            /
            @
            L
            
            
            
            
            
                        L                    S                    X            `            T      m                                                                                                                                                  %                                                                   C      '            5                  C                   M            U      R            c            0      h            y            X      ~                        e                              r                              ~                                                            
            
            @       

            !
            C
            m
            
            
            
            
                                                 '            1            S            _            i            |                                                1            A            ^            q                                                            
            k                        ,            9            A                                    C            a                                                                        ^                        [                                    .            {                                    +                        5            m            Q                                                B                                    T                                                            3                                                                                                                                         
                              p                                                                          h            q            z                                                                                                              
                                      #            Q      *            8       /            Y                                                h             y                                                                             #                   -!            ;      N!            a!                  !                  !            !            "            Y"            s"            "            "            "                  "            "            +#            y#            #            #                  #            $            E$            U$            $            $            $            -%            %            %            %            %            &                  &            &            &            &            &            
'            '            @'                  W'            k'            '                  '                   '            '                  '                  '                  '            (            4      (                    .(            (            (            (            (            (            (            (            
)            '      )            o      6)                  @)            H      E)            O)                  T)            w)            )                  )            ;      )            )            )            )            )            )            )            )            *            *            !*            **            A*            Q*            q*            *            +            1+            ?+            d      F+                    R+                  k+            +            +            +            +            +            	,            ,            !,            H,            L       `,            },                    ,            q      ,            ,                    ,                  ,            ,                    ,            +      ,            -                    1-             *      =-            c-                    u-                  -            -            @      -            -                  -            -            -                  .            *.            A      3.            ;.            A      G.            W.            s.            .                  .            	      .                  .                  .            /            ?/                   F/                  N/            0      U/                  p/            {/            b      /            [      /            /            	             S                    .             ;             7       @             j                     z                          >                                                                                                 p                                                                        
            P                   !                   '            9                   ?            M                   T            a                  f            k            `      u                  z                                                                                                                  a!                                                       *            @            [                  j            o            &      y                  ~                        a!                                    
            P                                    &            -            C            u            z            Z$                  (                              &      &                  6            T                  Y            ^            -!      e            @      j            |            1                  (                                                                                                                  !      $            a!      1                  6            ;            a!      D                   Q                  V            [            a!                                                (                  1                              &                                                 l                                          "            '            a!      4                  9            >            a!      N                                    !                  8                              a!                  @                              "#                                                !                  @                  1            H                  V            [            .                                                
                              
                  
                                                 	                  	            $	            5	            I	                  N	            X	                   `	            t	            .      	            	            	            @      	                  	            	            .      	                   
                  

            0
            +      5
                                                                    @                    `                            (                    0                    8                   @             P      H                   P             p      X                   `                    h             P      p                   x                                                    @                                                                                                                    	                   
                                                          
                    
                   
                   0                                      @                  p                                    @                         (            `      0                  8                   @            )      H            )      P            )      X             *      `            *      h             *      p            P*      x            +                  +                   ,                   *                   *                  )                  )                   P      (                  0                   @                    H                    P                                                          `                  h                                                                                                                                            ,                  p                  @                                     3                  p                                       >                  D                  `                    L      (            W      0            p      @            b      H            i      P            p      X            @       `            q      h            y      p            p                                                      @                                                                                                                                                                                                                                                      (                  8                                                                                                                                                                                                            (                  0                  8                  @                  H                  P                  X                  `            '      h            0      p            7                  B                  I                  P                  [                  f                  o                  '                  v                                                                                                                                                                                                              (                  0                                d                                      =                                      3                   h                                      
                          $             B
      (             
      ,             
      0                   4                   8             ]      <                   @             Z      D                   H                   L             -      P             z      T                   X                   \             *      `             ~      d             4      h             l      l             P      p                   t                   x                   |             A                                                         S                   ~                                      g                    M!                   v)                   r.                   ?                   %                                                                                                  /                    L                    l                                                            %                    \      $             r      (                   ,                   0                   4                   8                   <                   @             &      D             <      H                   L                   P             Q      T             `      X                   \                   `                   d                   h                   l             
      p                   t             v      x             	      |             ~
                   
                                      l
                   ^                                      0                   ]                                      B                                                         )                   +                   ,                   /                   -                                                                                                                           4                    @                    Q                    `                    q                            $                    (                    ,                    0                    4             O      8             P      <                   @                   D                   H                   L                   P                   T                   X             J      \             K      `             M      d             O      h             Q      l             V      p             W      t             Z      x             \      |             ^                   `                   e                   l                   p                                                                                                C                   P                   W                   X                   Y                                                                                                                                                                           |                                                                                                                                                                           7                   @                   F                                                                                                                                                       $                  (                  ,                   0                  4                   8            )      <            a      @            i      D            j      H                  L                  P                  T                  X                  \                  `            u      d            v      h            {      l                  p                  t                  x                  |                                                	                  	                  	                  	                  	                  	                  ~
                  
                  
                  
                  
                  
                  
                  
                  
                  
                  
                  
                  
                  q                                                                                                                                                                   
                  
                   
                   &
                  )
                  0
                  j
                  k
                  l
                  q
                  
                   
      $            
      (            
      ,                  0            -      4            0      8            6      <            :      @            ]      D            ^      H            c      L            z      P            {      T                  X                  \                  `            5      d            @      h            b      l            p      p            v      t                  x                  |                                                                                                                                          $                  1                  8                  =                  @                                                      Y                  `                                                                                                                                                                                                       	                                                                                          "                                     %                                                                                                                                                 "      $            )      (            )      ,            )      0            )      4            )      8            )      <            )      @            )      D            )      H             *      L            *      P            *      T            *      X             *      \            &*      `            @*      d            E*      h            P*      l            W*      p            \*      t            ^*      x            g*      |            k*                  l*                  p*                  &+                  '+                  (+                  *+                  ,+                  .+                  0+                  5+                  +                  +                  +                  +                  +                  ,                  
,                  ,                  ,                   ,                  ',                  3,                  9,                  :,                  >,                  E,                  	/                  
/                  /                  /                  /                  /                   /                  /                                      +                   ,                   -                   2                                              $                   (                   ,                   0                   4                   8                   <                   @                   D                   H                  L                  P            &      T            +      X            6      \            >      `            C      d            R      h            S      l            X      p            o      t                  x                  |                                                                                                                                                                              6                                                                                                                                                                  E                  "
                  :
                  L
                    /                                         
                                      
                   7                                                                 $                   (             b       0             C&      4             '      8                    @             *      D             5+      H             *       @              ,      H             )      X             P      p                                @                         (                  0                  8            p      @            P      X            `      x                                                                                                                                                                                             d      8                   @                    H                   P             Q      p                   x                                                                                                                                                                                                                    8                    P                     .symtab .strtab .shstrtab .note.gnu.build-id .note.Linux .rela.text .rela.text.unlikely .rela__mcount_loc .rodata.str1.1 .rodata.str1.8 .rela.rodata .modinfo .rodata.cst2 .rela.retpoline_sites .rela.return_sites .orc_unwind .rela.orc_unwind_ip __versions .rela__bug_table .rela__jump_table .rela.data .rela.exit.data .rela.init.data .rela__dyndbg .rela.gnu.linkonce.this_module .bss .comment .note.GNU-stack .BTF .gnu_debuglink                                                                                         @       $                              .                     d       <                              ?                            /                             :      @                     &      *                    J                     Z0      L
                             E      @                     (      *                    ^                     :                                   Y      @                           *                    k      2               6<                                  z      2               A                                                        G      8                                    @               X      H	      *                                         XO                                                        \P                                                        `P                                          @                    8      *                                         Q                                          @                          *                                         Q      >                                                  Y                                         @               
           *                                          ^      @                                                  @r                                          @               *     0       *                                        Pr      P                                   @               *     h      *                    (                    r                                    #     @               ,     h      *                    3                    t                                    .     @               -            *                    C                    t                                    >     @               -            *                    S                    t                                   N     @               -           *   !                 a                    u                    @               \     @               /     0       *   #                 {                    @y                                         0               @y      P                                                  y                                                          y      &                                                                                                                        +                    	                      ȳ      
                                                   /                                  0	*H
01
0	`He0	*H
1a0]080 10UDebian Secure Boot CA2(oe:B&C0	`He0
	*H
  Zj`jCfL^ny_W`sbzboMZʹ	zNNT	ki z.ϐqǬHɰHYW*EKUR3	_T
Eaq~}<W0Q03S=I4L(!Yh"v{Qj-@ꎁU'KBBZѱ3B
B=ZqE~3_ݒ>⽭-}\jU[s&w c:!cNd         ~Module signature appended~
 070701000A038E000081A4000000000000000000000001682F6DA7000053C3000000CA0000000200000000000000000000003E00000000usr/lib/modules/6.1.0-37-amd64/kernel/drivers/net/phy/smsc.ko ELF          >                    H          @     @ & %          GNU (v&P"?        Linux                Linux   6.1.0-37-amd64                 USHH      u   u}  t	x  t[]    (  H         x%  (     H      x    H %&       '  	      (  H         u=x9    H9   '  	      뼋(  H         4(  H          (     H      1҅Of.         USQ  H<wQ(  H     ,        x8(     H  	    Q  P  H1[]    []    @     SH(     H      xu1[    H       [    tH    1ff.         S
     H    Ht< H1H      HH= w[    HH    [    [    ff.         SH(     H      x      tH[    [    H  (  Ⱥ       H[            Hphy_symbHFs   HHol_errorHFHF        ff.         H  8 tNS1x  Ht[    (  H         xߋ(  H      [    1    f.         SHP   u8(  H         x&ȋ(     H      H[:[    @     S(  HӺ   H      HcЅHHIH[            SH(     H  xA1ɺ       t[    (  H         1҅O1҅[O           x(        H          H       H           H                                                                                                        Failed to request clock
 SMSC LAN83C185 SMSC LAN8187 SMSC LAN8700 SMSC LAN911x Internal PHY SMSC LAN8710/LAN8720 SMSC LAN8740 Microchip LAN8742              @  license=GPL author=Herbert Valerio Riedel description=SMSC PHY driver alias=mdio:0000000000000111110000010011??0? alias=mdio:0000000000000111110000010001???? alias=mdio:0000000000000111110000001111???? alias=mdio:0000000000000111110000001101???? alias=mdio:0000000000000111110000001100???? alias=mdio:0000000000000111110000001011???? alias=mdio:0000000000000111110000001010???? depends=libphy retpoline=Y intree=Y name=smsc vermagic=6.1.0-37-amd64 SMP preempt mod_unload modversions                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              m    __fentry__                                              9[    __x86_return_thunk                                      ![Ha    phy_drivers_register                                    X$    genphy_read_status                                      ;    mdiobus_read                                            XV    mdiobus_write                                           e?    ktime_get                                               ]{    __SCT__might_resched                                     ]    usleep_range_state                                      (    __genphy_config_aneg                                    D    phy_trigger_machine                                         phy_error                                               .4    devm_kmalloc                                            Yv    devm_clk_get_optional_enabled                           vv    clk_set_rate                                            MK    dev_err_probe                                           \(    genphy_soft_reset                                            phy_drivers_unregister                                  a    genphy_suspend                                          |    genphy_resume                                           zR    module_layout                                                 0                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0                                                                                                                                                                                                                                                                                                                                                                        smsc                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     GCC: (Debian 12.2.0-14+deb12u1) 12.2.0  GCC: (Debian 12.2.0-14+deb12u1) 12.2.0             .  A=      h                P=      b         S $   @     $   H              Y       ]=      k= K                  @j                   X              [ y=       =    p         
      
  =    a       
       
  0  I?      =    c       
       
       =    e =    a =    a =    a >    a >    a +>    a       
     
  @>    m Z>    a        
9             p              
q mdio_device_id smsc_hw_stat smsc_phy_priv energy_enable phy_module_exit phy_module_init smsc_phy_probe smsc_get_stats smsc_get_strings smsc_get_sset_count lan87xx_read_status lan95xx_config_aneg_ext lan87xx_config_aneg smsc_phy_reset smsc_phy_config_init smsc_phy_handle_interrupt smsc_phy_config_intr   smsc.ko N!                                                                                                                                                                
 F       ,           
 r       ,       +    
        ,       @    
        ,       U    
        ,       j    
 "      ,           
 N      ,           
 z                          @          
                  
       	           
       
           
       <                                     $       $                   8                   H    @             X           F      l    `      |                                    T           @      d                 i                                     5           `      f                 \           0      9           p             4            @       =   
                T   
               j   
 *                                                                                                                                                        !                     .                     9                   E                     W                     n                     |                                                      @                                                                                                                                     2                     @                     S                     h                      __UNIQUE_ID_alias200 __UNIQUE_ID_alias199 __UNIQUE_ID_alias198 __UNIQUE_ID_alias197 __UNIQUE_ID_alias196 __UNIQUE_ID_alias195 __UNIQUE_ID_alias194 __UNIQUE_ID_depends193 ____versions __UNIQUE_ID_retpoline192 __UNIQUE_ID_intree191 __UNIQUE_ID_name190 __UNIQUE_ID_vermagic189 _note_10 _note_9 smsc_get_sset_count phy_module_init smsc_phy_driver lan87xx_read_status lan87xx_config_aneg CSWTCH.27 smsc_phy_handle_interrupt smsc_phy_probe smsc_phy_reset phy_module_exit smsc_get_strings smsc_phy_config_init lan95xx_config_aneg_ext smsc_get_stats smsc_phy_config_intr smsc_tbl __UNIQUE_ID_license387 __UNIQUE_ID_author386 __UNIQUE_ID_description385 __UNIQUE_ID___addressable_cleanup_module384 __UNIQUE_ID___addressable_init_module383 phy_error devm_kmalloc __this_module cleanup_module usleep_range_state clk_set_rate __fentry__ init_module genphy_soft_reset phy_drivers_unregister genphy_resume devm_clk_get_optional_enabled mdiobus_read __mod_mdio__smsc_tbl_device_table __x86_return_thunk __genphy_config_aneg mdiobus_write phy_drivers_register ktime_get phy_trigger_machine dev_err_probe genphy_read_status __SCT__might_resched genphy_suspend            1             9             1   "          @   E          9   \          7   ~          ;             =             A             /             7             =             /            7   !         7   F         ;   a         1                                7            ;            :            9            1            7            9            >            9   ,         +   A         1   T         ,   m         6            0                                ?            9            1            7            3            9            ;            3   !         1   Q         9   a         1            9            7            ;            9            1            7            ;   (         9   1         1   L         7   e         9   q         1            ;            9            7            9            7            ;             1             -                        @                 <                @       
          4                                                                               `                          (             @      0                   8                    @             `      H                   P             0      X             p                    
                    D                                                                                                                   P                          $                   (             '      ,             d      0                   4                                                                                                                                      C                    D                    I                     V      $             `      (             f      ,             g      0                   4                   8                   <                   @                   D                   H                   L                   P                   T                   X                   \             #      `             4      d             @      h             F      l                   p                   t                   x                   |                                                                                                                                                                                                                               U                   `                   r                                                                                                                                     !                   &                   '                   ,                   0                   6                   d                   i                   p                   v                                                                                                                                                                                                                                    `                  @      0         B           8         5           X            p      `                              (                                     `                  @               B                    5           0            p      8                                                                     0                  5                                     `                  @               B                    5                       `                                      p                                                                           0      h            B                   @               B                    5                       p                        @            \       h                  p            `      x            @               B                    5                                                            p                        8	                    @	                   H	            0      
            q       @
                  H
            `      P
            @      h
         B           p
         5           
                   
            p      
                                                                      0                  ~                                      `      (            @      @         B           H         5           `                   h            p      p                                                                     0                 .                      2                                          A           8         2           P         .            .symtab .strtab .shstrtab .note.gnu.build-id .note.Linux .rela.text .rela.init.text .rela.exit.text .rela__mcount_loc .rodata.str1.1 .rodata .modinfo .rela.return_sites .orc_unwind .rela.orc_unwind_ip __versions .rela.data .rela.exit.data .rela.init.data .rela.static_call_sites .rela.gnu.linkonce.this_module .bss .comment .note.GNU-stack .BTF .gnu_debuglink                                                                                             @       $                              .                     d       <                              ?                                                         :      @               0            #                    J                                                         E      @               5      `       #                    Z                                                         U      @               H6      0       #                    j                           `                              e      @               x6             #   	                 w      2               *                                                                                                                                                                               8                                    @               7      P      #                                                                                                 
                                         @               8            #                                               @                                                          (
                                    @               x?            #                                         (                                          @               F             #                                         0                                          @               F             #                                        8                                          @               F      0       #                                        @                    @                    @               F      0       #                    7                    !                                     <     0               !      P                             E                     "                                     U                     "      :                             Z                     L%                                                          X%      H      $   +                 	                      +      w                                                   G      i                             0	*H
01
0	`He0	*H
1a0]080 10UDebian Secure Boot CA2(oe:B&C0	`He0
	*H
  mR81O;;6{SX/,
Ud0U=]mg6;kQB 0;\:Tb8԰{r|`[E,0(w$:qBCdI _{cDX
򆦽D ';2jk5HʌleGt";Տ\](5}itu::nzxVE
Z5         ~Module signature appended~
 070701000A0388000081A4000000000000000000000001682F6DA70000296B000000CA0000000200000000000000000000004100000000usr/lib/modules/6.1.0-37-amd64/kernel/drivers/net/phy/ste10Xp.ko  ELF          >                              @     @ # "          GNU 4z^wS:N;S        Linux                Linux   6.1.0-37-amd64      SH(     H      xpu1[    H       [    H    1ې    SH(  1H      x9ȋ(  H  1Ҁ̀    x(  H  1    %   u[        SH(     H  x:1ɺ       t[    (  H         1[O           xȋ(  p      H  [        H       H           H                                        license=GPL author=Giuseppe Cavallaro <peppe.cavallaro@st.com> description=STMicroelectronics STe10Xp PHY driver alias=mdio:00011100000001000000000000010001 alias=mdio:0000000000000110000111000101???? depends=libphy retpoline=Y intree=Y name=ste10Xp vermagic=6.1.0-37-amd64 SMP preempt mod_unload modversions  STe101p STe100p                                                                                                                                                                                                                       m    __fentry__                                              ![Ha    phy_drivers_register                                    ;    mdiobus_read                                            9[    __x86_return_thunk                                      D    phy_trigger_machine                                         phy_error                                               XV    mdiobus_write                                                phy_drivers_unregister                                  a    genphy_suspend                                          |    genphy_resume                                           zR    module_layout                                           P                                                                                                                                                                          P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  ste10Xp                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  GCC: (Debian 12.2.0-14+deb12u1) 12.2.0  GCC: (Debian 12.2.0-14+deb12u1) 12.2.0               p          
9             X              
Y A=      h                           @j                   [       P=       `=    p         
     
  p=    `       
      
  =    b =    b mdio_device_id phy_module_exit phy_module_init ste10Xp_handle_interrupt ste10Xp_config_intr ste10Xp_config_init ste10Xp.ko                                                                                                                                              q       ,                   ,       +                   B                   O                   h            	       ~            
                   <                                       $                                                           O            P       `                                            ,                   C           3       Y    ?       2       t                                                                                                                                                                                *                     8                   ]                     j                     }                                                                                     __UNIQUE_ID_alias195 __UNIQUE_ID_alias194 __UNIQUE_ID_depends193 ____versions __UNIQUE_ID_retpoline192 __UNIQUE_ID_intree191 __UNIQUE_ID_name190 __UNIQUE_ID_vermagic189 _note_10 _note_9 phy_module_init ste10xp_pdriver ste10Xp_handle_interrupt ste10Xp_config_init phy_module_exit ste10Xp_config_intr __UNIQUE_ID_license387 __UNIQUE_ID_author386 __UNIQUE_ID_description385 ste10Xp_tbl __UNIQUE_ID___addressable_cleanup_module384 __UNIQUE_ID___addressable_init_module383 phy_error __this_module cleanup_module __fentry__ init_module phy_drivers_unregister genphy_resume __mod_mdio__ste10Xp_tbl_device_table mdiobus_read __x86_return_thunk mdiobus_write phy_drivers_register phy_trigger_machine genphy_suspend                             $   ,          %   4          (   ?          %   G             Q             i          $             &             $             %                          &             %             $            %            $   0         &                                                                    '                        
          !                                                           P                                         +                    >                                                                                                                         +                    0                    >                    C                    O                    P                     V       $                    (                    ,                    0                    4                    8             	      <             /      @             4      D                     H                    L                     P                                                      P                )                    "           8                   @                                                   P                )                    "                                                                                               8                     P                     .symtab .strtab .shstrtab .note.gnu.build-id .note.Linux .rela.text .rela.init.text .rela.exit.text .rela__mcount_loc .modinfo .rodata.str1.1 .rela.return_sites .orc_unwind .rela.orc_unwind_ip __versions .rela.data .rela.exit.data .rela.init.data .rela.gnu.linkonce.this_module .bss .comment .note.GNU-stack .BTF .gnu_debuglink                                                                                             @       $                              .                     d       <                              ?                            4                             :      @                                                J                                                         E      @                     `                            Z                                                         U      @                     0                            j                                                          e      @               H      `           	                 w                     "      6                                   2               X                                                        h                                          @                     x           
                                      |      ~                                                         T                                    @                                                                      `                                                                                                    @                                                                      
                                          @               8                                                       
                                          @               P                                                                            @                     @               h      0                                                                                          0                     P                             %                                                          5                           p                             :                     @                                                          P            !                    	                      @                                                               I                             0	*H
01
0	`He0	*H
1a0]080 10UDebian Secure Boot CA2(oe:B&C0	`He0
	*H
  Om_u񀁋L_ʒ,6Բ_>$f^LEKZ
Ane-+	JlUNxՅVeRp>vؕ283idJ ᙳ0we,C-JtJԞV]"O(@?vNUhqDp(L'gibHRm
Qτ&CT#(Ŷa\Y7匽~4\u}Sжac)
OÄ!         ~Module signature appended~
 070701000A038B000081A4000000000000000000000001682F6DA70000246B000000CA0000000200000000000000000000004400000000usr/lib/modules/6.1.0-37-amd64/kernel/drivers/net/phy/teranetics.ko   ELF          >                              @     @ # "          GNU |SO>,ׂ6        Linux                Linux   6.1.0-37-amd64      1h               S]      H    t   [    H[        S]      H   H'     H      t1[          H    x%  =  t  1[          H    xۨt    H       H           H                                        Teranetics TN2020 license=GPL v2 author=Shaohui Xie <Shaohui.Xie@freescale.com> description=Teranetics PHY driver alias=mdio:00000000101000011001010000010000 depends=libphy retpoline=Y intree=Y name=teranetics vermagic=6.1.0-37-amd64 SMP preempt mod_unload modversions                                                                                                                                                                                   m    __fentry__                                              9[    __x86_return_thunk                                      ![Ha    phy_drivers_register                                    0@    phy_read_mmd                                            `G    genphy_c45_aneg_done                                         phy_drivers_unregister                                      phy_10gbit_features                                     "    gen10g_config_aneg                                      zR    module_layout                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     teranetics                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               GCC: (Debian 12.2.0-14+deb12u1) 12.2.0  GCC: (Debian 12.2.0-14+deb12u1) 12.2.0               w   A=      h                           @j                   X       P=       `=    p         
      
  p=    ] =    ] =    ]        
9             a    	          
b mdio_device_id phy_module_exit phy_module_init teranetics_match_phy_device teranetics_read_status teranetics_aneg_done  teranetics.ko   FJ                                                                                                                                           `       ,                          -             @      :                   S            	       i                   }            <                                       $                                                                               0                           	    P                                  /                   [                                                 /           >       "                                                                                                                               *                     ?                     R                     f                     {                                         __UNIQUE_ID_alias194 __UNIQUE_ID_depends193 ____versions __UNIQUE_ID_retpoline192 __UNIQUE_ID_intree191 __UNIQUE_ID_name190 __UNIQUE_ID_vermagic189 _note_10 _note_9 teranetics_match_phy_device phy_module_init teranetics_driver teranetics_aneg_done phy_module_exit teranetics_read_status teranetics_tbl __UNIQUE_ID___addressable_cleanup_module319 __UNIQUE_ID___addressable_init_module318 __UNIQUE_ID_license317 __UNIQUE_ID_author316 __UNIQUE_ID_description315 __this_module cleanup_module __fentry__ init_module phy_drivers_unregister gen10g_config_aneg genphy_c45_aneg_done __x86_return_thunk phy_10gbit_features phy_drivers_register phy_read_mmd __mod_mdio__teranetics_tbl_device_table                        "   !             4          %   C          "   L          !   Q             |          %             "             %             "             %                                                                    $                        
                                                                                          P                                         B                                                                                                                           &                    B                    G                    K                    V                            $                    (                    ,                    0                    4                     8                    <                     @                                                   #                                 (                    0            P       P                                                                8                    P                     .symtab .strtab .shstrtab .note.gnu.build-id .note.Linux .rela.text .rela.init.text .rela.exit.text .rela__mcount_loc .rodata.str1.1 .modinfo .rela.return_sites .orc_unwind .rela.orc_unwind_ip __versions .rela.data .rela.exit.data .rela.init.data .rela.gnu.linkonce.this_module .bss .comment .note.GNU-stack .BTF .gnu_debuglink                                                                                             @       $                              .                     d       <                              ?                                                          :      @                                                 J                     y                                    E      @                     `                            Z                                                         U      @                      0                            j                                                          e      @               P      `           	                 w      2                                                                                                                                                                          @                     `           
                                            f                                                   K      D                                    @                                                                           @                                                                                             @                                                                                                                @               8                                                                                                 @               P                                                                            @                     @               h      0                                                                                          0                     P                             %                                                          5                           c                             :                     4
                                                          H
            !                    	                                                                                     I                             0	*H
01
0	`He0	*H
1a0]080 10UDebian Secure Boot CA2(oe:B&C0	`He0
	*H
  /MÍXnw0L[xyJǴInނGd4zmvל pdHO9ٴ[͗/ڠ®EgM7vI'>L6v
,$u8g(FKf7vo(}OuikGƻTa^Dy/= Nb2s>!S.HҪ65r\DT4.M2
@̈02쥧Vd         ~Module signature appended~
 070701000A039E000081A4000000000000000000000001682F6DA7000022B3000000CA0000000200000000000000000000004200000000usr/lib/modules/6.1.0-37-amd64/kernel/drivers/net/phy/uPD60620.ko ELF          >                    0          @     @ # "          GNU $cf҈={`Ŀ@        Linux                Linux   6.1.0-37-amd64      (  H     fɀ    f.         U   SH(  H      x2H(    Hǃ(      HE    Hǃ      $u	1[]    (  H         xިt؉   (  H  ⦃d           xHǃ(      HE     tOHm  @tmHm t[Hm tHHm t5Hm 
t"Hm @u?H    10Hu  Hu Hu 
Hu Hu Hu Hm     H       H           H                                Renesas uPD60620 license=GPL author=Bernd Edlinger <bernd.edlinger@hotmail.de> description=Renesas uPD60620 PHY driver alias=mdio:1011100000100100001010000010010? depends=libphy retpoline=Y intree=Y name=uPD60620 vermagic=6.1.0-37-amd64 SMP preempt mod_unload modversions                                                                                                                                  m    __fentry__                                              ![Ha    phy_drivers_register                                    XV    mdiobus_write                                                phy_drivers_unregister                                  ;    mdiobus_read                                            9[    __x86_return_thunk                                      rƃ    phy_resolve_aneg_pause                                  zR    module_layout                                           $($                                                                                                                                                                                $($                                                                                                                                                                                                                                                                                                                                                                                        uPD60620                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 GCC: (Debian 12.2.0-14+deb12u1) 12.2.0  GCC: (Debian 12.2.0-14+deb12u1) 12.2.0               Y   A=      h                           @j                   X       P=       `=    p         
      
  p=    ] =    ]        
9             `              
a mdio_device_id phy_module_exit phy_module_init upd60620_read_status upd60620_config_init    uPD60620.ko =                                                                                                                                               f       ,                          -                    :                   S            	       i                   }            <                                       $                                                           &                                0       _                          
                   9                   b                   y           2           >       (                                                                                                                                                                        #                     8                     O                    __UNIQUE_ID_alias194 __UNIQUE_ID_depends193 ____versions __UNIQUE_ID_retpoline192 __UNIQUE_ID_intree191 __UNIQUE_ID_name190 __UNIQUE_ID_vermagic189 _note_10 _note_9 phy_module_init upd60620_driver upd60620_config_init phy_module_exit upd60620_read_status upd60620_tbl __UNIQUE_ID___addressable_cleanup_module319 __UNIQUE_ID___addressable_init_module318 __UNIQUE_ID_license317 __UNIQUE_ID_author316 __UNIQUE_ID_description315 __this_module cleanup_module __fentry__ init_module phy_drivers_unregister mdiobus_read __x86_return_thunk mdiobus_write phy_drivers_register phy_resolve_aneg_pause __mod_mdio__upd60620_tbl_device_table                 "          !   1             M                                                     L         #                                                                    "                        
                                                                     0                                                               &                    0                    6                    <                                                                                       $                     (                    ,                     0                                                              0            0                                                   8                    P                     .symtab .strtab .shstrtab .note.gnu.build-id .note.Linux .rela.text .rela.init.text .rela.exit.text .rela__mcount_loc .rodata.str1.1 .modinfo .rela.return_sites .orc_unwind .rela.orc_unwind_ip __versions .rela.data .rela.exit.data .rela.init.data .rela.gnu.linkonce.this_module .bss .comment .note.GNU-stack .BTF .gnu_debuglink                                                                                             @       $                              .                     d       <                              ?                                                         :      @               P                                  J                     /                                    E      @                     `                            Z                     L                                    U      @               p      0                            j                     ]                                    e      @                     H           	                 w      2               u                                                                                                                                                           @                                
                                            N                                                         4                                    @                      8                                                                                                                                                      @               8      H                                                                                           @                                                                                                                 @                                                                      @                    @                     @                     0                                                                                          0                     P                             %                                                          5                           9                             :                     L
                                                          `
      x      !                    	                            u                                                         I                             0	*H
01
0	`He0	*H
1a0]080 10UDebian Secure Boot CA2(oe:B&C0	`He0
	*H
  PU;Ym]L?am
8
PÉЪy/Oysnuj
</ԩy>d;'Ӯ`+3 mjGw''V'nWq|ہxQkj: ۭS ײD~^QOsi+\JR}Cܪv
@W{w53Ynq]_wǫw+jIrte=PCWCӬf򁣟ƃzJL         ~Module signature appended~
 070701000A0396000081A4000000000000000000000001682F6DA700005CA3000000CA0000000200000000000000000000004100000000usr/lib/modules/6.1.0-37-amd64/kernel/drivers/net/phy/vitesse.ko  ELF          >                     R          @     @ # "          GNU U,8Ʊ;3 g        Linux                Linux   6.1.0-37-amd64      (        H      ff.     @     SH(  0*  H         H߹             (  1H         H߹a   [               SH(  0*  H         H߹             (  R  H         (    H         H߹            H߹             (    H         (  0*  H         H1ɺ          (  1H         (  1H         (  H   H         (  0*  H         H߹@           H߹ @   `         (     H         H߹ `            (  1H         H1[    ff.          ΋(  H             (  H         @     SH(  0*  H               H߾       (  R  H         (    H              H߾             H߾       (    H         (  0*  H         1ɺ   H߾       (  1H         (     H      (  H     1ɺ       (  H   H         (  0*  H         H߹@           H߹ @   `         (     H         H߹ `            (  1H         Hg1[    0*         H߹             (  R  H         (  1H         (    H         (    H         (  R  H         (  1H         (  5  H         (    H         (  0*  H         H1ɺ          (    H         (  1H         (  1H         (  H   H         (  0*  H         (   f  H         (  1H         (  N  H         HP1[             1  
t    SH(     H      x$ȋ(     H      1҅O[    f    SH(  1H         x	  
t[    (  H         x%  (     H  
[    ff.          USHH  H   = = u    =  u p  (  H         x!u	1[]    H       []    H    ff.          SH(     H  yKHH        	ȁ u
     u      [           x(  H  1ɺ   [    [             USH  u	  d~H1[]        Ņy	[]    1  u샻  d㋳(  R     H      Ņy(  H  1ɺ       릋(        H      ŅxË(  (     H      Ņx(       H      Ņ{(  H  1ɺ   []        H       H           H                                                                                                        Vitesse VSC8234 Vitesse VSC8244 Vitesse VSC8572 Vitesse VSC8601 Vitesse VSC7385 Vitesse VSC7388 Vitesse VSC7395 Vitesse VSC7398 Vitesse VSC8662 Vitesse VSC8221 Vitesse VSC8211 license=GPL author=Kriston Carson description=Vitesse PHY driver alias=mdio:????????????1111110001001011???? alias=mdio:????????????1111110001010101???? alias=mdio:????????????0111000001100110???? alias=mdio:????????????0111000001011000???? alias=mdio:????????????0111000001010101???? alias=mdio:????????????0111000001001000???? alias=mdio:????????????0111000001000101???? alias=mdio:????????????0111000001001101???? alias=mdio:????????????11111100011011?????? alias=mdio:????????????1111110001100010???? depends=libphy retpoline=Y intree=Y name=vitesse vermagic=6.1.0-37-amd64 SMP preempt mod_unload modversions                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            m    __fentry__                                              ![Ha    phy_drivers_register                                    XV    mdiobus_write                                           |ad    phy_modify                                              9[    __x86_return_thunk                                      hz    __mdiobus_write                                         ⨇    __mdiobus_read                                          ;    mdiobus_read                                            D    phy_trigger_machine                                         phy_error                                                    phy_drivers_unregister                                  (    __genphy_config_aneg                                    _+    genphy_setup_forced                                     zR    module_layout                                                  P    P    `  P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    `                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            vitesse                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  GCC: (Debian 12.2.0-14+deb12u1) 12.2.0  GCC: (Debian 12.2.0-14+deb12u1) 12.2.0         d  d  
         
9             X              
Y A=      h                           @j                   [       P=       `=    p         
      
  p=    ` =    `       
     
  =    c =    ` =    ` =    ` =    ` >    ǂ       
      
  '     >    j (>    ` :>    ` mdio_device_id phy_module_exit phy_module_init vsc82x4_config_aneg vsc8221_config_init vsc82xx_handle_interrupt vsc82xx_config_intr vsc8601_config_init vsc739x_config_init vsc738x_config_init vsc73xx_config_init vsc73xx_write_page vsc73xx_read_page vsc824x_config_init    vitesse.ko  {                                                                                                                                               A       ,            m       ,       +            ,       @            ,       U            ,       j           ,            I      ,            u      ,                  ,                  ,                                                                        	       &          
       :    *      <       R                   [           $       c                   s    `       H                  !           0       m                                                                                    ^           P      r                        8                   H    `             \     	            p            X       |                                                                               "                                   #                     7                  E                     T                   c                     n                   z                                          G                                 X                                                                                                                                      __UNIQUE_ID_alias203 __UNIQUE_ID_alias202 __UNIQUE_ID_alias201 __UNIQUE_ID_alias200 __UNIQUE_ID_alias199 __UNIQUE_ID_alias198 __UNIQUE_ID_alias197 __UNIQUE_ID_alias196 __UNIQUE_ID_alias195 __UNIQUE_ID_alias194 __UNIQUE_ID_depends193 ____versions __UNIQUE_ID_retpoline192 __UNIQUE_ID_intree191 __UNIQUE_ID_name190 __UNIQUE_ID_vermagic189 _note_10 _note_9 phy_module_init vsc82xx_driver vsc8221_config_init vsc73xx_config_init vsc739x_config_init vsc73xx_write_page vsc73xx_read_page vsc738x_config_init vsc8601_config_init vsc824x_config_init vsc82xx_handle_interrupt phy_module_exit vsc82xx_config_intr vsc82x4_config_aneg vitesse_tbl __UNIQUE_ID___addressable_cleanup_module319 __UNIQUE_ID___addressable_init_module318 __UNIQUE_ID_license317 __UNIQUE_ID_author316 __UNIQUE_ID_description315 phy_error genphy_setup_forced __this_module __mdiobus_read cleanup_module __fentry__ init_module phy_drivers_unregister __mdiobus_write __mod_mdio__vitesse_tbl_device_table phy_modify __x86_return_thunk __genphy_config_aneg phy_drivers_register phy_trigger_machine                 1             :   1          1   Q          :   h          7             :             7             1             :             7             :            :   '         7   >         7   Z         :   v         :            7            :            :            :            :            7   "         7   >         :   U         7   n         :   ~         8            1            4            1            /            1            :            7   $         :   @         :   W         7   n         7            :            :            7            :            5            :   '         :   C         :   Z         7   q         7            :            7            :            8            :            7            :   (         :   D         :   `         :   |         :            :            :            :            :            7            :   2         :   K         :   g         :            :            :            :            :            8            1            8            5   =         :   J         8   Q         1   n         :            8            5            :            1            5   0         8   8         <   D         8   L         ,   a         1            :            5            :            8   	         1   $	         9   )	         -   8	         8   h	         :   	         :   	         :   	         :   	         :   
         :             1             .                        `                 ;                `       
          3                                                           0                                               (                   0                   8                   @             P      H                   P             `      X              	                    }                                                                             I                                      /                   C                          $             7	                                         !                    0                    6                                                                                                     }      $                   (                   ,                   0                   4                   8                   <                   @                   D                   H                   L                   P                   T                   X             I      \             N      `             P      d             V      h                   l                   p                   t                   x                   |                                                   .                   /                   4                   B                   C                   H                   R                   `                   f                                                                                                                                      	                   	                   	                   "	                   #	                   (	                   6	                   7	                   <	                   
                   
                   
                                                                                                             0            P      `             	      x            `                                                       P      8             	      P            `      X                                                  P                   	      (            `      0                              0                                      `                        `            @                          	                  (	                  8
            P       h
                  
                                                 `       @                                                       
            p                                                                                             P                    	      8            `      @                                                                     `                        p                                                   `                                   0                      2           8         2           P         0            .symtab .strtab .shstrtab .note.gnu.build-id .note.Linux .rela.text .rela.init.text .rela.exit.text .rela__mcount_loc .rodata.str1.1 .modinfo .rela.return_sites .orc_unwind .rela.orc_unwind_ip __versions .rela.data .rela.exit.data .rela.init.data .rela.gnu.linkonce.this_module .bss .comment .note.GNU-stack .BTF .gnu_debuglink                                                                                             @       $                              .                     d       <                              ?                            
                             :      @               9      	                           J                     
                                    E      @               PC      `                            Z                     
                                    U      @               C      0                            j                     
      `                              e      @               C                 	                 w      2               @                                                              f                                                  V      (                                    @                E                 
                                      ~                                                                                                  @               E                                                                                                                                                           @               K                                                      ()                                          @               pP                                           