// 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
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           cw&Oz֓Ռx w_,!|}y19V7yD|X 0[<
* 0]4&M6	tҕki229XD3I]v<K<lKZ囱GLh;U9jA|JCk+Lx}dӆ;쀹:<Fqi-C,}n/];5]:N1Ws8'չxkUs}Ah5ykr:tzƉVm
suf$m>k;^#ξOIٶ/
T56´:ӆ:?lo)KZ{daOùxs\^[N3\ҫ.=DQtIgW6/~?[ț~Ɠ:Ȑ5; }=-P'oNLr&"[0@ʘgnQsml[׮q?zWux|{>\_ɉvξ<xZl?7XOo9BN3`5
m89Fh`_P7v}uuL'>cd}z=֧F1Jd7Jus -]/xj5`ͻ7VU7Fs8p+`v`Uj/zI5sJ뇃Epcn<zot\ayj
 Ԣ
FO|S&里>pJ4RtMvq&#ou1
y)jY}L8hݟNY]tp|\خ
;:H>7Kؿ0	u;p
s^;<$ɧFLQgi)9h֛y?J:Wne9gm|Ņⰿ޷Pko
Z{oqaYs/-$'k֒ޤ~?3!doP~<[?-(QNyyp3a{mp8b7Ƃ)7'5演?IGTv@$ (C1Ȏ{_	6P0S_ZcӀs+E=dĔOI3P(z盍|7AFGjBp#;xPX#)ʏKO5`OO/->j072$E}?zef9ėWD0+Tm,Kʇi7-3i?d}wdQ
;;zxݙα<u4o7%?(̸'G ug289 *SǱL sͥU/qvh8N	ܸv'^ Q`f`&
)4`J#LFaSwx؆`	;XpM^Nj/H)FV3K$_3=8\kYIH!~{<RIejh
nll_ZsJ(8c8rv'M^#[N'po5PM+˦qyГ_+AV1;܍Ш=DWL<1z
G	#<6Ce](>ހ͜{ѐ3F034n=aՕؗSG41 'k7OgFq۳ւϥVr9{~SG>̽q(q?OYV2v_/%kB<yp&-XoIGb
{ԫ>~ln߻:`;؀`,g	M
N`ۋ{/y'\@'w$c axsۂ#a}IfiSK&#v|=g)pB6T4E727^P-&XR=GI|E;[Y/
~&s_ibT<_`ΐ=hms~GάbO~[Q͆,YC	f+Q`^8"{^O--^4ZTR{
<ǹ>؃Y.
7blRs\n|u7V{yfp.7,oq/|m`Sk9Vswߤ%zo 1c6LD9-|289EvߐqDlG/e|EC.!OqT?^		8=oSm:ʇemN_uM޵}
bDFkyb-7gV)ΙkӉxoJտÞGAIre4z8lwZױ>Ӭ G2f335[W9+F-jU?VJ	wuܓ0WK[2FX5b3rƖEfcZnBwӦtcN#jeVGa3hNpJ"+!FmqK]\8O"ח*fc秇O8iۚ}Cmwx|A#f
]<mHxv<<?FwݢZ;\c
Ք}/6YyQx!˷Qk"_tc
ٯ*r~Qn=VAB NsKIu?qqr'(~w]@?rS'd8,+ |!@⬒e[uZg'^' ~lymvݽzCǸ}__,W'ē|S'_E7@[%c}wM·Vx"ȫڍnJAB~$&ldU=Վ[wx]e.sl
/1\ϸc}-䃞e7ܡ{b^͉UݑYvN?mng/xXؙV< Fec<;lȇV܋G2G?{[ 0ojXʴ[68.]/f;6z";Sn׿ Dٓk)'
Fk fXGh,׽7ԗc7%[ۚWZsNΟd"Sk( 0Pn6U`TRy|\n4A<¥/zOOZN"ܷ(ا&(.k|ޤ9gq:cumA!}\JӽHi]Ivm?F_pGk"U4|I9]_n3M؜4UCI3ɜ8IZyeb^&T$K2g#BsViřm3!V<}`n'<n\t		}pk~a5{#xx++. <8N
~;VƎw`E<*t%rw2gӧ8ZiD-|-6 \LcX門wm6ϫ2Om}Aj)IcV|o?oo̝Sj|}\ s"rA3fܒdυxLc3Hk{܅Trf`'1dr^ޟ&t1aͺU#9}e|QߓMAP0JX8N}	s_9#]愣<#w(#Im0~=wXh̬7.47;IDyxP\~<
sʭa;AU^N`-Lz;fmg+\	Q-P7?_I[enn]69M0	[#u!x!pIQbt&ڜJvg5ͣWgѬOm=)}(>o:Ҧ)<aEX&SP>OҺs͛ڍZwUu;ߟjM/ShZ
6Q&
/~Ti) t`FkHH)}~~|pk䫹]M')8mB+],+n՝(d34iFMLq{"o󙡸ckBngv36)+:_kȶpsIt*=ɤs~׀4Ns0#r<S$/xO22h!UF:A-)X&WNSAs61;7=koL"62fb8~qۚ{\6ICm"K0ގ
uqŋ>e ho3j0i2GWYc荙27$m,тU4_B}ZnN#K:v.kOCGDW]C{'}Aox	6ߨYP	<H@^A{pp>LMt2rӦAy"SAsf4bEʗc@µ_y[3\['?$B3Ŏ	Q56{0tk+iK&F#l}[V~1S~[v
:2U$=]2MളWQLl/.fT㏖8ϭ~	de&t;1k0P+_h4Lg=/
,xq\~o45u@?o+OMZt
]+|S8%闒0Lyn;ݥ~/yqiG+Yt&LL=8|ד5#8\$YpxCY`%/,݅K<{z5k
y/'dH6}qޏV ;*G)qpuK\!Jxb#YΙhIkxuX"!.ox|*ct]*=..%vE3tIj'b-62=/-wrUp}N.>-YF}iWB̂'cOklCyb3(&bSLFa^(3`M솅4|{\LhD+[|ڇK &MG
77L{ЮjnR$щJBRڒ=2IEȐ Y+::COe	I*royszRIږڎIU-4UGt4hZ)"ֺ.lƝXPe|;iM;:O'?/iPeͻ
ö*m!yI(N<滭9)x/Of))]=OKH&IU8c22dPH*nq$ת-CkՖYk՚)~4ZD:EV18(r4bΠil=5VHM/HTE	fª
̏##2MSq콫vD{ﾯ")({]ݽ4MhI{G
8wy#HK!%&'ǏrRGtftT@L؄h<ƞlڜ$#9gVK<\)~SlyG嗢zNs4<wӜEKIuM2\ю|#%|\Y*QQj-իOt߷M3^B}+zѫ"ly >YuLR%fD=Sx=zK}ZR$Ef[v>^;YMn8=xߍ;igE}U<)&h*QQܞ4CMϑ(>H	cFB%=Gw4R	+-6r0tWٰ1ʤy&o)!%2,:Rȅ
(t
 (xK< BE
kzA'$! ]`( %|zt\!򀷬B 3R"# 2huЂK/p~K	#R*='>j -.O(e,5C(a1^Ȁ
0l񖒉
Jc
Z\[ +-L1'x$.;
".]T⠁
,AiFi H;̷nD |= vp	y Xi[H  <aR9㲨:h4Q@~#;AR1P@GnXJTLh@ `"lp"< (B,J_v|.;%(/;`"ё)`CZq1qѱEJ_t<0&x>{4
,ey|,AJU%G"J>C%`CizA2	< B9|P_rhYɑR_rx6K	(1/9n\r(!/8P*_pႃ%P/!P,p(q(ゃ%C>X#
#
B4
EÍ3
..7^
쭠'ܘla@E.w
m!.M6H	ˎ ?&~i<_/M41bu(C<ؐņ	.6ņå.5pуK\jK
ϥF.5pąÅRZb	oY?  kXt Yhh-+1
@FxD# #;rxJ\	0``L|@/P/.x-+}-Yxˊ8̰d\:@aEE`PBp1yˊ*pQ2CoY9Ì !x=4@d+P/0@-+Z #`䂉Tċ|x)%.2'4\[V@Z#eH!"~J#@
B0⋀ߢޢ$n\[VlEdp -BVB؁Ųhbpa,Q_^,Y ole/D.1>H%ƍ$o"`ooYA:#pXP̘%$мe(A$ Œ?Ё(> 2B>K)C{VRT-W@@o<,xˊL`.<a7<)D\^d߲[V:
?-Z8Nxe[ max-+O<5taaL
x"a8pA޲`w
vp [V4`
[V. B+ ++f G޲BS("0uDR(
JLJP!j4][V@'(a=(	x|xBXQyˊ8VBdP.G>	C%e) ޲bòr#daY/vT?AÍ&2AF,[4/Q
3_.][z|Q8ȵ|[dU%-V 2qI¦gzԵj?tT-M'(r})b
3̨z~7Jy%ǞCf2
۰ιL̵*`]x4Yi\(_m+&S~}LR({lAOU>۪Ne|P
	?XDXu]n:L-Ձ]]SYvePwyO7}ڰ0Mg7p2l*,B˂@9yWׅ'g^uXY`
+Sim?}]ƭdVmm,Lve]̆O⣤
H`F0?w"띆ǎEI=D"%'E4t$[i4D~ۢ㞪{cmm U@=(&]q2+m)71p(,*	G	IfdtVgC6%?RH(F5	{Ms`REGoQOQ4nyUBc.1imfsed'6ZȌXÜL&K
v(V?P/32y9i}!A6FVYҞ"6F'q1.E)nQ⧢cl/.o'*
cR'b%R>KMy!bNwG`&"i.Efyy6MXTֹ:#8o* v B+CXM!ai&p&<<l\Q2uy	s:ُhڄ0г,HQPYJ=pdi*,ӄJò6L<O,V@k]y2***A.W]4{vy= pp6<>u}<qZum
PL: <fTۥ]j66Tr(~w]aFyO/Nj@*DagYq8 }BT
6:1t۰^que]yE]շQȩ(
aKcX0
.r(Y٥qVցv㶋caƂQf;+T6@bYe?:O[0M0{bRaMm(y2͢4my:̤@Ф i&7<
D(ra~WmT)!n,Vm<Qr6rq'.@eVu6,v`q<kAn_BЪ,a'&ؓ6nC1
Y*{YaV}.+o,o1ϳcipRu6èjǱM8ض	5GuqE]9h46]V|MzVi<nU+l<rE1\ank͹ʓ[4ƈCTIۚ#i7W\D1y7	J3Ӵ
8恟w}j4j>aGuWzq.<&
XP}@,&lh:yGqvY҄uN硬+C1O;٪nhw>RTUtބtv:Jheu(PP>u,ӡ|B.t<4v\ulB_Yk<m<,i0]uٍ40m,XWZgP\^wYVYDyNfm杓Zgawy8BlWi@Lkc9y6e8u4BcD,.c##R_7]jGoR={|:O][V'*UOK]Z_a,u'6az_"ێ^KxFߎmbf|Pߣ
i̥H5Ir?UgmueAPL:<w]E+neiũ!j6(<J!tc.Ed)REy*QvyZPZEi֡:^e:|@k+.ܨ+ǳv>G]'ámm瑧Y壚fR]/
(lQ'M'7<I9q?yc=*oǙ۶jƤ{r.
NϨ2deJUH<O1d/YVҎbMvA(Fj'[UUڷZMSuPq?I|99$Ov%,Uu?GاSIR#S@Ulf$()L,MP*s}mF*8KwMqCH{CK)n]Zb$3bnE,Ǣ4zx"UIud0"*~(!Y_G$"K_YIDD32ZsbIN61.i:J_$OIёxVTV/z4Z]G{ﻧ\q;4vM'1xSaxoTEE{zWjW={%j&3#I2ӈUFSL1ޗoTn\Zq&31I$F3MEV]{O<Occ|4-GPGN$TwEvW|#ڼ&SF˳gMF(Vm54}LܗUSKTIݪVUWy)?8գRkVi_=ǗI6~eOq*[7KĭO(
M=@6lMvae>uNK+.QܦfƑ	#vV߅-+<wNޭG4N2TGyz<4GZWr(ЊlT*rϲf([annڲ籣*Pޛ("z<bG5Q:[p:[e7d:&Ttxwm:}jfɴR.:$l'WHr4^5DX$ןbW-n&7v^dΔh(2-Xā!yŗm6%9^sH,EȯNGGMCz1#FfV]]xQylCXԜ?El<[vxQ^8+N$$nWW}JsBxتIWR)꽓1VRd^G_JLR|yd.I
w5`&u"\?^{iNuNRTD[MGY#AVTz*EoJPj6.	76g³F;Ihw>Cd~{]US_NZ^鼛ΚlnSS8':~YDUM[=&y5Iiv%sd>G&9^tM4Y:rnf^Ӟz̻=#I.>lmO!/R(<E#HwIi&2vQ[u)IHzfOQ)~j#'3:rThKqS5-1Yj"xnKW_>^nQ&)jҒTyיs:U/i~z9Gwbw-yYy/ճ4w%G^yϤ{zHD5WE[2]qmȖ6Um!>x#(e/#3#<T"@6xqʸ"
8w"ÑñE)D( #
6',A(CI`jt@!F\%Ș@n`$j1pppZRP 
'vI2F^zE5yiӼ#kܮW7_/ю'sϚ'mc-.iz瑋eWSԣfqwu3>HR<&O"ImRt;jyj{;E5ի`ʑ"8
$)AqZg]'I`D8ە=Z:^~@zESzFe)۞xxR磾IP{HM3s!)gE=N#%C96Jcq4ì
|i_gW5N6Ҭ첀pvB|KV5ChGkxԭ\Z]>ns$)zHЮzG_&!OB21agJO{-R[OOq֤-$ُ'!03%'8/ᣤ_ORHfȴH0{SQPEQU{y:+hI$c3%Noj$MӚ:y;,bEEcLǌ8͍ɕ[Ms<g,5׭z%׫%z\uY񰰃Eyڝt{;?Oq'T<:{U^%ކQYrVx~0J,[yv
38(:I9~4
$Q)ENڞЯ ү}]қҵhNSUUӒzvTS#n~AzZ_?3MӴ]Lf1,:]x;vV&s7Gaz]V\m:Wq](MQqZ:
ˣͣ,mIő=,<V)%%s?Z!wouZWާ}ڕ]3H=yISu X~䯘x#T0GM1v!G=nM[DIjfSk{%f=J_R5u:4ʼ/jt:(k,j4&Qds¨)*)jhiGJi:sYVhVhmwYefMuomwYၽ(p5ֻ,f,=~(32QB0$I2#FG&G֖\)jNҚgnW=zK>Ge!'8Wa[q7֜2k0+M8gîɵmWì<s洚#9)Vy*۪誟n`U,e5֟#G Q!۰7mv*?3"}xEBɌLS([}b]TEUX٨DB
xi_mԆ:,0˸۸032mGm瑐d2##j(,:Lfddq$0$$4ea@UQՇY^fd**32aq'~f1Q݇Yv0p$j
QVqz8lm:,P%YUy~٪®3CMhuQu	xiv!uq,26-:lQXFY:>.,N4ʃu
:gY-ܼr!]V`ܗM̲(m^eًpY`e=VERh963iw+'*OT,U_S<秺wrܺoo4|`>>{|n-iUS=%Φzj{.ETyk3{^Imu.O}F$H6d4 @ Hc (8Eb8SdFz KvdRH<KaABfD    @  (vl}Il&dQ>/\ʩz;~2w54/nRyPXO!	Keoա#<[6
gsʂgbkHSvT<6"6e_.Mc'7|D{7eeo
^^"!C [,	fqqG4@{] O xm~f~T;aټHkűaB;\CdUczrr<=ܰAwmw	g̡*EL!!%{TgJN,1f]*!
 Lonu@('
v3?瞀1w۠WJsvҬu@ֱ@ѹȨUЧ>GɪݹyIN*uK)6qAIAʢ.DR GTJåJilfW'|i)4*8^I
'4Cϴ\pGi cX-\=gUIʋy,3,~AZ}+FLDV]oP;ŭ9b&/`M/,5؆I ŕ):]@Sx_%qو #"	]n{XoCX4%RB,4SxѯnoZW}
9i"O|66	ƕ7nuuaf9p8о6`N+h6nv@}h
0'yC8 u͆:媕g?:$?7
voо%DA1n)G{504Iʑ^U,;԰׸8T}`)}p~6GKq8cޫo*컃Ao޾I@8J
:$mq¦TL챘9{^61N
z_`½g_8T=#+nſማgL
U \A v
;sN1qH`X.2Iu6/4ofN|0Ӫ,T`6kN%2e:V
-MIvT#)٣ asS˴ށ
L|>6B#F 5ʖt ꃰĬ'UOϳȵfAs^SA["|Y)]\=a:)

21'eٝGx'|Js׏8 q컒s)l5PxGpTT"L*'@8[Y뫌W[X&9X>җŘߚwc~-Í-XIFhr˫tcJ_
_|_)L;bAQ^ 5ߓ|zM)oe>CJ5|/a 9~й0f_Jk{.Cd<Tj+N|:ό3eKA+q2Qfcig#Ś|&zO}m@tyB>'?ʛJ*D@D#j(pЬ@Yܶ~ZƃOآh)\qMI1Aj4Xp2TR4slAG?[K@aLkC,2 <b&D+B92ZOP}USJymL8͕EF-ġ舣1*BEpu6$o4a=CiG4,טP3.c<"O=J,fD$F
Xʳyo_[c]h.^y~NU i>
"Iɚ|r>g~p
.3[Sm_?'9J^.ܞ 7Nq]N8PBT!66l,x,o_ٙhTs)YXy~3pm9yq+8gCUeFu<D'0yo)$BΜD ӫ_e\ AvN±3B#ȇ=:>e0=m]%G"+*7H$'HƙJa8Z+HT'uAfγ7Q`Q>2; _0T/61Z1Nأ2(<
L#zR<덝5+DK2+݉je*7N?Йc/Ŭ
G f'Fn"{eNXE60(4R`0Q&\vܫA '*Yg"@K7F~V`Rɣxbg晣3R![ђ
d_Fn}}o"eHYXakEu_6e8,	a⍛i
2.9~rwR۞[U 	){W>qu9:!{dUgzEY:'su|mf@ounP]UA<@i~+IP{}"ĚK 
E4]!<*B߁4]]E
8WR.~;q&5&hUMdmU c	Y"Drhu&j
HA|Cs@A(<]XVʯJL֒H@pMυf|Th4`BYiWQ&NB?o
O5ݾv3pB* %O1Ih㐯ԇX8FVtRӦ p5de<CYtȷ<kH tւr;jmo´	T)C8P#Q
{/Z2,L`q:Y[y=_MKcDlvҼ&0JtQoD!'eͣhtZ얿p[PĤbI:N]ok?E
(k)'$}yp`CEθtqKo~YPn(ˁI
K`&&;VŚ]u`Wػ.v/*{0σ۶'1	la|2xAƌF-[1:0ׇK"\adWx(L^$ಝU-c+/wXkl&?)R]J$֚(vܔ@ֳp_tȻeG]
zFPx~Ќ	n0Ioe2 p>FJJNL
A'6&kǋူ꭪<tfQ8CJ81X*@͒8tgV$
j]Ȼqв,6"kgsZI U8aqjAu! &G ǗURwQLh>t*RFnM"8:Km,@)چǜw/`Ï~K{9X߿.d")LߘLߊ[F֧L&k`bTga:G7e￼=rMH`$j$<%
p OA*8v@aK]
{tj+{H2&ꝟȼn3%`}NaBx'NM,-GXFq]6܌pnw`//.tKv^ cll#m]iNЇ>>xu^1PrJήwy_K
,P+/
|{"OĔP%ZSAW\ܓȼPtn&a}d#uZcӊ2/"!cSkq]YG
KJz_
kWC;i	qS]*b7 x3ŠX=Mhc5\e?+R,r`ۻKlKΕy_?m4oG+ipn: ?m`we>!޶2xj[b[atzH>`>#}/ŎZM/p[Hc08Eu*InEZNifZjE8^}?;PIP
 g>o&{5@Z#	7b`[`qZUj؆t }=/R5ӥUsĞD$VJBzm
0[U`M+vb-N]>Ҳbr0`NFmnwձb}	?i;#ư;Hjpe2&2$L? ZY#PZ]@&}$Z^3qR	5VBt.wazA ɢzH{-I'CBz
Mzpi#,gK${ѕܯ}#/LM7La>gӕ	l[jq(Ww;"7x!N?5Ao4c0t(`7؂
Va)~sI4*K4zEK1Ft&GNL("%4HwT<.Vv&2xGdwZ~mD Oה{Q/|Y޵3(!&xh179	QXit)5ƒH'7tۛe?ZnO -z
B3C4D«?}z|,g8IBIT;HRtڡdH4#Qvr
)Is#-PB=MP>x\ʃ#
2O\Szc:cU
%5F)fBX*v|U14J|F`KG
ZzZ|Ds
p̤"`p[QƐ&j<EP _zuaMcVKHL(4m&GFwD905p)BEzObՇ
C0vΫ1>]B116{ת4m޽	PutN1LGif~S:3WGR7Yr1l|{ԓNPNN̨~a[U_

Jk4?)tSPk{R9pȬBmoCmT/rvՙ@?Qf{ge3\W0/=g@oSUpDE}6[`|Y+ Q}O@i{LR͍x#Y_%պM@$iPzvFD$6
t[
9RMLIz᜹.u55NÿG(T9>)Kl`\۰sT[A;\Ppٍgk959;16"<t>=9-FGOC=ߠ2"rc%쭟>iw&Gܙx~5~=Z]2<5FRΌWx8ƌa}J^\Q&"^8B9+1d fH՘8$ŝcBFn,	|oc#3d5(՜x)[ጼ''XH(HKv*N]/oAo%2:
* Ԧ+E4kuHUމ2?<۶PnhE?Ʀ?}RUR~\g9cb]9#Az7|C],'5r٦)-
@Ts
kA|7kkGg)HCqR2*B6؊Ũtt#GJ@,Q"?."0ɛ9ڄdj@݋~tsx٦8TotRSrU&6bͦZ!2f,R:p/Y;R9v*-Pf_Y<*e3+@	%IX9K|_+.]=U.^\{YPʹ]pYTg4Oȷ:Cs~^GSΉd-N(8 Pe/EF@b֊c
gX`^32b\+ƭ"ȅu㼼,76.G;zG+.5
bS6(ct+efI;s%T_	q@j- rN冰'FP!ʪYYT1X餤mD;!w{Χ⿬'T W>L=
yS1e9cý
a$7U}	bU$С:NquәNj,m eLA xBVn\4_;	7Ts
"gx1z᧧#K$^U_u%n$PZ4p77^,Pąb@a=َbglt:nzOWȝ_$sYqa0*,tOf}g~1~?0/ӂv)_2¾lO埉d\fs6zCxC7w+Rɡk^E5%t~HRpߝ:.IX&;Dχn[a4	'pS:WR@ E)OB:7لj
k9bDG-GǅM;}eV=GK>W|f^3juD\h^B%HfQlosٛΜnJuK_Lٽ'2yap1i̠3:Le)$.X8A)&4Ǽwfń6(GozY`7ShiFזKC}_M{2^c
LO;44PFc<u++JJ °]ΧOy`0
1ҏY{|SE\ɟxuIȑ'ó$wip=]O`l/!fH	;O5E5dWH] 2[gg/TB]@d9htg{h$РBϓA4	<BOú,˭)m	MBH{䢏vDl8%;l1=ȩyW*G@3zJNs˝Y`n0j7y0?>ЌM #Je;'RA襺Et˥Y˦-Qy4iXX\,	  
RO+J ݢd9p_stvUrhYQ|}uϢ@A1)ǉY,j31Jt} U[<ӁDr~8%4/pZ;;>xͤ
%G/fCIWM#+C/awo;u'a?C@$2})*uH$۳ۛ$;{+BhYHA?5#9|h>͇֒y"	;uV%%X@bG>>,)?|z
dϾ@'?C<~W>+r_"!S>Q%^
?BBw(}h&#|%EG=L(o2I`}{'Ynzo:&$gL?[) $cO :Iy܁v}.dt
[ЋXhZC^"Ͻl;A`cK
8XiQvl3o0Sg.P/܆e~O;RH,uX C,zCC	~*{=2v=km5^Coe5ȨXѩ 2Mjj	+X9n8oƴu4 fw.NҨEZUa\-.p0  taB['YmTHFdp_|2Rgڝ{/cuUvؑ<1	'hIxA!^Aw0\)ɅcQD."^Ǳ>VЙ#oy+3G;U%)"I2X9pޜȳMXuT6I#Obqh'?-*78%q.gmrRBѠ\9/%qm?Bسw+Fk<ƃ88Zy߫3Ș}ڳЉ	+_?5AhHZL08{Ptmzj_Ty^`I>KџCA
	J	E(6e&_?xxMjf%9oEjnג;9ؘԊ0AupGq̑3"lNK<ZX4]c~vZ̘iH_nO|5Lu,F)5~/.83kVCH0ٻaEex42'E--4qln1Z%bfؚkAU'4gWfk2J9a&!_c7K<TT!IaRͲ0P	D,*r&C0w@*`1ZX>P՞'LXc.Q;)+aw_51KY*D54 Y@#>ٕ
P$ʮY.drL_2}3XaުVwkKs_(iEoR亓	ٯݑѧYǯ@!H9.jrvܙaqYїۮq@gz؋<
pȃ(όQNJֺj'ӆJ$c~"
lL2//~[BZ|	h):WA	aҕYO+E cCZز]d\ILl8^1M?sD,@sdcư2qt(dG>iMMT<\L*&pEŻ_me8{w~E 
z{L崖dI_%/Eq>ЕLK㱵ojMզ̤H"$0țRMKïrtWy<q;<JotV!u1QeBy@.cE3h?9X3*YZnqDqHrbl|MD$#Y
d[č[~CrUxpC2ФC+ۺodwpMŹ`#6nz$\T_*vN 8ݖ:Ϥ_gh햐K }nx( ʡ$nّz?'Nor\o烓'WrFW_o
5fU۲v\2&mV}g\5RFn&I_Y_O[Ծ[p-nk
 ex^=yw	9~>~x}$ #RhǝA`aENg:_D#*oB&/}0'LmjLI
$x9|%5Էvq|'9;-P'hۙRX6w?NwU䞅Hbq@bb>A,E=_mZt&?Ы2eZ{_⊗II\+޳N|Hj}i 0[4)"%3786M(U§cF&ifff_EwEdIm-C޴OG@mK:PČ
Ʃy6l9/igiT:WB	$E$"4"eJvP^%ٙ4'|
a#M\VVj5"' Mf^s2YDL-=zG-344!v?n"X}
BGV~]:1z2چj֭V n։	j)SWTS҈@T%	-N+VNVA4FEFJng`
.L\(mC CfjcqY?Dz&CTrgEqnp
@kcm_mKQl"H"U?:Et]Q(K#x$,[T]w>OtK-JPQ;VA#8ܶU|ךGh+p
K>6#ĤkpR4.)09ˋGxo4
^3teow *Ar[C2?/R%A@1ݲ<LE|9nF9pZVف簉~*/O@TCTXq"sLK!Fo !]AÆ_lqusB)۶ttBV5F
a
+N!p !r+1P9ȭ9X| T-=DAF8LR}C$i7;n ]o8$϶mʖB|=o+`?
ɉc%
Y#@mn5zc󘡡	-3 ez8i+jmպ(F<^t)&Xۍ> fgVJˆX"ރGG_ym2r3RZA1*fkN-XOGXV\Bģ]f [4(o3%BrH!D~L=&
3
8[QፙRtGMG&
ڿo$粂SFˬ%&h;;:s4VV[Xu;PQMģ6@axݬm4Uf
D]8lҐԫsK4cG>KICkIFGKZq]L͙e5ވ.h;mhI3Z0(bbOZU]L<:nS}%8wpQB*v zOm]s+M!K+\ȮVZbJi8jvG
zrB
r2exV)FebUj-zMCD`RӁ@і?/,>uIr%ҍq0CM4cUzOGS$
۴ʪrQ@$cw94In2Zd.BõQIV|7T<ZRcdUR[4 Dh@]/lk*0?`:{32A)|֝k
K@J+̷hLoO2UX$~9vux{ڀ
e\sض#1e	6GwC%萋 pNQZ3Ԙԧ8t~쀨>ܯm
0+n$C  @95Jej 
\t]U셳#Lv_!Aͣ3!S\}nIOUu9x WnMӾ/J+,WR
^NVkx/zG/An),˲H+6Uz]QVlKX,^QcwLJ\{t+e $D& 0
wcrV5LR2I`ʹ18Mu/z:	!r-qܑ#2*@a?G^zt+)œ^9"pćI+8m3m-,hN24M\@jK%rHyy(҈0.[(Ln}	k^3	9'nZL;$3K8 J&+h{ wP:k| 2uShyrɽN?SgC/B*fܫc5|*O4!/KUq!KZw_뷽ԝf1-]UruUMت ԨKbl	q0 tw&-}AxmGd@t9]%a#hһ1|
h"źdv:IM\k T/r!a^O`%-(3@[+XhwFP~uӸW̸y"cٖ.gfxˉVZtiJ#i`0xa( >?tt۳"KyV!t>"Iw2&e{;[
KhQCmXӋ$~ij{ߦ,{mY`u~rI8n	!\.h(UɋKW`a[tC-b΁|V-@[J72P`#Hp&iB6wNULC\F11Q]0ah?b*G	Lf<dt].ӻ'"waa!hB(SIyS/a9%e(v(̳Ln98	E-`d;Df5zMaz?	L]mpPH1`L1Ěxy;b=un2~JWl	fƖh8^c9w82iaXIX~FJeo,i9oXX!cAPW-0ue"QI61r3 D ct_p,v򩧷UZWfDbR/\ 64yMx&MixSGc)p=AJá)({VEeR
uxAo^:8l,!tX9y:qcX7Dop&X|&x=V}J<z3Wl/)-ldvl@=ұifi./\udQ؉-Ȫ$>.u3Fٝ>5Y }?ayߕy&z8^mIc/pfE4ӆ#l	KnƁXca'^2q<n{Zxc8x~S0q_/z Ŕu@ϕX| fɵͻLJ\:
	y8p{7`7r%;d N8iW$
G<H8p$>|i]xJf7c6):uDF_71B`(f5'X
ʟDr63p=OrQ:-.0Xbڝzqug#[+*֦o59@䞯/ ќiͷӨB>m܎ A!9q{Vf:4(C)I@u"Ab<Tvr1譕mMb<`iPKc
Dfc!Zj	f
#JQOU/7}]cշvlX.(8}_id9"
صZ"![%rbK?0Tڶ F4;{2S
ŰGN3#]Gxo>-Ga!YiTInlyg]ԤXI=kǪq勆LyUeVAd|Ұb/^
27Kxxi	heɹ*z֢hL6rx%2/ym"߂XqbFV>=:އ	>b"qч:-P<f4c4xRN^|eFZXQMGMEݯ'D/j2ΒSM9!h|)}DgOt$P9<u%E-ta!Rrp+TG@/qy-@ UF,˹("3ڎ7g0au 
dsZ
;w@Bf<`{mVf_;	F7c-SS̆9uw)fH]m4`7=(Ǧnih:49Y|;qlǈߖKfs1ƮVR ,MDcUBRWd5X"3
E85eRBٞ/}#Q2{y[GltḱG&dzB;x#{uPiE@*9*6:#V5 pYxZZj-ĥ#j: `FJ5|aؑT7 Fmp}T?/xRσ߸JSrФD{P-PFmDɗqz kbx+Ai
TyTHC-*|k^7a(*UOHoh3AN6RRO+OMxuػ@°IJTޮqóe]k^ni*g]!@x%,
ll]1]+ҸADo1?HV?o|F}+
|uմuF,\ػ91YJz-u1܄z
RDd>|#t}3i;p\5as~=`>!#PB+^yp-T.ˣ$ͣ(t{Uɐ c,T\\xs}ق5ɩ $-x
q	cFX9/TYI>=ܰEZܣ]KKeO؟[ց֩;Ն(d!KՅs*Rҟ"&X`ZT/XR^K~XFab_^)bU<vGF3;@!v]a{'S'A,L5}>tŦ%9/W5XGDZ /Q˞!^я=I
ѢtH-UESv䲏'8䐿$v%^?=vצf\#V'8G]@Ah`0$S/*PtW0&Zz'8> Sњ~;u|؇h;bQx2
kT!YY8=5o:9[b!ĴvC?ae72aM"2ʔFgg|="e'2wb:7"
S9ׄ
fd.~ƻ~)%B)wuޡ2*rOa
0nK}&5=tA8d|%+
w/zsv$b
te[w:ǐ)ܹXўoUh_J=}F1nۙ͋@wg_N>UPsQsKT.҆0\턃:D(iA# _B\>
+C%ⰹJJi֡ytX_w9tpi`#7'79|`#u$us.*,^8Vd(lt` u.7#RKUada+㔸1B-YBgg]b^ُxL߰G2*P
(>AʭuEsWh s|j=̥DXm0 q終ӕaqw
3
^&Lw1Q0{pZ-w4:2dFҫ	'dFݢSh7IʌxՑWV3E~
ޚN0ۖ~Z]	 H]3|)>.;t#ot
.C<!4259"r3PULωQ50"dgLv^X0cK} -
"qR[^vSJ-fPdX n_5ܷ)TUިO#cJxL! v~Cn.ׅ:PB`'c|`O/UgH8k_dbWBl4e1gV:%T%qLQ7{@PW(a-K] %L*& NL5iC+EY
xJK'8?&aP_pj|zDldÄxr`_LojǝFܑ6M,w;m^ԡ@\L 	ڀ*%s\
hXʥRdZn1ua&A9v<nX+|X0}0Kc1y@
#uu`gE1%F0ީD(|(?,fmkS:q*;Nz)EҬ9	7P%ǐ`[N`@VEkWn/ևY\x҃a`jt:k+'H:Iw$XZ.|lt#V0	,L}GrA8Ή>kX#8A	&fDŎ%+\`VYf]U}˶±
7BKH40$78 "KΎ&tA)vj: #1v?ruF\dˇb%Tv4-,'Hh-6 _=-]C$b]0u8njՌgѼ{L%͝J&: 7L#<tU=ax(♳#D+;aorF']GsC+4(0!Gѽ
EuJ@wA*q7
i3r)VQ&z FrYRZofΛd!.jzKǓ,(+69N@\j6P`/}
,]Y6;Kn݈:ܞE|rt]b,QZ&ç&y<-Px/*kꁂv4R\V!n3=	_"COzhN!Nokt$9cb\%40
tϳ3sR4)vn
 hDbbwUOTu:tBB<'
ON*#̔ sKm]:w )~HьU2ee^sgTkGuJؙ?
Tb/h/Ɣ.	4Zb-E8Y5I
4'LqJFC*N@s*)-*D5g	>>D'BUWuau{`fJP).>Cwn1%dǰyU1D^wt+-|մ/_*wrl,c>DE~ͮѧ$MBzl6O5y/HWjF>nQL ŏ˗_tQ$k1:UVo8bn?NP3A4`wsG#ݜđw
RUNӣ	^ tuڽsʙf
DG	(7ѝz.}P/<;(f`dR0z蛴]%7RlN?|$
~Io&$9H.ε:pO3EL"ˋ2W&Y;{4:
ұ9\F^^OV
hφ?V1Cݼ'$֘}
5DUY'Ub[2af/lw=3 c)%:4Q/k:<Q7Q[#mkL^Qs9RI!bJ4Zo+FxUϩCj:}pTfKv u8:5ERL=j t',iפEO:!.O^*^̌	O\2#)YhäԶ೼=. }F{>QR~L³;!Y'z8U-K(A@у.Hsǣ0¨gt>9V+ON9<D˿TI}LK2ډ Ӏ_p.<%mn20@۸1+
l`va9gz'M4TT-8-sp
-MOOI;sF,I|CVbE*yÍّ7!	ͻT?n+xRr0NwBZ,L
`B78AǁG
$+ԍJMC'6dK'zIM o	,
[͚tT'	0N9$jX8
=}KίR'KT*f+eS>֥AKJ׌vI3.:5|<N;klf
-bX 'ҁ`f:pd6Z]Ir4n]IhOcvgy>`YH=R6("#	"Rh>npQ6KFcd1Y@RUB[>xYSxhX;B͖w}*L^gR%W1#OL=]4UˡA}J*N͟tфʟ$ysP%:00BhE5LV>گE6 Xk<5*ic(#s:ZT-dqجÇz62|ҜBa= `
K󽃅c&帣lgWA֊q0UǊ$gAX_EZ/z+jWQaUgjz<)@>J6Cv/p 8b{aw>	MzXnM\f&VLŻh!^pl'X+L" &oؓc .N)\̦OٿDHj.qLrIxߒj{MDR.)FKAmr.aY+_]	]G=,]vj/
~ϓ~q
.%3?cS&r,:ǭ+l"Ob:	@	h2fC|l֍5+ٹoLvjl-jbߤ&jյռ#p ft,ZjDי/Ւ7Lhryw<;?.P,)x-5Mb.:6Q	:c6)T[(!QlIiL՘UTZ&2"64nn/wBRIg9 9~-7|nD]M%j"Ef{\5he݂ǣK{t;5G|{Tl.R9
n1T%
5;FP
s:Wr$k. z>Pjz3Oj(
	v~n3zӅe=EEA'zN
~u())}@̗!:_AvD
e4hk_}NguP"j#$f,'}fT/"k,ُ5na
"_:*5mv 7vܲrr8ͼneN+!*cjZy& KI뙍lO{!uԽx9Wrʨ>Nf]lI
`TGpG`-5ʰ
 r!͏$MFy$76mk>r8B_E_Zv5!~,ye"y*S=5PKIS+;R6 >4a>`!0n&5?G=r|M7
Rkvqf dbRct"SwMU{l}.qlJ~89'o	zK"p`1(
|1@(Qlp5$8uNyk#)Dt`HFJ
ځ߫9+34q`ewsLvRm<|.ZepHzNb gJ$9s ugl/e(
MFBŧTvԹկ'=	 m8hfdzo'BP$&ȏ1t	!ZNsޟ,R#"~`_J3`Ҫa("1O/6yL­;E3nEڢ`/8{'.m4ʬR``v=Kpzw[<3l<Zlv-F?ͨS7	{xPi Jq%Bc\q'~Ą+F#KbI~(ot@)د^?n/"'<aا>6j)	<	zT[ `:ˠI> l2,I{*|ⷚ,`=20ҒoH|UB/Qfe}5>̈́M7(KZ*GluSHͤ}Uj2$ 7 20PU.Ĺ٨UGj?=ޮ<`$xa7ژ.j_X-*RZwTAI
%HDǔӊňJ%¥UĽ"/M@`Jno-}x|}MF3ԏ:BҳONf0o¹5şA[2b%[_X~z}ż L<<0yIpYh
jɶ	궡o47L
$;-d@bO'ҕ nxֳя3n^	zʾV(	-oH\<
XAr},(R<ߺo[LLeOxReS_H>3=.:	G18/-}v}18?x(@}'㣟8_Hwv5
;QhXQh-AՍOd6r`:#Ozb_VL\qǥO֛djQom	?/HZe4=|q%k8F]W2KP4HLQW&e$ &(qow?=MGn4nQc;gSe`ъngIgJ(єQЉw)MߏܵNVBk] I⮰Z%
915؉D
VzjGwz`NPH؇)MU-~yXB3zXzdZP`a1.ކĴrۙH#4=״ xÏ

^z^|VZG&賫X!Æ@L|gVm\;Y
4NZvB}o1 Mi>& "!U;ʁtu1=ݎҽ(wso끰'a}5>(B9a!0ڿ`lSR=[
2-,CYV M'$oҶ!;XM]6!'-85IzLfn]׶:Ղk@%$M	s;k0ȫeB"nq$e<eX1	DGjdR+Ɨ<d֗ 9*dc:;|Gx>oVy9hȆ%Iǰ0pϹOVѦ2g3GvΖ<˕Pt+0!~74r®5hȎ,:Kk֕Wn#$BdE Qθm	#4J89A JRR5Qo&]n*c#/tRp&sQ>IdƦZ8 4S9Xס
ǍUَyܟX!wi>`<MKxC۲b'O\NY+2zxM+А2/_QѨY;4!⸞3-ŉ4rv*	"FWs㖀0&,k	{6֡9*S~@PPN	}m
~X炭iғYw'F4'V.N7Bz~^DLF1V*^0p;'6hH㋾ֱ b1z>-~f
8Jt)k!\E0R:J[RrX$qTy%"KO`ŖTgݯ }b҈
1.rSߜ
Ƶ|ȻT;S\w-Z)7o }e^4UE4	fB.!A341]2"bu@HPJ:FL!x.i>Nṯns!!4:XH#E[s_Jh{OsvBwWVR=Տ5Q#88	M}x
jg
-||ʼ.ӥdW>6`ܷk< 29ҁn.=tK@7aC۵lJQ<z\nЊʯr_;󹩦ʁg7av^aC9ɨ}-NX B<.ϠΓX8=[.(AD"P;e4=J`
@HV}IgkPS,B*^L3;0%7 gz=lժpBOf-~Z)֜+`Mɽ;V5lgBN]`@ȑ!0eVQۿOda?(͙TQ&׆ZV. wĢ*7"bO0\J籈xQ+^'
CT
7Lh(mRJJ"gsJh.tN
>:URˢ
KA#sb_1)}ŏ	]Q>b)6S/	ViSK
Ӵ{OpO2@ĵ))J]Kd`وr);C9)]5xʛAs	IUC;Ҥkз:u	ܦ(rRCǏ-us!e\4^SpW.eh6euݧmr ز#`,M"gYOiJe3|'xwHy@ $"K3&`2CGm
1-/²÷ꎎ-I0ͥScKzuI%8<YdD?`&aiOh $cݗ`cҠ#`?
$v%qLIo~ 	79-:fhiDB6εO
<	W`_5.dO{ReVv!Ji׼>#؅+p֭?3Umb51ሳɇ n_\#Bs#_M$!lVL'u88d'u_g͍y}%$poO9N 78WA
ET7 ^$+E_isNtEP|~[Qp)I.>8B2íGD{[[	m`lR¸kMNևlq0؂x#']Fmi8T2&E7F;H^K!w 6)ҵ5T]L#*Z@C{AC82yf*Tl*Os7NWH&.HG򕰨PHA'J)Վg噧i&|nnQSqZ: `#AKHupjO9d$2:(Y(L`>ے舻#G]tG[[]+<^|e8A_y`U,0QÐFBH.9HOA'RNdER)&Gs6\$N&	Vˬ`Fp1REEq"P{I6h8"
.5d.j̥%\qU&`8zĩ2
7]`8/;]SftFi!=m`$Ju,kn;P",ºffYw'ղ[˳bJ6DniYorWB/oYDv$k`ZvetWSWv4:z,"h'Aӓ*ۺ\#6%D\rD_!F<m7g%\+>u|ў7%P5\S	Fѧs<]ӡ/~8]  Gj3waJ\1a?ER-Y\QĊK V ᛾MqhQRQTP0,О}:Xv?cjڈ䈖	RK#rA)Wl4&kM1`
meO{FFl{iRbQAj 7.$$%RO<Rπ0BcK I)Q٩_,͇2P;󘗞=!tH)PJ#zȄ'ήP c.+ˏ<UiB/T%Z@1H("x5ґA1vPsQ4y2md<<'Ce>0P:.E9\ UbYKH!xoGε2c]qxL[%*~ 7O/y3Q9ӇD:4x#؎j54@-R_bsXZ)X9k	ElƱфV́tP\a#PRf3*dv+_Y	6qrҼVoNC+nZ%6$ƅ8H(W+QH68a*y-'v3Mڣ@ |zT,TW&QtNFFZ&p\VȡB
QOQDSZ	~^wܪ5u׬rF@Ү6/@H&w[$)~C}0	Þ	MAU
DX
)zfpb4֡4id
׋`<Tg00na`:{&uL?১ڋ<2*Ksw|}#{Q}QK8^"({AUa͖z-TsGѳ.tglafXJSKhN,?ʒ5ϓʨ1{re.
F#L4}7Rpo͍	e'+OQ#,#AH
N~uKXM!76]U[G_\Pa?6`Eu߷H܂U<_r~6MKQMͷr͜{3A EhqU^ӚK*ݴf=Y%qCx	wDhU| oN~oK3EZ hD/'edEi\\ U-~Gn݋O.`nH+rde^{YhLbǉ9lhaDԇ*Y27ڿ@1}BsD4XfS01vp&P;nz P0".mo>}1}(*'?S
1otR~'
ܳqAY`xV2߷AT7@}r+:1u
s9yaV
eRFn3{:n7HS<
NNd<(Qm`a	B*~Q hDC{~'UqK8UqUT
];:&
>?I[0{d+ػ9	Lwn0Oi^<^yV^B!nR&(P`=-ECjSSA5L)#2|2`c1o~&ȡn%Տ^@JmR+:hm13P+\I]ϻ]Rۋk>wj×dӍӟf=[A,Wg\`e:n>>JD]a9
d!Y#]>ybC6si3"m-,Eo MU3T	MQT,)B;<D"y~~xN
hEu='y_71o(p{o, D2Ig	qdFu8+.a^iBkRxkF@ZkU$MQd(6+pxL27)LNAJz &d|!y> L\KUݹ/#$ӟW*}nNoڽ=\(slc/Ƀq[U8W;Yvu#\9R{9`1{bnj`tf]s&NX
	XCA=?^+28|Wh3tMV0Zu~OsH7| w2n)Pw ,
W4/wgfkM<
RH?F=F $u!Sspd]W,	r_iЋ
{w=\X;
dO"
/A>sxiAͯ]'ZNjƣCyOEױOCssٹi-j\mt/&p[;?$wz;q; NbFKi]'pF`ITϜYgѿ;`@j"BL>ڿ/~ܰQ0OYl%G>Z!kO1T(%kͥt+XWS<>F:t0Z=u;Q4
f7Ԙ3nzŕgU޸$P}a*U1jc`ƿwJ'J/%ۊ
îiegoj돇x*ҿCbqexVeS&O3цHL߿-,Sq'6nru#k9gmOpHd#Mo޵\_-b`?Noklr[|7C|V3}(ѓ׬emػv(OoyaT
6wf+c53#{}Kx@N
4*yDO~7r,ౕ;l >>3uo$
r
Z zGkN++y ;^>lg/@%c|=˹o4
0 2@\[Ǟl>qb
Uf xċs8LA,R#1#=$7zsZa&
u{3mR2z=pߩh(c/@"i·oùrͳzY&[@Xaq Ʈ
09=`F=7x}=/Q̍a|*F>tu/Y`jk|m={opP5eS-9TW	cF;9폸'g	%ba@]-+?pIq,cGavuDV??FrZt
.L:]f'.cC:nץXASdmk<'D &B¾"G]pﵝ1Sׇ-	Oǌ!KF|J]Q+sBpp0抷~NO38735_Opz ˭x5[:?y9o0>vsp<J#=,f	n偻	/nfM^{\`b_z1|m݄)?S"v>1{;}u֍twc42@[%F˞9rAy8{^rk/ja~6Fob6\%<֜ro
hrc"xya&Q֗_JVnzuxozx포BM|Ȭ[:?^>i=N>K,Hٸ/k`c.6E_84biۼì<o?_j*0n+g؎nYi	,rs/eK~ԥƥ>k9xOR2q[W¿|B,?Ť4<aƌfxE|]o׃_SuJ>P6q$*>V
Yde&><	\#P>fH)eJ
0sg4W7m~:UFϢoXw7
HSnө)v4$Eƫ3wFĺ5>:J9pYP ~h6]$.n+#*-|a>{wۜzе_:N/5kyixɜQ?z~%hƋ},BE`޿/Yh;-ZECٴrظ.TL+'9KC`L'֯= =0=gb@s49
,-{]v=a:ZvUR)u2ebx@I-ot醇\kz)u~ K[Oy
R>ʔRT h8+%D7 x	=Xpˍ >JFb2yqrPʙ*Ӷ&B;lΎ9T(	yvk>RښQk$$*/reJ7֋'0v/W#Pksi|&|Kw)4(a=
 ñ=(ܰO@V@2$mLw:	8B !	|~+`k{lbjg~8l!AV4Aq]Ym
{yI'j^~|){;gӖRnw}f'OmcYj̛w koe]M@vo
;*pGMWP
Ӧc$C{ FP6 -&7aViKi8O'Z%~\r끥5[K-Ar2[($
-kgkhb(1״[`N(k7%];%MRh!(dnm7oBa>yA(zt/JoMKkyi\)A|qr(;Dxu?%-]D+wJk+1vg#+\)u7jlGnЪ$1Ru
8v$;PO`L^k:BġFİYt-7O RҢº][cGP#4mO^[4[2<:Of (GVK"?RR''ڃ}A[fiP:gzc w}W?̚>?
j*>-̝D 9qA_HXggUef?s[d?JXsS(mնTHAwzCؼgK:2λQId)8Z6[@M5iz®5)mS%}(ɪYU)(,唞0`#T&*J~2ǋwљb8(Nl-#4cK-j>>ƁEFNYʣK%5Y]C_-'*"a:m^	tDC<Lk]H'pJHXOq,+fiJ&b̇ߋMy-s?WS3g\""rF(/,r rG F`$@]$z&A2O
B={ރ 6J)BQiUJK/zk-Xښσ5e%j1(tH"\>!R4zrK~PPА1Ӻʧ\
!fa䵼THg?Q$7+4N|4q4DvJH TO&n>i~XTn@hZ0ܧi{y\VqUD$r'7e|>8ZD[=Wo't	#k}e pM(yv
me]6Rn3c3<esTݯnwlE,m17J>
Q'gv[UqzNP5w7`|;-L+h_SXV|ٜ { :v[Vm&`|g"LB7wKv C&:<R9t\d٪ +W;qp$שU|)tb ;赔dy˩EQzHѦV,']S#ֳ";My@[0ZZ,l7gN
X?c!舥fzb@e*[qgP'20Fg &(n?u5mmt쥰Zɋcb:,P9T՚k 9nL'cᛓՓs=rz O>c5Sq(]~<=
ֳ0vZU$ jTbRAw(R3NOp#imuNT"64m~y|Wi;vLh2iPa-@Am|)ܡH&ꐫNyiΞ[݈"'iۻ8㥆rxT|T.-׬VKyߝ_q27_3yV& 	T	;xp=Od`t3 =@9N}8V8t>XurJt}~ILXc)P(ڽNInajVtF_܃*C?ڿhx;8d.݌m5
;UFwYJ#v;6o:2BV˜K%0zT3qM<GEO?jˌe0qT/"~<WQpԿ,,7WkI5{=_g
SgpK ? s시u2P`ҟ܆FfVn=CFk?jS`:zhHa&Sby2`¿ɦfD"8#^l3K׿/ҡ2`%
!
>H E7޹2@c")%7b#HƄB/ݑǐO?`>sX?
۹!!1
rmf9OlG9@۪Gm!3
#ƻKrh	E]M+B`
- ^2~ĵ]l_xRbh́tM/qٿN8%>}
P_	V;NHKB8O!&Rk}Q7]?<(
Wi8"*>y`F{0Zb༾ dp=`:17+7"߃8+x?c[
1Jy	DPs<}`ŀ<#>[KU]|DR`wKLwwGDaqy+;0#APȧ<`_- l6eWQ_7	u{rCric*wXqIT>~w9ݲKM1Rn8~zM6f6mfvo3 هN䶜;k`ؠ%l:e[y$j?bֳP'[J(~lZ;ew8Vo O^sת4k0$\V'
g'mkkow޶䵧
x>M+	?Zy_ 27pA>Dzؼu%( 
lABey(}GρʣrCvggxğm	ǯc-艭t_c%5#2<^/tZ]d	Hw;eX]9
H(xL:?2I*y+8?MrZB۟t=
a7`~ۊNNű']^8TsbWO!V
HTJeaRN!p#Lӫ-kzԷZMztŎ""Crgt^g5GNܨ́oK@)1[yTO7FlłѠXR[14s4955zAբtPT0E0-<ez8FrV
E8Aax\^?nR3GdldvͽFX@CS'E|"-.$C߅2D[\̽|]^-ub`L"y9Tf&Ԏx1ԕv~9g˂T+#D:44NpsnMŉP#GM'ٸtbVNp+d<q0|֡6pdT=J,D%[2{L
LB4ΛO#BMێ?1`TDwӴ%c13f9<a-V c"b1s1;kkg!ϿoR!2&vP|s<|!+].u8Z	?l$3[|cXT&b;{@9PE_4% m!Fŝ!&Dawc ||J yLA8/!v^S]7=|(qVA';89-d!b&-Wo
/J`iL
u.v
VqKwb>Ɏ۶ns/0:K.kB #}'/zh~;F 5ŋ!歑}or3Ru.^-m^3~>ߑdfW\b^<߻Hns/Es4JOi/:lMR:m	hd"F |
ڗmaT>f[׏\Q]kyT[+L!m}XCoޥjGw9֠â93cN K
O5
)]AKc9k{6+uWB[_oW#0=
|(71t#Aa}a@}#m1k5&(PWs3crrCsK21VM6uOZO[4f^˦'͇@VXtDkꡅG}`Ba8ixW^ZL=cD\i
6r@(?bx-PxߍX-|! ,
OK[zL'S
"[n|+h9~~s4*BQ7GEbXx;f)r@a0 hG{3 yzVEFL6*K9Se* %h;&
`{9Y>(.J@bKY43@bAqװ -eˈ ]Rj>9X=g"Rg]]A15]lh~şJV+%T>I%H}I>}<)@=#hCYahL}iMKOq0X@] b$#Õz'CӿgK	ŏ\}yB*
}|e%'t-
sw9I*ώ}bK8{P9JBtcÝj,̒[ V)Ey|^LԖOɥjdCkexTSVS^eQa9;+°_8L&ǆu;Vώ*k߹\*^SUusx;wjz.Jn'xUUg53*#FN	"}wtYVcPL(H5%88(w'(hxv)+,˝SYeaQuʢ@1U+jj<7ύ㹱Ƈvt{saXnn<7x<ύX]εnnQuVb1zEuTvvYb:*<~ŵNe TUw
/oF	
y.U*NpWu5%?ŀfЀuE|YWQ	b^_-|@nP	Fi@Kv9q[S?Pj2(0nu(,ʫi̸]&Cd6-e;)5YdTf~ qA;<9@y`~$5eI]2uHL86

d>`KM~5ҍFs*9#o.A_EYnw~dmk"sՕt33mat@m?nrQɣ?+Gq֋d;_<CH5HT\`iUyF#hAcIr??G1E?vS`p&|<pXۆ^lx=+9bf){ 
aW=Tr1aӽAq1o
Mň-~3n.ȗm*cƪu]ނTgL黖no(ԫuu:J~Fq*5?!70&A1ߕ]-?H/a w8 qODSM(,&[knU䨄H;!_26Br	ڛ~-{~~FGsw6/rX{6GW|ǌK~jYhlQ{OhX%q,.6~^Y,&O\2
ULA		dJΈk;4[*cza1%Z\6{Ӵg9+(pC<pp-2i!;?aODFފs:8Y<hCn!;Nf=vs_~mOKFi)mC½aon7~xsO(؍'&m
#%}Ki_vжEk~xF/]CwMd!7;?pX!#rѬ< ߼Gd@Nȑv8soY/N-QXj~&]w a`_JwFPR!
20
8d(2/Az
l.)֞6_.݋\gȥ~b"bLXɖGwRYbGq^gN	"g0~6'M[<Fv\N^'䜩n#(Q>"iz΀mG$lId`6H<N77FA@Ľ(
'i9#	XՉ@7`zX禗f濃;	I\$x /%uazdL,"t
svN@lr=AftzذxE.*8w;>h~n@yrR>'Ol(f*8B}!h8FV𕓿R| iA"+w
ф(_}*bA\z/b}~&D铤ʙ_0V?z9\r	w0b_ry+CZ}?{r|>'=䌎 2c<ZuaqwqWo݋2qM!~X
ǂT?4-4*3ދG~s$rf~,C8#gG+NWl{Y}48KžҌX^F
x[b(QUmT/KVZX7LdL9="co޽=Gv27B8(ϰ_埆϶(侈ءNSy`lHīCPTG!p/s~
諠o$m{[4Id p[~pNh!*wD'(xd!$-սPh׀PxkB0-|O|AglD#ZibγӔ~T}Se}&rno^v$YXi=/؆=GeϨ,9C4"kl$^ʯ3~ö~ GD"z0gB^M<-_)IgzJȎc<˟De]1ɳF!%vҕ
n
;rF#~Ru(x?c5/K?#͛L2Kw7W&Ü.?fP{% 놵"K~Zz13,*DqWvgH
S:
1ܹ.V7]ύv-~x](
C;\uSOdZ
2ZL6Qa])bvT
{{72FG:#@N#8*FCx (yPQW"%(Dc@r2zQ"((*jcрʲYVPնP.ţi=O%|g||@`Bq%:X=:ĲTDFڞ(
zʠh`X9H`΢<gxֈ2lIUEyH¤.r<LD}S]rrc" Jճ հmST
EKsL]T!XuK0HE*r}zNLhNxSCzO<NwH]H&Jrʏr,>/P#l=
/bs h+o{ #_%Jg|fKS?7qkj4BM42b`4Yi>As4xh+@99㌥3%f.YXQsʏO'5$y[wlAL":7,G1bL9kj*&:!HpRd:yC12BsQ$@beImLep )
|	PF',E2Psi!]"f۹ӢY5JRRd2  +T"C+Y*tL١B 'J!v
P*H4b S0ϭMNNMڝ"*_"%QJS1 :sqA\54Ȍ
@H]Mz8T`Kҗm	ڎ؟(^䣙T(ޤ1:dQ셜?;whS2wsхܺ˓": J!Q8֒B"'&d FAv4"'\8Q	2LK+~ynA`̶+fڂR@0R >=hhiBeYbBZGU\8fr
8<̐GԖ6&o	38=#3*eGU*' 8x	-9rRƧ'.ʍ Z7~lqi㰆`
Adt*
4htIUA͌1Lo̜l0k͐*fEbٔiD `L1 P=E{DOm(Ҧ('N`
 W n(B:F踤^|	6i3F
2qy1y*ƒY+	LgNȼ.c)dY͌eČ FŌq@D"Έ @,"60f`09!7MtNt\,e(	K#J,Β7ێ杉ÅdEn
1J|PS(l8C0jSRڀVRNDiX|)-æF(pBaqXG t  \DLPbY{@48&x{<\ErWEy{l{p3=u0WTRpX<8qh&8ҹM8&L)6`0T0[.28bI7DJ#?)>~P';YJ[00$@GRԈHcщ&>]1;
W
x&>-Hqa1pnn@2D"Cq΃WIqG"DH	J($QRq"_&THNn֨ %H^dbb]b'cZ駚G`K%Tx(?	bihV`54*\R0H`!2r1Dx%[L!P4x~z7ǘ,$wmX${	
	r	js@{M3QQ@@Ĺc 3gJXIG "aW-g揀?,C8hP8Tf.8dz[` `A.B[q(yC˷Çy#$#T`Hύ=!z0> QȻJA陱)xK:X0</qFuT.]7	4XP~slmxrE2ٌy.٤>=T<Z˂Gvח&"ơl-/yQC˄%7
 Eۓ̶޶M6
lZkkV"@Vh`ا]W,wIvjjt8= G_B$ǋD.@lZ\W(-E 44$hZ59:M.?`&J1V|4ga:YYQܙ݂:1ao怑lʬ)ly2,y$+ԧ4oA
gAո^4CʖRXg0(=	q#X )))큢C 03'?R
D_,^^v].˒#.L.J.K$\&xD`'J).Z ZLT`rMJϰb=Ucp@yʊ4c	Bj)Z
*Jԛ5Lܪ+1GBr]?ģtY< wێ
"u(&5`8}cBAuxk<Q/|Z@uP` /NZD]E	f$a[VK!
4PHhB#kڛLr1LT6uvҩu
+x%p, )Uu6]1F
UdUרtf
ȏjkI{@T<-P6y\~seu^b\z5ټCIY@r39T*ڃÅ%:sW/U*ە@{BNczu)#VHvr_t+^O.oPP/op,t{ab᠞pPp<'&3+
ƁS+WYT*+.\hG77W7v^eQtucN0N/sYX^eQW\)*WYx빃tsu~u~Y]xzʨt   IRpItX`@0QE2#    	ĹZ=BZ?9 
IqW0[sW%`~y8n,鈷5f85|ROJp'L-p(<%>q6s(k^Ko/.Rm>n- "|mHb!󶘞;^*S0?9{!4yp6攖X9adMbN:_.ta鸡3bɠFeg5'[Pfd&2,?<2),Z~cYvk+GOe״kYNm+#Ļ Cj+;k}0ͮNWQ%s)+#Ev	@>$
4.jF1;)[;o[;(UXl>rx%ߩrlL?y_'WI]|W׌E}p/yۋ:dbr,;8%M5R7/{ikҶZGerSa-zu	ihuگڗKD+LwXߒ'whtP/Ym_=Ms:8Tz+4|6	`>i=un	Ei')dTo;PV~T̰إI~=:o2DzĴo[%{~csi"еuIԮ
3̂^0t3h2rG<oc=Z׼WY`:߷cߛg<a!Z4|SN_+Vof,_Zdsd)0`471f0b{Wktxڪ
6x'Lj`hPҎM8B`
Pa*wWw]:W}MQ`<%m/k
-Rx,Жȥ8h{7SHѹ-;̷;7΢vYNq
i|U[ﯷNtga:a0]\r-yuz >C;;e nʚ_M9u0Bj7Xu:"Djahe2fE^]89}?	]hH;Zl.Z~##r;1k°8Ny33ƝׁN
^뢒׺04Aqi˶Hfoa2sdڕ|Qb҃rJfo 1'ZL$ELڎvS%-SvI91%b-
MPBO8oL~aYhvgYhi-&L Fn_69!4wߖf7mVH#<܃Gxa߈9p
NUQ){~6OY]g	7`{E[۰+'.".62 ?y`bV`Klec+ Nfv'K0Bg[f7XH*-i5s	$*n{C2='9,={4F ŭ>
1G,ݥqfW^f> enMs'5wj/v$LoB4 `9˗]ĐB{	^fؔ$/ǓqMM[R1h.n~Qgm츔;Xqug:i^̩(8`;N8yR=1k~?ߺ.;u\czw5Jrlu`<26{jrEemjFGwuK±!7&:JPv/;꿯i7,QZwO;!j=Ċۖ7Ƈwj꟦
2i9/pK ս[W[v_v8<SvO2O4eW&D.JoAL11=㥶ݺF<暦NS	/2U@z,%h{?؅[;_<&u.#7I#hy]w1A
uط0FE3f?\2]Λk킕2K^,⺆F'嫵)P #vǅn2V]-mQ2l]
@@ߖk͇S0(*đ@F5g&߁u4;crwRv<:S&.gݝcbHxΈeH~.$jP/#mn{M/
p@-mW`u5+w(qej]2n_&V0gQ.!ɞ氘.!H24/ 8*;$9r~Ҟzd;'ђrU@MzcXfgGvBȫ U{-5\y7=(3<yY71mì 6ͷ[8G#qA`	η-G)SV[j37银o2v\Dn_p#q)V`mv7fm~^ɿY7t41Ne;}AnVmM6n^@˺yxY_Hx5 ͲIUbtF ITS=BQn:x$9KK8^JBƞ4.y,wlv8	foe&|驗Ly<y-Ͼ6ۘ1ѓL+v*xQbZotulǞ &:ʊ'<$v0ǋF2~dpT0iB>Qgڵbhyu&no=!d9ǻ&dc|ݯ̃B|v7e|sԷ84
'ߓ{l4K&'|>ew,9ko=cM;iH]94qY.ݵ2S'#NA/W?WO<NEvFݦ%|728eU2L\87e/87[sx// 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
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ,(%^CT_upUh*7)6IdDV\ _/qGls=v.k{u-:*
_L7*iwܝht:c(HFxCGQFP0n
j~|JHut[՘gN N5Ŗv9+m,	p_;9t%FmRktGFDKm& qx<b,R,-'%n!/϶e'z?ҎinhlSjQf&! 20/~w|+j\ ZBG"LKv%P$#N#: rf&&w)8^\Dl`8H'>,{^z[xJ-Eq&7	d6O?3σaA<ZUׄ?+jʹƱrU#C}ß>z4ބryN(:Dy\&ɍ"I!eu8ݠlقz|xzvx.NnǍ~؄9H1!v	O8[ށ,c	]Z]<?#
`KFy"6酼}*uQ7!(dw{_~'ۃ[nSִf6d6c¾_w /Ow'pi'),(l*@RkrF7M1/K.yl<"G@Y qEꮁ~5;T@IAN}u+֛hLx&n`/X
tp-7ճKkL'R?
3&zj^YeYy$|?0(^!j:rZR&ͧ /O}GW'7IiMBm!̤dbjoS	<^;;+rpda
]VkKD(^^/*Je.1V|@
P/vvDEԦt%Av3n  < ~WwVNOE{XW֫>4)W;9Թ4se$<6(^9~`S󲯽?]B@:k5gƁ7|ZYmO٘L&?_z~6`0,(]"wIhsXՃrV3rqp'|#if1',2eb8hH(Kcm%wKNsgޮ6k
<ř24dXK%ofE%rUl(ч~ʆb0/;u*YII2,92tq64F$"␈pHpx ޿| l\/߁DwA5bBfA ƃ"|yCw
;9Y)L}HwDH(LDB=wCY#Yg^69QD4$tCvpl*=-ޓ5ݑκݘmh~8)F_	"nްo0XAT9P7Su#L,ia
YɇHRn1Hbi>`5W.sC765kj$4
6yjAAX_^Eq-4Ivŕg%OL
h ONT[v5)$y\?n1b)*SIa ~d;#d+=xV;	 84ՍM(fz)	?2`wWt˄Ꮇf]ì~	
䯦320PN2
tqSĔ`r7JCJB??/ O/9:98tƫ0'f`<d<7bY~1Eï.-<l++	U1w_RE?{hgT%MLOKJ	d=;DІZa}] ޟnOmnl
jY<%%8K#X_ʷV[=DÕfPEC0b{&rjB,kY&̓ZH7ĬaP#㾁)~|XjvY?!C;Bo?l<jEl5Yl?>+ 8
m^:G
i
&FصPY40,[xR		N3EjH3-5 `+bt]r\p9=dfB[2C"s LEXSX߭hn5\:5Qޅ~=9zfui%J$x#dAh!8~Rdߘͩ׈ﰵ\zzcs`h_f^d[(1񒰒?	8;WA7wl|6esEc}VP<n	:u~}3R^Q !
W"u
6V5υzЍɩzF%'H86<4TZ!:	xp?4;0s@)K*@ƑQǱQT1!$5m8Ƿfz:nuVrJZ-i#R3`vAS1+!B0/V咽q7n}ej:چ
Lu(j	*;f\Jf@c.^cZ	Fq`a׽5xQp\uq52`uZ!sg_
O{ӭrcz1/-X,W*f)GN	u~}f|"p8Gƪb
b!Up ?N>LRkemn5 5	Y[ɓ_FaFƛO7vFB"{u:Fy,7Jy"Ntd`)*#^B\Rf?|ͩw_'|nTlx8Xcba?p,ޤY}F^j(>|Fq&[r	 4耑.^ چS9H'ޔ7gu8rX8 }um(j$fy6FL*XLG?HW}ZY;l
WQVJ@T)eU7ޯ A<}8e3L4L9P	N@P-8Y(!C'B$>0 WݱP.u2KCmU9ь̆Ȅ |x;v֧l[ri)0jbrxrb!5|r*%" x/>"
{W0]cj|&h;UDtM\YKb݋p`/}hsdo,:UMh
H&dA$<'puOM/sKD'@q1#OuS?_"۳-K mvmH8;j\Kowtun>"]eX-Tg|i$i7hB=9fISadDAC?>A>7gƧ]zZ<';F@w%1Bݾ5e^)dq1>ˁae2V5u)=tqu MK,dx4WB;Xu3 z|c;'^Cwؐ&2ql8Eį!|.lZeL5vM;uic֖rR*EFc1/jCp}b|[l.-<-9-Fph?>=5=
LL넌p]Ftu^K%ĚZJ2"
crI/67dHh_ 0!lq Z|
wawV9V7`M|Ӱf@Z>^b?w2J_EK%;jeEQ|iY
*ji]#s|KH1{dTD`frPt(r'pCHznthrfqd	:!kD`7>\=[jG${JfQ).DFwja>fr]LrAjǞW"Üp0`M?O {BO/  ͏OmEgRٛr.
쏻R=, Xu* )1cBsiJ\hF&rbRBT{@6
joC@e<'%\xA	kX
,&!WkC ;JyAeKUiժ#0::M}̙TRr-%q9
u3~*z"B0p'ŧe"]#t rph;h"fT2Z'O³/trqX{Fͦ-1!ͱb=ot[J	I`%\1Rl%샃n0τM7 oFZc{✴[Z>xB4 Wz?3|Ey[ijea^]\9_e:CjG]=芧iD?99\o%V2he*!]|
x]cMNIO%mQj	v2!1B1!~n%QL|KJH#Zb,axIڍ:ڹЯ 3O+g$a mXUS
A( M8=eWNr8}mx0Ѷ3E^hlG)BwFZaz*S"RTpJcKz@j3/!,lLraݼ;vXOLHBNL3_bB.NkgJ6պ;
 dQ/h'n˹G6r&H1	E1ba^i>( oDϮM9&m-m:!A%gU|/ؼ]
E`KmhbXﵒOU8R8NΞRNi($?y4LC3#1`W"hY>U**/iI
)h~={ DS!$oPp"BA
Xp>6gaW)&48AtyJ3e[63V@L&[|{^U[o3z9h
͵JnӪ4O~ZI9GռĔCR>J!h3*6@4$s[/>.^Rk\#="h&5@5"V~)`/@Y\[	-% Jo0 GZ눚b^]$J#I"!/f"b:6
P=sbz`x_v^.:94ەͮ9`LǒkņR~	|n%׶id`@Q")(yXPS&/ArS2d91)!.# vWRHWak@:9@џnmS
<c}gaK7ฆVyknKn.Yr%*%>L(_zs:7|dc8ʨxhhHHlE
Ca
QS 8)m-6M<%znyTRm(ނ%uULTK?=#գ^It?M2G@$I8#o\SDqБPPXe<z5xj'2ѐn_FC6h&HǆaQ$+[	n
m=AvfPQ-BjEv-3t@oen--@(G%6cјU"0!.='kNQC/oVlیhH\	T_ڛНV~J
VUˊWP|)h40,gf:bI~AN7cs:.վnӃC߹ձѩə4̈ȄА
XVygsKr]ZT7mQ
^S
D큠]O0_MFED9"Lp
	 RBLrӽ	a}K=K< }n|l{jd~m<%bFD_DC.!nvK:2~cU>6o]%tHWb^\WjI#^/}=L!|pπ
~2v^ݱ>#愸teEJJVʿ[nfN,$i
$v/+O+N)Vgť3ZI'HG`(%$=>0_;KOKڈn 7"kON2	Yx?"|\zGxCSBRGh
FG̙Q\ܑ́1b'b!$W y;@547'nQۛF6M !Ǿ+|{GH%TٯXLUnGHQ 9Bjٲт5irLJ(#C]%ǈ5P-ws;a3Q0/@+4ʨ>YqN~xtAq9m7bذoTR}F@tjl釩/2I>(ĈUA
1nv^mkDC,΋sڸjmff6Fː7&~xO$"T[Ǡ4!f<4P }br&f17,&A6E/uG&MObat`r_p]h.椶dVBC2ebȈƇz;py|땁o,kJfQy+V:a +41+-!_JFED8-!n	nx/׃kAI)h2.^/C4SC|;x9Sݙ+@+*6ԕ5**>?>8Q"TB2P
I	t|d+~
eYS"T?ڇw֓t_ؚ5/3e6EFe@X),/#/]nz,[pu`🦞=;rqpo6=
r8fTD`5[Z~wú \ͺ@9:#_jOqNat{ܪm봸l|`U@.֑ۙF|n9sJa!3{![#]VK[@,*>*QxtEmojyllv!G;Kynjg׹%ӏ;
c՟+M'I3w:ї40,y
匤$>.0ڑc `\XZWD]ykIiX֩o
0JZ};)WVk
`<'U-ru>ҡ40Y,I9eOH0XhHGnoO
=y7zJ7! C6ɖyyhqfZdHz10E@
ܭ>NvsZpi"="FBG@n:4oCT+4gi^3]4"gb:p_8W_^=ڮ,3Țz74%$Fx`PFDC&!򚿱*INHMx1xs/ v|qYI$u@~ZQm˼Egٷ\i<I,)g\=%Rq魚[Ik)[	;*
ڥBt*Fo53O3N]҄-YiV(% QLI3L@Lp
~W>v۰PS-cA1(ʿ1U[+u=p͐-cҸΰ¨୦U:۩
:&rϡJ31ph8qEvd.MI65qeȉƈćZUݚ+bˡנ͐M vϵj2@y6_jzrr^f$&r+R&J鑢paE6l#~{Rs֍trME8m^XԬ*Z=3!p`<
c|q?HW{Y/7XUP]S&/MFMLKJ$-HYK9F~u	b!	a.l}l9(ͮMmp5
%ے'sّ!"bD_{.υ5Zh
̵(j(~lKânJŉԝ4M,5bʰ9DJ`Wmn
Ues^8)WZʭ
&6&Y!ٓ(C/5?w/%Q}&Z)$uKʥLHDA.	m @)IEVF.E+"!,yWHRrK.	o_[ڤY-Ҍl+DF4>$6n+)[)]gT1jzvڹ@]3,<L9ArR	nH4(DCB(ng紋<vt[W:n2ȶ)1px;{0]N\ML=&-sc}L{H(۝@<8&#LrNΥt4,G)FE+bPP.8}%dS{yxNIA7$9[6hD4#D3G%|kuqq{/偽XV(j(~lK=t
Q	Fg60˭<W^I@[YUzJH3S
>l
xOv>x4t1r0p6fesVrvEVe(+<:a96սb|/]-,ۭ^,lk<)M*`:|iNaBYfGWGQFP0БQpѭWu|/nJE!q8mF6,F5!Á"?Nws^_wbz0-77YTP|S:&N#Tg=&Tb+|q YUݟ{D7mmj9
Le!SG#N&`[us
[
TvJά @5#srih3M3L}%_*9
X¨+ fb^o!ۢzxc;P5ݞ[[Z-Yiq1ket}2~L)cîuP OH9(󊳈nkR`NX>e0Pc;B2r"`{	4oNT.ntԨ4~fG6G(c653=upl^+K{uaQAm~T4Pnv=ygT60X(8
bհJXI o["]\814[RK2gCY=!
W*
+]N~knjbEo64WN[hL2;RINHt?qP/ss*?lzFWB,0Xm;+d,иK,IXOu'p!lzHZA?;+VJ:4hgE֬Ì.bx
$I¨؂bhB>	c?N>1{Ro[TkurpV
5B3&hv![}]a;?0?Ls6rNq\i)E< j"WB	ARR;n0+t rvmd\(|YU'$"E Ryi?Ņn'm6,zUEaST4QDWxtqRi(
d8(bT񅱽5PWq"nT6	32;d %dpż`oZCYPJj~8!݆xZ94̱eWG' w|&X1xi(pPzW]?ޗc_MIAr\#m
C<FI@:dQcPpoW]^ou]U'd+a%]Y=UϛI@xp~C&e\F
i.V]zSO~L|Fak~+\MÄ́S       .   QS-kذ5H1.SR,c182]#	כz[ t0e3 8D eY
vwvTahvƋQ?Pjp]e9
Tqi8@ -LP	eoB
~L֬ 
g~iry?A4(S+HX֟I[yoa4
lߣpXBt
7'7\}V32DJŘ.MQn^]PYۯvMn1
`M]8d?!:B	L%7l1V8|Ӿj1$-!HR,C{xܹ-H
I+$OA0Xםk3i	¡@H.` 6:eRbbw@[ڏoa]܉;-sp,ͬJ=9H"L2ah-$?@Nו}Oj K	(a*pi@C8~MwVs$t Ô:8f(]55W
,@.P8݇imcEKB
+f^ %c}y)K }!q[ط 0s)aŇ1q~
'f(dho+]-c
f
(@i/.uzVO}!8
qvs{U=O7j򰨶q>>m _%CZ>pu!PhiW^܏ܐEtvZ
+~>tzPvVSgmCP _s|=Vtɻ4.^4gI %iG0N1dP+*SI`9qJ
$'gmQG 0uv!+73o'a6zSl#JQ@χ-C.PVsvpFuY=@ʹE2%H -'GӀB
u4/"D@Ah}JP
4m!n־pz
E!9b
2Vht xXY!
Qz%
(ApA^}YEPst1֝VD.PP~X)YÈq]/e8m\L

Ѕ>Btݭh@\Ip"_?a{;E!-Ph9v( zX?`*>o6qW,mK?9P7ރEu(mau(^衄X
b(A	&pLqˀ#wKP+ jp2!
P*,/sK@HNn@ :p 1-()9X
vR5c/CpNX@ !
	o1!u;麜Pj UoO' nmM(}@c!uv6!0cna-懣Q+X+8B%zBϓh@	XIDʐF(, nՇh8}wKQfrbnP
i-q>N' Pu{Ht¦KH# oz!S0`} S	n+aƲ2Kpk`08mptڳɿ6<] pZ22H:aw$P#5B'3x?ncnN7P;%(óɷ^$ہvTblSGYp
e48@^D_G7A]
BK MX+(\iոMD
]oN.40r8VXǚ;El='woYvU<OXd|=1Jezo Ӏe0#׻j"U
5P.R3vt$lgf,˹n
	f貚+ 	Y]o"
Yt+h:q
EҘBw)S9]!d!abq2 W23,!:PVRi,4ʘL$	p9=`	%H@
W h5W@apA7
1aMHX N'oQ$Beր"Bhc
s;yxޫ
!?xjgA(eKdkp
X>.`oӈC_x8<;: )TD_ G'ƫ"b%a _FMo΄D>"ݼlZX&	tgj=,,r\ ook!eXFDVvkzPO32 -i;V0֊4b	z\~ܽE. sjܠ [@3@?1*~"]ȭA[&N.4e0/{[VlMhuYu kʁazAZ'@gONY?XJh2	cHbR	P`ORN|cS{άdb	>o;RkV?A~t27*3"o0n	|WxUtSpOlMhyYkkZ*aA }ϳn"Ü|J6B2:n`lD*a`֯'}g䩛L9-^4I@lm]]\"  cf=`=<^<];ܮmX& g-QQEL@xTL&GGF(E,A GCO ^ ; t֮ݘѐc,|o*B4кrd(c^-i	^	ܦ-LtUk*
j8.8&Қr{(ۺ"a܏.ɭ5gdb(9|w-@; 
k.43;.#No [5]5\43Z3YdZ4V42T2S10{:}rjE~{x]p':ѥ(F_/^
OGO=½o/lLY:-o-nlEvuu~I.Qdx%HGMK:iAdukUVeE)ux]˰Mq7VDB|Q)zU<vBtAr mVŐc.!\}g`X-@43ܡ\#e΂|^8_[,F6rPv(<t@I$)Ę؇G#{nxZ;NM"MNmgj٠؞wk&i.Lǜ"N
y88+܃UmM|ڰ֨NQS3
	O	&&RW>Jqob0ďs
ћ{9.&"ؘj -+ umu u4teېq10O0Nm=h U + T:|p)%=$s2[3!EЫvM2n8MmJMY#;[ fM}:P?J
3(!_[XG.$.[,OUj*}agkaeVGB9Nb$^HX0K+#Ò_sWpm0w7DA@?Iun*ڂ3LAL3#`{oJŲf&:UT,LH;TL6w07XFLKJIHVĦa)\!y4yv]KnN--ZqF
pB[Bg٪$Sm>|^#!\2kAycSCm3JYh+ϯSM
̲LrD%#}]|-o[55+ _K`zvY6zV#D91)7@0 fGIbJiPB^pbT	SӞJYtM(e
e$dx5R)F!ʲtIBGI[츺16 mQ-P>np{~vьΉ^5YŸ >'.uaW,."ZM'?hz`)'aH]903&Z>ICzmޡݮ:xr#(b|px
ݥͅeE%}]=K1C)c+10ZҸ>ڶ*f0@z>*vFDC
$} b1 ~&|$z=.{v.-mTC E~uWilZi)|edcDkVB6q__HR+V$Սk2P10l&tiJA9B0*_z[xٹбȃ98 [Y E!pހ5j),tOƁ7|)xυjd`\Xai@; hU	yƊLTG %#z#a	`D ].אke6CfiY3HJ͔xp+6e\͠3"3|&bXC0_WPw)-6=b]Xܨ`L%ا38e4Ę$e#6)f!BOoLK|'H'ۺqgcd#b\bDbpo)ƀ-54aSC.3".t coW}jSd9`#p[	UTi}vܦe, H3N(^g+
>+;
:
y-We}detb=|p{Q;{vަdxD0q^Ne`W:V3U-ԇUO)4ffKCAI䎣FEB% H}]0.Ò;I7
R=q"_7w6di+ts2rvLE%̃=ɮ
nv^E_)'tr65cLeRR2q<kD]Y+=6<.Mn&ylr
Ab.̻<K-MB80+P~A[a=([4nKuaQA-v Tkapۤ$cָh 0s{xvY:'+p3u_meoYQ/ThXYK#\pw+bB!{ k^@`Ggj$	ØE,~|\zY<']$yҶ@<l6G5m
{z3ߘݔ	c⦰L'{mz]aQ\}U9OSn/f&pyB)"	ሀ1Tp
)NJ`MmԚ̖ȒĬ!p dZWHar1V|%RκL7K('X'ʤzΘʐw0~q~[rԒ"@PC_#rrr6|I-YGM6qBFOA9s5c97ׄwD7փlk:TQLHةɧfSdR7qqEZ(WG
岜w	7d˒Ċ?ϽvO"C8)a*GMKV&E%}҆Ȟq¾nl[ӬԌ;46g03,1(B?F>ߜCwAkΖ]װ[=C-3%#/P4O1/,ʲ&ȫݨ.Z@uU_N.Bޔc9l,՜̘ȖĔHvl<k;q	z,"fq[@79+hG'u
[Ti)]>NM e ;
`GLKJ~I|HzVJ7s1pě^k1!%C勁y{qsi_aWXjt6OP6B1f   vM-rlhR}ShL3('fuDL@&;.RD~C;h;:.rI7m[Tkر-ⶶ!XOAQQhhNQ>A61u
`	ߙWW@K(ՉuPS)Ҭ'N'Q&q&FEF݌P0KeSəqoalU6%V*ܿ	6ou4~r2GMLƹ80W7CuscWi镽
ri6CLeI ȡcȤDO"D5}-z:'e!g8d6b5"Exvj/~[Bfe9I1!.~Y@y]E\DCZCBWUS)>8e4˷N2
ʑGQx- !yazDx*v_1]ъ\\#۪HȌswE:7TtL4(K}b	_6궹h
pZnuT+';CT-k$gѩ ܆ֳ͖0ʰĮ^}Kv0OчeB`ߢEwmjKd5+/VSMR=U:&s,*CHB9zdݎ]zxvM:޸+)j-ʌ*Nw]eGY']unch
~~.R#AǕ\uCݚvev-ӊJS7hVJB~bp
(x!v trECB-P<#+XC
<E %t$sos2<5v!o--WVzݭj*ԇ4sړ%9D8Fxѭ^BtYG%v\&ve}b||=p;-lCWMyi!X 9;Ɗ_t;pk "hdqlFMka<#k`U:eSdS1Gq 2yawWݕ@]MI5͘d~,ngc[w[wPеs%$18~ztp[&Z%Y(vxխ-@im𡋞eU)M搵ǰM1KĢ4Sԋ6حur
r}pznd[Zuؔo'䖵)iD]e6SB^Obu+țw1pk[S	V WBv_v+PJ<	t^b. '9 ߖLgӡ{Ѹ8;746nml+NX8=l_`W`aIA::󓲑<cBL	|wrP6*q:UѨ_:R
yT3,$ǜCѦOJ FjAw^ݞq{;sc !c8 Sp?$6uVmM@wgIf
i2zl=mvKpuLv}j8=5$%o'')b)VbT{".l˿=-xXv]9.\m̈́2`Wش	g9rqpXu$.|Փsiedbv[g	nn1.J-+ʱ)J1MD˿:>='r0fVcV#wfZkւƞ0(cx)_IH]Hܯ-m*&"ZQLHTPO)2\$yX5N5E@ON
ok`g_mb${U|>}_M:͹k6SɌmp#o"W7
gmM!I@=N=*S*D8nxQp~`lI(ocKt+dKՐ-+fpۅ{.h	z?/1[!c	a	`f_>;].nxG&zZʝ^C@ ,sʴ-=j?Iԯ#\IDrCp@n?lrB&R
>wdYQH@caXC
RN¹--WV6M
;`KjeYuFi']@242P8пm`Fo7c'CW_p[FL .~4ﲛbf5Gi7zys|e\֕)KʮL>KIG/i{/C<8|#e;iEA^"t65<5;43y'斳jMV!VzVN֮j	L\, y
W .x6\6$#Y'ugP=jv(g#)	fURIFARXԉ-tP+#Lȹ-.-kR2ʢĨVo;H:#u.dΠ؎0{ wŀ]+Xk2Zhj4Y馹,"&+=)إrp
[6eU3
ymXhy˓q$p'.'	yvaֵk%SRLHHV# M*rCL@8^0N(> rte[r܎53d0b/|:÷ۭ}h. -|Ƽ-!{scWoԻ>}jdtW*k*jrCk@Ϡsί9^z)IBqMKLwgM~K|HzV.*ljr.زuO&pZRt~d*ɄƂ`Yp;[FfeP%!NUS³t\Zp~2|tdTlDl뉄l`YvFtDrCp`!7535322211X?<.`I˨< pc43*v x/t#p!l\?ƢTPR*t 5?'pia{J$RQSS!uw_tY#&NAقf*dlPHMviwji碙EɑƎxwxtܫ-TpYnᴅ4j@״JHĸ@q
ts6w l\\6T#َ؍?iL`YP'2ĳDf~7V-e~ea]7*&"n}T3$!B1R3B ;QBOx	O{AXlX"\,$(b@T_iDo_UCt|q`Eڄ-#E7DGSAMty༲c
/|QPd9Bc!
t̨u 70"
"U@!	±#C|%j)'z-(0rg\d7!Ŋ
ͣx䐑|a@
Vh2@-$G!Ol>hh(pEט1ufX#Kɚ 
D3FK$dָdYx	iǯu+5}d :b-h',ۡ#"|ʘd2A5AA\U@e	V1$q໣<UI6VlōB+TA\XQH0bNJ".埃.0ѢI
,,2b\"8	[ԠDHIFxQL=G\rrh#"_KC
(BErd	z3YX'ҰT čYRw IGI(txQ(.BĜlJH|)}88x|dAl)6 ɉ'Ń(5Qj)Ŗ|t'ɦx`0)JMxVd`NhzE	Ĕ%D(D|Ĥ $OIC%dFI4lsJɴ𹎇{BԌ䠪c
ؠʘKX}(`])ƃC,7i랩E%Y"bM#6XӰ
m:&k#2Pm"Q$4},ђ
 .,]Ȁ&2
pr$thWv+#1`3~`2vɝzl8hbz.J(Id(~ )+,>-N߈NN>B$ L!?Bd"N?z(FD80`D&!@8}#>@88}0)b"ٱad'GsH"NY5Q	SՐN>D,8}TlwUw4dt˫ەTI($>f2+`\&{@7syQ-jo/u2"tGK@$ (O̋0, BRuG%uҗU
HKSHOR(	}KxRK|5KAKTR0=!cJ ֈC	VN2`0,᧑q"KJI!2qA  a Rk`RD.W貝֔"hQczqݘ%"dh(hG+ M<<GN9JTmjfȺbK
nMB{L{˺ښ3r2S#nS|Kx{]ܧ-O!;+*BfeTCݧRH}̲@% rQ1Gц^CX|"<CNiq[vcQgx]Ž4t|4-Qc(q0 xב
o}nhյiQQU/TL)C$
@p!$߳gku䐸7F6ljf^B}m]dCL@(!wa/wwnhdX )ӾBz2r&jTSOmeR"F+!_"/ޔ]U%qEnBlAj
,*Ę|3z'rۆu!tS9-
 Q\N@V5ZP^QALwRP3lbƖJJ#{mkpרǈ+(76x%p?8}}lkP=c:FxV0ˆ/Rba([[*i9dkXuRN4MI!폠#gfI  IrfP@dӓB$o7bԡQrpnM6Z)0|maY;PSK_@ms }kG
;n".m m,4ל+45(`]sԠR\3 @qY#<$=<B*:=ʡ=P2.fc> KpI3
ړsS ( [[3ZW_2WfF&Şn^ZZ)էNAM@=.%WRswuB4@/.>jNWA}qjnhlgjefddcbYbM
] ;_K_>'0)!wՀ|xqtgp\h/vkMUڐO@gΉI) F:N`S!kF@􏎯Loƃ9\
NlK&@jLIMutts	s,|~ŏo˧
f%bXT]~}v>=:No3RWB%*)(~zhgMUyRvT3w5oClڏYRF#&#W =lj\zv`-C?TߤWGHG/k*#)[z'yqiaY}|e#b~|z4]\OSn|ں52310,oN}Cql㺨@9i%7nytpl%jAXeiiu>8'L-NVS (FLFy2ݰa+ƺ|ZVҖ&]:K\vCf3wb[TdȝU  Ű۠Ppjf`	HYNb#e\2?FojW[876^i!Utp{˽f}Fm&m%rbeE|%\KLJIHO-WU*.piv(%H=G;Ʈb"}0/든et<B	tm*nm53k21/h/g.jE݈لkjiPp[YXz@5Goӵt
!A=97h*b"ZO%6G-bhF#tlv%tNxV2s ie]Y+;X֐΀d>=<a<;%vwՒɊfPk5<#' M45rdD ^U'&_war9&oT qkoP;֦g*'$y1HTSlhWb5u8ե-v#'yd6d È,V  *j%GAmjYYS)|7"::}zy\"sr\9^90vg?=I)Rzcm^BяY$*`75akΊrmOj1[>~}thOu549j^R"7@ļA+z#oc -ZN/̲]DOQ5^7F BNrBhAn#Bg-,Eu7P?Q-ڸXuJa\ :z?Epٍ=#K]TWI)*spTd0zn)7jтx%ќs HNӊ9pTv-ڄ
<ծEu~|JI˔Jˮ+^0cT
?=⩠<ŀ[4|muYT+ERɜ/؄(ͩ4Q3uYuRo%dIq'oun2pLn
ix|)'㓜Hi.Z#0BaN,-Mߢl\Tn4Dmф-ZMsQb>{-{ݗV?4Te>C6':0`(f	"Q[F0~X)STy0Y.tBعDOa]JDhC0@JROdI<)x,F s(-ZL	&Ľ=
z{XJnlv!TɶN@O߁/ڔdwvX4DX9á?'4;ZuS=9%\Q|gvvcG<+^aǶRg$':|(o~6LN./SNmI4x<NjghwTϵUM
XW4'J]uzYZw\9a^#z/|CXV&_<]$lNt*}pi\gS@JmN_TQJSZ'Cl'x<(N0كxW<wt
88܎Ky~;O;8Z!rW?upT·qIc|@E|0_qITNa)隣H@lIOc*uM'K'07N,2,']cE3X	?=k<d
qI,pZ^ʪz¯w^Oq]׋*:\}
r#VVӮPTMd^/hS5X0N`<;
HJmuRp'.! ˎCkG≉xSj\u5K/VOL7A#k/Ex8{%"ǧNi!X߹d|  .c!mNX=	#u4JL,c]TEzQx]ӷ.kR?<kOL4GX0C~(ˑ<	h`+(sroz0q
ᦆ{kj~S=?l^W}9qeu^NOiIBأ]u3/M`&*AT!Wlߤ2Ekn/loگכnit8Hrh/]`X뎺 ;AraWC.&^rTې+w
p!gNyLf˅"^,Y.hdtFoF(:≲#,b>|GMikPe:9[.gX]]#}'UchlnR}jQCs*9u1?DOhwTgSAmф[4a-Zq>Z!99f-e-'3RzxdGAl{xV?߅t	Zp-1?K	ߴKET=M<P:'@0:!Ң)u@JT٢AfI3b(?
[>׎ Aq}x<Fj3UQ	M٢)'(3,S	6j9n?HX.`ߢP\1~*ousi?r¶\E³_DO:ѠW!{ S9@Hq}DX
-)6zIj
KGek90W/kR\1<LI2=EM,"0Pz{9tM{]cp"E?UCӑ d9E+u2:w>ˡY0}dUz݆tN,RTSFFg!RT_sȃ.ˡYz,wf!3S8:UaimG>B~z)ΰ4uqƷY7B$}{s5a_7[7)
S?֛(-3$8S9آa?5K:hOI,Yۉjі:Q=E'yPBN}TCx7OL8Tv4*ωZ UT-Rmi2NءC/ჍxK8NPŤh3,g:`X.c< ^)/k85Tf_ڢy8>>t탚JQ^:Ңx=el9<#yڢE^^c^~!?Gh\ܘhQ\
e!^p-Z\S= [Z )M.K).
(TvJQ}?
rQ4$'pְis}jMמ<-98W7;siPO9zpv%&K?Cuq!aT_<}U0IQE<1O&؈Wa7i`->c
 `P<wrHz

e%.DXc=اD;a[+G̱qN`^!^b83=qƔMD4آJ}$~^rA#!'4qx<udP8,	7=eM'l|PW׫*HÊtE5CO[!FZ4`^AuTz$^ᣑT:`Ѣݪ<`wDٓ
}7`ߴu/8XM'@R4'**d0e6(^/G{]=*?Xo^FpuhߢvzZf. .#h(>܍.CF{O3_,1JU %6FN
rS1ZR݊)Iq:!%$F=(>wid      c   DL+   v   P
 }/6zt=qOQ,ʎz?}^$O(hV68]bcJu#Xё.=JdE$~brfuQMol*7ɅP..0{_~c
(fRF$}Z*b`R>g'{Fբ\nx"H1?AM,6\y,@Kj>Y_J.a1n16pbZk=f첻,+׭T	ˎ>8ؚX2]Ο=]HP&]{<U}'*^nFniR =
KNE=nAFm}I4dsW?]nrt،x!>u9X]ڭzX1u9tj?3ހ#ҕ4[CnG/2颋7wRe\ɫt.k+'hϦeJ=r1s|컻CF_O; \d\6/I\ldN]EݵF%I
L"f_>]xՠ{vlu{+2B7L:̝.%<*k7F_8!E"s>z :P݇R`,?]C{Q_`HzeF3go
*0`"g(ɜ-uN-HѰqPfEȪJv.Z+^qȅ?@o];XЕA.FKvy[	^eymUk@qr"d+Vٹ^gE>^؂otbze
?_Ϩ}Dz7y@ˇt&tq{-j%I5SHbs7B?J\v́V۴tT.Q7ʞT7/N1Cv0*Xh1wˍLhI/
_za({_rI$	:P@TJ
)KC_{Sc>ЙJ7]f$_
t9Ǳp}}0\vj"\~
.?׀X9: "q-B߾m1rD/r2QVT*[9]]Pq"gVk?st~qO/B.Sr^av0==Kՠ3ZKt`H64*xS}CտM4hxO:fGh%nhN]5zmhYEw]/7rsg0x[-<%7gĂAqO~\Or
zWR|)\72E5ߏ^:s)7&ShR$
[hD򷾩}`L\qQT{rq*Q[I.ػ@{?S
sRD\3Bڦvh8nx,_pȀ;Ы],iU+&vcxr;:'g=i5l/ .	<E1C<Yq1՜utaJYV%ǈ@Tcg!E()	uF'+b6s
22~E3'8.#1 "hpD[ZޛY:X4@OrmY-Ⴙj'!kxMch^W|PD.sDOʢIӺq7E3SRb.
c), 23ZپFSͩ6o|cf$驹?}H?W@r#÷3`dXT3Y7A~1vqX[MR?naw0Um|@uxLCҢtSw?	WQ}kQu|]la}x|=1>&ٷS{TZ'TTY_cQha=>S6}X#/Ns痊Z^ř3̟K`ܝy?c=tcASȝ܍d|QrCl!c#9\P
E(o~,7yg){;/ ^\|7~Yj3^!P`A͢?1P\+.
+S#cC'?:SyWdoj0[O^zc@/d(Qv\g0@bwEzVo䯤]`M3@bTz-㇜^w mm@T2χ3*wC3ɁH.0Es.˨o/DG[ѽ&nvP =]n߼=:W\9z$S9li<}c(P$3¥QLEc.!cRw?S6>74d8ю\4F<ð+9vGjKٵO
K[Wr,iݴ4^ϯ]/VW+7l \zægmZ}e`N'C$nᄖpˈ=x:yPtUr[o.ԶlbWUij|-O*?4`<?=Ϸ׾sY3{3ũnGp8O=Rg^rƜ7Rŏ寢7NK!Ѷs;^ܢ|8<n~NVaLe
{4v\JBĐk~KF?WGX?/W~_?O"J+hԛ#g|@˕cȊbf`2e亴ǑGLBX/4l7[avcdaeKn@^؈0/S}Ha6Yl^Ojt`?esLY\fyKhѰݧ\"4;z#i{tА9^z 9Yqxϫ,^yI>{oN|4?)Sl8plGա4%*+Xϔ}SGUbQ_Gִ:gvKf$L&n ]cQ+
zN4/s;V|"d9ahf
ҰLl2l/]o$lZx)~m&ُtJ*ʄ~^['45Ot쒓>ob,<FD>d9;i
Idy~]7wRY&)yx;yfL<u=ʮag\F=2Mg)mjyvL_~&cYף;'M{x{LE(ADiHv셾@Lu]Pg6wN,/v|??x{%ZڪmEpq]7LU$mB=Zd[$
%Ǉs<sR/ꎺ=
nMqDܦq.
gʎ}}qĔS9^rx$|=pXc(tg;*c=T%k=雵K%1G,Eb`$!N,47Uq'Zm6K*h%2wLXsoIduMr#m'W:ni߉<_ݶ#xG\`5qJ>lpTSc?	(ub6ގ}Ӓ9~`?v}zOqL,t\0\!VדS+im9 1͔P/u]{iѴ\F?$N!{}LW):"Oq1|xG:.<U=p|/~`[Np]>PV6W nA9̓rйc;&Z,#j+8?hwp-s5N61v;oOϻ.{w"J}('"JElYzd\,_#O˹\dG:y8粺^W?ggk#dMm8s'.cAu8WY>u;p風q;:F HftKBz2c/2Өe;[yV/j5yn,TS^J:MXU6:tW|
!zo}U4I
w+>
v5Cui~*_wH3+<۽_ZI|6;bg7/G+$fіmso!y%ۍ{ϦԴݚMmRc{|6{U+Pm<mmZo}@n7ъZ,m7	u^EjLZi7Jd",$^!d;ļO*Cq܇B%"m^swK+fN.&]|<Q^B~c7ZuOG/OSA/6~<XpM2p(~+D h~|^穨mM5}L-U㞛{i~)뷈~@Oy=uiɸޅ 8)<{p/:-cPekVΪ<T}lMfcutŘr./\ǉ|)F|O/Bt /XI4%ۅjZo+//=B6/փQ hX0y4:$TvyhY<{_F-ێ7\*󅍦pѰy>up=1*ƍ-&iKgt2.aY4|)e3qXMa]:JMZM
Fږcś3pm
jy *SgP-@}pE/)vL" fu ػ d,#Q▛k>8-\)rv
{I%^4,Q?/F}a2&d*^X#XrC/Uאf՜}3	~Mm:~1lZ2#r<ϧܶ6.>(XN0qZpn>Z4C)~V!_j#aX
y?߯=Rɲ~JXԪ0M}_Fp<XfgޒɚWn K3J\12<'?@6U */ӎ@c{:L~n}(maD(,B҈E|T
3u-@$PeJcEҗTSYb$Hd
KkfE[bu)N5QߪXomhF-@CA(l	P@OQߢ>-̲o؉:ynC9[&zZCQ_:|tk. wn-id	(py0N7j/҆-۴ΪSj.yn4!Cdo;H[dOIBsޱ\9wTo7r=lȏ[pZaP Иq7|{~𼌇cC$Bü?gi]*ir6T
Jvh\'%C#GpKG!ˬߓ9O >8e/I
Tvkdek ǼMHJ>추=Klv{z?^7lSޤB;_+-ؗ$Ļ:Sχjׅx|Jn!r<AMx6l+SKPoY֯h<h9P*:VTDOdp=̀"!Ы:bO#k٭yL5ox^iX"x۷fFPo3%(9BQ<<gyZ-÷2=HGWeqwM޼k^J
Mۑȿtm=<?ޞ:|ˢ xGfyxĲ}7]uK-pS]$\D~a*#xVKnCySyWpzq7o#| ϫ7p':^և/l[Z2oϽ;-~η+0WE5(LW+A ^1x_)678K	 xص>DS-ao@SG4o[|øU)';
YFn)\]C{9v
2S @ao)Y%CdޫfF̠|5-ِ%)GSЁWdf=hw\y~;#'h@qajG&8aO9@&	OqKFР8|v ҨXZ8RÒO i>s7hG"";}ifJp|k] >T.!W r{ԓ^
ƅ#ě=I5꨻e*?v[pWD Ŝbըy!*SaɭyES0mtxsx.P11ZM
1ܶǼ:*y%*GwK".Q9"pֵZWϞh/%n[=*OyK:ĥZ|tHpIYOԪsJ2p:۳**{k>Ad=[qA/r,pbn޶nh&LxHgSL<UnH/9;u1vڪPeI8t3vѢyx@_$9jd܈OCs<?y^4?
hx3ޚ«L<s+6{:u))ۜ74DnD[em=:}I3m :gy2yc޼uJNś7]Wir^u IDU©&nP|?'L:WcZ>?HMEEEY /EN(?஡)oAR!@PTwK.^9!
4AR!cfѼO[[^y:E6y]Uy1-0ﴇGW0oη̻DW^.~w2zsj.=,9-,\A)pl]j MO* tUb)5Ii4h޽@OZXxɼ[:Vc:}x^ =y/^L;݂p0}Lծ)ȷz9ω<ouC^Zw9v?Y4։\R
96P]A`J(4ī4*~x<u
Ӑ,R#-Q8O9o'ke	oY層cdXPY_8(/WXnwo7dB"Kv~!k0o\8nf9Io{U}'cMoP#h9'vnBAzîn,5_8/]Z|{\\^dV;Q'W٫# WE&chyvw|޽E
rn^ռq PaC)Lw:ĭ@Ukx:qi	0'yo_FΉ]ރ,9oP4oyn0o,7%=!u>fDёs^w&˼o2x
/.}?M $9+~Ӆ4GpxD#oN1K.۔ֹz-!޼Oω^rnyOKwY4|[7z+Wrkwp"g9t~b? r<[F_@"t^E'V¡qY:_]N5.?ZA9̲'|EMW+2xٺaMk][,cܹn7ҢwkdH!(P~pTpT=^ys"?yuCpCBpB@p@7
v½p)LXP~XTUSH"C:! sJ}Xqywq ȜWIZZ-0z
 yʉZa.hq
̋ep9vGӒaB?Ɂ=jpɘ}.*cuDk7[?B?K/[@k,?z?#aF
\06RxV~I
,2uy
)) mXUH?
 !1%|3*҉x[?<~_V,:IY_Q@6㹢 0)9<da1#gS20<YLdpسBo-k_uFMsh HK0щ.u5M6J 0=Y#` 
6ɷ_)XB̡=*mSU0f&uc4"63qގ</ەSݲ©+}oT7_WNut#o
is u鯅FHNJ<RIz:6'oydsa}a
ـ`.+vG++diy~|ZogQpW8"da:ߘAlyO\0kdpτa̓8'/TF4%2ɛ+\ a$n{&ݮXnKi~~U|J֥/+XA;b
%8( ŞuvW\h:׵.[2 6pZ
]R&a
y2z܆.uu"{<ķcp-)Rn3)Ѫׄ?(R{Sb<yḁ/3&q_2]?iPlK<UMXH2/~.ͻx~8L1<X%-\By;W2c'!dnЫk}2s
Cmx.ʬ$7SV2Q+-ѷ-a Uۆ'I8&qGq<DQe8j]s'8
ud1QEaɈSz[

%`hbdot	w JޞzCƘq3?εz/aS&{KֺԂadfx"];dw:FaC֡MVt#eTc9\\0[7jچӺ:ccW&q+
K=x+gߕ+!\Cvb(Ίud?SBD= /=l^aЫDx;jZhamyZ!S( i]*=^6_\=fU̥eN&qbnaPfQuA"GεNhň&
?W!buM9!imU(SD'_mE eMC(e)`(@Dӛ^=;-ϩ2Ge+}3{ y)k
e6MoVĳƞ
bŷ;Hۉ=*Cj[i'Z/KPiVONg:EUguYYަvP$P+y:y;塵κFZNVP?	;UC(oeD)ι"o-9-0m$ft

ҵI0n7!TsŢ:a1]uQ U_Z^2//@UT-Yw0YhUZy六[=[Vc[ȥ^/Tz֬a8ޯu[!#j&C]:7iMryhJ^nY])?9sܪu	'Z"wZ1M!&`.K<+z2Qwt.X5%-N5a8^[= kp[IAI;7Zi:X&]9 ^aٲe3\A0H
UY7LK( e:ëK~iw>U='ܧ/+gm8pxųճ:Kk]YL'aE^eE6tRsyVjYjE;5kf팀E,^K:/i9go unMӶp'c45$n 8=z|!"2qpgVzNw1;	\	AUgÔ	cw9'k?;5T	hi
ޞ1eU
"	2Nk2"뚠uK+0.ĝ-UkR~UkMN[K~Q*t3ѓfm-9W/Ba(p/!l8
B"B[OjJ[Ե`P dSqY*>	huUyY86|*L/|xHb:K<Z=߽Ø]b)ClbC0jPSk~CBY=t<WnOcXj:x"pP< u>{F۞Kw#)>dyDT\*G$i'&7j 96ߢ3 ^VEqv
,Êx89gUr~% 71`7`w=fI'vH@Hx5l+biy)x5MVgDbeDˢ5s2>[!ܥԂ/ag pτ bo%5t/{Hx)Bɻimfɿ3gTGhK<w?1w-
NK.8eoLlXKopy5_̺eob0?rC8$b^l9n GUKusO8w,h`t	G5\y)~cK~W?1rny1dǥ%ltC ުd0'
.dvW^'I<  Y_1/<?NɷENC$߁gys Zp	CysOfz|+Be>f+N5ڃAak)9e@٨6Jmt/	-]s2
r[* 5
!䶬*<Q+U=\_2OBq5.Q~bRq;ڮ
2-ؕB\YP'Ni ~fR>eoYwꐟ	8 YD#3G˂(S-+ieZs;l:գB9UGe!#~.l6|IraxI"Ǝ%h{9|GER͉rp˅}SαQn"WI%9qSg	s#HS:a30S]8ɑq5%t?
FOr9s#Ǔ'w?,C^[T=vB9mKs=gdnC[>@
$!T;+axZ9
Vor܆kY n[AM;]b
-=([$vtG<>uڎuprZ
Em-'}j T|ҝؘ5},|_W5_1NhW@Goo-`@oRZE!۪|axEȧKrx+^mG^&*/oUD]7un	p~6/3XHMXIGfW"aO7xʋ6Gs  L`W7ąæYݼ.us,7>5'/%etuwLyu
v]~vO<yiѺ	!M's<?:X늟L</Â,6=>w7u~
xM^ ߊWMGvCD}Q4oDݽۇ=ͱ(Wa7(/ D D \jhѼ!đ΅Rk9n#͇m:<E9~yxλ-m8,qRt^sHx6yHWL&xb(>Ԋym;19;hmH|1A#(a:9^)۩d9ZI%-Nx<YԳd|f9ƻx<g<2AUz0ƫX*)\

K6%*iz d=K`Ɏ<֭*2	Vr;~Ŝȑ1PDQ4=hEr8@
UC+ЉДot(RwmDSMj&L~C\
_-
G_aI!C%_d9&@.Tp+lE{˦4E6BSlԆW jEq	Ź?zq.u!ѭ+l2w y; Nk8Ln(VLxփŷ^o0""_riteZ'>fa#j>x2&EY*ϖx;w,«%`8%zN8"zk5}4i͓AFZSu	åf:GU֡oohHաmoEծƀZ4`)G[rpo<M/brc	BB"zo6Qr+6bG457R[6R%jrjp79Qe<(J}fRv[]EҎɮ}u{v=u{xf=,[ WlnyZ26U9Y/|+{)9;e,if22pZR/ 5O6÷Z2;ьUih=&6?mE'76TlXWXow@_XyM ɆG-OrLgӄY|s 6CW;E8/Yn*yQպt¾)˂T$I-uߔmdu- M2Gk,pP6Z.K,fi?m̞le;4*WnKkyS|m\
D.JҡWAi}4$8`਻y99m]%U+ C@H+
uR7c,/x}͛+M3*`{xrklodjUr..l]PNi-pgapyvråB&EwʢmpF-oy;x܀
u/f6GOhcO
 ˟os28O|wÅv=uAgѼӛэJUtnX.ֺA|ཕ+b!l=[yOSp3эN/&j&yp5k|ScK
+^[ֵ(KɁ<7E%|l{<)j]増u&7\untF=sj<䇌<`](Zߜ:SEodl[W@
IF'ZBsCBCo]VTagu΍x(
$O\I]nEg7OQO]8ﴁ&$pni"^;E(:Z
p2x.ՈKqZYToh
E=) MMMK:bg/_B&2N/T\M7,a5ƹ7DS+C"TUC7	"^y-AK<dCZy w8W
U~aC5OA_Q[k+̛YBzHR
M- "& z$9
UO)դjhs#րID_1"WiWǛ*'
f4p4kjW]SS]0x41.2;BF(֦ojj-~fʓ.YWYչ/Yة.J	!JUvj85AԸfj##9jhKZfS׋lwD ~y{D>-eȭ!n^;3'hO2"lt8n6 _i8f7t~;U3VDm1rJ\xHYZv鍼|ķ؆^=Q$P?hnKik\I֥'\r+L9OP͇OEŔlEAЎWD
ǁglJ<{>yHgjr`c޵%eN"<<%4*Y͒:VLɀ
Qfb$t 7imdE@4)HE,akELx)mMzstaѓCjC9pFqu5M<vIO^2}i=ǂzYZ
x wxպ$EyYL9
>nZK2osɥe*fr	+UspŔY˓D7̚h@0׼K_pSWҞ jmrŔRr\*ڎc5Q͎فPգ=&^ݳ9G<W7B:χLCLm;z2mYTàֆl{[28jfRkG6YUa4BZ @c7'gsS삻ڼi_Mç?IN[\/ o+B%Sg;ۖuNx5!v-M֭R<U a%}UWlOTD60 YCqfӹ׼m0vXmYjQ볉!f7b`Z`9̤yc];m`04Sk} :Yg/W" v9G:o*ݸе*:?wm;|uC
`9NєX+ڊI~{kdɣo7|"DzRptH
n/=Iژ[5q~Zx ܦ4(*y!e<ln7ooiKgpc 6MZ?FDv-xH%)tpuć 0n͹\jغPu@CM_&+yn%2]A[ nUWݲsiy2v^A~'TrmgӲĳq2ILc5ސpS<QCsymV;X1d6lkps;n's~ļ}=W{EZk *WrtXTZj,Z܄ 'vd9)6ɯC;zi@bFN?m8qP]sd%k&vFu<:uU2pRy쭙޾C#Gp,dk}\dk3 .)P>`ڄ
bt[b>J쏮WPjrhX0")#v.w
,
|;C_պa*nTgɼkp7.`y, ُKiV|
[!T2vZ 71ym}v^ C##z?G^܆Ç-:aEmĻS]wS!\7yol٤AJĻfy6Bk-xV뜨xc T9NfKZB]}zUDߪa+Uw.PO;={ՎJ ^ۨ067ލ pQ`|U	XCpm`I.t{_e2p}|Pyq8Ǽk^=j4Yik{|ȳ+wy߈tv0){2ﴧnW	jYTj:C:F"W=v֫C=Ezh$O&Suh 70yK4pz KZCS!ݠ!Jߢ
^Osr~Np>Gtہ
0bhi+eʶ桯7Z %"y'7ec |z퍈; 1T;EX(Z1!k&VϻbDWMݼs<0qsjJ+ű@-p
VUxU(Uɢk<T-jT-*W	XN-zM5G^
vhvN]4Sƺ4$f3;?gQtֵ"*Fm)vXjpnjK殧61%m) ={qøjm\8niVunXIEt»J+ eٮcGzyi] ˎ:ws!O-0yC9\*!	[&.:yN]J \91%&9E5ގ]F'M
\8jCHۃ"	%Sis
V݃S8Q
h]&vsZ nϵBp.:k
rGxCVr(o;=y@vz黢C_#Qewr&3'xv&v}*NlHLZ/V7QՇ)u\)0AdHWߘ!j[NfA(:/+#tL3z ;Di$>=vXVnO=/WPg\{^e .e>mg zv>-#sc7Ie!,%ߊY4%ƁqْlCz{ZꃕNYTEU֘,ے,
`4m>P+CyֆqN#ȥ׷FUn8ܴ'M̙h{^=[Piv~5܆"aNZת w-
Nz4;09$8`DWLyl-0G3ѯ-xoe[}tez]:Jc=]	j0VVk
{,dW;VaBḂ<ػt Z[;fǐGl29GޑCAD_oPE9y]|LXFgoT2t^]7l/7)6Up|@gt>D? y%el3EIy+gOh$*rWg`p[+uLDEn"_йCt^+@Be0Z&향\&
-LZ*sڑ^ezX[;ezkj/	\NU Ŵ>o2A.LLi92X_1
U0']Xg	a@r`s\h(Wx,+ez
H.]gO:<{ 0Vk7ycs[
;=Kㇸۛpclv:pp+xnsaORXs
xb~Ն0'Z uR77!,n.qB~n/qٗΏR_'>|Zboy꒽w+
,{\o%r8|#JYZz@0ھ(DLaR4
yTፒ08tNvCNgApEu8+2z+#i̓AXZ"t(cO1Z;C+,;JL	n.
;,jc)U}Ii] >D^=yW[jh^pwEsE2=zE+xV{ڣ>30L0;B⃪=Ay/JI%|[k_#\2'9H8HApvMҹ=OEO"=_$:ɅRЈ4zʬpcv5Eck4ע[yۺ)ihw@7{VPqޯLZe4i+CtVugMpö@u-v12M">s8ykY[f[&1lqej1@vDM$&6=IZ
*{ے!mYœP_XoɨՔBJg2g4wZAH`֍_z-0`HT-V;qVNnVw	DMڑ/}
Wscop0֩?
00WD?n5ko<OҔT~Y7˚U9u\'QbO1<)teS)ᛶWHk&K撋'9I}lZIjU :(	VR)Q
*pwpk)]u'aJr>O^=\ƦȲBGƥ",^Wj*qD|0ZNW	*u֚iܩ-9H#wz8K-/.m c⸒6
QZd]yn&o-
iyj'Q1Wk0uuoEO"_N\Cx.Ö+.Wk7g)"^uB/>u!J`+D	+QO7#5Q
ݠt<Rt8Tt&\M.M*"IZU >Z.Z7@u9t 2y,HmMk=OY6N[JVMuuX_XGNLz-gNN|H,`ĔyRf7`0GgʜKGY@E~kݶ2pyYLN/VZwټ[F,`Ժ<TW~J	eDCt΀\}(ˡ;q;o-
-`w7ԚO+iڈ<><ϧFԵVAj>D]
"&Q1NA 0;7\1y
-~c&|g0 m[`sV\'?dY
5
7gY~Zl\;Jd
q̓&@Jt5%Ki Kom6}?Xl 0#%twyF>ED!Zcފ{;O) ծ[au	pسDv?vvC;&%?RgJ/GT5gӓUwd5R"#RS/Ns*GU2&xQ56G]H꧄ا۳Zd`n|Ø'3:Oָ\bg{oV2_	ɮM0ƺu}\dWoL@)\MohqMӊ i+T}i;@/\a7Z<RY=DZ=uVcX="lGgYQgKDfܾ<1O6JpDd5'%-yպKP2&{{,3"BBbVa0$SmZxɭYKU/)^D0C5N n
wd<":|r#Qӱ10?Q$50c"7 $@XƮ9CR3&sM_I<t
sԅxx -J&Yp'/ν"_~xA9·x\y΁xu~yN㨻8xq]o޶;췉x}T{uN@x5809H9Ra\{>`%	\/7%f{:j
a̻M/
IT,X`q_HX#:h0Mfzmh۹Ny@
z:ϓD^vpp'U1ѱIu~3"6)TziIrF9\`VRVrYD
BTUya j}e,2ݕmAق9f:A%{+_$V֚ g׌i?+09zҩt*Pn;(RDU.2pOD
UuL+i] R=q9I[CJ[#tyN7s,Cs~_p @ VYK2ip(j\dcMi9z`LX*,07ۘgtb-]a77dN(BC@wB
ҝH[&:A(%jtξ+@tn-9gC Y8PFgצ0vqV[q
H${3źzsjI ;xk{vsdjqax9v >`{ڣVWjwO`nE{KrΝ;]NfwlJXrm]y>!mJ8xb BKUt.qi[&rQ|vLGY©+#*;
z{A*dyީmBΞJSHC <+Kƫ[kq oabWt4>[Sݒc<<-سUu
-d#]~эii_.BS6AlY";ĝ"rs]e@TkS/^3KkvNԅΞF]0[%)ӺfNxm.4 e>Zߘ9\nՓK&_r*Zߘ9EnK601H6Y9֎4o2K;@IevZTVOt=; ?!-bzꫫŧ0r̲ƊO= dO_&1.8/5T[fW7*8D=NIxR[G[@oD'`z"4̮ Zᗎ_=?Ql4oTT2* *'gUD"`=<'Qgo:υtt{6MGgO.7yD=uk:9JG_;/1c_vG$TØA|/ScA+z[OZZtTmyo)΀{(Ǟ:ґcXRgr-
E<IXCE"LMDAȐ3 yq	sqB<
qLOO5 #Hp1I7Ö
=<
A~vܞ&lG;=QQ;;dh\XB!D/Q
#7P-.!)XXXJWWf;o70M		eTt鸎:ZՈԈ~F	,?S	32A#3hh0
(8BJF(X@PNh R
>%*2T7D%LR0䈑$Z
"C
OTQg	FS^' B0n3OMҼґ=)GT)FѠ:A8܂yziH:T$S	E,bo2Ի"CI
`ޑ#n#H=QdxHmy+eӎ#$*	IP:x4Qݨ4$RF^)׉#R!>7>H0E@ϸԤݍ"!!	F(9tJ#I,xFJ3@*nK0n%,Xӑ!@xP񠊺mu{,AZ(7,nJ2000q݄RP
	Mݤ|m]fS'%RH}|2nvԒS	7&` ***;"i
j)ʍQU+%tDIʍ*G&$4B"U$	&<@
%ґ!SR7)=)#Hn;	-8BzzZBRqe'#LQ2h(QL%(IP$
G"MKIx'(%nLM#7'F-!݊XpKG"<xL1!)Ɛ&,(ᆓ).	FnD=vP{H'%ܔ<HʀG{*"UfA[LR`o=t$u+$ji"GzEtpbZqAÂ<Oq3"s܊8Ռ#!TD%P!Q!Q
n?0!5%ujo>'nK0``IA)
Q´tBEOP?ܢxht^T$ib-xx`d|QH;um!HKO%&sS^('(
xJma*FKR&!QE(=zFHr%a"#J/Ӑޑ<*D)UB齽֐''*YOLJ,pڠP*cRv3uCB@7lRN*F00^T&"?^NPJU6fSzXz{oKD7$t9Hߨ"I,Xbrv:4%(h	
(鈓BX߫J!br2Rj&&&&&8ɕRr'ԓoHOGf2SYQP>1
aZ:*j	It$	RNQ;$IIGA9͘AC	;IQ1m.1iԣzPTTPFHAʥH*
WkԷM#C<zPPN/KD)J@0-	P&8=Au!!%P}hPX?ǞW)H@S sh!3J F~0eDQߞUQ:BIa,6(L`< Lh a˃L@!T+JD 7	( EB0=vV#
Bhc"DMߺHEZl/*FO+zBXƳ&Bb<ۙ(ባ&c9J,8a=}PK.^I?~c0(FS0&JFPn"<L)"ԁ
93s
qP	=EZo!|Ky3c"B#cZV:bC=1*XO= 3BU E0@#|&;(ᣁ#  !W
j] &"_&a5<u	5x>65hQ&"
,iUF I	}
DA*Iu p'# ܺjay:UCȃM_M nOfE@{J!<"@hn!
v:) Ġ2*²jbRcO0B$6BFՓɫ=Iz3FM(:`cxQ'' 0#aH Le}x앿
3 NeƳ>8JiA?٫gī;諱F7%^
᧕ZZGl|a*BCG	zz{M0+.8!X_1@t!<Ji h&g.@G$	4W*Ah+_$r

ȴ/wLA!5ܐsFxA
`"k[,!N$	}mIկ.",+R*o%w%璠0F^aV8j$%[c& 
z3bIqBZ!oIoD\潲BمFy!4Z-[m7Iؔ$5h{ψffXU!X_A1ڔzj]
 Բ gLn[iKa^Mzn!Ʌ)JɼUΝiVpgϛtx	`<@cx6Q0&t01J$X_7/:!!\$֥́8Bvr&
@HPB%D-Bn4\*?؍\KgfϪ1RJEm{"sg{9|kua@]
GMuE	=} o"A%c}q-=91R`
Bx0TD&5
ճcMWpT̼sfuydږBc_.+ Qgƾ.I@eAj]@#+	\8@ci}ӓFXMbD&Dzo| Ժ&ܯBzt^`g.J9P"]D8\FtFO1Ic	B
@0J@eg!X7b	|% 3*<,2QX'a7!;X#$Ƴ*S hdcT^><׭~M!4	-[ u]U	c`<|0Ǚ/Y奄c}պ -䏪a=ڨ@6gDzM_x4N64/mѿ9z%	1xW4Zk+PK(zӃLO{3bNF-A茮7`(ԺfX"L3&&y^@!EBX֍kֺ`Ժ^tb7U`}=F1V[²^`	MP䍣
jU#²R`K#6yE)
Y@e
\@pǫCPH
2;*-0H	aDb޸#a7E	4=#tA#DM2ys!(a<x	ʟz)!H/yFV{yGVonj]!V~̚P$;A_oW{(SohUзy:&(RW 'JomM By6TG&=
U!΁P$W|kKb1PhU TBgA:,eXZefH	^sp`٩7ԒƞdG p q;H~I"*iު
0k%ŻxWBh) I=-D:d	c-A0k6ۈ]& xVy2BcOP_9xVJ!]p8_8#qi`BxnIfC&ɳ<;Qs	j}p=_#
15̈́h pn#m,-0 fm[]|c$Pꍝ=s֖󠖇%
qd~jKWOc·17Q$?FEtBF$̼U0B0=- NgB0==T0FVaw>"s 8>ah7xv	+HU(> #rX٣&#!]7PM5ws"1ur%e>IN9eУԪ`rDw
2rˠ0ٰ`4"
 +x 1@+2r7N$hnŞ_yqjm OQMͲ,2/ƹ\ZF.$PwV&n=G: oLkkWh,cEE"3jm]IWN5M)r U0Rʏ	 $D:|^wк6b!9e<;yVzgB1~Bn,8@c2'0bhWBϮm;ۑ̇D|em9^5v  AgϪf@C@ۢiS3hUxkt̫1z[,׺4ǲ0Е, 7pn`zE
@x@,āw.+zTo,o#%Z܆x叒~\m.|8m4umV
sz`Dr+P;/Q=Ld^W#&sjvUILHl`ojBVЏRI37W:i]Ru	+w!
Qy>
t:ϏTV/l5ι"YٳVAjX|H7Vv0/.Ȭ]BSaLc
<Οr}f=Aa׀~GI5`WYXpi+zQQwEFN0#+Jq[3A]pq4p7?\Dmxv
YKn:"x¡x"s]V<GÙDy@gWԺ	wqITc"f+@=_qDᡇ
Sj](+]JunSyZC#`}>B~QSʫJHtֺ\	EQ7,Em
ʷ@#vbsu	Nyq
tD|<g~xLtԆgV?ܪ8#2}BcA-#c'%׉"uvCIj\%ˡm F1A)={
𢽎p"V^9GCЄ&^r<?Jj .lˡ)7(`O?vM`;X0v8y{N,SJo,ݚĵaԺVphs
hos3]K<վ)u
G#ppx:ȀFr޲7Z"

Wo̊_eAmIK 
2y%BH@ճ.GDP	U{:TkvBդBj>爁oH7)ȿEb5R/.?vbSksą)28oZlJ[1T)oX(9V7&6ʡ+/Bpgoy(g/:6R-WX}CIOP#7On޳=pgHHKscmt.oA!N06!
TF-.9xW](p|Ѷ$V'l~O9FFCK<̢ S!UD `P8@D"
lr\D>C aAA@L @ Jjh1jXdtP+v?z=j/OD^D
MKޚ.)^H)T5.J\.TXmWX_jC
yU,1I}לI&pw5
#Ț\/]KPhn8j ]OMh+8vZ%Op	yDhQȆqaTκYkA'C7/q/27)i]Ŗ=.5 И{#Zk=>5e*p>fz$% PX
ɺ5Tg{ThUKeߡLb-ʹ1t7Ӊ&L'\Ds'Yv2ߓxnTkq(`Ng#nQiNqg>L|]R=g`(SYPcANC5kU%(˛&A3+ c: vv̧}) st:K\CznQ'ޟ2:x",OGAM 1ǁqd`t꬞H6zJIt-+݂,g+'='6*YkZʹ^b3fW/CNX+o/.ӸScU*ot8
imh]Zz;u" hD{]ˮܣtM62Oh>gtV;hrn^r#xw􊶦׭ƪ.(<;]tFLA)[̯y+?s#κ;]Q]fqbJEL/n_-u"S>,]7UFQ|Ia
 AAI<,=e|
ƽX9>nqI N+>=Z@d@i^xǛ5mGAd̕\CTfn|ɗc[ԂV=Z]9t<AMJ3E8H3#0m pd1.iV=x]nRyBBx߹I0'dk}5wmh@JIYc
BKY0]]2J&SNm"}@w,m}\,^x,YF2Edy\`^-҄CD:8// 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
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      T=e
?Rx&diU{Ԁ%D8w_M`=9[qI[qeԁוnYn= ;|ҭBUiP<MT]<[[
iX
@ {{cD;!b@xt\R~)LujhBO3^ޡ.z+Ϋ<!jcjީb`h%ڜ-˗uJ׹rZ6p1f{:]#$d9>TCynp 2ت
Kq9{1rS6b, _d?9ǋ?#続%~6>&[5pebo6]olKHHRhwg5
	dO+(GCӋ ^ģ3fqKȣ@gHS',FpzfşgNc!ʔFc>KbpaZ]vxm'Rmnt_xGf/Zs UXE2IƝK%+NFoQem_mw>ALw]ěxoy٢1՟`9ѤU`
gξ;
	kX㵙Srg;8ZV,dorpglR4ީhy^o	؇*KnK+*͸1Jc>lખz>{MUSK u [(PD:rX+08miZ(VSGnRt? g qz	{Q915Gj&jx/r(\ğyJ z\=JϐrPq}M?13,9kNVX\jgboY<+NEXQ,uJSr,ckHڿGv0~P4u@8"XzyˇBiEOL8IWfqdrq+Jl$a;%
EUs:]>X
$
(K{B	SG
m({9F$],	7v[kUYiu
"O5F
I:>`MSekG[9E96݉0}-<3#%_ECK|z
vô=k^)
0@/Þ /]#d
"5Y2]{y- yM[p{ɾ
^zap\%gk#V*lҨg&־P"Q!g'hQ݉+)wg&_p*dPWuEGQZ'$a@u&Wv떇sӑ}n5̹D*Rj{Ou4"x5bB-\P-;`4z7i0[0ũ>l銲q=b=JN## 1:,Ev9.|\4=2GWze	9=hcǱ}ܷZ{)jH8[u,9mك"GA/>z#-M^TvXdђ&.>-?]h3f-%ة=r |q,ph#Xp	hx[/%$6d7].U!m=%G}u
mqW%nܭdczf6u#&]oAPbXkr^7LxزCb<VԖ+۶zGpƝau
u)cqk@Dni': Fk_gDE	ni:ߢh0WYyV	?xgqx1|S%
]r
Q3ur5!gU}*lSa`mL\IYN?4VPZ$#k^a|l[l/0͛j.g5>
"c*
y P"Ȩ뱎92y$+ı~-4APizh(>ʾK#xR*oQ*m2i.Cb֜XnÅ~wz٘\QO/NLgs96|w\b`iQ3 瑢d$ll5́ !wQx%nGyKA̲L,ebM
H{7pGf-|jrJ2(;<vQ'Jr.zg|
!^;OvRBWڴ7:ATa[ZP{vq8b	uJ.p?e졆U
rW&Fh\q5>饕Â{rI
*g<h%mgj@
IQ0%zJJlFE8dGQ݈$7Iކ?&gMW,a61gЂFlB9\Svؾ[*nVA|]DAƁ8p<%J6Yo=;
۠m\Aޖl]S"6P=g{,4o0d̋pЎ}.<
1d8tpr_.{hyPٜ`,Ȧl`˿pmchqZ@%6BU1)~
`3Hi-x򵁀H쉤\c1k/tzY6|̥&.B`!x5nr7|#Vǵsa LA=g^oJl2nK8F짏:5=3]E:95e
󡷹lޠ;D
#7*#+]GɡlYApF3^Pg>Ý,,H}~Bi6SJ7.H )g웾#,||qnxZ<U؁v<DI2J-X]!\I5>G[O-uzU:Q~ZUH+F`_ʾ%QN{fjǿV7g1ވSU**f4x@4nֻ5j3_eچ$a\MLeԯN"[uDv&w\]#=;{P
8([lW\#2MsQA+y;,mv#Jmsa;j-{TaG&a5;lŎPـL~%yf*b+,LVDc69|1mѕE58*!YkH7{L[FΒͽ_4/_+c.
Ya<KVo|zS1j~FOܮE΁ƙ]EMT7WvE}H櫼LuayDn,aQ&J6j[Yf?S2ԇkp:\,YaLў%JzIz
4m8T2P+%74#xC=ť19TFT,So?N@,}StZ? -ݲ$閁7#e|kX勆3Isql[DyeP<V9nA@5O77
ٱR$p}*m+Q02<	ȍ>ӭ8r`=5jݣ/e'NV>R&'Grv0Vyg߇+(#/xJna2th:ԇ=*Yfw|RqV@=&5PhOM-0V& lȀ*R<\@ǣ4ˢ j:G	gM2Qg#h
q
{ֻ,<DTqz #ݛN.aEFE`^BU'w
*oLTr	
9%;Ԛz$;ݩ/	;K5褅Q1:O2J+~zUd(y)$fLޅ,I';r1X
N|{=XbSnW~s<;*}x|wRIv̫ZVoYx7ZhJ?m_Sܭ[a~

s%5Ӫhx	-n4^JUlfaBf,a?0[& vS$ۛ )'gc paJoMˊbN_UeDqRp1>jFGƧkqƸaİ)(ʏ*W|jIvOQYf*
$?R[eQ<x{qjN]&G:urqy^ߠA<cƷq.^3w)N 8֮m\@vaWꞠ:~"&3\4	0>VD%,冦-KRg
BCQZpMͪ剤4;ϋ+S138;tjy%آiWҥa7JAqƆY }RbH73M<QDgpSj#dMۚ*?ߠ'F@pٺ_ҲwGs-g}<ݵ)ݜ<s6-sY!I
Ra2(e
|w?vy`%J
Lqvbxh+e tjJv)
n(ӡws2b8}YZhLA|a۝vqpfw8ʼ@*4ݮ&ZLȂMp`Xoe =2zQyŖOزx	ȇ4 od?-6XyurͱwiJ3dIi@kQTM.VhP&[AvW
9[_yE]4f%7J|c>zઽ{B-l}/l`&Bw
fkؔGY3ہ<d"A2!Xcv~mlsXOwQ/^|/g
q
Ș	hsvT{ъnp'`N.p~	_].AW믟yˍ[ɻ(шzWM'+\>C':uUEȇLdh`,sUk*=lW}??|.]rxLG{n|FDd B"hUVIf7yVn	_].B?8
XeȽ|VL
Ȅ<bn"7U3^FWrQ8
ht9Gn6[x~&a6`!-zvHd`9gLZ=lʶ4KxBc
Ѝ/.¶[R$XTUi`,
\j,Ls8ZiAYiUX4H#+B1
KLbUHV=|rXL0#)83lG^qpiR6?z<Mw;E?J#qOQE7ZtuE5r][һx1IpvC#:*s23kԆێn-bop߄5AL9K:UȪ[B'FBf?Q[j8I#N MW4&hi|޾!ׅ3Dk괨roY<}Îdnfi?BOa ^:/ÊmWF:wQRYi 7Nv;Nݝg/N36/Ytq]ϊ?qbc:P[*~(de<X㠘

nQt
1 ҫ[j d7a?E_I,p?09	Y݌ea@8idCmrNY\n]Yi$&kIغY o8}o`oIe,/os#̶"So4#"&\ԴbSP?*k8mJw%'e2es[}fUvIj뀭;Oyg{zL';9[[9h!I7xC8!~ttް<uѾd$4ʆ)pY0PG%؀n `)S#٨B^p % 糧0-!:u%lv4,4R{]b ÈA;U1]]\<dZ엠ͨߝ/l*R7B{V
D[ɰ]۬6:6G}b#H_n^W14u]R3;z[>%.dt)>q>sel ě_&haۺ㲳^Sq)5μy1,Wu{hېdOK	g0 Q\<qɪS /ƉHB4\fp zgJ_A%DNlU}:tK[ V7KsaLflD_Ε>VOvqDA/᝟rv]ba; <-\t0MUx#)039n66d/ǺMӌKf#
55uh[}z)En{yIaR3n)pD>v#)/d9w7
ޖrleb c:] 86t# 2F-ibG(E*PU7F?Zꮮ0if5b6a?o'I4~dƾI:;ZG_%icGcSOJ®LZ
C;tԲ.t`[On;\Y+toy4F_?AKˬv7+Hۗd{c#RcNwkDL	9|&{hǬ%iy&D~g.>ոSig
L
19$|^Y4gWxLDzuRw/Hʕ~4cڣ
lv.J?.{>&-Yt\$-ODx-l9/m':@J2"o`-zs!n
v#/D7G#,,
N4&˓m
l!s.Y5i!`J
!QZ~~;̹pAH,j~hvg`J:H1x,WYfjxzFr
<Cpؼsv5ˑso'pnH	/Ig}wֿhA7P/GӲc@pe.<ՌJl%W̖Ie4myp&-V'#某ټ{`|`mZǹ-UT95}߈3]봣^eQ5o~tx?I&V9@>r5u ]Oy7F13ä1YJO֯
R2	!4U5eMKyE(g#p t_*B.6%\\~\ӼL%2]
WMȶ}&onvwT:Ro@vdwfpM@I\4mwftv]k^asYpp&V1kd,WfZ^eit\C|(wbo\b>"ƦH:Յ
s\\k_qgw"F޾j/3_<*~Jhｿe$!@e4B[0d8+B&Wuz{oH͔m0J#7W,	K2L|NR>,t 	!s5TqwOaGXP&][𹰸u202uV!voI_3i1Pܰ[> @K=x'.>Jewk!Ax.ҏ_(cfDUW	,m|(Ɲt;wHV;>;)4t& Gof):C<|*wP;2ŻؙOnOXk(,Vp.Ǉ] GW-&6z5`0.vRp,qO2­XQiܩæ
l4"KP(bs?W<S"$A&,38܂Jxus.4?pJ?u|JC?"3z~įs22Gcw^3[B*a|^4HE:[L[ތFFfSdW6.Ʒ al2e6gMaqI"v̼
F-	-Z-xlTӞk3i4ή#$fZ[yPx$z}ܭWQͲcmimE\:?])acTVV㉶l}zZmEu|[K\$j6'#EoA $D*3%LIq1d6C$<V2}{)oZI2!+<w+,c}9 ~3;yOu{Y5Y){.^ o-h3LP먾?Ib}3..c0Jl=+1O124oB>h#KIk2U1#ްGi<E4nFj+mnhU'gu\$LB_Y}x#;@v"0VKУ`h[T9PE
~/LehMݭw
<o0~sF5D/H^[pɝ*\ZˆA>nMq:VV'7~S*˶HT]Ёȸh]-YҔ<[. ݾZ>]S]M;;c@y%+ xu&`8d?pHq
S"',8P*l9@  +|\;iPXNq[T
[Z0C< 䮅^m.z H^PY;
k#x
ΧC7BEWGpa_-/zcJeEvoiz΋:^Wc|Օ1wK)aDUI
abh*_Ddi'爅8#k@0]O7+ لrXss7'6˃K")Ay1ςKiwLwIcsHtwXpZN%i?;!E	Zrn8$s/P^Ԏw)ĬzVn<}Huf(BiUlX$hckΥ2q#Kξ 3+nz#&7` jmqX ,ВkkDtxmSrh<jVe jf`	</,F;e<lep  yowU1G1W)ɤu?:K/rJs:h*sD%H`	58(tdf :wax`GCU^C܇ ^:ړb
D2'c?jm
Up$ R@<lDF/%so߮{}n"W*L\Ga+;鶴.Fci _Й*d`	~(C[zI
#1k(<JYdU=Ai3EX3&d#a)&n"bk'	Iw0Ѻm"eAP*1M_<
JO~Hk*`eA,MAQRP6IAa[d"c kL&%(HL{l~ĐGZ/QCעў
(!#p6q_X=(آ$nyPo4Kȩ9_)&!2H$m
JX!)'}dDڤ/P:oXY)jUrKMJgmj&?ï7U3	`?M4s[q
/C$ec]gHV55"6g%]PW{v@}Wpw'F
IT/:ٰf$="rZ"r 	a
3F+[Ɲ&Lr!\x[tuB+ihmT9 oIiE {,&tH&H=ĄWԞ˪fHk	D 46yE)D
`) :fn.?׬\T|}<s&pjhd
g48V0r'$U@Fe\ZB}H(=^eB3ܛur,]NHy03Uzy]B4l,:,976[4R6ǵo"],}JKp;@,p}1X F"ڏI
YGّ`(va?*b8HxTmF[j%F'?h)oDR/po=}|>vzKc:۲\-z "EhPtɱQEQb7 v~	uͼ!5H00z'8|m/Xw(rq޳ߦXDȗbW^c/d`# 5۴zWCR4YjR%8ʄ=*C>55IUJv@,|nw'	@U05RQ:j| T7dE00٫}a [hS{q͊fU'TdUfӬ{sprݠ8 T]12:g'VzM]Ъ3ڹܔW*r# b"4^`^6(
jl{
 ZVl˥Oh _:3^h^
JM  [yo߈oppT cZ^F%Z}A~!f~a|GO5*3rrF6v `?CmP>/|GcvַBZ&5K,x
V[!N
6"!z'0rKt _tNr>lW!QϯɜKcoĘgZ\W2=Q;5Ybpwui}AcJ%G73&d}鯔TI/'A+²Ġ|xNHؘ?/9Uem` t[ߗ׉C>%/<:vzdBRkZus5}\(=EZ8b!sGKAB>lsGi7Ӟ1A!>g
,|@iAkߨ
 wb+'CjTTSb.K@Q/9.Á
4i5.29yivpz׾}Z=7/L2㧙1|d֮gTյ%HaC~3oiv-PU#=Q
MݥR<$jo?gmO
{<}yQ~']`pV1{zZ;Ma ٝw &f󑪢x|S:o>OxG@n&˂{K7lzmJ(3lt|B'(
)&.Czq=xc櫎ZFc>e}}ZnH'okd'_'hRezx	S
'PݱoZÏaSwچ3e&:Brir_sk){[1s3bL>_7nYrI8S| 2qLG~ZI}k!'CϥPO6'ڗe~[!d%jy>nЀ{#zu{֣AK
\*^ Aݎ03cGK,^X8WMe[YgV5YmC:pWYyGMlWF搮.>;tw흂xd`T:JddNu:erQmybk0.9yGʭ΍;Z*=ؼ<=rx)!1%3-Ћ7<Y9>4-(ڇw\_5zDlczn
w6F?2e=/xo׹lb Ķh=~D{_uh?M/shyS׾a
=xtQQ+m֑v$ߥ!t/\Қɯ9BftH9<2G2@FA#&I5~߉e\a!WO.\`Aʯ!R>oq9,dN|z**wKA6(+nU]oŽ0l77\;!.&lktX_<Yѿ>=,3ԅؕc׺uߘ^t늿YGLv1sBf5}ٱ rcK?n|C cov9hM28 ?W!?@7pD8cw7Xn=F{w㍭^m 3
$uA[FݸzŦ=ֵس[NgXnUD{wsث_wXn+E{tK+J+1V aA8($[SL=PrciUbJmPn
=qF{wأ[dTWZzPaў=
л[<PMj5r@܍-y0{vk\?NyRuˇGK쑮W {jm.w7`nZ1{@JojͽAzu
-(ث?v:Cn`ݸb={vcu[9`|(=5-'zWV[݈
2@6?nYI/Z?zF8~2s>'MA{O{hIHM:h#>ULt4:+ U?nwBpv78{|/OFD^|GyZyET; ?wxlao z66./cw]T:tUlV O+]HQROryoԬHWHAxb沯0"bJ̛Cѥnu˴
Ke&ԭo<)CjȋYcHtN
ƌ=φcq
~:\yۣa5o:fXFչDRWpr \0" K!249u_^73	B+ LV.XZwC@SF[aB1,	VZfJ9~jRoʾ,G~LRW!({H)	Zs_[zRYڠu@E[cIw/q[MaInA'bh6=XsVdв⯌1OX#e샶8n7u(G܍MbߖD}@	+=NtNn\$<j^#4Gl(rZfYւI#e4<vQn]|6Y^*0{"u(c+
+lcE{>B'ٱmm9vCq>⣲aᑒW|b$	&^9\跗rh?e;Y6(eq7I_+R]0WH'pݖYR#+iTA24KWF	\DDjCej+YL.e+BAӀ0qjt[Åߤ]"B0]verE`c}g?y:p2xO)䡏H)Q)bărᆱORkyR!y5,ŉ$3y~2*oW)vLc!f-7F}nWbH`RsÅV	$/,%ٹ>h
-0Yt|jJブI\uF>X%x}>U{ЍgH
Q&K
:ݐXȼI聚j	@z,[8AZ3R;ӒhM8Z\L޽NS.ܴܘ^>NeUO@=]VE&pg@#kbtR}u`OHaVo4)nNpa- ZH𘱔@t1u) ]$uY>9WiKYPZvPtg0#r&MX\b
a{Q_.3q{ Ps?zGJEa
hO#qqt]ޡ
)f^ˆٺAPXحl$ B*9NC;$V=}սucY9$Ž)w߉jUӺg DDEj 5q{K-$lRfzsmE
L2t83mP9:jr)}K⒕ʒt(;U&.xsQfywT"1sQLc_J|l6%r
qz(r
EՁ1g)DF11l7Fz _UfZ[8g!LO_G9}XS5!򋥬SC
;݌? x_G#n?@/Oh`Kxzg,,Abz7FOH*S A%}N$[cL>AHxC	m*d,鞯MJ`1[ym:;o2Us*!(\Ô.\'Ri"ebz8@|2s-UXBb\oЦc/S@Of@!ٷ:Ƽuٶ¾v3ow
u=x]} ݸ~_`gѸu1Ӎޕa:
 Iܔ#!A12cfuuZ[rkL|P-L"H|4ûkh?OAK-wd"fݙy);lXùȹ@77u5Maf4"l"43SZhBCVe@tH	wE.>k`\oN&_Ȥ*ZR%ݸxL|ލ,zX
(1|
=C 礋 D/mqfFJuVo"<jT-XC4[܂Á \CU܎fVlU"/l5fCF?i(vC~rG)3PҺ򻢣.o@OF;4r+6t.  "/¢%pXhC5~<?Fà&|JZ,;Ǘ&^vc"F
[T::%-{oBj\<m9MpA(?51?sO#8)  H8<c)ڙA)iLjWgH[&*q茴8<^ XS&h<)";iD R#ayCk4;e*Rh[/ͭ]Z<ϔV͝P>nXS
2e!kjx؊-Z)ʳ{=ᶒ爚/&K+Jt`E@̆>/ϡWd
aڬ^3q"ޔVGqݪ8}_TqEP^/-58"rұH;Uj$
yM8Sg{yYS:LF5TApfC9)cȇrGtj;fM2>6ٮ%wa2~D~kb+hګ;w;<cKOlIu`Srb	 <.\
YP!O$!}̄Д2j	ʳzk^K{:uYHcV@iխb45JM1Ej
pH_hTs]RJنί#KSՖLI=?/P| *`jT,A
^%Ϸ[ytطRUpOGw$E忧vX qHjkC_bpEܴVӃ`1.+,o} 9MU;k_U/ KJn.]=Ü!j&yV0G&!d/pr\lwBw9ȹ&1
_W%+mu&_%=h'eOOL2.2 r]tAIIC~I)hV(*ܐO@S  c~ t"9ᰗ[.|?Q0C-CC^bViCB|Aӣ.ZSh}Fs4!`yD=OÞ}MsH-iM9|Xh-:|;=<Qo'fuģ^l[iӞ"qBh8jWbZx[KjI=%|v,kFjr*_ R-'	M/jTW>kl
)GnP:D2
W`2Fv<CDk(,/|mi1=K\:o@h;"PX#.}(뽲!A|ؖN'Gh AXyy;e&BvH߯h=< Ϊ>k!=zcUWg>:9fCrW,Yxtk=	ϱ@g'?SD|n<5>O	#ʫay!v 5
%E?Ń^kC`יF:	˷̢*yPM?W,r<w
3NdbP}-uFh蕎%*wHop?g6@+pMyy9(`d*(,zgwEuΓS9Ϸg)^-%.߂%ؖWW-
F-Sa퀞y܉ȟ;cGwwA>z5%<KYo<"#sN1F2.oBbaKvJPK +At=F)MN恗TX=a.nsqh<lͰ#0=׌|YA4#k8wZNcd9՟#v9{xrx#ڛvm!ȜgAQggj"?hOܿ
3/"X~u?=<5,g'{Wg"%'	N`kW50ah4G=j((uxӄJ>,8^9pψG]\E )mSj-j
35A<H^Aɫ=HאiH}K$ϑ|[#v<:O12i	dj,b00 2yʂ5" <xuttPSK.-{r6N.\/+>qs`o㾮Ww%^gֆ~;)Z<R`Ȑ
GkB_b"KK@N$W`Y8|qÐS%}-SSa׵r&bηZsqq񚆈o^w&iRU&/˦q*[( 4ΣDPQ *dgKcl);'20Rmj|# pkyW6˒SW*9NvRߎRߖx2389ˑ9#Sߎyݚ)-5ɺ h-Eŋo#Fηg889.˜oϘ흝odηc9D{;-ϣSQ߃Us*Lj_)'p$乎L=&3K2?WI:kuRMxI F 	ъ1VձIxކ#k'[	2x2~nC`^%kȓђD5g`Zk5Tj|DKm#\61g<$b]ˣ8T(aG* ?f\_=FىtfunWŸ8z[$icl\Zfɲ(gxߤt@ʞ՛c
Қ5*ɽn&d˽ظ"HڥEmgI<YnvWGi=~7Q8bh;NxD9F(4"_Ssߧ H{.DI\14
<;̊4CJn|U6SC 6^M[ڀSJX/AN9rwb=g
eKX#LFkb;h5[. Rj<,XH֡\Z:Q,ǋ:n5Uabp0ƁN_gё+-$956E051.j݊WPwSHwΣ2O1$D 1߿xSj >>kTƕE+	6."1p耽3|s:1&&qOj#._}4 (PcJ&zYwMԜ0rĽ
7X=S	dc/7<&'1nk\Ӂdtq[?GZn_~N$Buz^iɜf؊CFV6/@*vΪ^UzNvA}@Rs
k]Z@Lt_iT!ntxviTo$VQKXqemA.ۜ'\Q<>FNpU^ŝ>d24VP«s
ىwJ2l)o.yԷXCJ-9;q7`L1aO$d6|'s߇T?XrD.xex#47-6AƔƦ0tC~O`PrQR;E~ⒼVM?جU@Xf_#hS?V@zw?ZyyQ4
AM(?iP'ɋ%Lk,Ogt&|LbdSG9So#?NN?;$'$_}4-u:D&_t"e/HǴ\T6=w>@Cِ:wr|fSB9 HV~:LrCD
ė rß-6+]{90
UގpT$JP%W'nD)¸R0ĕ=`Yoj6mè6k2"#RYN\ )X625aR̒%ʕVP~PQ<).T]jJbTԁ~zCfu}ѭ_or/ζt*Vhx &_YmӚ?ָEJoM9ƗAׯȫ\ڼ=߽]X4>.'U5sqC~bRWL=qWE
՚UycPiLL9"֒;Ga6zyF3Wl
.<߬_
EKuSMT^+)V3^0+GKWl)N6끵?zA,͜zI7n|ld"OnVm(Q ,ϔ<vV1k@!s5iR(B:jmnTWSZPy{D
q_w$0~fu#l~,וłY~;jH-pS<B#N(ԉDKmi<OE)|3ELG{G(EZ<-\|g0sx`!-m!Cv{f?e!
Wped]swv{pTFÊ(^0~3+fd8J-K.Oy6wCA͖4åDu'mAЍV0/X.8$i(MXpIEgƧ`(ah%M|22aQVUr1RÊ٥A,Byvu1Q!͑,cCg|r2>rFip	[@QuL(-Onycn>8m&q(IE^g"#<a@50tq?_> ,"}։Q]o=aHy<H;d@1θ@6
cpTDkfZf	k1mmc:IoxUSh1Pf<#V%+
C
וB9{`7`]4W<}lMdk"`xBy2!ZB7yaA1"n#|uR^E@~:Antݕ	[dB S{G8b~^׫bk|)8v8w@ܖ㲼<zu/X|-R`L'>15S^RۼEC@ۼL	&q9IUaɖl$q$o:)c<:HZmG
nkw)Q_HE)p6S`U;GpV;<Lmo>R.a3U;n|UJ*V'#۹xu&5^Jp<ߓ:_|G}GJ=F|t!zm?[jKE$ZP
:oDQR~GQ9,cX$wCcۯәsdɇOxR+~oY>A%ңWOGңVJ}$i	m~Bbq)UOzLc>wi-UJ5MúŘdT/SKYzO+f&Aȳ_g3(42u~oqk3wXRy01.j>-ü::͓
7]ǾuخUe۸"cF_E{!UwaYHתfV=uc/~y	k;I]4M[WKPY,ר3K֪^V=..ƫ%1-F\rP0<6*%!B'jQ:D7NN!W+6E#Z;J:R<iBު,&([}4ތ6߯'nk#[yy;, Am'u<ZG׭W7!xoɖ֡Cop;ZW;
zFN!G CN:CKdldܫ<Q̫FbtE6,|grx3{ϐ<C׆|
>=wQڇ	hJ0Qc*yzK%OA,)&J!Mz{Io&=*Mz[Vj#v)ķkD4mQ:&:
<<8q@lbK`c_y݋ҹƉkY9x@Fڞ>>X'YLyٯ:hW-y6l
e*_B5|񻐇yr0:΄<I
M
C-s,hn'V2c3#ZGl[/!bnwmy6f"yknT/yVU/>bL6)d͒M4nC|/BlTӱM UJESAInUFt	/Ɩξ3,<eӧ`ϧ`o`ati!6ÄJ/JYQRp<O4;DZǛY#b/u)?Z6cEւ:&n?qH bGc_=_1a^~<fvcyb13'.s m^C.1
v IܫEq/qYHϽض`6[H5jMZs#D
)B|BJ;U$휯
YYBA=?ߓmo̴Z(ڑi Cĵ8:g(Zk$1eǯ'ըg8MK6d>T7rvԈf\(ى`
59B,kc#i m
9^yn	9x'Li"%|[eT^FqzVytQTdι2b
X6<=qVy{ဎGohmY0߅.}|mOju|к<+m~NQÉ5Y/R+: ҦMY6e5mfXu
9E̔z7YpسS
%ehmf<E r7J@bKryG!:jơp#Ոd1
 \̴Ц˙~Һu]eL$yREZ(2ң
fZi\L^fOk&)L>hmB"zjZ=ZO>ZOEQm|MkOTՁ>Z2ʹfz3E/Z'cv,;џy`f;Zy%Ժ@iDI;70hcKo+|y&a	H @8+ȩmN=lg*8^ZLLG*j#DR4S/Z$iܔz:k4hSXNMϦr~1љc{
95EZ~Š	EXG]K;9/C%rǴ=?w%.0KafNQ8eq"m"3=UV3PvADx[!૖UDmQVŬROxЌ-cI:#f~U򤫵_-<oڒo5v'|9*JnAc"%VO]HgHë Wk?E@4_Z	+Rk5WiP
Է_cPbuˑↂnEģWM1,HQms"PL%w+>=> z!ӏg.(XHq^mhDaіhxo^#*v6j|U-|϶T50?q((SXx~RH6$^tP/$24>'3a%{-˘7Vi֘1(dRRAyixX9S\(ϲdx9Q?9>QǦX6<T

y>˒t~]fCA>U>oؿ/1F<Цx%
	8C逃B $Ku#r3.A0t8f$rc# <&c]fD7O\˖hp$<HCph4c8oxo3l7G*_ka	" 6^ȵӍ/QCB&1q6g~9q~T,I9ߙ x[d'|v?h͙ȵr _/9og_o9<	6h"_?lm%֜ѱq\6tgN`۵N$vV5s!)
zF#8NrSO8~eKx+
L!Un
1tv?}jyt~5#?hL%.ϣĐcrv͍8yUrΘ<C;yBM% }q//OtI}[G~#m79_}oko~tWkٖ2By~oe^,KPuC'⣕W!ۼ07))=0+]g[`E~ѫ1|(yue<ϳKvkyoz͉zuy~yyȑߪFfUgDlK*(QZ	)AjIR֧;?c1r"
O|	`ȟw4{@+ar
E>ǯ>.%wRFD?*o)^UA`,OCDDZv<g9vI.9 
..e=@9}zHN4^6Y3eSn>QSwp,yk|!
+6 ?u%߄1O
cN1c8t݄+Ľ
(eM(\2mM{;Po00蛡N"^滈㣷9"_LgE<YE^7 B"Kc5ۍ:Rmu	~DF
Hb5FPB (D#^ƮW6v`Zm΀nc4L(	
÷ۜ;$o*l҈2ӯGx(yQ7#ZK
,C4[Q} g4kpN
,Ʋ^!EʣWFɣJA6u|/u,&$eAd
7l,[AÓ.''}5	"/c+nb7l77.#W|M"#jl80fq=۞jnDlmԬz՜m6dm3mP&6L|bExgx'[I\:dSo`nDUͦYCos1jX%z6F
?86ʯX~`:$GkUٷ)ū<X<ձ:|%i$|6a`-~͑IIL(ʯz8$6M84I8nxeXƆz
	 }J
.AeRKj=Ҁ,;.1ނO4ՙ
{#|iD&X jH
 ON"B^ݺ%`X
^z,+ToZ2`ZgSM1ʯHYzą F]ԥ(6h0L<	_o≶xX֫_DV~!݄*JB?Es{u3,2țymқA<}[k\5j5Ҍ-~TݔB5;QPzCOߩP:>pز"<mE^W;tGSuy3OG[xqm6RXh*ډ;Nv!{xSvn*v*^_V6mm*k
sUh1R鋍f=Hy֌+kyR@BC3ym
:bef\&2m␫Mp]ͪN\}L*_Ɠ8YR&8QJOK_LurRbu1_m'Ƶq0n<۸1J^]%Xݺ1rz#lBw¯VDeq9K7+R5)+2/v\֭yaٰZmɳa9tvhnkS>UT&t_)S[Pzvd؄͋ƯW=Yy/svFS[ ` BU<`Xp(@;VUP?KÐ|!8hʢB\ۼGXeBX4o\>r|Ң%s]vǷSm(@(ŉPTĸN<J׊C>b0s'̒^.Z&qسWFIR 2
O,^~哼:
~	Q6O՚@@!K}\
"+yzR+_|7A7ˏP
Z _Ќbmίi&W	8A0"zoLX<3V4Xv@bS.Y-ښՈ';ROtQ_nBNP!1tvNw熒.7>VyuM4Ɂ[dڢޞ!6BwjWjů[+;bq=i1'E,y$_;ϕCSM1>{IXRd|'ۋ6,mZh_WMӦ%Q]-m{*䞢T4oe{yJAƯ5#_p~Ǽ4}ӓZN9_"d?a|~yo,LnZ7t2jjͳל\Tȝ˫;B;*TXl'@@M<IV@#Jh˞F:
5cߓpAcKs Wqo؎Q`(I.mΣpނNLvC@<ae)eωD*uGn _WV91Ix#CF?Cm!OfX!#wAN*NR>KcNZĒVNY7tBY)@Mw6HoLN_(s 
7B2x7=Q{wW
FbwoY};UY -rU+
˷i
1iF_
)|A(7^9kj_iC1
zGsuֈb*'awୟ>L#s$F8Į
`L2
PRuy @癉.<K]b8_nsv	0(%$ht%z;K.yaW%Bܑ_ب5~DX!̆4>`z)<WyvÄ(vYLFbKtHT b J=q]	_V	*b]Pg
V˯	a^3U:zx	wQAdT鮑k܉;WO@Εʫ
avM(>X5skz(ys"1d=M(wWJSUSyv#4&k>U/yߎ՜2&9+IG1] oDLFD:W+S>m@ē纞*xs<GEs1Gqgw<'!+{:]~uy) *R(Zo˂b'M+m[1bkW%!	7WMOSD~MHhI>l܈FDGB?Vߓ'U|UosXϡBRxSR;G!pzsv"+=\Prډ1
rs
:V4bjIlЄd<jƷv8]~vyyV<PVmVY#
߉~Q]G
3M0p$&bǯE&Ub#`ɣA<TLoߓ]##(|cYoM(wﴖkqr7.qjM(Yz,#\^eߥd1*FX0(pvwىv _jI՜6m~Zj~NkX2K#/*)eb)MЯY^*Pw\gЁ^QkٯLgŖOUM:£mԬ"^ܷZddir؄Im\/w&x'qF#!r@m(3cN
1`ҹɒIBKA]	t'yedoS	I%^%<Rԍ'z7Xh2c59kQ&'*liT)<9OQ[z#/_ݥ߯?#3؈}؁޸[db(v[3$r(Ψܔ(Qۣn맰'<s-F˘fG}
Օf^#&{|Wo|t"8d^T=y'<Yoi$N;kA ðԊ4L6rTG;
N4:78tɺy"5eD`|I<Y9ExgsА
yu
럓BCEMp~ӤĞu/j;;nWV6g1o؊<i`ǡ>!v0`35qly8l\suxkmSO$6nRWC]b }F!vHd?1ęBd/9bg&_I':cщ*S\u9
kc{Vcb߆N!>UyN;Ou; qsKE(@_D-4J׸G=6Zujl,(ӑ߿<jƧi|:6;O!ahKsAW(H1?H7TeˊzjntF}[@9rI8?v)Fɱç:ȷ9l2͚|EƉ4HfFVbІnfS*<8Ab2Kbu=oxɭݞ͠sŃoB~9',j7nT;n (&	}66 w36w<CΜw5((12ySy:p^߿xc7x<
^Zz2^6gJjUs"7N>	d=Kq~,LH,U(ėks18b!;XRf~sRR/!΀8^s'Ah>b=*̦0ypc2Jڮ?w4@`\Q9FVk'COvxul_oZ*7_̯N{DGb]6:vωz!∑ճw+t~<|8E_'з } Q]} ^l:/AW~VCܙH]yuUx̫>$|,q0,x?_I]~2W7]d]z
TUyFXיJhS#*Bg0`$zM?EL QQMۥCB}xoHjCZimQ@L+Q`K_yojMfF"odHhP
&G<q]IՍ"g:ٟYĲ5a1!5Y:}nQ>֘c!<Y|OόDc+Nf;%6Nou\	 S3F'G˷ӫt[`u嵠6<ⵂn]M(w+?<x2soh[2uɧ̯g|Ưu
ޤ0x"
'*M~.>l}ǝHbuJqS(R lM9D53#PK`oZl#ꗯFBHy
1? ĭ90o'zCON_Hh艾'3~9GNbklxn_ϹZ`$9(˓$VIxo7yU/^4K(hkNc^KJ"େ#qd9x;'˅DV`(*+gֆJԵ^MCkY'{d,+.*yHB"@{~52ؒԞBJ]DO4;QVt2$לyG9elF:-1FѸoo+]k0\`m<:\ ]g8P]TTJ1	*vv.g1m}2b"U|]Nf)YR_6AhFQ'(=cEo٨llC{w!s6C.`\ǥlspɝ/eۜo8Jl^FxjxueѮb RltI|;FCIf$F9VCYQP3^Kl' "pH&ockGK[|⻕(N6.!9ڪW̎wiFb:$j˯ƾ^vXZB?5(YEh&W΢h+^pPiT=r*p
cHVAg ˵c
xwWyiF_xbuh*ncDg: ANԣ+z$vz/U$.4l5uYhUos/ϑnjFF;Bp!Cr@/ĞCr@*YmOk#.굀u{r#+4⏜@K~ Ȁ@Drt{v<9 K@N&_-v,ɾЀu{rzDY	H*
:@[gm!
2~c<&FSB0gDPX9-A"#|QϹ%ϔE$C7,IΝ?U碂="
FF`]Ǽ4"Z@Mq@
ᇉW_kMꃿEdx(v\}C	Nx'%IzO6C``$@F\f*RxsQ5hGp6L&
iLB0: 6	MQ ДړBG\!-Mk
}^ G5n:|{$ޕо${(z̓ٚ})ף%w++#0riC9yQow"%07O5/A|	ӨpS[.m!~×3$f≐vz$Xðm߼kAƯFoì`wy2~E	T3c/u9};'CHy>1`aM v
~0hp}7mLo&sՓ]ƷS1pò XdyL
$Qզf !g02/
%
yM!"7jf<R8<(bHn$ل1gn!=VpW9_+à!6/ܒ	k=
=ࣳXkl֬
w7P
H㘗`'&A7	FHƯ=%H.X7pdJE%$DΠ&iP@
׃K)zbK & xp<l1a7`+F^K^_7EC |I5ڔ'vfKj&4|p`DE䃟WH| M"kDQKhlT^^5Fc(.FNAV)J 4~E:|$7ZuOp3854]/Iڊ@i*@o18XtL-[rZӷ5+
Fki%tdɒ6ǂ.X.G7c5jh7X6|v[Px2~*RɡLƯTCu]нxM΀;>Zߋ)%nfhPbl+  ru~5ol_ZozF++/]bCڒ͛5vRbc1Cn}k-x9;];~|?W֫0r?KcU2Cnܒa+ P@D]ݨ0쀓ƆfMq͗yV3%1TތdfcD.[:ojb9a?9հ5ot81AMa?aFOg6?(mp*!m禐 'Kv
rp`e'e<&ϝ0ǎxWfڪHJp@qq_%]AnhV蘿o3^;aB~Ό	<>	CH<R-16'NwIj1ٴ"pnY7U0η?*j=K~r9ϳ)Xox`h<yl,F%-!vcKdɢE*	&Gqϋ'(cH²K;_ 
ɈWwՍ	]@-~'aj'?y !@tx~U~Eq1d^g8l+ƒ<b~gBNAbS£QD-&dq{liWlOx|NbZmj(Qwz`~JVA6\z|. )h8\.U|7		Ra;r݇ޢ==o|uZiɰ'cۨG~a$~EL0D.Gw%%7X/pG0a

]Ty F
]*r'1IeQ7KciI$xIL)1`3a`|ӍBh}ig"lE[*XXQ!5 j]+E)[k6lK`kQv{!e.rӱiE'f8Fk",Y~2~9XV)n%s%<7_tcVMoEf*$-۸%@mGӨ$=Asɝ-JXrY%	>E|:E7No}0d.XN5L	ؼEUMzx5탆£vi	&*@IWѬGU,^ԗ+v_~sMċlt&7؛ZBio89qT)@J'^(1(D֪}v؎mɗGgÝN%tJ[2cw(#Y&,1nGiAڼ,ڼIwxC6ˣ
|TJ#S3z5eseARuir1.gZ\kX$G@r/Q,<Ckc "6OZtT"J{z;.LY\G+n0 o m,6oM	H-fp/ĽE79ϖHzRC/61Q`1etzҭ5)egѲzx~vc׻zi0`D p[-yP.uhyD~6RK,c z/nqz[Q7@ҌȪj(pBFT_g3ι;y@pDUW1 
%u*R`dErތDG,Xj( H1FyҜG0umyTG9<#yR:r^$|q>YqCz<0tZ9e_M<iy`7X\ @e|Y3MEM"u|Wk,O䖼Ѫ LΘh>јnQ܌]bU9gE)ٔFW-OF\|'ayhq_hPcyBl3vAA$B8ր-*=km03-YYS$[^Q*#e1>X*?e"6A;?X^W	Xـp)FC@JqDqsU +N#5ͩ5~m"h=nxYŭIO8_|=oV\?AcĆS=^ӁO-s#*^U vHe'Ab"$%\0\:ee}m->,x- ,3/t`GC`!@MEzKuP-.{bb'9ȦȢX_nXl}qz^̉~qjn\7ou?'k6JYBǈP್^z[ܥe/ZY2yh?<zE/q$߰:Y{udث
MB|uT|:!&Il!YWowr I?֥
-^(; l2 ę;dhrc$c-Ha,-HŨhKVel$bXc0|2P7kxR+lVJcT
wxUd1WFN;,ډ
B$ֱ>
>>
_Vj9E=CWlF53K/.ʨ!7}.?;r<X%o?'wm3T-{rE jDFje7jN@Ȣ&A;;:ֈ红9!ϯFˈRyvsoNxŷӟos,XXr]ͫ%ۼ`|YiK0Rj<z "M,Hw=u(}[LϥԡUo,7wxq4ɍ6RzWcR1+\d~\wŦ)~d=e~#l+_cU;Nڬ<5ZQ?)ѝsVWG[b$C$ϝ-kJ.@`Y	Ɩ<dy=*֊>
#azm-?&(#Qcy:Zau3|[f)}#{Q$+ױ(m^g}/~oBL]'I9DEZROx(ZSH&;HZZWa987D,NJ$1/g3[QkYroBG2HG.%-O&6J4y'̫	16B7ar%<QoTMva i0vÁ*<)5
$ ꠹"_tHM˹l\de
QRVVwZYPNo?9l._Dh<ʀz0sբhLV,KLnAm,q@JWtn:0\
^7%	$xuHXG
^8QY>>MQ:
7f1ĘZs';˒wpj_sR'$L 1@D[`l,I $a1"';XbkњbO~X_ukl l z~.3-yȷwm>`_ u *@%DOǢ-	bGy1dM ߎ(-EҎMJdxPuR.h/mW:B d3-g=F\Γd#MQݺ'?n:?D Ǥ =WηՓNv%@\m4E֦~MMټK;>\// 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
                                                                                                                                                                                                  ;++'SQ @vٷ84:YRh1$U`_4

44he`BNl*"Ѣd`': D
T#;`	G<PBΜ7HДQfș#;i)V9A n@ s+3g$$Q,фhabEJ'zna
S/7H(°l$!H搿%J#m3$LX YE:;F#7bY=QJ裨
0G~M'@xo#耏y~V|\#)'Hi$ E"8Ejܟ	F-0:ekc8+{AxNY)Z+Z`8-q(IfPD
.ђ"Q@

3DM,	.,
{pś\."0mBHC	QUNC:Z!!!96a1@[1. (SȧzM	Q!	P &=AuAPLF@f<x\<{J8{P+<w؜i#qK!p*3u҄htxᒻhsD:kʨ	D!!;5834#꓀l'ǒ7T
N$7rx]G72
e.Y|(Μ~zĐzzB6Y6^ yl_lS<͙$ )@. P@;Ng hcF7+Nace  Uh-eca##;I
U
)oFngX	 " UF9t1i`/J (%Q[GPfHR#XYb{*=< 
[ѫI!>{z֜R=?Ϟg2<<:@ 1.ir&x:4sn&#k-5)LzPh
4ZOx(7q9
|gVQU䰛F>VMRKy+0X6`T#rxG (|n{^PpB*'TE<C<=;QmИ #[ia=˰'J%43q8+Z<F>tdhi^ӕe~
4Pu:uHfF80\xx'42e!M:w`p|H7qt7t()ώ)g߼8AM5,!zpoɭ!P,
/wKaC
 4)7H~YM
44u踮] n
wltf܏ss!zp,\Ay$Uۤ|izc!cᙗnM!=}-  
<96.*\.3Y
$kk^k. A7LlB҅msnjl5D+>BfհԞp%o&Ә0Fy"mpJy[R8*
)5ZFށCjCyL\Rl07/ܸHfQ3̖&-&7%?& tqq\/*d V	ŨB -S9OQYׄymYSe9iNU{"UF;h
F[Ev:}2&20FȄ	^|$$R!+)$G, klL$B&0eț
1X1&$iKKcscCFaM1:(zBbĘanh.!,-	QFW6^n/~5ԅţ.fv}ai+eIZ.Z␼OR$mBWԠ5ƕĕ	 תkT@@k!aӇjsEyefrƕتh}YŮFVQVLVVCV7TtTmUQUz2*	LGV1j]tgBTԁ&Gڤ,Hb)XqGD1\	Yлڈiч!^
T#T-MExLp4бV}>mIazc\N8pe	qZ@VsZFRhπ4add`&!u5cIpmi	%h?
d&x4o>^Rx&4@р
(dcDWd3y|S'huq':F]>d3U!~b/	#p!Mbڵ,EHBoX-j'=bBKU|x/)]m^6cMHw*ֱ.5"pC" pC:.go;ixa
9Mw|wŀMͣkz~AU}o[guZ}N3n_>pYͿYKoeֲ]k:}Mnf_뱚O[uU>ruMKQ|XߧpZ更۶IMw+@@m :{3Na Z_X+mǱ7~i1͸/ᓜ#FƉ{H0R6=v<Ӱ7zaNX&	s?L	Js
}x_Q|}/2\Ch?ya3Vnc11nc7ik1~6ͤ2]S)|	l!![Ɔڰ׺kܥ}Zk
_Un[UOUt[곣ut
gs%;cgp˴y~kmZ*MG44=tn!}f# ]}
y]1x@>o m:YۓcӻSjzs<iKy1u[Ͷ~]oͭng9jsJp:ۻ9|-
NOKh?e\u_]-}RSG_P*uPzjzSD;h\o{f6U'4[3kREo*Fnܾ^Z)7Vow[Vl9:8-eKoXޚZ`_[^`VI9Z
m_\Tز8 ֑z\ua].k!axmP-Ҭ3t(
T
~cq~VۃGhqP[^[MIf2јHL&ux"-nMԉDR(Q&@3<^Kc;aJ$'>w}!?jutafwSh:;>Jh\FJқM]0%f/Gd58AӪ4wi==^qw
MsS,%
j6p>o.Q3.U>HТB=;:NS6]:*ݼjPGB9WϜ3+0RGйy͉u纪ss=L<w1VNv~tLpYrz$99:{ۮ0hmԢYAq󂂒MaKkKe[K7Ce,%NB!q8,i"XK>e@ )
u4p`8
\q3ʌ7Ʒ$<IX91V`gSNޖ	A1#Jt㆚s['sxLe2̕y˕F#8cn Q%aCYy'R1!ob+ 8yը퀶i 6WQvS!=Җba~
Qq1pk]kUk7!<4| aƓ{
E;Q/݁ űxTM#[A"
T3TQ[M+\jWꛥV`IZ!͖kk}nL:Wpy¤"w6
De:ٞ/L55iBi?QgV|Y%DxAeJ˜жаОp6漉eUG
q	Lx+%e=]3g>J~rrF,@QvFDy'$(hvQf̜^  Cȉ"124Np}-ൠ&m!LQ--8s&?	"WTD*$x(WVwTۍee;r !mϵee21eFxs.xXdԏ)fK@3~&(j}ʴ@HRaSJĘM F}@)IK6SJ3bY*ln#3>ƂD]C &ځ#GFLҼ$T]$IVʚʳm
ٮTVA7+^?n\(<=JAj(4lb4_rA9C/6@clScX!sZҞt2-T6:ܸ\-&frO
 rn.1,1^1+愓`qlLb<	|u<tmdUY6%5	3	mibBbv':<*L\T1'5PX[6_8%kH/874*4kO2W+>'\;r}-~=xQMtt$I㐲/@x	C%"ң!@_s]E]]?2axA&8~Y9!'WNקW3gtB.rx>!JpKKA;N6+M2͉ "faا5Eja(Ɖ{I!T O0P}+(R}KKS#Bw><g	Y-NG7Dt
>>pjX[j
|2TOxq.a$Dn
8@гS9#r ҩ.I|P*iXiE48b"@	9j8xUW\~\|<9j$<78T8
@SN32_t9@
mQe6/30&H~2~m,cr1|AlQXĢf঑'m ڊPb~(%I_nR%V@oc$Vf\BO	l.o[v=lnm cCǔGvC2
n.(p[N d`AD6̐\#G(~ZS=[[k{8!\8O&I@~ɯ7C~鯣:߫f|
M>ݴKM3L3c¤LEn>60A39g-FOKI\UxͰ<*̈́e6H$-	Q
uvB#Y8d1X1,_]%s}.;~nLKv2+%_ݸZXTJS/GQg_%_7:JNO!S;IF\δcδ  ܀DC"+T	^C!ZC&/Hˡk(@UK퀟*d]rV)SLJNR|y"ZΏ~AP;[o0c|]@UNwI1pH"xc}Asr1*а%
˭[2H[)ÍE&ym5Ʉmr]ñLMl֥,A%ZpzrdVe:)A@
c2Qa2$՛FIBM]ٸ'^@߷;^f<$hl֡ʲ^%l*RtHQ;?XRXk.X˷;$v n וUG I4_^4$I\gV-
Ɨb=H°*,fgyr\5[],hba^Q2AKKvJVK
=+=]2)1ѥIEHAE"DC1=?eoM=rM6H38G+jBq00]Ǡm$9'X`a,FH8GRleoQM	7̋;ƽ ۂZ<iod}_,vHJo@U!4e'=0JD~z@["48K@;^i'!܆dg 7d=QQ׸[Z|D&8G(<a~a-wEwEXɟ	q5loDxʀ&uէxĺ^yA<6OQ}Av6g+NdХP礘ʡRz3Z nt
zW ySVY.*S7g(hHI&d5zL:mQGKD<9ejȞ*ܢ[ Bk')N@
]x:pk6]Y>:1æ|w&#q?|uqi+M"U$'HZ@GnQ."_,臸ō,,lˉa8$8QhH53C* -4d1zgy`<o.:fPfc7Y6Y/: ⾊/\R;mɣzsIj@4cS!0>F4Ǡu$8:<lU~  aσTG',EC|&.kkӭGqX96l?W2S
HgA-kFu,c-}?_=ߋw=.ĿcudZ֩UzU0U)5SPONuQ/UMMW0}`Գdc	A45 JS#hP9bp	TT4}Ng;$Ad/0qLS!ưFn c=%n+#j0sklowjqMB`P!^*
W#eRf	B˥
~E8ٛwK?z4ZLm2T= 0y;Ht
 {*kg5f!O` d5i6ٿ'b4Js#f7{뭒K%'o9qlNeYjpeC`_3v=2+)
"L 0$GnsP9\2?;ɒ@r+*$Ԇv7IDņyZϑGXX']ȤdK"s
	CA}dG`)${CC<z"<yt8w&H["36l\6ė[>ZT]kYP%^n.
w5/jT%eJ¿O;iT>Njow3p
>rc52ݲ5ke]<4iгo~{oKfV>?ks3mY'gc8:,_<zkؽoIZOs+_}S*mSzr5GΓY
C`|}68c{oeiҗ.УGD[O umwU#Hzlcq[-)[N.Fs;r~]fee: -ڍk31e[,ɇ{0ۖvӼv;kX1{T粞niK!TK>ػݯX~j+3q?S)ZF=ο3J$gzGZy&hqND?Q[ҳC}g=V\<9vlz7:yZ-Gӹ34F 
Gن \p<FGBhOz73 ~^n8,=1ӠX/nFtT,ӵcQ \څ֥[,c'+HH=H~j5Igc!R:gG|'G;+".JYNfvUjTU'MsS(-!;*SR,=cemBroGdb7dFr\6j,JEC10Q#Mڽ	]
bi<n{ƬV}I\gd10S0J^`[AKr%?HG/E?R;%KeZJJ$
ҫlMqk$KGXBc%RP'CT
`qCy|sgɳrٮYD}|ݳUt;R.}?Z'(|Oe ৹D^[F˕n
"oYG2X㞖ZZ@Pمa'F$T=&47ɋ-SGB[fAZ W=z`P%Ǩb]z	EX~@H#J$d޾FaÁ\qkդjĲC2Xy@?!b{*{z@yUƫ[ ;aC[b_|؟+կRN'HEUƨ ?S_KQ}ꗒRzQp~GQv?JG?:Q~TUxNzuɯ_~=F_~(P`>ЇP>Ԁ|OHSwr;N4;i'秦?5SßjSS9|S{~MZ~7MsNf :6V,y>(3dG@Ky`z;X+/ۄmwı.֊l!IǾ:ZU)z8=DDJWG˂Rjt.?X97/i
lL;k;u#utD\Pk@F
Hb v ճ{tı.ܲmٮm`=%uއ\U1zjZ	4(J g0c:W;[h7$t%utcA^X9D\4V"yPʬ L9RMb=^K=-']9b^X}n]XTy:Ci,+ڋ~x|.%.d߀D&~6";so-bUf$Db b+>%E
{At9]ܪn62a
}rW޺VE˨0J\)Ơ'y/~mj%Q/THm@^8Q3h\>Z4B%&8f eyr7b{Ia$=)(/wțwq>o{c&GE]y+TzHߊYP\#}xۥ ;H%{da]9Cx#mX&j8wZîr ՘/@UcoGP/l#wUѽwr838--+^
7PؤۢgZIb~݁?eqZ{#-bɥ42> $FxV6~VUfIQXx"̧wk<$׼aFB~}t#\ǬتScRh-ͅ~@<dBHxޗ)g ୃvĝV%-]Pv6h\XT1pe{zCmN%J'm0zmSOy彶gdT$GsCrܿ79,	$qm]͆q !戥گG
,I/ڛu%}.vV,Mzav|W$jHbY*]-J(
TxR[lY2L%R?[uTcJa" ͓l>,4Bv:![nb{
f1Nyt0UGE`#fZ"0l5\XiTt A#Ra*D]?P&o^dX_e7l)]'Rrq5^Iv~CL1CΕ-p x_%ޙpJ=2a&y`1b81|\6"K,L-iZ,Y,T$QJݛLkTAz5PK\]^ɾDt$UTRF$hDBc;B6X?UԌ3$ɋ.KY	aft#le1A+و`8QRfOȑ0a"}.výf9>uf5{++zC߁E)֐)##$x%sk(>?
Kۇ>F^	\OmH-t,8ʤ,AOILB}f2cXL'8\	(8_:qXAC=2<!yWS `q$,<3xHx<^w̷}w)=45x5i CMHwݐmIۘ6l\I.n05-GZ9mD4031g;41)0Q=Ee!"{@V l~IyzRU++i'
@֓,9Y#vnƮzXXfVPPUuU`JƔujJj8*-'*ES)M߹Al @vh   aI x9 `(E  Hd^ULEQ/#neJ0"W?LU,)
Rє@2-M s7pk@FEa'$.Y>ra{T<E-T_AdM885){ɍDLW\MCS_ԽvӅޢf)OpHQV4mQaSRpwԹ&PcMZi)p?GX n]p`$A:Ju5-]5\w`-Jc#/diq)X a_

ݔ
YĞ?C1sz!7jp.ws(s4\rhNh̹М\ɹk99+97w5{*r}E;
9Gs%r7r:GJ.tJ]J]ch߾7;DZ\pz4n--R$܁5n3/}Ai]})zjw`E Ru(. p.3vڎ*MnL>	0KqZXP	Q`?N\vi>n1R<KQksz-K+(̫X	q+i &'-ޖv`E
k$:[S4ao-г˒ 1b)oOZHgٱXE֦h0[(Z5tkg*Oav!geW*
w9$g`BBQ%S%\S؀EYi;筼ԇs1>P/1ZZFb},{k4^a|9Ӳ#}e‿SR@ ȵ˗WRn7:NUd<q4seVtI"y"wf=ݭR0F ]%|LbT-M`%+;T7cmP|R>R
m2䪙ym	\PHP	Њӝ._m7h_mhD@TUE-A
s؄T}zXC3ǎe.&0;π>
gG7z !J`&
a ?tb!uhM
hdp:!uib@gE8`ހ]q(*a'Ho &x2Y!649ւ$ҀE4B~ڢNQD(]Jjb3˔ɕ+bUf@;¨]t<,:]cs/}XDboZ>O tg 6"P?𙅫̴"c&e\E[1kz˵ntn)7b.ƭ\Ϲ͡Fk: x}t-p	Voqg2ZRntl*g O76hSUV\ɹ5iOTV\Ϲ5!m^PMu
X@&v"CU_6I4tΕ]U}ߛE1.VϹ%L : fщ))' Zp={km kp@df]6Sk"x<99>{rx<sD1-&BwF[Kֺ8sU\g"\u^qlHG(hE9dS8Qj8{s'	[ϱC4~Y5:[J--9xh?7K;ab蠗 a جfЯ[U<0I-@D(/v;|xnyȹycf]M˅VY5'xFHvmYy&7^ ի
3`hj^![ !739ٰ.Oh<cfed(Nb9k?:@,𭦐>c/x`??T,qR} Dg
hx `C6P $}m!`Bth
ߓm#-U+	lWjqT-_ta$K.-tК龮d8 2 D(L	Qq.w9s4Wrr:GJ.,D͖s!{g
ȣq
8pfW5T&n@܊vO>iԝN3oKp-@0jmxsEI~3[w'f]
JϏ7:´
𤊰5#gYflߕNW i1s`&1S-+|e<~	V=("\a۴ [Y{a
Y-
y׶<QkT0&)|;.ausT3}RL?wh5uR]ۂS3#
h\LJ)&2vcD󻓛cF`ɘZd0զv5\gizνʵz'xl-S㔠|V8ZDf*tV{#ǳe\;snM[D/<~O-
oD E<_
h7[F~ZYPdF4* j~M>d,Sy?USȆgQʩhK)&6u(L/
Di=~3R ,9ƙHd#<U)k
;VWA= \֟iQ&ql	|-K) ׬2eHj_`gyT<"3I*ermU~bW2TwpоcF$%m<Q[z[8>?]-ҋK
ceQndb>vK;lFcYQÊ}|h]>v[;WFqc=B{s[:cbs*
ńc"}Fb:"A`3C,t0#A$W8WL{'F?H81Z8WkuN{N7NJُΡ㸥=z֊Y;3NSEE> 	DAl.Ľ&f(Dgv\ArpYF-Zp]Ө!jRZr_0$FR.>tgAB8-#oߜ:JXl=+ܱ/Ov5tV
(xR2b<i|mU6$5-lHK.8 zt!֒-ۄp+lR ڄ4HgEjCn%)_{P@='m :`U\ckإ$XF>,Z.
jܛهM]S&y!rdC/2h)W_(]y(zy{)ϐPA]>M:H3>$W]:9~{9;^-7 :Y4c/{pv3F[ΌnpIY3׸#MR]8}u
EKIYێ8]EXO-o(o] Pg˹;9D{ͤ3MF@c
>5:*7`l1gs]W}|Z_g/o*q0K[á>geoBA:Ͼ&6u-X		Owޞ%]~t{L\E/`s~@QV.YdUR[dJA!!9ԌZ'-\V[slWO^lYQ%We]Yvv1hJe\؄>
̒V[.Qg+,u[wD^*l<&"{Qk}k2~9O
JX٘p_=E[T_Z?
y!fCsȶ~b]`9dTw{n%KIc7kNQMݨP'-(&B&M{#?v*_9`nf} O*v*x!'$)Lǈ<Ņ3]Ya7|~+,:.Ԓ0,hx`\aLf0_bYc3V!&HGAy
_>mu+vC娼t2f7tL#ʻ}\kOXnr;>q!q|Ӊ0;E~h974&2lg酷Xxc'<Ja;FkJ9wŻqMAJW*T;-֩qu31LYpDhB`4TDXsc46b;WzDozdxGҸ<r_qq1Eϖo<ڙxvNPOVy@u-h`t}'^]:LwShi{bdL|Up:&<ι
͐m 
+kz$95R<?V*ǍEwMӜbk
ٿ&yk~>n11gh
vBg>=I3ox=3 bTv y[[^g<R	먓'2(NR}RD^YǝGuA[s&dv	% 1/l|w-	q	
R~PfA]AE}h47UUQc+?y^\Ƹ+^aԚӘ}V=gLa@0&^vhSLZj釣m'3&B5l'Ϥj
݊RB<m΂@(ӶF,ć	cZp|VNН7˾kFWX<Xs:c{2uW0âsѽXS؎rqQK7|01qh㊽ݻ"A	Gh]RBc(u:1:יuil'QjrUݙ
w{0D[4D<Uad5Bv{woR"T$=JLes+{>"
MwSzv/ZN$QtߓdmwF/Ԗ";}Rz$ǆO{Π]TbCΉF%sm4k?1#;:5wsw	fr9>'_YNv5B/	&OƸpb5ί.sb4Pdiю4Xg;Wsb4c](YG\٘1^ڈ&* 3£P{bD!fF56 qG;U$!@f,#kXB2%6UZWށXkDeFqWo܁CW-cH&BhOloňhjx/(绸pH2hBECKkqy	kIލFEeT<l=;;WQk#	4.[F|V[l{ >Iy̎=fEcq&mRG"&{X:w=$o
{VMަ鴕qNR8#	!}\^40?ja\7 5cq>.R9+Mv9d%.RpS]v@O -vݬҥ!a?pr?=XZL	dՑ"w1ZS|Aqa(f;RԎT(v-v{13,}p6&pr8cB^[qId>ּxxbv
ٹ,.Mny^{JF䗉ḬeA7̑y!%fc!T PKwk*;0566P}6zY&ZJR!֓RyF}n)fʅa}]i7&'hgcٳRld\⑿gns6wIơɡp3gmh8Α
MZR^Io27׹4c1Z֡oSBhtpbtE̳lmNfmo};9B,mdbՃYve˖ʟ%[zC9aXgts&\,r_TL:oO2;NTIqB|7^Mmgr=$%ShlU~!FqmiG¼RhgsLr]Eʥ@{j6]de!ukά5'`Pb	.]mn;1Q,pu~9VӍc~`9G}1[YB?eWoy=F~"7\Ɲ1"N͑P9'̤BE爳	
ZOD˷߰KyRY͘!{3p唎r#Xu>b/4"
H텑,vrޫBBh9j;2I`/3HU
D?	,;g3귻NU]%dF\K#dHA(G&GF &(cr2X-'r9wç2&ڢuQQf {ʝRUFiY{G><6sZ9kmݼ82&n.9Ӭf
\Xv"fSU-K1>S
{5!N fvg	wo9xʄlsp_[[,;]J~&[poNzA%_b9sw lv(b\9nEdn$)s2U9*WSr>ǈ^hYeهSrnWVpض_gefdt7tWnt߭!lij@_dGc?rX{h;_n9#~`7=$/_hL0<`8y{<![NBBNSN g\tT\YB̲n`[Ja;o5N[OK̅{[&;69~UroeMҼ3t:UC ZG/5O#[ON{R[`l-l
es3
06g6v#ס1`܈bYa,Fw/&
#q?IL>ȂrnA
<F0Z(-ߤ&6v\.Bqya
1yf<Nbf#uhq,݃>Q)ezm-/l3ϙgNhchaGƹǃ'P!E.Bo?e4"[ly3kݜqLu#>7k,O]CPӁѓCSi.B]^r'r`	 |؆3q`@xV}/
}Im`x7wwwbpRlO.xP$<c! vm=_~W"ȷYvݷUa\n2RfqA)0́:[uz"3?7S=e\#~KqU7ҭC!-y܏ުǖ˼Ş9x^Gmo$'D6Ew+c;Hۨq]SRNa7i0d
[kЭ)7CSڦt8+be|s)GD|SQǴ7a8ZO~`!軴k#L7,*'6Z0Z;K)fnq!^oino-7{3+7n˿j:;:n*BC)Wv嵊5g#ۜ<Y_h{7Q~kCQN@pG2D5:
~44oM4
'A+e#P2tO*K7$I*RV'Qh?A7 ^rZ
pcr
.#s"#zsƜ˩ 8񸅩9X硸Ć`M %ﱹSv_,dmqmR$lkl_dx&?rx;~ެ+C/"
G*Ί; u7O6f{#F>X=*%qCD9pT&`XC0


:S_փ֖װ,.*%D
**<}8LFK#!GoP"CMnMKA.|]=Hu7bBW5,n
aAf@YGLT{^?Bgmhe<z=c]'SC
3eJD@s84"!J@:8rcc."`w%P#A, ]5ҌZK&m?:8Ѽ̗ec@ĉ~,?^+*\o͠VU̪SբʙٙRe4G<oN/FBK[=wDqIb<pw  wzE{rzp=]jy]F'6gqpo~-oi[I;)XE#!<V58ud$^:׳wj @Bj^h$C	7T0f7j=^
bgi9F6?wAeid)%;'
_V}+ }q.yS9uq
S ^=R3`I'Kˈ/
Q􉎆+DTtizDxlvjtih49&n-=acQ̂l!c!^eWn#SPY=raoSM쿔Sդ&Ϭ.{2N#F5Hf}yw u8~WvXh:ENP}Z

7ѱ[Cx×t	zGFWFE|CTz!EtggfibSH
GAB9>1:
I?I>:On}؜ԖІr;Ŝ_m]r\ImUD
Qӭ vRzsig	UIu$##SB2,Nzw qؾߕMerxnvmtlvp|󕭮A 	7 V=gZVOU?USÝ h)i'H3)// 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
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          l~rOZ{oPI__2~ܖsp3͹+؅Ape{zk)26V\M\p6fD	>ڟB!=fF*jlGmg1(:Zy;
:
zs`,3|+ߦh)A{9a\GAJaݱgu?.haai#RakzÊ=OGȢq!0iJmV?i*(D@ls,'"nNu=2Nj#NIu&<ja6▷Z^^{n=Ecxn:҈G5#f	D
νC_wc
^rGQN,xA:	jUZjٺb^pΤ=~"df|PܭQ9/.t1*X}?a?c}χ_mYa]u9GK^^KQXvVd <r;sJCIۊg+kLhپz<D
|oU.7bVNJm0$ww"Ȍb|| J-LKq3N'	v<_Zvr' W
cp[HgGղF0nfgҼ_b񓊗3cfŸt1lc.pѻŞ֕*ۣx]0QU~#N`zjlt)!ٸ9:;%0uݥ=\?Z\}Qt6b7ȗF*8tpFzI#ϭAGl$o!H_0my8"Tw%M8"cioRdv'ltFJT8"Q}
]ܯ[ 0%KHZ Y~՜S Y |?uwOIƆ\EV$?0S L_է(~6HZl2Kאpm(9_,Sӷ	0Zү!'֯$V(W`FƎvJ-1Ĩve[Nc"QWlBD<^\u( mpv뿬ё% #SpWp_O0KOEUEe|nmd*&jp]"ʓz=J> ]Խ{h3H	[>XF"s9ƕFEOKP.p, 1U!}(OFOԜIi!
InaF}:!=jC,a|L:P(ci877r[n2qt{/F9琩ϳ£UuM뜫s}s8RN!ِ$9O>J7*X)CRAbU0N|zlR6~joTL /{C/N2
}D;n=hvD?C}`۸.huЗ:U0ۭv3ɤ
MXx-)YswG7͞io&hD(a@FK%gh{o 8FPqJ]ZߤHJ8B[&@"WƄn o@X[sj.ɣ;Ժ(jv|wҨGPjmhN	6@;fy1^fSB:>L?crY$y7,	I<V(CRC;V%ٹ^^+(p̖#3JU>W3wv|UN:.-ǛZ2?s?Pq	m#ø`;LS:o%^DBh@ d\nPBmR9-XSŊ15"k'~/#烕#Ѯ­f]a"A[|O$޼cLLE`Dϒ4>9춻9Y
yw x|r&䴘]OOPƳl6.ttO+;Â|pܱ$O
HƸ>HN4&{ǘ.kN<2vL0[Y!PA;s|̟B'R,
)R^'K+rԞߣDl-&rX|gN*&H4ooPB]͂^18_Oo$ג,ěHHP$k> 2cxs$%Nt2ʑBT1t4AZc	l*G]t	zF\Q{yEtMAt;o+Drj$6]+ǈw_ 1u-hImٺuQ夲 KDDV-EPpqu;Ը?<rdߑ!U
kF8dC,	Іx1bZG:w"P9!pj@op>7.cK4E.1*ڞz	@2:ZzD9}1	ś;ju8s1s`I9:4,u_>I|
ee6c"%Gtz%(YVSI<Ź$dI=:'.nYT^Gjȼ։ud2QmzjVBOTx)8l<]=CX`m;-G*YwR,]ҺFeڕ}Σ /DGu`yBGoJ:v{_B|t?9 'G ͮ	kNfӞ5g;:N<di+du,&[aRcZ@c_=&%¬e
SAyg 2'+I`(CyOvy g<fMłzFXkGCOtb=۔O JkQ]qy^
 ",9 ܠn:bO_.u{ʮPwNi;('$>/@zO<UbYԛ ˿.`w17}xܶ>B(/?'"3ҒMMG)̫ü}Mg3+ak~Tn}wEOG-G)ٯ{Do<;oN42,D˸ta<ݟ3LF|!hr=sc4H7p6Nz*s
\i)<3Nз勌?tȟӨw;3\6I ?P<sjp\53G}4|Ya=9psmԧH}sǡ}#z;X~~s:vqk3AE9Z1j1qK(̗i3@@oBdsgi:nMs$Sы"7^ݬN+Yh9Vnd%7+=J#+EX$=i@R@ITĎfeHIFsztJwjf瀄J<$#tw:磥Uջ+7a_^RU!|nWl==3՛ݰPMEczv>Jt{SG+zv'z
.=k:n:jK6{ܠjC78}wr >}}=GJCzvݤnu
У=lfL^eTvqngitnw&veFnd~DzMz;t4"C۠6v+/^Q?ͮӘ]#^vw($H#U2EwjY9oeՈy6%Fl7p՛f
ՑE$w_,4];6N
j2k"ͳi}17j|u7{n3Zɽ!u@Π|r+Foܹ%U5 ?>EZXy?#-&h@ׄws/!z>=7,iݡ
2qvA<H20P66g]Q#)4!&KŁJ~4 H䠭dQ/0{2JT.:8R_1
K\<-w5={G!\AW4AEzls֥]4V
^g6|
ϴ~W=V<I^;F{v:IU/i0)p+~}<j?(uOLʈ_Y&οAt!^-Q-FыV^!q2	DQ
va?(>J89/Q?u0A
|^A-_l6]»3f Gu E
Txq 8BFZk_o+NZ+#TTM=~c>5c.N倸^LFpJWYɣ@6vP9{z􊔜TP<{_TdTяZܼIyVܸߊ7lϏR1n֏Na/|O g% !}O,MtqI'ҽߪ
**?D
`)%&%eQL
^[jsϯ9%d5$HMݴy;#I/b l/fKH
ͅ,[tފKOKФ2,mM5A6-lه*I5zbGjtvw̒
p{8eVBêK ш,uo"_vcC
؋&HLmnćt.rl2t/Iǥ{ǭ3hcF`rn5%jak2b/)KdT,%p*]ʇ8'GYCmpP(s:Ӧ$x4Φ&zoumiskR X0[^&a-
$+QbDa%!2
w[埤xʦvT9vyx[^BNԁ	9}NFX8;Z5	Zۚgp&z*S#M0r?RMS?a]٨O O棎Ɨ	MLt(xIzC̔Zd}҂6hI&^\[#${fcO6Pr*8 vp>zڝJlANcȡlI%Qdf`Q0F{ii
jVc( ~AÍRȊ!'KXi)5+uz/o[/f_G=|va6e9BB5I5\2);ZcKf;/ꟿvg
&~<2今claPsFf-r 4FrX.5>u:N>C7ȅ7xJi^¬9&
 hDuQ>gB%Z	!zc`X#&/vH?n`Gu_KqiBC$5)>`l"C
j)·6T*ͶC<}ϗ]y#w3ʅOgO`:yeÊp$!a[_A
]81tKTz?۶MCYy
 c_L{p"7#$;9qьxp`7#!]܄XL8e[1,hen_I(0g1?7F4p^Ǜ[&:=YTmZ96萿7bN|Hijb\\"5~aMv+huGCж2Av+(ul]9
ZFnn ΕZ,+1 ֖bR l##8fpɂʠ@# Ȧ#٬3ա|EIb'*xϊZ-p!Ӗ*٘>7غ|<bzMc]T
UHݛ,Jh*Zć-KltUU^Y(琬4VڡWYjL6Ή8y	jJWo t{gJȉ[t>p
x
O;`NǛ؛ckЃ. 58fYԷ(TM޹h7V9$BW˦HntnEĤEYFpZ }Ш-ǵMjFA

ňY.w$@%VibSPf"z^75IK]\JRMi: K`b-FU;4LW,P>++G"/Nъ
%~) +MZ-ؼ.\a!*_H{#fĂz6.?78wը%%˰Rfƙj ,8b~B2r\^%r8.$bd#E#KIg@F]U+2Z>Ȱbk-ە_
YTqnnV%>HeqCfp;c@c%nfߒuShZ2TQ !#u"2ju%59wɁ 9H\ڤL/ң~ܽSu
_R>ugDG$v>l~BewiE.w1'Q?ׇI=na@[>Y\+g\햁gqfʕjkD%Zbb7&veh7	 y0&t2R@Gls7LIm(

~^!-oMZ_cP-PQ0/xxH3bԒ]7f2ݘ'>dRrW3UG5|a/
+&!GߏiS֜^b9cR0.}k2	^Negz\Or~/.0 F~Bo.(&lw$y/{3!CJ9܌b"B3t)8 i<zDqߩ8fZM ]@2HBô2u96QLV2x 	lB Io,w'!n][~T;kVC,;(^Sڊ@0s(fDU=PVWB,ӼBէ5aSiꡠ$[B
0=O.>NÖ)HNhK OMsd=v@Sgs.rhBC]|6FHZA;x#sҭ_Fp
#'S֔W1qޛ
{͵1_
%8ED~_\WS`7&ʨx2EWj7t< a!Li(=J/Cf"]i;jc^R
cDԆz^Bȥ=++j-z85sՐ`XRYwNQ6ʤ%P(O jڜFéI&cB-MIHWҫKN't!%@)xtۏ*ìFcŀvDښ<Zʓd1-ǵh9Wѣ"b x@KȊQv{7-l_2l??ҙ#*rr\OVǽ@-
k[?~#"ub:^a\
LŌk pײ`>oIܕ^үMsu
!ܕ '[0{^zS)!="LSŖ-m @xk?qZ`5	,\gq7)D~Ê;7aۡkY$NBaaiHmߓxp(ϑ`&2*Ƶ. dHNlÕ2Q-<aZlih}C[
vܒ]@9@0IojۢoM洞q2Gy
K47ztI\([.wnHe}R~*+nXg_fD}^ؾ;ՌY?P؀8>蛙ar-Io\' vI,vzp['EQJ[[$¬Y\
)w6f/ ^2-/?!=жHL؎3Oy?iHg-w51`qԖEE5'IV*%W`(k'Ir57<=
}7^Df@7;>3"Eר
w"W˚U|Rbu_o)BBds()rMj>Ӟ{!(5olUo1X*<65c?lǠ\k}'R%R)Xi$Kɉs1fGjPC>fo>o@PV `k&Y0.]!MLn7mL(л5qbbQᚆ';+bc,4rAnmbk [cn p6DAkìMBjZQXd
0oc19|ѣa,9j/I[UAAbmlhr
gH
Ə ޔ%7Or9FDC6\ kk~0g[y#6p-t;a2YSRe-6$8|ض&V1O=|u7h2>S4)8nRhTݡW]]%UP=Zu\KUJ߫VP]ף4՚\1z'7K:VSPltPC}'Kr6BZxF"p%i3yMZðTo}m
m-i13La	t܀³m3oZZB
Jv5|u}okGr\J}
WA*444Lƒ)NP74}j% NCbx׫v,G%X|&-KmY	6ڵKE5-SoigZ^CSSkd3LV{3dج.Wnlj4~[d]'6<mMnc3{=aV3<i734xq
+_PdaGRy%Aog2a~$Ƶo|MϔJ?Ji tPj&P7`jG{	O	&ǇpOu|+k 3g<as.P	>\?d3p?CIg}8o~PĘgPɼy|9I&MyIGuI:ɟ[#wC1N}J}
`Jh\iqs,l#o7{m~c#)O?}4Yޣ>ch> >`A|`n<^͓t`#5)$n<3+|+}rt;fx\&{F>4>ßcss
O{z>yd~2?cӴ|{g>/"z6Tm"~=Q yAAdq <NecQJHND!!!F `8tltt㜎𦣠8h ~JA%喃pJ*屁ˁA2$euoܵY!3BV20~NI
3I4f5ݜun`
UwCB6=9ddAH
fL&TjsDͬlĈsȄZ$1w]J.4戹uѻIseEK\8I#9EOD{qMq$ =G8qNЅx|W2,wԘ)3FR#r:;z>9n T9\_ï{x
I.LOC葞τƵHtt"v~L9$Μ6_ =Q&᎗wyLT׽?*KATԂQ]ycw/p߲SqDiyYH((6uBRTL@LQ1&[.Rra8񏊨,knٛJk1s}˾}{,$A2G訥beJ-5xcpOevv?=?

\\(B[!--eJ̓菋x5LE{]0
d ,EgB5xQD|_PI` 
))s \bB%"p_|f[E)O攁Rle?nm.
!Q% bA!ep	Qҿ }̿L@2P&W6s-xg~GE"4uʛ>o	
{=8
e1ƟUD2")E.|y3!L! uؑ󾒕-"-*>_%e7\^%J0Y^^uX7zig vUݮ߿ߦ>jS麾nsכLn[\lwu=߸hZmME[g]x4vp;|:jR/kjme#s\-RbRZޭZכǶa?402Vd6rl4ךb5x`:UkݱVНKVz.u%K_.˵>ZVY]ߪ5'>^V6Zʥ>r=r.V}庀nvz󾅵[Zzvk궰}r6rݥQn%B,+UU,,UU,]߳VUQZ^Xo~ŰmXV+6fVVו+jöگaTؗnn5-IsVefnx§0Pb@^;tA4 )#H
wZw+$ߠ#tEDyя;95p8om$=034>c8IR)^9pK?yh?^XTXs(<hynd]	B
	Yl3.	
>I޵oTm`=07Cx>s(kSw2tW%,)+g$|02&D*B>3⿌Ps:>O*@J'x@nq(ʣ	$>M!0m@6!L7e)`G˔Qܹ{@G`St 2²=T|nϑL?
Sw!'/'8lȍ#ruγpU%ɈX|&"iJ1M.ǣ[YPd/.A[z8'7z+Lo(Ya
Q9I9DU]rvQ>Ar$!v^޶Nyv	_g2˿~̃+G`?̳'R..qrTo+ލpϸUn+5/\ 47_`,؛4zwc?g[oZ٢YNy?e1d)ʛtofl(	`Ab]n[V5'>gB1(bI!&ƜmfbĴ E1)q!axa.ʼa,5+LBT؁af?aʰ_@+GE%բԺZ7LjiZ	NStjAgd8_+,g3ϙݑsfC8kgV͙%Y1gburf1+	F	`4\ {K``d`S`L`/9!s "|._.n.l~oBĩEH-	dɛg~Ms'D_S	_B/@(ωMx,~wrqb8}X<cX,lzxr_\)kZu}^x:r7uUҽxtJ2b士γ;Vw4j's*ig
:Z
bicGܚWTΪ2>7`H:'¨)?
V<gY疆VqZ:K;L. sLK
<ګۏd} QB#9LI`Wd͆q0b}&ō}$8X	brɈԙeI, )+^)' >,ԑnkw1-\@&<YDxd&mbukAh	¢lmnH"U>C{@S cݢ!̍p_$y}
鮬gPneyx$ni7FEwmЭwe׏br4i P!>&	@m2_YZ  DYA>
iM;MrG𸌠he4~@J6(*?{=S<jDD
9P\ԒXΙQHy<-=5 t 4"I>y3(p^0s]b.MƎ2~M1GGL~q@iP䊤ͼE4Ř'f4DcDQCt
ىQYAJ@_SEB9m2?+,>P2V~!=~rQc&֧-KS>lqce2,SJYФ@5fPr@nlp D!EшK˨WQGc-Gư[E9P9EO/F:,FF%sWߩڰhMnBu+4%ի},۲vjǂJRwhJzwhJzU%ZWRJJu]aQhZRT*)ՙ,uEUcQbjYWTЯL"+%ڿ(
UվgI}/_I_5yBTe4(<bQz^uuEvScitb}okˊC#;q
Ĉic(AgL&@nXm@3p"(Z`&Fи\&$ +a<:h,
YtL(Zyπ9pi)0ȍ&ȲZSLsҌ!TcEC4j	g̡$(*s#eZT00h/w˵;L;NkpAgB}vASSlD8}ƀmz )9
&#z2NL4U!4<o̲,c7 @b%H+z}KgK]$	96| 0]4;р;f4{,`lψ-3؁x(*JLͥC$^QnŔGIF]\5q#Pr'=%%
|]*Ds Zl3Gu;0 FjRx?`ɤ%''}t&{vbʹKc樒@,}8z0G!&o4@R恜N1MHf
[(,3aNfo*sď]7[ǾeSI(M^-β n. /EV'M^snL	 >4.̉DեM7$g(∥<GRIJˇʐ_ez6ECxXrOEF!.RH{aC2@j[Sl,_[(A<Qhy<祩Kٰ峎
+<V>0uJ6
*jG<FO
u6Z(ઋYy1f5@=Hğ_N~(?Ҵb<&,83-ĚU0!bAdXC/EO@u#r^d͑mo+8Abi 	%S@ؖӁA}}P('TT9g"vig׎+<lJ_"%y%-}Q,l6K$Xmaٕ,C<?P
䝭3S*[<#Ndl(9
c@,J9\6LLp13VE>l` 11d3u'GH;Lyd܄G$PwgJ,Ij$PCHD@x<ّV<2
 0'-O29gX]Otаrc͍Qx(r*ٚ,2&d)4JM",n:C#b8;&9]l^;tҫR
Mw2᱘Xc,s
M>Riz,%dr9N;ЯK]2ZU;jX,W}d4j/cI݌%UW~P}׫/J׫:>RZmfYfuT&,T-!!jt%b1ֺVYV,%okaht^?^(4z>k2y|>iWI|AxD-@kX-ԃքh
@!>Ȥ}r/ώgS>殉y[EN=)`S*LNqaD&^)W)#)=@n<D (:Em&hA*(%HԈ&`-W||0CjP<AiBIEɎ8v9p,0(GMaH
8O*O ) dĺ	'NEo[IW	M4Qie :Xuf: l0F1|	L,iH(DGf%%SK 
%ka8cXanFE2Tݰ{v3ܐJTژ&<gc#zI*p;c#1C@w>oYL.""VE DȎ5oʇ/G+84a@J'"C
1y"`6Df*AM%x'aUw,iH0Y
AA,PMͻ'sףH@&7> ɪY0xe	jb  F+ݵeo8)X)M>0 `7z0\(̓Ihg<xLxIșCqT6D\yaw<yLyI`Qr6ggl5
vD؁T@M]v=7VG:z0NI{a!
ٕo/ᄗO
^xTzv(xc[xh&&(8N.~{xroCe= $bWؾ۠ei
V`D0ڝa/*80X]㈃N`1eA@4ai xIS33`F&*cKFL><j
Qa]\'Ĉ2 S@ vC8]N(N;,FLԙ
)B?CxqnaZYp0x8g#	[NybA 
EB/Fzх`R03&UE9x],VrSʔ6.IH./Nhcsω$12XG-LhЂb*zwqo
o;GB#4
w^r%BrJ?F-AxcaQp0E@-, 1ĢN))=:/(Q?N6=,NX84vaP]>\yLJND#5&&Ky.D(%>ث1TrgO<bEd#eFt	8,PC$ 9<M!׆
q%G![7`$I-)  2"YiE
%\XK)m|ZAx!f
m} >vB\GX-Dtij`ccblOe3bj,j*~6FUKrzM|f>EĄ=2@n83XNY.B#b.O4Yf
܆(Zn~!H*o*l(91S%9ZT-l)e~ļ2D>4Ҽ3X/PM{P
d:Yi2d(;Iee
ZiEABr%t/19Rl!A?2biWϮcĘaIgEI4g(
BYx&Zt`*8/ (җT/sPHAQcZޓ!-&  eJ}f9N$70S$5
QMH^h WT3CCA!%3%dW+U@ǩvFqbƨc-O:iǼv66@E{WDnhղ`p<,آ=GF{ݯQ^~^j!-p$vĮ]*L)t)h	&Ô8Yr% wurh80/孂e`]&j,McɌ7).H"8]XɥQ3Bn٣{IuX*W]i*}Fv;eB~x(p}ކbJ'xMSKDZXDj!w>$4HX%RJۨ)37ט(Fa#ج`'xbF   h `Px0rAAQ  pa8\L)ǁP81` c1#M@ c fNe`p%5OsAGnaM/nI6)=]:uL_dwݠd9cZ/.kP+u,Zj0WRWii @k*:(@@1 B @,#TKƾքQN]
RZUZb  ƴ! 2JWZk
!!Đ  ! @ UF9)Kc%wb	Nܾ-TyZ`0^`#F6ۚJA^W5ĚHsӘ ȕ+{z)a    !0ojGUڻ{ʜ9a/W!#4ġp! `<    llrA﷥|OkV}"6{RBJ)hPcs.٦5R)J(!Hs) Z !`#鶐Uye'9'}[	T)f9 foZ{j:V9"sBPTI  ۀ()zޕ9j8FCcqN')L jlJO<4E{ğ}-{'4JV6~
yDvڮ6BRZbtJQzoXoӝ{[Z")mU6/~OmCu%n;gP7گ
Ӳ=Ta6ka.u%CvVђFb<IDsiBnAqg䮉7,	Ҽs	p!7;,֭Vpd?2+ B}Ȝ"4b;),]*N1L捸n:0,ze_ns~˔TB_agENt+YN7esjlr
tIԽ86b"F̩[m:1:]j{zx9uj$~#M+-Dq!4
#a+?=dwWQMXWA |h5ߓ{+nuY{PDz]b).#$(.!\n ݣ_![*)z=L"hQ1.>>rKd-!LpC5Wk)OG-ph1jJ ^X|<+dji=y ƱZe4
	qsrs>[ȏmkI
i[<";d13{l[$1[.X.&9 rD5ѤgaoYAz#;[Խ4ڗ;.^W?=ԥ{iN^2搃gO&],A~0OE/yg-ОpZO]O%LCl
~0-5=Zw8ҵ=QtM# !pv8${ӞjPEN(܌g6h>v-.l&ޞk YJO.#tr+沆ʆQ⛱6Ų4*CG1Mռec*ft]e%uk@<kjp~OS+E@/#1iE!nJ?ذ|tAO7n%d^m3B/5ǮY@/>խXEƌS;:q\-!fKxQOh9K¬5FsexrhS/ps=c1^q"4uǜS6f#%t-jdCUFsk6<nsލ?з]s
dT}޲ꆟ/1M'l.Jm
}
GL+atD[cq.&˷\Y->UP3Yd{]+_E\0yL
i
 c6ї{3ptXUf6}vua&8QÔ.H.ZV_m)e'c٣_vKi8zu
RBrx2ԍ<9qWlgDnEgؐsݜoqR&voő!{vr莚 ,ċ4e{G}$t
OD;*FbW>ύ05 4j,|k͏ԃ9mai
V-;hlr\GJ>\KU3mvL/ 0
ԣ ^Jntʦo. Í-ݙ cnIU,jֻ-ǋ$̴~OtKe@Hqq~enxo/<ɴI\m<KK<N)'#TSRT3e46I$J	EH<y!$pe`CˠZkU+V)fh#gZ&
4F6m'7L,glڬ0aߧ9'bL,8HhC1{NC>:j6ICARyiԂg>qP$q6 9%2кS	Š sM/W]1CFZ?WeI͢E3_$/}K$JPIMDBx4JQWH>JqbZPF2	L1,9p_96xU[{rRP4ܲzT;W?:5)B;SUY͹Eua-0גquQxR
Am+Fjv\cDSALHSעv	Do⸪!̳b
tr_y\`§,!aՇk kcH<木Q"qUl	4Y$$4+sh
s:i2a.j<5p]քCRq0?Bu ӻ-ysdQmaӂ0.v̉*фDWhMiod"b1ȴ
G.)=++X`\hƚKG߅$W		#yM"	ɘEJ0` 81Mg
C01>݊=f(hHt19Qu#  Iz뺓LęȮ%+1ھ@";f?df283MXB0f/\>{%pDdЖOl?cU6T9bWL#c[X!b=PZ+2cw@/VuFd4Q[&t%(hhd2Ɠ1xP5SUz%w ;Ϭ=[\4X&f8	;MIUKo)D%nEs>R-6ä8%
KT_,YwQ?vgYU84
kr|/{+
/')gJD`ܛ2X	?	NK4?h QXyG`={
Ob`Ѱ/dd^Hjr	P_V}Q2AeH'rPR@>{5B
C&儒Ya4V80-`o8jcv9YPm/HDoϷȆ>+;AA@AI "hp-<ވNB[A_Ϧz߸ofn'Ou	MZkZi/}L
B7Ĥ> + :6\]7'dFE7
S E`XPu.lmoΪDXX`sme^U
洉OQCz{ͽ>@Lܡjs3hlZwj.gknfwxމk1  !(,1cfKQS)A|؁yƀ&YH6aPJp  \%W&5[b{48ڙii`-)K52Cgf͘~Wq=c8a'sONv<
[{
݊ I9E$"7{/d3AlrT7]Yd6>:vޭYcaȕ墥PPo;KN.ϡW1	,͊,7ib3"(c9i5 B,M"aInrwSm\%Go6>źnP0+,2bY5 9%+b7}&2YL
ab7;nެ=,VL&>ggĒ*t@za(=zz<`tzsӪ]
m?la'R|y2l*3/Ȩӫ*ُI ImO?n>)ĝz&䩃	|pI-L'T/elM]9֊;IEr ^R;OOA1+5yKLm.lhk'3B@HЅ9\uva)ծmfQN.[{/Kcj~0J@BmUgFHFk8; 3$dj{pFʱ!K
+u9g]GiTdn9b~ml`w.,	6= +~
L+MP;*?";Y?YֹNtń1!1ydɄ&{x0?3dra0?
Y2;ű69 KXài4{K5+@DkL:О4ZfHfbZ>-̦WxzDЙ4g](l'\zQh9@TP2Uho5 k>&&r_C5H׽n^CDY,KNwVn^zyK[Y)#YMPP!Fp,iwq
3̬fzƳg$qG,5^ڡW1_
~'1Sg;xP꼍1V/ яh`>AITG0)-x(K;{xzAUᱱx-Y@K[-Sox!c9Хb9&A/IAe\GVP!o~49>,c!̧%Z}$+_F5]J<Ex	gXϩ<VF5¢kRA6T-%TRc$7%\X88t0])%y}ለy ?&7+k$]bT914Ǥ=5=OU
[oF2߶fW6|$U]8^SsUs+&c/zABNk0*0!OVT<>Q
@xNnZ`*p@?庸и鯳0mt܂S	 xkcgIttW8sjͩ)ըɸ&3:Z]rbǂY2x+nˑ.,YO\?C7V5y✒mσV1bEAq91xin䆧0%N0ꄷSq@.Rs`x<T2#U2GN=`H=?P+J?`Lƶ⟘18#}%x[O쩸X۔4qURfgTZcclUU9Tre~y8!MAeN/V㻬gk-0oV,
ŌDemk1A:jW-HVyr}agXl .<b/B2vݯ!N'F,]!@s{C.ؤY݀E'	Ot@ޕCeXW='Sp53罻X|bl#,H /?dk(ȡs(ڟXk# Git٧~%hufbW-QstKZLm.mJǷ)w3}Nn͠oUT3d?0r60!DdƗcbOa^@9 [C6ck0Qњ7(Cü(x	$c/
vȕy	Ї,_Hn.4]w	'CRC	c}.48hD9`@8kVE㗁jtRWL%chkV Vуa8]8
6)Ҕc&"4fkK`Zq=8qi/eT^5
2K
	Ud	: A3{706GOB&vQhv'b;duYXi+M)Q)0xQ-$Rw<,  kd<H>?{|<bp:E&ɉ7aS}i;3_-vw8DM=,"z\aPC\{Iys'@	fL)s	)1AT* I;[~UzXA)֜dB")lE] 5!Q$/0#!|iq7f$Hj]^mBj~D9OgYbk
+a@5p1mM;}h[G!/FXyv~v<ߴǆZ|7\I=쫅Vܲ.hI<TRAs,ilvf.*Tyނy&TC^6VL/$F~dpeN9c\#4foQ#_R;-gD>c)Zth_^8p|BLq)[BB;3(Z4r1~>EPpȈj~C)Ξަ0:UΛ^n2QQlJFH6'4zIޢy9gIZWO<7ӎp<tnҘЯX{V2<bݯNl9)gq"yo>6 l;z</B37<8\֘d2}8$A<:r1|Ak/qfC:m
~^Q	7ؽ'( ABg=lNuS_Zsy:>0<SE7j-$jj5YcN-Aӡ'CvgsBN8'Zl|~=ߗ&#{p}g.XKc؊2Q+UbOnP=SQW9-Je^mt&.gyN~-ߗ4P49
bnFO&|~I?Y=cs8G3C o0۝%b$d{0X^ ~Mu:prua!gZ	H \q[*#o!ms%o;[,9տ)_/D?T\-+zK3KzAj5C.]_5DmP,Go<^&QZԄ5tu摌l~gь6jݟ
{}] wU'o}
^]yvk[3[fA,X[ܒ!$a9<P_>kƧ{qfw߅H=KQҘ\dCOi+yǃ%'?;W^K9)7@B#zջ\m4+IH~\ _Eb8᧮MsK,/=-t\j|٧<.eRRC[HtBNn9:*QC44熘aoJ!QEvq%cc`Ȯé![j	z2T4!%jhrdT鐟1Rag=3>a}nʐccV1
s.Ιݻgs Ԓ~B]TgL"tpTS.5y,N?w
;+&FY8/A9S[ܠ녶d`,98oh5L*E΄7Q2Kq(ءpNeGЬ2LC0sN祆|`.jT^&8o?39DzSwj"~XA{ߒ$:]]KrCºZ/ CHփ9R?huR`17_~${QpTbTvɮ#hmx	NFGAKA9V$p]c`pjd;4!
"-s(x71JԂǸ=CGB{l
h"{Iפŋ+{q)61/Z8g 9J5P+sVMe^xs@w$̀HB`z
d`8&꫇Hn)eCuφD{9߀3S }Y0<DH Tgip ^fA|ܿRwo#&T:_UנBFIN.0=!D>
P/)!:|V[vqCx^B>swI4 n
x[_8j"smp^YAto}XHoC)J"d#VGtJ|ij=&8W6|dDE5t}$[qq\y۫BK!P4׆w
q׫"H)n
pA'g[WسQ$C6BWɉ9(sQʉyhэfGv5P`'G^!#d&<(՝!Ksri3:H}2ɭh{/C`rĹ2 %
n:K"{{OAYV5/u'8# @5
L@@,Bɇmq쫠/Y; ^|uA^*ehd/Brȃ3q5EzBq_U$w!Jw$ch޺P^o\}U+b2"E}mbO-٫\Ұb6/Udn_+ 77؏2crVegpܻ~wn߀xref_}]k׳<v|1؜&2;5Gk2s7Yvm2PI!]erQ[J%o	'2fVtWG,GWhZQG
19ި7~ _Ųň*dXի&GT5u/E: 6|Ĉcl(L|^wx_|&AlY<P9Y} XUrS1=[׊CMֱjƑ`Xa D$WdX0aݬ!H04yX=MO(<t*+I	SpX4XPkjr|yzKpJ 2hNs85ݯÙfD~	RX{E<3
|_~A~>y[̊pRw,>
=ڮi
 qA@T84 A㕆 gcRp-BT_ h}joס#̬(gf>?kT{\ٶub*g-.d[4yeví8N\tǥJ+Qm/Xl-?#-T(jujżfÝTKOY^kԭ^D?NiWD9Vk>64NmVL}w;R$m2O:+}*󚋹rHw%Ǻ"+l3[4,I'|bD"n-
8B@
GcMڈ<t6
5$9
D9ux&%
?sCtP d3݂d)/zNj-͖,o\6Ϸq64l\RNF rl9Uv^DX`qۿ:^4':ed+\^mfB*lQ7 Yˍam v"ǝ\.'A$N{a$[ŕ6['	_7~]h5&6ۢ)eDBGGRq@5[1ۋf7K_&tlDrZIvvipt"9C _g"̯E;s7@70K[8_F~?#BznW8FCo40J|k#@0^n쎱)h䰩[vxW8*8u}F6{(#{_5t'0Hxp*!a߅8?skrg[e=;txK-ˈGY扥K2X4O~L
 &ʇT poh =N>:P`^Jg2R,4iP1ĀB` 5;|@'<|C
ؾE>EL(l
~k5+RGwUnDgiVtl9ڝK{nݙ~ȰF}ibr*̯r97lbYhY*3>~wkaJZ?
޳hue8,A@';74snnewÔ=ʎV] [3PiFGm>i4 X$,n7=̋;B #Kڿ6޷RCk\Dҩ=L5ۣi1.jL]+[g5C&jd
obTTg y6>l;uO`q60`1p!1aY'd|%ϸEGzh	ds@/9R6vވ%f:σS	n,/׫݆%Cp
3@nC؍~
t4\NY{Å(ȡp|ל@^[	#X1<)
I*MaA4캹ɶ^Phf{_i.p1CzSz#k5tN5W"f2P֍@T|{k9;&|NK=W,~̄e:[IF0S)69X+ 8AM){ouZ,@/| Bi.1Wp9Fa'08}uX\CaӔ@#	R+06Bzc5XAlҺ_ !Fh16|tx;LXEOl '&LXߘt~"̬-w}E]ZNX^P9f?4`
F4'hPR"3i
M7sN"o>`M@m%|6/^_27c>&Ϟiv<'bN#<cR}nJA
i!d>aRȠpI)Bp	0L!
!X78G!(QJQ9H2MAa
KңWzߖ5ˉ-v;d7Z >+x6;jn4nĚb`^ |b
iU~`V.s%+GEtk$E` Q}Gy 3VF,Օ㾂 ZA:9sXH)AcB·wW*wRʽZ
"	j;n 1zK8-́iz$huQ"K 
0o!hӤ/YLo7.7Mro4HᇧJ#GNsވ$f;p|H L)G
ܳP 	E}9Ɖy0MΈĭٓN{\ƾyup|1~ $T!KRM[7u suiq~qP&'Ƽ6)'1n:nG&鱌Ba̭)rM"8	Sckc܆ҳaOtRj)ڝJrHxꏛiZ\-"}ϹpJhWN휫
Ɔ@uH
AS`;Dh]
 H4s5=76JsT=ZzƊ(4%_ F~	SnYg5[G	?K*hnMq4ﲫe1)ǰ7_P0>.6{{QG
Ly0#6Iㆠ  T4ᠨ>{ȭ"v!?RSۍ!|4	S9teIXW'	$UU^A9Ѷ%}/>gVY*'S
#-
BP1b(0P1ϧB37av~	ꚷ2T-(9sb.4{ 'N<oMlhǼDMY-,VPŁ{Wڮpwa-˺Szq/V3W
!_IFxi
I.ʍ5/.W+}O*]BD:/;Aա(
<$7E>" K$cLB
߮hQ	g&1(^>Q]wD6q
K0PB)*mw3xU֢/*c GWu[	:t2t6U /(Qngf~\}ؓߥ<Dɋs+ÓD#R:mzDOq~JK<|H>Fl 7XJONH5WΓLBMN]iVJav$ezU{H<k/(
*a9|-3	6Yl@NGD/4'd	)`0$O!d	CgMofTCo<:|Mv1MAF#Doߕ	&wcZ[9To8~~cѿ_3	%YFPI=KyQwP]?褔ð4?ޥZ~y~oL%M~R:owb-WʣVzcO7*h/ޓKvdZ[APtQXϒܰoCMFYP2XA8w'';n|)0lZۜfSa-*Is*S!4]歌lN\Q}Fo}t([K)h]NgVi3τT7 x>ӵ6-؅(r]6_P.6\tEROo[;cB	LI:ﻍHsS,WO [}ZOnp\'/-
{ȹJ3s_zS=7bI/7jNaԝdFnES5Ѕ`/2:{)q-4c\T#g.LJMnaJ?{їD&aG9Z!oLfBϞ7Ĕ[96mu")Y$,ɦ!gCelmRf(#iRϝC~o+$-zߡF)L,+VZx6<RK=0;<)pɊ>ȟ:",wۚ%
P݁&Vq|U!@:uz:~<MH˵5ܑ_9&P8;cCY.BҨ;7;3#$](=-<@!(s
#x
Fy	]9tOFۄ-j$ّ~~v*J!4,͎zBUc<{tsIMƺ˧0-558nk1=UrrM$}Q]YIym-A9LI\CÃmq<*U		U*мJ
]ֽ]Y~7 xPl嶬t ʠk	1&-L`,J@i70Mڢ =fh|ҤQQ,Zo.CawaK&
2ͦՍ,~Ϣw߃zIZjl3^@Sa4qӣzEkuP݌8MUwDRV%TO_'#3 ۉ[hVaOX9g-߫pÛ/Xn-滋$f݈xa04E	C) l .( A |,	 d&
eOm# !F $r`=;@
>k:!*`$r`'^xÉT8QiFAP˺
$ "V ;n|ld768 X @;Ē.%"Mr@θ 0"E5fTWtf"N&rĠw"x2	 !H 0
=+^&!DuSxT_HQ@XX@xࣣ"j༴!c$lxEX'ȰD@b9L  xr	hi)2v*`G	 *kLr2@=f|V%3"L
D2P5K@?"PRelG6$TAxrvH-9^៬bGE)p r|@AWoE
-AP
`SGԁ̯84`0,P03_ PEJ;I(@ǅDiq``f
^ azC`ǰa@l)5lF>dh)ʖZ H}@Ήj0= }nV8*+8 <XJJ(x|+XWֻue!͹^io[hD':!U["u +2aP&	
LMb@rŢnVNnYT,S]u~lϪ"[T3'C'Á
V|p47v"0Oހxhc{<SY[f֮6Q)1/2VȲ`AiCXx}`#$m٘bĂdA
"&*P@dd͔ft9ΤS	?$-#c.CCTB?hH@@ʧGcrEY	55+9MpMT1ZA t]~iXlU\h(d*-jl;p82SCS	;>@J:q4,WEA**(l = P+[&䎀l\rTǴ0
*d^aX]v [)	`RBdK$<P`9`idÉ'c2P!jpd?IC!jК@ A.ޑ7-T]>e͆&e'ihe I<]ƄA~`An%MA2
a vIrT7#S|T{:Ia:[*MIRC*
G($'wpj@)'|LzM ׃籦㪁6<)ϙyݽ(SMё -,^<9`Ac,!\tx0ɉP&	0`;>QXtXrGO"qSk1mkIx'J o-@ŗȤalhhFp(ݚ5MNUj20K="
[M ,T[RSb,P.zAЪ&.H*4SgfC<qB,9TKN^82%Cdı!h cU[rEx|fuIކH3#GqCFԅ.Ta߫2Ee,'P
@VF#L`K;ONfH%|8!ɄLHKGo!u؈5BjZx 	}~KHO\=<i5cn3$l+FF
*%,eZT2a
%(NfA% GE)aV'6NR"LIK:R%%!	zlvv;nP A$@@c/>R"eG
<2ypFTe68"A{v4v!L	ydfueVUDHS9$`Zէ5NeI`P2ǉ$9pEs>C@\1dB "[A1
hme8
WD3]4 29a@]aXCX\lj ʑ'LbbFTD#©L2dMLKKH=\옅H`Gql{Ğ!jh	LA\Y[^]33
mEeBLM	M#LF \A,+.xaPvz0+ɕ$SaRS	%K9(A$jTȜ+{UAH-@2EqN{Qwxнfv
m`vL20F.3
~`Mp ++
U+5LUA@5dTby&%`֖Ԕtqd##t1AbaZ8W=|~4|3z$h:>f
z}: Qd0ChP	|^	,YLJ	4,YD
`QA1de2),)YTvA:̥@dAGH-ҀoBAO -:k(%䐨h#ݙD_^EKX؆E[CLeCreDU	IgD)53K3OC8I6b	~tvpclQb(-	
B  >Ck949nIz9jTS4 eha
Xx%`' 7[jD@^!jdU$UOOcN=$0-=l%!D#ف[@	B!xB&~N +-_Vo
OJC	Fu9"TAh4F4X 5L(.oμln!t
+4h`ɱʍJHٔL%	du2X@iDkIU6GXGf$!LJ3h!
qPv2^U\%!ٵ.i,FZviQhOhMi#YCf' vف#b'v
2:2:.LץӢˢânN@FA'(:N:M:@tr9R)sMrȑgWGa]
 %8p;7u඼5ݒn܈7
ōV6ʎam6b,{dluYx6­|iBOi!M|Roz<forUvB9J%6LUH )l"az@E%a y!
mQJAy5EV`"
ə$Ǖ
	#+L1;pYd)+Y4$a	VrQ$
n;&A
r$A(\t,1
bP!.-   `>-41BJϙy cWMA`'e35z@Ṫ%L8P؅DYB`yaKh
VE!4 B2٠'NcBբ`NS'4D2&R	ˏ
pp$Fm,d=`;E/|
g3BNBOK^GT_sF8#!66p EU-e!xg"5|V>
r&\ܾ,X@YI@,he+7 ՕU UbTMER
khuudiZH5USdG݊J
z YqJcUtً"6"c@ueeԫ
J):㸴|01uSZ&%%!q <XvA\(1Xa4:޲q .FA2&(1,nI[6ܻJAtI$#邠ҋtDh0X Z౅x+Xh&2UljKʪZeS%. :A|
`BJ:=B$U 6ӻB:tPhXmXveeJ"N7e^g91*dl9aE<$b,`zKme !zVU$RT2`A
@
xĶbbUE5ZV2J$<N%u%
4^˦.`*@IG" Qi;:@߄laMbBr$RRnđ(Drl}|(ƲBBdJ!IĢ 	@'j+T:6ocb0\oKz#ZTS<TK''ǱQ  ;ͮ2IG:1)%H<GD:>`kP	a8] ˭~~8*Q$0ggd@V0UQ=&K#zΉB` l ?zeۓl*[Jה&SK<RC0ܘL b	`##iR=  nĮpa
aM.*F9$= LZ-79X83GG֦hqm, Ad[P`aNC%$N>Q1&HᄝvJѱIcUR M,WH``U:z8FL%H{@t?"q5C6փW:2 aIA	(bQKGG͡M K33Bp20IhCl!LEU=Q~8P!BksX ƐLruOAOx8ǳ|XVV:mڒ5|B	H 5tp3vֻAΤhetiCH$GLi
 zD   :DpڬEWxrmYr%<SU8CVq3,nrck1Dz%hw <5E0ޖHعk'VtՆXxlL)>FhЦ7Vae[TjbMWh=Cwob7ghSrnBS`qN<K[)k.pA(srk[*>w	mR1ú[ߗV	c{"[O+n_~Y[ME .֞^1I\[ G@솄,[-͔kmB}J^pɌkLقM׈L{$6 lseZ6eMj:wxM\;C߮NlЮ=oQ'ۊkm4&4ܛ|ߘ1IQ1Z9v{aM-I\C∤X<cfǭr`7Ojk}D=P%Rtq\pA5|"EC	]dż6 @[{b7HLqG`!70{gLLӅjϜ>xq#p2
dޮS-wwhg:sv|gn( QQ!\W&ʰx8(*,qPX^9uǥ}8uv/sn+ǚdz=2Iq\6@7ao)EdoӁS*$fCB
AqYPyoVB)iwi8?u*#nA[ms6G0aHn	q`h!|Yqqf(۫?F1ϋ<.[2xƙSa~ؖN"8WXjѶvߛ\jjeOxn
B_n>Vah@ifC3oPLfj>|<<|zBٞЮOZ+s]VM&#7\m]>Zn;M!v"HqzFwOvʳm✕qSfY$^`_%<k\?mYb9)i^9ant"DDPRs`P2P-)L.έqwRP/C~oj2zdS }@IDFKp?8mЕ?P#K뚗~I)U Ful"A;m9Ïsl2pgvyea=쬀u\aq{8q{PGs{$5D*Mk|TCaٜ~܋cPw9otFDB3TgfF.Eó6O$zzKd	/߉Auo7۟q0o$J^}Tg^FOW\?Cߜw7j|EV(E}`  X~m-wIQ:idϭ[7ߡ`2.WuCUhv?5ξÝq]~ggw47U4Mqa<ǢO
kUCa
֦hUτ%nl:	LX?'usbDԙ"ɶ^VHً'@imOo/Ə(U7K?3g'k-ӃQg/k~ë	CugmD=D9<Gב][`]8}:`<<߷
L8
ƴ۴\~NǠ
?5'9_}<߅SF&+90՝0F>[8iu$#BN@/{u7?3P?pwbg&΍8+?
"|L<L3_)_.{UݹTgWߧR̉rɆ]Y#v,;[x9l?>=\W0[)I8Wy#{	qX/4Fѿp|RACx
XeSJO31xo;qoa`z2o4嵬)*Rzgcvа-t:U\E`XM`
`4Eco)7Q϶6YJ<[By{'e1oC|ENv*0W Jȟ}L&j9LOa1YyHu`Lf7]Lf78%vO'Lد6Uoε\|]??3csv}˨Iɟǫn	}?70!-u7Kf--|r+&p]FgB7)!t܃At49~+
*/	)q6Lt$}0x1aʩw=LC>gשx\4߅xu24ފygls)svʨ/īd,W#%Gߕ#j>w[XukBJ|OUD⻍ -	/
jY.L0nΩqʜp=9).;u%.;%vͧ^
Q&s,JC)6ŲbnjN_YnA523jK{ou+&s8p<Q7(@R8*ڵ@QgS*Yߜ.kڟU]Ht(svVg߈Z.=a'i;S'rx`rtsrgKe	?w2k2.:0_w30lJ+H5vǃ⇻~v-u֦n|dkZ֏zd<m(6JDa(dάˤu`mbu$ǚh~&爃xQg~{{hXx*v2odc1;XvD|sUUՌh[r})u0j	CDpW]P[h>R
|.׳5$
@|Hxx(c1oQm|d|t'H3˷мTݯEz#ԟ=Ϭ[㟏+<HJ1ƞpaN`|nhHGuwAe^=Lgǋ1{E;Cgp|۵?쌳%q3Zr3sܒc [nF,,יĽrw|'$йaB^	bȪ87 Znus\
TOwjX Yΐgr^ugos@~u/:{5:%o177naX{NߢaY,YY+:9%<TK8YK)](,wvs)%fT/~Fru<cZ%94 I	ΡD3
-7XΘȆ<lxFcwEkL@Ҭi4 im/C@2&^jquԫO	z}{~~{:ǽ!Q:G ~
IbX/{5Pp
ؾG?-Pn7t&!sv-J((D*%#2a^'-ֹ\8Y|()lqRNqD.4{礞Wߵ`(n	(ԙK۹;2:wr 2fSF/w̚;QW8{29C;=.ֿ(K^_A~Kc	Y4ݫ&;-?8kJ}D)Lgp| D~/j[
	ig@^ʱ&ap0zEl#CV&ϚF3a1[K<gUåĽs)жIT,P(<Hp߅n1!SJ-M 1ީ?&cRo~S/P hL(~=~}g@r$.#b߻Va	!~Ѳ:oOtb3tr82mد1|r]Tw6]&dW<zla`aC'TGmCQl::S5V~S}^Sm 4{e[0V5!r ?˲@It:38q$&n?sڕ9ۓQÁUl}i3Fj ʭ5@([^*,px
X%}MI߁8+BkNc[h,}&Țy-Zy432aԌ7PfqwO**rMrDTH,cB(Im?Gs
@Ylbϲ\WRsk4|&,Jq{?0AFw'_ʺܵ҄K5}{iԌqlBbhX5%}f׼q[FfhdPTHӽ]	MmUT7AE{dftt4Ǹ-I7[ݝ(4*/
O)Rg&<HYxM05&ŏPߊ(krf_A8ޞ_FQ]ƨT1IJ_
y~4*VMJIΒdJ
?օNpQY}L=7x`.7٩,W*&L)o'z[gC`>ic5g;=&9&|#2)/V~s@)ߠ,F>&gf
P}Rc
xFbV~fz|jYુY㍭Mپﺥ	mVRO)K<̂yk06m7˜Rh0yv[QtL	!M c H<Sz8wNt~&jxu%U^9)uDҖZrn"zŞEk7x-6t}@@*{50X`Xw 96ɓ ;U7r0D.ƷDsNVژu@i89I 6m#I|qS+>8@%\D&./f|]ai?<'FfG
M.<12%ZSDyHVj@Dk=Tۂ'H]P}w=L?UBkz^Dnv7JJͤo4B.[KYnIUw 0}Wm?QQ?'wݔh
{,7/@-~ !tߑ<kv)0&"助fwgL^YQI$mfr)H1Y$[(}!C
}Jh4J:%Dg/q@I=3X'ҕ/R3f|{m^3l<s6݅}JX58LkxnSwdL{1}L,C9P=.IVw:JkuJ5Er/SFo5


Տމ7ۛP.S>r`E(Yn%8d4N6
K P%,e'e޽8j\،>"72#P@	@	qn拽ǟ>4<?~#sn"iiKlFq]eXK GHf|=̑m_I؄O{.?xԖsחl;ď-IqyܕK:W:7Nܕ6Wd#}}	0n]f͢N勔8iKR1&@;&=-$%Es
JrDk"g+XW8tU3!1vmۭ2cߛT11cZ
G\\ښ%'wEwc
~T16o}N5} EfGMR<=t:,8wh+?n[A9QCd#/?2ϑjx3ƽ@]oL-*?onN(.nh9	:[8ǡ`>TPVތ|"vk_S}\^b7>æL^SbU4}3ȝ2
YY.cչ+wdOi!
C@#}ܷ[(47o6
H#xz~M
7#?({7'5~}A!P4 |lH#xz~g5~nGOˮatFul"_>pԆWj}厄ӵ~'ɑϹ.H]m$Kqedo~ꀮԽ5:IM  (2rsZzYǴ|[K/6uI+`æݙS-Jmiꄚk>R_Er'q*R:[8*7,(8]\4H=a 	ZiFh:di0#}8ÁNۅS;far9ϕ/~-4rԤwMoa=xNV
=&F}ޒ27߭7:p;u 8M5Kc9/^{E|GU y7/fgwQ
6-D@({3y8-\D\!VJwn;@]?V; F@&uZCJ!y4cM@΅to1Ma'R!4!lx yf@bE6 b 9Sb|;rsIl|yUoaen^e?,aoVB:,\PePV&]3C9ھ=jef|p
3B]LW&܀cY\lgma̻!ukM?C]^Fk371:lf#&,Μ"w\E+f21Y6P-'W §L}_Ip8getP$:L9𳚏__	Lu eoHj nuэ׶rH|M;olEIwfCp <<+sW;_QtC~Fn\T*%i7740Rk+l4P%Y.
j΋^k(bm1^n[hE1ߣXw[fvuu8e ˾o/+;;Hu;rk\=%kR$|iW54Ҷ0W54SٺB|(Zj9qro"E70B"1VAw-s6 u"w]E@nrwlhqѝ iW{1{s'GiQg/4];mP+kma?x/ވ~zc8OQꎂ޷ߧ<xD=fP0H<&o9Ïe(q#cmymZD6L
/dol%J(ѾK'7kYĕiXay|bksT70;y8~1?Tw0[3yySTI[Rf")k"aE\	s7JuQ_6^Y~Wع@eR}Vԗ{Wי^֩J]IJdHZ$߃EqwE#b!%9c\)/(X͊ymŲ|]hU: rdac1j	&S*a++}~Q_7r1/xEj@Vn[n1=eή+]nۊ_>QeCm\rҷDjn.JpMw
y>~y-9Q6z2j"߻w3>^uVV31%_b*'s^e
 \M\7zH4vuq%q~[Z{W%?zn>{yM
ke>ȶ}˪iyݜ3ۜbLi)
BW=O(2ݴ\JbIƿT̘>տ݀/V66+R֙T*ejW<WR>@+67Czw}Rg&q᨟
4?G}ϔpy8{|[ل	`nܸg|6'[<k'EO)[(԰KP^V(ѾYk5LWZ6M~n[uvnM#4#Ｄݼ␾kghHyI(40Joq|/)񒘞~R2n~eXG٫ԝ|ñJV]VR'G8k{UBzTMLaH`R=݋%IByKCJJ9ؖh%\q=]6%N+VLDs]uG<#z}se99F>c;,ݽpF>L|="qgיZ.|'cpSzPqCU^,P{bAanx PR}<N<tT<k60 oHx;Ų^,L~:PϹ*',f9Q
́d%<c='Loq~>мL`B$.94+n_|z\<zap3;<.Ih3UB[s6m
fN?uVO.Lŵ[ K%)FSvJB5CDV	g([/1!#¦Ѿͩw#S wJC;֠`;Cٓ	<O ]۱Y+迃s(<eh|utRVGz2<OƓg(m8 P[ƹN*;mݶv<v<T]QP=TFsOiS!i2|<oh!GϵCt^|n
YnSUFU,}O9=J5Fi,,ԝ-@OIL\"e+4ݚPTūxᢹ"7p0(?Zrl>J#yi=Nq71Z'e	\<۳\"M\xߎZng	 W$#?EG3<Sb@V~ccLlBÿX-`V*K9P>v?"GAn{[\Y5Jp+?"Pj?Lk 9/b֫q0gǰ	\(.|4z}lv5>n&,ꐴ9^}w4cqZ7sD9N?B^'=EٍPdhRg=[hu4hq5%6/tviuKϑ;?I1 `.V:Y>IP+aL:~<YH<<y01ց
;C`Eܢ)'Kh
(y1>	w\L+J»#s]UݙQiI!<<E$T\J5<[C\<<6ccXƏb7uryXm87MbLl(m`,Iy_;U:m
QZފ(;i--wa;gwƽ 3avHMatfuSs姲:]a{ @\B_VK}zqnN:FL8//R4h8ArsfNw0~s'topf4,#0A6zj(x*ql)a~~}?H>L[FHє]!D..mK"2k[
`2"GS:\j}isI?x>k8oqO'roN$ͷ8J '0`Zecj{:*%KZx4|iNgbo<I:?x?BB8IzY<$m%wpܣth8Mܸft8;/u96I,gnsBq
7Z`Npۖpa,&seN]>:M Wa)˥\2Rf#㍓#\ǿ=cZG-=qe4Kb94r75NvV7QZ ϒθ"[|j>"	ąhaL6߷).+-ԑ{UhSq(] ^M	ЁKۿ|4(75q;;8{¸ட_l	Z.XbCzPax5
ЪG9oɺ*<TcDryƉMH	 {R'x`ORwFz5d;t\n1]م5̜/0	#GSB\4tEhoQF>9nl{a~0[s}
jGN${4uZ.[FKS1۳\$M
yl
#

0	6Nb?&Tz{enDNsSlZ]s=TQ]8aSK+~Fym>@h;Y؉v2w{_n5Q#/晲"cxT&`~
 /\
tj{K  ~8x\Fʏu@89IjW=qîq9>[NǬȕ9uQ'KeuسzZ5΋Kj%P2eN(HU*oR=lÊBԋVƷY.Be|.%?E9ϧ	C&ϘE!ݼ&T%`#!Nt-!fM#
~i (.+I?KSն:l|n!:,W/m0$ϘEϾ
?v1)o5trc"|o-?R~*tܕ.Ik(aŧuiQ|7⊕%wК9e&NZ	QcФXE?=7/
r<?*n.ndc]44ξƫ_ma/M(٠1f],}Z!j-?1PdD;dRfR?C/4>i(
#/|9V96Nkzk[M+z[׷o-ݮ4+}L	M	JǄ_~
&sAVxٗFDӽ#(hƾu,Q}yQ@
6e63,GՐk9OdY*tŚ40oL+QSHm8;瑷I$f{o߻HxjH֨4{ۄ^dfI9at/\2NA~Əߜdfq4]oHe˃B7/Z?"-8CӽPB"@d ϱyA
dzi|Dy$tWh0Ra9
۱Ua?}
-wMĕ&f5Vg|[=iCo.\s"@5].]hA~ /\/]~bO,Lى/闈o<t
*/B2EOXw*p<tak|/8"%r>e,I9ǲܖmxq¶P,e{L%u~4\/"TH4WvBC:ZnT&r}-,:M{}TG/r7xnS<ڝwx6[HY}Mi
pa}5"7֠` bM~[*RwR!$cȐlReHаq>$B˹;XJcߑvɖSOܘW쐵	q)qŚ6k+qǚ9y7>ܶ1A#
Ɣlń<ޠNef~]'=XY'&%F#nGǔU8&щ/oA<1uazsZh%h(ȕE͉b
޸?
͋az;_<8F[c.>~~gjxD/bY?6{'?|5
'jwm CHQc>z+V=[wPMZEGlvE`G1a
VaEq)/jP&B9[ńEܓq}1O4 zѽaDjHݿx`'7FKZ/^Qug9Jn|!!=H5jEw1aM!j쐆7B5ߍbbi۱ Y
PKs$Z<kv(41&3?>g:̄Y?j~2PKE4	Ex,Χ:fkquV+U{^Kj[ܧvD/	I Yq +n}<`7E$WrQ7ӿ	"z <ɉj!Bߟ'6;9ˠruJ[h[%@P!s77囒r;~Is=OL?F68ݶa{= Jn]t7<% &f**(w&-ZX<K|	d*|v!<376 /O%omVBme|囡cPӇ6:ԲhMM  ctQF/JÛpt8]te	vq `S>eOXiy!OFZ @m[$qmtGL4>ߢBk&o봛8"0J4
JŲJ`zqLACdL~oO(!NߜPDZStLϔbw$"jzjc*;m5}|gZU[}i:]բLZ!ci}|KsTtpRƗ_>vߗj|w2ƗG55}k|}_=Ɨ{5v_n}%-/L
.f1/~#'3xL@qȢDˉTwn}l 2Z.H3gC鞧0ru9"#uv9hAzw~||[|X8Pz|Ozzw>EqBD>\=>)ތNN=g͛~z>d閘Cޘ~ާ?{%!;~?tyW?Aj]|\6#;¹ilD"Yw1'8֑}ɮa}E")w"VFk1IF#{YZ|K/|ySc,SVZTVNmw/'ܮr{W峳;`owigMҸ	&!R8$Ri3aG5};\'~`w6K|	Ѽ廘?K^LXzn7'a`S~67HtK<9@<=-
bՏoR0hwht{֚Y۲ݦnzs =+1|UdNUP' `eP?9/{lr.h35}Jy`/yNAr7)7@I)Hu(&J!uMu?F8=^q{+V"FsQî ]ma;&H2<2HmdiONi!=@7DID/w15q<mѴ5r"jaU칠im"琤ͼ'f̢y!q&no|tԵ')R)W#{nHR%m@["}A]DO^2|1IفQͭpI)%_-7F1%yEY.݀t2($rd5FV[-WD~b'@4N0FF2BX]Wgϼ`>r_Cy"⡎vpY܋sيB*~cv*h%HZy`|h/| E-ɍJQw,7>ʍi(mts*r/$\Nǲܖ=Dآ%.dӼT
![wO |wRRw0
ٸe˶mK(ꍄdU,v*w
 ).mＨ-,j_>HB~/A=^+Y\grΦH(IGd#TTq%zPe /AF]
WpfX֩ghx3;yaEs+rC |/>J9KD?=I'}4f`d QArݜt*C{*7c:&aGC,T-$|DVL{H8h;baJk^q sat{SrʳfjS1Z.BJhbC=܍0r#Bk2<|E")UƇ;	i!!3'F˅|>F~Z%a/~ykvK@rjy?{4	Ji-OQta9g.a%{ۨ9RN]E\aҽǁRuQ4a>;AMUM9Ef
W[TMʶ)l-&cu7Y.SWO2*윋:{əz{Ro,v:1_ZP>6K+(ӛhNu2tcܗfɛy'0Ed4Ņx,(IĖ2%bh7<:iX撷V(w!'?Dqw(;i@~wfܸVt{ڰԽ:TwT~gr0.>yYV9Cd	,H<wr1s,'f;G_
;W\uw|YM7/>*8)ÅC_rr 'W| !L77cKZ\^XmFPt@Dt'L[:z6"nL4$N}-0etg{@7ߡ{$/Tc6?GmgbvIb>FFTؕ3
׽prR,2X˽h;<ejdL4D/DǇ7тʋwM揃b4ms|%%##Znw":|h"RA$D9{A_|BAY%^ 7П'T @w~A*
Y"۶$r|(K7v2q"+l^O5^|YjX#YavpdwZqe{wvzxLfow^-^CxҜ9iq|w{0]ٳ`NV81rN^

h}
$?]mH[,- jۆVB+jq+Υܽh]F62SN@UTR!>!ɞ]=ϨP^m{[20]6gEbڼ1E*$Tk$cg$f!J$B W<kessfD*F:XŔP$ogMJ~di7[QuAQQi $Q% t yj~MjZj2T*הom(.@8-ur+-VN!vm)FN?IƄ^<lՑ/1˔ro+؁]#"Ù
J-ҴPb @Ax ~ '`p棬>u,aOfuQ,
72tXm$ug["k[-d're	Q#I./$rwL0fsseEK`^O
>4TxWwHpyD?ǒPNs֦m:zFn\:@cY.W
hIFrlA7٬2KI Bw.+Z|Od8/"
x~LB7ae^j|E:&(&dP<\-
`-ŗ] +B뾌d"]-vZf[-Y2L ,{%T{NF\aI+ӧ/wpr{2}b¢Է9Làe.Cp|K8Q
fIp PRse.л4QDoNZ=̢PF>3Hۗ ȶIl<ԇ>x;Ӌý͉pwrxx9&|y::9n|&D2ժ5~J?
"lPLiE~Dmget9g/غ lIMd_{LJwrnW90:Y&
qpOyY}BN`+zG!Cmk"áPz[b&5Գԃ3ݷ5jAǵ*5C/[5X8~:Hɕ%u @`q{/vbf|7 O9SC(ʴs5Vרm{CvnՏd6u]AUyVPRvR󦠖^;y'lTZF2,e'̜o3'Ynљqń$ԇ\ҏ-؉I36X94
s^7&Tu!434 P c 0(DQFIÀ ]:*"x)c4         
4PST&\-ܠ9E:^ddZ֔@ {H+Cĝ,=W|)y=b6G>ObрԯuP"Wqˋߠ޷m:rIͫG D'!26CmKKuB+[H`
.ix)9<'o*22Ի
cNg4ƻzE4L&SI5%2vqt8f:(csgqN7BYjy)F֡V٪Empu^F
#"zB֊Qp?,t9`+_~Ԍ:	.ʲ
 uK
_YI*UPC8jAV֞M,W5N
b
/2k֞ɜq״$S+G#C
JXD$ZTjuqD`8ra<;.a
A<>5b
"Ý9ު!x
ۜ&Q@Lm8
e:(޿gҨ+?D?;bx^\rÎ|jFj_aթS?13<"}0]9BAzxU%ՅJ@.sf-8><(S+ u'<5
,(&|%hh0$dNgE%>yJ1+RmƑ rWT1gP%xvXz|t	%8eiq F~Q \.'hš4`H
1_gA@GKtoLt%5Qۊ9np`
{,/پPחɍӀ0Wy,cŜJi
0Pv>Ԋvc5j
"GPΈ_bP`kw^1
m8];˾q|֤Jk{}m!C_ThjtY89^6| oy4P1])KCrE(v5dEt^t(Y-Ĳ_O$0!L C&A|75$mM]>xJ8x{ 5Z_h?ﹻZkT,ѥ}l1t,} 2@PT։#sRΤ JfyXaԁ6rw"1	d*@C;^#.!,2 `Umuz8+5cd^Ճ.\.
%56N5\^(/xB8νN2-TSjsW?ʜ*sNp&N 
\[+s1-Wf4Tӎ	#22<m{SJJ42H-1;0i
KҎ0&bEI<їLt$W"MO	G/An{&}v~I,#hG\ëd餛8tHLػKpl'rh)
):鸾^lE0eC+`_	|J~W4	 7j 	3QC-!:
yHLAlUruMb,{
{aS4Ԧ<yB!Xdq_Í6i5SJGm30}Ү
eYeUٻ6m:#-VAaf+	u 1vH=rN@wi-5.WZF^r\0	bvD4lF<O*L0 *xv i?H\wɽyxޟ-jsqmxIL=
#"&^r&Wx:YO>H'
A;<lɔ?'z[	W]5ÿE<^2u"4DNiAy^)dRMM4a28SqnZG^0C냡<!eIc8#>ppd]N (˳)	˰ת<)\
@'62VP~]jh^Kt?Ѡƹ!#{ur@,P>@S4tPCNgV\}	 |-2>LcﯾT 0tb T]I֛M,u6|+m~]qiě䖒K !\bʻ
!תthV*t5VO= u.c[稸W>}mE-PV|BIGr
~ oݴc|0?5L*H;9,h} Dvgn𹲇ͺ\Iōy7J{hۤ	\Vv fz6q)
tnRaPhiv❃5+9ך>(-5fnP`mm0i)Xew[`<9YEN2NݥDLڙm';bquNvs0PǝF1	sjm:y	2θw^}$W!-ک;}dOo(2$qd
D]gTs
kQS</+Vw[iz	@%"CIH6=\$D==
r$X]MaJT+tw3ѼE=~n]}s`>c󆋪l@CJCp_?6._
ۣM\iB;4H$@TH[WI'boGt4z%r]h DR
e9EeI<yާ~2AT{hCD=i$RWfTddB[ʠ|Ģ2zJ,ߓF+xp>0ZzJ'#K[ߛ8/[j/m8͙x[&X.W[5|U}iWoE+p,i>4sQFHH8&_jXA78.#+*e^|%Kxa2?}:;3oi`:B"h<ꔜ}4]HŹ]$%&G@潋g .4[Q!@:bSvTb>?8qwM
MtƖIN&KվB Z:726SU<gD[xgդO,cn4.%&ZHj7Z	cʗkt
>-PKicԄ7@y^3~ϼu=UZg|! YB'Ԭ3\T۔,
 ʄ5oÝ"W
kP~Dg]  ^!At$(
ZTO,Nr	v$=A<\Jqnwbl]:}! `y3l8&D!8oQ O9nf/Fjy2g5^&{TB#ɋ/}=q2܂V{Fz8S=#r	ƾٗ52>H+&b'(]&AEﴤocWs\3^WZ`f#x?1G2";-]:MY-*%}%K !Y:Gt2qKi RZ.:lIx_DC}CU)CȬ/_fK
9AͣEiZ_XHCMO#oYE07e-taxjۃ }b8)!.;\$Sl25sR0ɞdrY^i5.E
t
kG(?8*iiB?ifg_G\+T#M2pSyC3P=qxл3>E<H?pt|/MPٛqz(6Y(ױlPYRȍGmU]xXjC٦1 e~/UF2x?Hmr+.vcxjXQUۡGq.R^URprs褑,ŕ3'iLv<0Pާy3f+1.~杖Fi:m
x*sw:,o;aյNb>Fs'Cɻq󡜿e_rZ	<Ao$kV+ͬFfT`ى"+1ʛD$'p_
$Lu橇?vحx۔8+_.;(ƚyJxyb`d~ K2ڱW!	#W^-Ҡ|~LN,,)Klb]B! !uJG0{e:Mxm!gGNcBڴ { ;rf>n݈BAcU"a'ʊz`
Xw
+ty3>/7׮Gq9嬖2{u[At3p	mv/7}>"<T'osۥE}gc8:/Lw)J@c&"P+
;^rH#tٕ@q~ kN>)Řʲt˕*XI,VINYN
suQ{l~+"q_>Mₙ.L0>'_oo\~vl$Dnz0ҴkU\ޛA5$tez7ћ6fwp NP2mew k;5Vxr!XQڻ
ED,: p#( r.*46k aDl0.G	+~l!aOy{/BVGCPx}=EV a̣݉\?:;]
$m '͓l)2pxPk4ΰ򨶃v r/[Xm7F-ЅS,,(2CcXMh+?RɩvMoga*[fu%V6Brb5Lv{I%FQ5_D`G!. vt

SUrE/zXɺ9vz#MdȡD5jz2É˾պ+h\Qq<
6p`50Ûg /qx>IXkFJʤ9̱ -eu>^o6e*Uf>H	FqS	43)GB@1,~:%R$H鸛J	q|+6쳆K~Lz{]tj1Ƙl%Zu/]'QP$8+[O}
)(sWH(:x>-.#IʝA 
Zٴl,5e%q>bዡg_Ud_{n3b |u"Sn*
l<$Nwq)Lյt[n+uP
|ԱeV5gbQ-bH3RY>8|0M'q)3.x8"#E5DZlUf/~í٭89N rJ9nG?$g,$9ҳr=${etM^W!"G!#L/)qN7لztVWGFLVlffaI QL6}^߭ѢCaml1999T030 (}  3  ت    4 .Ast_invariantsР(Asttypes(Asttypes9parsing/ast_invariants.mlOO@@  0 @@@@@@*floatarrayQ  8 @@@A@@@@@&_none_@@ A@@@5extension_constructorP  8 @@@A@@@@@@@@#intA  8 @@@A@@@@@@A@$charB  8 @@@A@@@@@@A@&stringO  8 @@@A@@@@@@@@%floatD  8 @@@A@@@@@@@@$boolE  8 @@%false^@@!@$true_@@'@@@A@@@@@(@A@$unitF  8 @@"()`@@2@@@A@@@@@3@A@
#exnG  8 @@AA@@@@@7@@@%arrayH  8 @ @O@A@A@ @@@@@@@@@$listI  8 @ @P@A"[]a@@M@"::b@@ @Q@@Z@
@@A@Y@@@@@]@@@&optionJ  8 @ @S@A$Nonec@@j@$Somed@@q@@@A@Y@@@@@t@@@&lazy_tN  8 @ @U@A@A@Y@@@@@}@@@)nativeintK  8 @@@A@@@@@@@@%int32L  8 @@@A@@@@@@@@%int64M  8 @@@A@@@@@@@@:Undefined_recursive_module]    Z@@@ @J@@ @@@ @V@@A=ocaml.warn_on_literal_pattern@@.Assert_failure\    @@ @X@@A@
0Division_by_zeroY    '@@@A@+End_of_fileX    /@@@A @)Sys_errorW    7@3@@AƠ)(@.Sys_blocked_io[    @@@@AΠ10@)Not_foundV    H@@@A֠98@'FailureU    P@L@@AߠBA@0Invalid_argumentT    Y@U@@A蠰KJ@.Stack_overflowZ    b@@@A𠰠SR@-Out_of_memoryS    j@@@A[Z@-Match_failureR    r@qmn@ @c@@Ai	h	@
%bytesC  8 @@@A@@@@@
@@@&Stdlib@@@@A  0 54455555@4C@@=O<@@=@  0 :99:::::@8@@Р)Parsetree)ParsetreeMPNP@@  0 LKKLLLLL@@@@@A  0 MLLMMMMM@@@UP@@	@  0 RQQRRRRR@@@Р,Ast_iterator,Ast_iteratoreQfQ@@  0 dccddddd@@@@@A  0 eddeeeee@@@mQ@@	@  0 jiijjjjj@@@@ࠠ#err {S|S!@@@@(Location!t@@ @
=@&stringO@@ @
<@ @
;@ @
:@ @
9A@
  0 @*@@@డ)Syntaxerr.ill_formed_ast)SyntaxerrS$S<@@$@@ @
8@@@ @
7!a @
6@ @
5@ @
4@5parsing/syntaxerr.mlievvev@@)SyntaxerrL@@9%@@S@@@(@ࠠ,empty_record U>BU>N@@@@N@@ @
UA@
?@ @
@@ @
AA@
>  0 @l`Z@[@@@@@@#loc U>OU>R@@@  0 @$U>>U>w@@@@@ఐz#errU>UU>X@ @@@x@@A@
K@s@@A@
J3A@
DA@
I@A@
H@A@
G  0   @!-;@$@B@@@@ఐ5#locU>YU>\@@@KA@
#A@
B@@8Records cannot be empty."U>^#U>v@@%U>];@@@@B@
TB@
%B@
$'@@9C@@*(@@ALDA@@a^@ @
(  0 ,++,,,,,@K@@@@I@IH@^@ࠠ-invalid_tuple >Vx|?Vx@@@@@@ @
@A@
*@ @
+@ @
,A@
)  0 GFFGGGGG@x@@`A@@@@#loc ZVx[Vx@@@  0 XWWXXXXX@$aVxxbVx@@@@@ఐ#errlVxmVx@@@@@@A@
6@@@A@
53A@
/A@
4@A@
3@A@
2  0 xwwxxxxx@!-;@$@D@@@@ఐ5#locVxVx@@@KA@
CA@
-@@	'Tuples must have at least 2 components.VxVx@@Vx;@@@@B@
?B@
EB@
D'@@9C@@*(@@ALDA@@a^@ @
H  0 @K@@@@I@IH@^@ࠠ'no_args  WW@@@@<@@ @
`A@
J@ @
K@ @
LA@
I  0 @x@@C@@@@#loc ĠWW@@@  0 @$WW@@@@@ఐh#errWW@@@@f@@A@
V@a@@A@
U3A@
OA@
T@A@
S@A@
R  0 @!-;@$@F@@@@ఐ5#locWW@@@KA@
cA@
M@@	&Function application with no argument.WW@@W;@@@@B@
_B@
eB@
d'@@9C@@*(@@ALDA@@a^@ @
h  0 @K@@@@I@IH@^@ࠠ)empty_let Š,X	-X@@@@@@ @
A@
j@ @
k@ @
lA@
i  0 54455555@x@@NE@@@@#loc ǠHXIX@@@  0 FEEFFFFF@$OXPX8@@@@@ఐߠ#errZX[X@@@@@@A@
v@@@A@
u3A@
oA@
t@A@
s@A@
r  0 feefffff@!-;@$@H@@@@ఐ5#locyXzX @@@KA@
A@
m@@5Let with no bindings.X"X7@@X!;@@@@B@
B@
B@
'@@9C@@*(@@ALDA@@a^@ @
  0 @K@@@@I@IH@^@ࠠ*empty_type ȠY9=Y9G@@@@*@@ @
A@
@ @
@ @
A@
  0 @x@@G@@@@#loc ʠY9HY9K@@@  0 @$Y99Y9z@@@@@ఐV#errY9NY9Q@@@@T@@A@
@O@@A@
3A@
A@
@A@
@A@
  0 @!-;@$@J@@@@ఐ5#locY9RY9U@@@KA@
A@
@@	"Type declarations cannot be empty.Y9WY9y@@Y9V;@@z@@B@
B@
B@
'@@9C@@*(@@ALDA@@a^@ @
  0 @K@@@@I@IH@^@ࠠ*complex_id ˠZ{Z{@@@@@@ @
A@
@ @
@ @
A@
  0 #""#####@x@@<I@@@@#loc ͠6Z{7Z{@@@  0 43344444@$=Z{{>Z{@@@@@ఐ͠#errHZ{IZ{@s@@@@@A@
@@@A@
3A@
A@
@A@
@A@
  0 TSSTTTTT@!-;@$@mL@@@@ఐ5#locgZ{hZ{@@@KA@
A@
@@	%Functor application not allowed here.uZ{vZ{@@xZ{;@@@@B@
B@
B@
'@@9C@@*(@@ALDA@@a^@ @
  0 ~~@K@@@@I@IH@^@ࠠ	$module_type_substitution_missing_rhs Π[[@@@@@@ @
A@
@ @
@ @
A@
  0 @x@@K@@@@#loc Р[[@@@  0 @$[\+@@@@@ఐD#err\\@@@@B@@A@
@=@@A@
3A@
A@
@A@
@A@
  0 @!-;@$@N@@@@ఐ5#loc\\@@@KA@
A@
@@	0Module type substitution with no right hand side\\*@@\;@@h@@B@
B@
B@
'@@9C@@*(@@ALDA@@a^@ @
  0 @K@@@@I@IH@^@ࠠ0simple_longident Ѡ^-1	^-A@@@@(Asttypes#loc)Longident!t@@ @[A@]@@ @^A@
@@ @{A@
@ @
A@
  0 %$$%%%%%@@@>M@@@@"id Ӡ8^-B9^-D@@@,  0 65566666@8?^--@d
@@@@@Aࠠ)is_simple ԠK_GQL_GZ@@@@7@@ @B@
@@ @#B@
@B@
  0 VUUVVVVV@!-O@$@oP@@@@%param נĠ)Longident&Lidentm`fln`f|@  < &LidentV@@ @@&stringO@@ @
@A@@CC@A5parsing/longident.mli[/3[/C@@@aA@`f}`f~@@@@E@  0 @/D@@;@ @
C@
@C@Q@@@@@%
@@@	@@ภ$true`f`f@  < MD@@ @M@@@AB@B@Av@@O@@@I@Ġ)Longident$Ldotaa@  < $Ldot=@@@ @
>@@ @
@BA@CC@A<\DF=\DZ@@@Bࠠ"id ֠aa@@@@@ @  0 @@@@@@aa@@@@E@	@@@)a@@@@ఐ)is_simpleaa@T@@@@C@(  0 @Z%@ @R@@@@ఐ-"idaa@@@D@,@@@@B@%@Ġ)Longident&Lapplybb@  < &Lapply@@@ @
@@ @ @BB@CC@A][]][n@@@C@bb@@@@E@Q@@@@@E@V@@@
@@W@@ภ%false&b'b@  < @@@@B@B@A@@@@@B@1d@@A._G]@@@@ @C@@2_GI@@డ#not>d?d@@$boolE@@ @ |@@ @ {@ @ z(%boolnotAA @@@*stdlib.mli "" ""@@&Stdlib\@@@@@A@I@@A@H@A@G@@ఐ")is_simplemdnd@@@@W@@B@T@@B@S@B@R@@ఐP"iddd@)@@zA@\A@
@#txtdd@  , #txt!a @9@@ @=@@  , #loc(Location!t@@ @<@A@A4parsing/asttypes.mlixx@@d@Aww@@c+ @@@@dd@@s@@B@PB@aC@Z@@|	@@~@@A@cB@O@ఐ*complex_iddd@*@@@L@@A@gA@f@A@e
@@ఐ"iddd	@@@@#locd
@L	@@j@@B@lB@yB@p&@@'@@'@@d@@!)@@@@@AA@@@ @}  0 @@@@@@@Π@ࠠ(iterator ؠff@@@,Ast_iterator(iterator@@ @*A@~  0 

@@	@$O@@@@ࠠ%super ٠g$g)@@@@@ @B@@డ0default_iterator,Ast_iterator0g,1gI@+@@ @
@8parsing/ast_iterator.mli R R@@.o@@,@@=g 
@@@ࠠ0type_declaration ڠHhMSIhMc@@@@I@@ @B@@)Parsetree0type_declaration@@ @B@@@ @B@@ @B@@ @B@  0 cbbccccc@YPJ@K@|T@@@@$self ܠvhMdwhMh@@@*  0 tssttttt@6}hMO~m@@@@@@"td ݠhMihMk@@@4  0 @ @@@V@@@@ఐ%superinrinw@5@@@@E@ @  0 @&P@@W@@@0type_declarationinxin@  , 0type_declaration@@ @

@@@ @	@)Parsetree0type_declaration@@ @	$unitF@@ @	@ @	@ @	@g     , )attribute@@@ @	&@)attribute@@ @	%@@ @	$@ @	#@ @	"@@@A^^@@A  , *attributes1@@@ @	,@$listI4)attribute@@ @	+@@ @	*2@@ @	)@ @	(@ @	'@A0@A__@@B  , *binding_opN@@@ @	1@K*binding_op@@ @	0H@@ @	/@ @	.@ @	-@BF@A``@@@C  , $cased@@@ @	6@a$case@@ @	5^@@ @	4@ @	3@ @	2@C\@AaACaAb@@D  , %casesz@%@@ @	<@I{$case@@ @	;@@ @	:y@@ @	9@ @	8@ @	7@Dw@A
bcebc@@7E  , 1class_declaration@@@@ @	A@1class_declaration@@ @	@@@ @	?@ @	>@ @	=@E@A c!c@@MF  , 1class_description@V@@ @	F@1class_description@@ @	E@@ @	D@ @	C@ @	B@F@A6d7d@@cG  , *class_expr@l@@ @	K@*class_expr@@ @	J@@ @	I@ @	H@ @	G@G@ALeMe0@@yH  , +class_field@@@ @	P@+class_field@@ @	O@@ @	N@ @	M@ @	L@H@Abf13cf1`@@I  , /class_signature@@@ @	U@/class_signature@@ @	T@@ @	S@ @	R@ @	Q@I@Axgacyga@@J  , /class_structure@@@ @	Z@ /class_structure@@ @	Y@@ @	X@ @	W@ @	V@J@Ahh@@K  , *class_type@@@ @	_@*class_type@@ @	^@@ @	]@ @	\@ @	[@K@Aii@@L  , 6class_type_declaration/@@@ @	d@,6class_type_declaration@@ @	c)@@ @	b@ @	a@ @	`@L'@AjjD@@M  , 0class_type_fieldE@@@ @	i@B0class_type_field@@ @	h?@@ @	g@ @	f@ @	e@M=@AkEGkE~@@N  , 7constructor_declaration[@@@ @	n@X7constructor_declaration@@ @	mU@@ @	l@ @	k@ @	j@NS@All@@O  , $exprq@@@ @	s@n*expression@@ @	rk@@ @	q@ @	p@ @	o@Oi@Amm@@)P  , )extension@2@@ @	x@)extension@@ @	w@@ @	v@ @	u@ @	t@P@Ann	@@?Q  , 5extension_constructor@H@@ @	}@5extension_constructor@@ @	|@@ @	{@ @	z@ @	y@Q@A(o		)o		^@@UR  , 3include_declaration@^@@ @	@3include_declaration@@ @	@@ @	@ @	@ @	~@R@A>p	_	a?p	_	@@kS  , 3include_description@t@@ @	@3include_description@@ @	@@ @	@ @	@ @	@S@ATq		Uq		@@T  , 1label_declaration@@@ @	@1label_declaration@@ @	@@ @	@ @	@ @	@T@Ajr		kr	
@@U  , (location@@@ @	@(Location!t@@ @	@@ @	@ @	@ @	@U@As

s

F@@V  , .module_binding@@@ @	@.module_binding@@ @	@@ @	@ @	@ @	@V@At
G
It
G
|@@W  , 2module_declaration$@@@ @	@!2module_declaration@@ @	@@ @	@ @	@ @	@W@Au
}
u
}
@@X  , 3module_substitution:@@@ @	@73module_substitution@@ @	4@@ @	@ @	@ @	@X2@Av

v

@@Y  , +module_exprP@@@ @	@M+module_expr@@ @	J@@ @	@ @	@ @	@YH@Aw

w
*@@Z  , +module_typef@@@ @	@c+module_type@@ @	`@@ @	@ @	@ @	@Z^@Ax+-x+Z@@[  , 7module_type_declaration|@'@@ @	@y7module_type_declaration@@ @	v@@ @	@ @	@ @	@[t@Ay[]y[@@4\  , 0open_declaration@=@@ @	@0open_declaration@@ @	@@ @	@ @	@ @	@\@Azz@@J]  , 0open_description@S@@ @	@0open_description@@ @	@@ @	@ @	@ @	@]@A3{4{@@`^  , #pat@i@@ @	@'pattern@@ @	@@ @	@ @	@ @	@^@AI|J|:@@v_  , 'payload@@@ @	@'payload@@ @	@@ @	@ @	@ @	@_@A_};=`};b@@`  , )signature@@@ @	@)signature@@ @	@@ @	@ @	@ @	@`@Au~cev~c@@a  , .signature_item @@@ @	@.signature_item@@ @	@@ @	@ @	@ @	@a@A@@b  , )structure@@@ @	@)structure@@ @	@@ @	@ @	@ @	@b@A @ @@@c  , .structure_item,@@@ @	@).structure_item@@ @	&@@ @	@ @	@ @	@c$@A A A
&@@d  , #typB@@@ @	@?)core_type@@ @	<@@ @	@ @	@ @	@d:@A B
'
) B
'
L@@e  , )row_fieldX@@@ @	@U)row_field@@ @	R@@ @	@ @	@ @	@eP@A C
M
O C
M
x@@f  , ,object_fieldn@@@ @	@k,object_field@@ @	h@@ @	@ @	@ @	@ff@A D
y
{ D
y
@@&g  , .type_extension@/@@ @	@.type_extension@@ @	~@@ @	@ @	@ @	@h|@A F

 F
@@<i  , .type_exception@E@@ @	@.type_exception@@ @	@@ @	@ @	@ @	@i@A% G& GP@@Rj  , )type_kind@[@@ @	@)type_kind@@ @	@@ @	@ @	@ @	@j@A; HQS< HQ|@@hk  , -value_binding@q@@ @	@-value_binding@@ @	@@ @	@ @	@ @	@k@AQ I}R I}@@~l  , 1value_description@@@ @
@1value_description@@ @
@@ @
@ @
@ @
 @l@Ag Jh J@@m  , /with_constraint@@@ @
	@/with_constraint@@ @
@@ @
@ @
@ @
@m@A} K~ K$@@n@A E

 E

@@h@@@@@C@@@@C@@@C@@C@@C@$@@ఐa$selfinin@G@@B@B@4@@ఐ^"tdinin@>@@B@B@B@B@H@@Q
@@@@B@C@N@@ࠠ#loc ޠjj@@@(Location!t@@ @C@  0 @e@@@ఐ"tdjj@o@@-
@)ptype_locjj@  , )ptype_loc@@ @ @@ @@G      , *ptype_name	(Asttypes#loc&stringO@@ @s@@ @r@@@A5parsing/parsetree.mli3333-@@   , ,ptype_params$listI)core_type@@ @v((variance@@ @x.+injectivity@@ @y@ @w@ @u@@ @t@A7@A%3.33&3.3m@@   , +ptype_cstrsC$"@@ @|&@@ @}o!t@@ @~@ @{@@ @z@BS@AA33B33@@   , *ptype_kind_$)type_kind@@ @@C^@AL44!M447@@(   , -ptype_privateja,private_flag@@ @@Di@AW484=X484Y@@3   , .ptype_manifestu&optionJS@@ @@@ @@Ey@Ag4p4uh4p4@@C   , 0ptype_attributesJ*attributes@@ @@F@Ar44s44@@N @Av44w44@@R @@@@j@@ఐ:"tdkk@@@  0 @@@X@@@*ptype_kindkk@P@@O@@ @@Ġ,Ptype_recordll@  < ,Ptype_record`@@ @@1label_declaration@@ @@@ @@AABBD@A6666@@@ Ġ"[]ll@  < @ @R@@@@AAB@A@@@@	@@@@E@@@E@F@@@/@@@@E@J@@J@@ఐN,empty_record
l
l@
ɰ@@@@@C@B@B@C@@C@a@@ఐ0#loc
-l
.l@k@@@@D@D@D@u@@#
@@v@@
>m
?m@@@@E@@@@@ภ"()
Im@  < @@ @N@@@@A@A@A
&@@@@@@@A
Qk@@@@@I@@@J@@AA@  0 
P
O
O
P
P
P
P
P@@@@@AA@@@ @  0 
T
S
S
T
T
T
T
T@@@@@@@ࠠ#typ ߠ
do

eo
@@@@e@@ @B@@/@@ @B@$unitF@@ @B@@ @B@@ @B@  0 
|
{
{
|
|
|
|
|@?9@:@
U@@@@$self ᠰ
o

o
@@@'  0 







@3
o

v	@@@@@@"ty ⠰
o

o
@@@1  0 







@ =@@
Z@@@@ఐ%super
p"
p'@N@@@@E@ @  0 







@&M@@
[@@@#typ
p(
p+@װ@@@@@C@@@@C@@@C@@C@@C@@@ఐU$self
p,
p0@;@@zB@B@(@@ఐR"ty
p1
p3@2@@B@B@B@B@<@@E
@@@@B@C@B@@ࠠ#loc 
q5=q5@@@@
!t@@ @C@  0 @W@@@ఐ"tyq5C q5E@a@@+
@(ptyp_loc&q5F'q5N@  , (ptyp_loc@@ @@@ @@A  , )ptyp_desc	.core_type_desc@@ @@@@A T
!
& T
!
@@@ O  , .ptyp_loc_stack.location_stack@@ @@B@A V
\
a
 V
\
@@ Q  , /ptyp_attributes@@ @@C@A W

 W

@@ R@A U
A
F U
A
[@@ P6.@@F@@@Vq590@@ఐĠ"tybrR\crR^@@@l  0 `__`````@a[@\@y\@@@)ptyp_descmrR_nrRh@>@@=@@ @@Ġ*Ptyp_tuple}snt~sn~@  < *Ptyp_tupleN@@ @@GB@@ @@@ @@ABAKL@AW dX d@@@3 VĠsnsn@@@@@Y@@F@@@F@  0 @?@@@Ġ"::snsnA  < 4@2B@AAB@A@@,@sn@@l@@F@%@Ġ"[]A@@A@@z@@F@+@@F@*!@@@sn@@B@@F@-@@F@,*@@snsn@@L@@E@/@@E@.4@@@\	@@@@E@08@@8@@ఐ-invalid_tuplesnsn@"@@@
h@@C@TxB@B@OC@S@C@RO@@ఐ#locsnsn@@@
@@D@YD@]D@\c@@#
@@d@Ġ,Ptyp_packagett@  < ,Ptyp_package@,package_type@@ @@AIAKL@A  @@@ ]@'t(t@@#loc)Longident!t@@E@C@@E@B@ࠠ%cstrs >t?t@@@ #loc!t@@ @G@@ @F@@ @H@ @E@@ @D@@Zt[t@@6@E@I@@@O@@.@@E@J@@@@డ3$List$iterpuqu@@@!a @ @@ @@ @@$listI@@ @
@@ @@ @@ @@(list.mli EE Eo@@,Stdlib__ListS"!@@@@

@@C@C@@@C@C@Šb@@C@C@@C@C@1@@C@@C@@0@@C@:@@C@@C@@C@  0 @Tz@{@]@@@@@
`&ࠠ"id%uu@@@5@@uu@@.@@uu@@@5@F@$@@ఐ
ݠ0simple_longidentuu@հ@@@
٠
@@D@@@D@
@@D@@D@  0 @=-\@(@^@@@@ఐ5"iduu@@@j@@!@@@@D@D@@@Au
u@@@|@@D@@D@D@  0 @]@@@@ఐ⠐%cstrs u!u@h@@@@D@D@D@s@@@@@@2v	3v	@@@@E@L@@@@ภ<v	@@@@B@@@AArRV@@@@@.@@@/@@AA@  0 @??@@@@@@@@@@AA@@@ @b  0 DCCDDDDD@@@@@@@ࠠ#patETx		Ux		@@@@	U@@ @aB@e@	'pattern@@ @pB@lG@@ @B@m@ @nB@f@ @gB@d  0 kjjkkkkk@@
@Y@@@@$selfG~x		x		@@@&  0 |{{|||||@2x		 Giv@@@@@@#patHx		x		 @@@0  0 @ <@@`@@@@ఐ#paty	#	3y	#	6@D@@a@@RB@kB@`B@cB@-B@wB@uB@o  0 @$0@@@)ppat_descy	#	7y	#	@@  , )ppat_desc[@@ @	j,pattern_desc@@ @@@  , (ppat_loc!t@@ @@A	@A W\ Wq@@	w j  , .ppat_loc_stack@@ @@B@A rw r@@	 k  , /ppat_attributes =@@ @ @C@A  @@	 l@A 9> 9V@@	 iH/@@)@@ @v9@Ġ.Ppat_constructz	F	Lz	F	Z@  < .Ppat_construct:@@ @Z@#loc!t@@ @9@@ @8{ؠ#loc@@ @>@@ @=@@ @<@@ @?@ @;@@ @:@BEAQR@A  @@@	 s@2z	F	\3z	F	]@@20@@F@@@F@@Ġ$SomeBz	F	_Cz	F	c@  < @ @T@A@AAB@A!@@@Pz	F	eQz	F	f@@<;9@@F@@@F@@@F@@ঠ)ppat_deschz	F	jiz	F	s@Ġ*Ppat_tuplepz	F	vqz	F	@  < *Ppat_tuplev@7@@ @7@@ @6@ADAQR@AG jlH j@@@
# r@z	F	z	F	@@&@@F@@@F@F@@@@!@@@@F@@@@z	F	iz	F	@@5@@F@F@F@@!pIz	F	z	F	@z	F	hz	F	@@@@z	F	dz	F	@@[@F@@@@m@@@@F@@@F@@@F@[@@F@@F@@@F@@@@z	F	@@@@F@@@@డ2Builtin_attributes.explicit_arity2Builtin_attributes{		{		@@)Parsetree*attributes@@ @$boolE@@ @@ @@>parsing/builtin_attributes.mli MLL ML|@@2Builtin_attributesL@@@@@D@ @@D@@D@  0 @E_@@ @G@@_@b@@@@ఐ#pat{		{		@k@@e@/ppat_attributes{		{		@:
@@@@@E@'E@.E@,&@@I
@@h@@D@0E@&,@ఐ%super2|		3|		@
ʰ@@/@@F@: @4?@#pat>|		?|		@Ӱ@@@;@@D@9@@@D@8@@D@7@D@6@D@5S@@ఐޠ$selfX|		Y|		@İ@@B@bB@FB@GB@hg@@ఐʠ!pl|		m|		@q@@@@E@EE@IE@H{@@E
@@
S@@B@gC@D@@}

}

@@@@F@@@@@ఐt%super~

"~

'@*@@@@F@U @O@#pat~

(~

+@3@@@@@D@T@2@@D@S0@@D@R@D@Q@D@P@@ఐ>$self~

,~

0@$@@\@@ఐ8#pat~

1~

4@ @@@@7@@TC@_@@Ay	#	'
5
<@@W  0 @@@@@ࠠ#locJ @
>
F @
>
I@@@@@ @jC@h  0 @*@@@ఐ^#pat @
>
L @
>
O@F@@:
@(ppat_loc @
>
P @
>
X@*
@@@@ @
>
B@@ఐu#pat A
\
f A
\
i@]@@O  0       @O2,@-@c@@@)ppat_desc
 A
\
j A
\
s@P@@L@@ @o@Ġ*Ppat_tuple B
y
 B
y
@Ġ0' B
y
( B
y
@/@@@@@@F@{@@F@z  0 ,++,,,,,@,@@@Ġ6 B
y
7 B
y
A@; B
y
@@@@F@@Ġ	
AJ@@
A@Ǡ@@F@@@F@@@@M B
y
@@٠@@F@@@F@$@@V B
y
W B
y
@@@@E@@@E@.@@@C	@@@@E@2@@2@@ఐ.-invalid_tuplel B
y
m B
y
@@@@@@C@
B@qB@C@@C@I@@ఐ#loc B
y
 B
y
@@@	@@D@D@D@]@@#
@@^@Ġ+Ppat_record C

 C

@  < +Ppat_record@`}#loc|!t@@ @F@@ @EL@@ @G@ @D@@ @C+closed_flag@@ @H@BGAQR@A jl j@@@b uĠа C

 C

@@@@@,+)@@E@@@E@r@@E@@E@@@E@@@ C

 C

@@*@@E@@@@L C

@@"@@E@@@@@ఐ+,empty_record C

 C

@@@@u@@C@B@C@@C@@@ఐ/#loc C

	 C

@@@@@D@D@D@@@!
@@@Ġ.Ppat_construct D

 D

@#ࠠ"idK& D

' D

@@@'%@@ @@@ @  0 +**+++++@+@@@@4 D

5 D

@@'&%#@@E@@@E@@@E@@@E@@E@@@E@@@@0M D

@@@@E@!@@!@@ఐR0simple_longidentZ D

[ D
@
J@@@NG@@C@@@C@@@@C@@C@  0 dccddddd@eIC@D@}d@@@@ఐQ"idw D
	x D
@@@xf@@D@D@D@@@D@ @@,@@@Ġ+Ppat_record E E@ࠠ&fieldsL E E%@@@@@ @@@ @àD@@ @@ @@@ @@@ E' E(@@@@E@@@@' E)@@@@E@@@@@డ$List$iter F-3 F-<@W@@@@Ġ@@C@?C@D@@C@CC@*{@@C@VC@+@C@,C@i@@C@@C@@h@@C@r@@C@@C@@C@  0 @]W@X@e@@@@@Nࠠ"idM F-C F-E@@@5@@ F-G F-H@@.@@ F-B F-I@@@5@F@-$@@ఐ0simple_longident F-M F-]@
@@@
@@D@6@@D@5@@D@4@D@3  0 '&&'''''@=-\@(@@f@@@@ఐ5"id: F-^; F-`@@@j@@!@@@@D@ND@M@@AD F-=E F-a@@@|@@D@%@D@$D@P  0 HGGHHHHH@]@@@@ఐ&fieldsX F-bY F-h@h@@ޠ@@D@#D@WD@Rs@@@@B@"@@l Giom Gip@@@@E@l@@l@@ภ.v Git@-@@@
B@bu@@A{ A
\
`@@K@@@@@@@@AA@  0 zyyzzzzz@@@@@AA@@&!@ @  0 ~}}~~~~~@@@@@ @@ࠠ$exprO I| I|@@@@@@ @B@@F*expression@@ @B@@@ @B@@ @B@@ @B@  0 @;\V@W@_@@@@$selfQ I| I|@@@&  0 @2 I|~ ^@@@@@@#expR I| I|@@@0  0 @ <@@h@@@@ఐ#exp J J@D@@i@@RB@B@B@B@TB@B@B@  0 @$0@@@)pexp_desc J J@  , )pexp_desc[@@ @c/expression_desc@@ @_@@  , (pexp_loc
!t@@ @`@A	@A	8=	8R@@   , .pexp_loc_stack@@ @a@B@A		SX		Sw@@   , /pexp_attributes 	w@@ @b@C@A	
x}	
x@@ @A		7@@ H/@@)@@ @
9@Ġ.Pexp_construct4 K5 K@  < .Pexp_construct:@@ @2@
#loc!t@@ @@@ @	@@ @@@ @@BIAde@A
5$$
5$$@@@ @Y KZ K@@@@F@@@F@q@Ġ$Somei Kj K@'ঠ)pexp_descv Kw K@Ġ*Pexp_tuple~ K K@  < *Pexp_tupleJ@
E@@ @@@ @@AHAde@A
U0$`$b
V0$`$@@@1 @ K K@@@@F@.@@F@-F@$@@@!@@@@F@&@@@ K K@@	@@F@:F@6F@'@!eS K K@ K K@@@@@M@@m@@F@<@@F@;@@@ K@@@@F@=@@@డ.explicit_arity2Builtin_attributes L L"@@@@@@D@G@@D@F@D@E  0 @0?@@ @8G@)@0@j@@@@ఐ(#exp L# L&@@@
@/pexp_attributes L' L6@߰
@@@@E@NE@UE@S&@@2
@@G@@D@WE@M,@ఐ%super M:B M:G@@@@@F@a @[?@$expr M:H M:L@
@@@@@D@`@
@@D@_
@@D@^@D@]@D@\S@@ఐ$self7 M:M8 M:Q@i@@B@B@mB@nB@g@@ఐ!eK M:RL M:S@q@@)@@E@lE@pE@o{@@E
@@2@@B@C@k@@a Nzb Nz@@e@@F@?u@@u@@ఐS%superq Or O@	@@n@@F@| @v@$expr} O~ O@_@@@z@@D@{@^@@D@z\@@D@y@D@x@D@w@@ఐ㠐$self O O@ɰ@@\@@ఐݠ#exp O O@Ű@@@@7@@TC@@@A J P@@W  0 @@@@@ࠠ#locT Q Q@@@@@ @C@  0 @@@@ఐ#exp Q Q@@@
@(pexp_loc Q Q@ϰ
@@@@ Q@@ఐ#exp R R@@@  0 @2,@-@k@@@)pexp_desc R R@@@@@ @@Ġ*Pexp_tuple S S@~Ġ S S@@@@@l@@F@@@F@  0 

@,@@@Ġ	l S SA	j@ S@@{@@F@@Ġ	h	
A)@@
A@@@F@@@F@@@@, S@@@@F@@@F@$@@5 S6 S
 @@@@E@@@E@.@@@C	@@A@@E@2@@2@@ఐ
-invalid_tupleK S
L S
@@@@@@C@[B@B@VC@Z@C@YI@@ఐ#locc S
d S
@@@@@D@`D@dD@c]@@#
@@^@Ġ+Pexp_recordx T

y T

'@  < +Pexp_recordD@?\#loc	[!t@@ @@@ @@@ @@ @@@ @@@ @@@ @@BKAde@Ah>&&i>&&N@@@D Ġ T

) T

+@@@@@/.,@@E@@@E@Ǡ@@E@@E@@@E@@@ T

- T

.@@-&@@E@@@E@@@@S T

/@@@@E@@@@@ఐ,empty_record T

3 T

?@@@@[@@C@kB@fC@j@C@i@@ఐ6#loc T

@ T

C@
@@s@@D@pD@tD@s@@!
@@@Ġ*Pexp_apply U
D
J U
D
T@  < *Pexp_apply@h@@ @٠Π)arg_label@@ @ܠy@@ @@ @@@ @@BEAde@A%""%""@@@ @% U
D
V& U
D
W@@@@E@@Ġ90 U
D
Y1 U
D
[@8@@@@'&@@E@ޠ@@E@@E@@@E@1@@@?B U
D
\@@E@@E@6@@6@@ఐ'no_argsO U
D
`P U
D
g@@@@@@C@{B@vC@z@C@yK@@ఐ#loce U
D
hf U
D
k@@@@@D@D@D@_@@!
@@`@Ġ(Pexp_letz V
l
r{ V
l
z@  < (Pexp_letF@
W(rec_flag@@ @Π
G/-value_binding@@ @@@ @Ϡ@@ @@CBAde@A
]eg
^e@@@9 @ V
l
| V
l
}@@@@E@@Ġ V
l
 V
l
@@@@@$#@@E@@@E@@@ V
l
 V
l
@@@@E@@@@? V
l
@@@@E@@@@@ఐ)empty_let V
l
 V
l
@@@@I@@C@{B@C@@C@@@ఐ$#loc V
l
 V
l
@@@a@@D@D@D@@@!
@@@Ġ*Pexp_ident W

 W

@  < *Pexp_ident@
#loc
!t@@ @@@ @@A@Ade@A

@@@ ࠠ"idU W

 W

@@@
!t@@ @5H@@@ @  0       @A@@@@@.@@)@@I@@@@Ġ.Pexp_construct2 X

3 X

@%"id: X

; X

@@@(E@%F@G@ @@H@!@@I X

J X

@@@@I@@@I@-@@@!S X

@@V@@I@2@@2@@_@@Z@@H@6@Ġ*Pexp_fieldc Y

d Y

@  < *Pexp_field/@@@ @D#locC!t@@ @@@ @@BLAde@ABD&&CD&'@@@ @ Y

 Y

@@@@H@`@v"id Y

 Y

@@@"O@@G@m@@@0 Y

@@@@H@r@@r@@@@@@G@v@Ġ-Pexp_setfield Z

 Z

@  < -Pexp_setfieldo@@@ @#loc!t@@ @@@ @@@ @@CMAde@AF''F''X@@@b @ Z

 Z

@@&@@G@#@"id Z

 Z

@@@&@@F@$@@ Z

 Z

@@;@@G@&@@@< Z

@@@@G@'@@@@@@@@F@/@Ġ(Pexp_new [  [ @  < (Pexp_new@#loc@@ @@@ @@AVAde@A]**]**@@@ "id [ 	 [ @@@@@E@4@@@!@@@@F@6@@@@@@@@E@>@@ఐ0simple_longident  [ ! [ %@@@@
@@C@@@C@@@C@@C@  0 *))*****@L@@Cl@@@@ఐ'"id= [ &> [ (@@@B,@@D@D@D@@@D@@@,@@@Ġ+Pexp_recordV \)/W \):@ޠࠠ&fieldsZ_ \)<` \)B@@@@@ @L@@ @K@@ @M@ @J@@ @I@@w \)Dx \)E@@@@E@O@@E@N@@@+ \)F@@@@E@P@@@@డT$List$iter ]JP ]JY@!@@@@@@C@C@@@C@C@Ӡ@@C@C@@C@C@3@@C@@C@@2@@C@<@@C@@C@@C@  0 @a[@\@m@@@@@b\ࠠ"id[ ]J` ]Jb@@@5@@ ]Jd ]Je@@.@@ ]J_ ]Jf@@@5@F@$@@ఐߠ0simple_longident ]Jj ]Jz@װ@@@۠@@D@@@D@@@D@@D@  0 @=-\@(@
n@@@@ఐ5"id ]J{ ]J}@@@j@@!@@@@D@D@@@A ]JZ ]J~@@@|@@D@@D@D@  0 @]@@@@ఐà&fields" ]J# ]J@h@@@@D@D@ D@s@@@@B@@@6 ^7 ^@@:@@E@RW@@W@@ภ@ ^@@@@B@`@@AE R@@6@r@@@@@@@A~A@  0 DCCDDDDD@{@@@@AA@@@ @  0 HGGHHHHH@@@@@@@ࠠ5extension_constructor]X `Y `@@@@Y@@ @B@@5extension_constructor@@ @B@K@@ @B@@ @B@@ @B@  0 onnooooo@@@g@@@@$self_ ` `@@@&  0 @2 ` d0=@@@@@@"ec` ` `@@@0  0 @ <@@p@@@@ఐ%super a a@A@@@@E@ @  0 @&L@@q@@@5extension_constructor a a@o@@@@@C@@n@@C@l@@C@@C@@C@@@ఐU$self a a@;@@yB@B@(@@ఐR"ec a a@2@@B@B@B@:@@C@@@@B@C@@@ఐk"ec b b@K@@N@)pext_kind b b@  , )pext_kind@@ @:extension_constructor_kind@@ @@A  , )pext_name#loc@@ @@@ @@@
@A<<<<@@   , (pext_loc !t@@ @@B@A=="==8@@   , /pext_attributes'@@ @@C"@A=9=>=9=Z@@ @A<<<=@@ ְ>6@@0@@ @@Ġ+Pext_rebindG c
H c@  < +Pext_rebindA@@ @@'#loc&!t@@ @@@ @@AA@BB@A%?G?I&?G?i@@@ ݠࠠ"idag ch c@@@@@ @@@ @@@@+
@@h@@E@@@@@ఐv0simple_longident~ c c,@n@@@rk@@C@@@C@d@@C@@C@  0 @,&@'@r@@@@ఐ4"id c- c/@@@O@@D@D@D@@@D@@@,@@9@@ d06 d07@@@@E@@@@@ภr d0;1@q@2@@MB@
@@A b6@@O  0 @@@@8@@Q@@A.9A@]  0 @+@@@@AC;A@@fa@ @  0 @B@@@@@@@ࠠ*class_exprb fCI fCS@@@@@@ @B@@*class_expr@@ @+B@@@ @mB@@ @B@@ @B@  0 @{@@o@@@@$selfd fCT fCX@@@&  0 @2 fCE l
@@@@@@"cee fCY fC[@@@0  0 





@ <@@&t@@@@ఐ%super# g^b$ g^g@@@ @@E@ @  0 &%%&&&&&@&L@@?u@@@*class_expr3 g^h4 g^r@Ű@@@0@@C@@@@C@@@C@@C@
@C@@@ఐU$selfM g^sN g^w@;@@yB@B@(@@ఐR"ce] g^x^ g^z@2@@B@&B@B@B@<@@E
@@D@@B@"C@B@@ࠠ#locfw h|x h|@@@z!t@@ @%C@#  0 }||}}}}}@W@@@ఐ"ce h| h|@a@@+
@'pcl_loc h| h|@  , 'pcl_loc@@ @c@@ @a@A  , (pcl_desc	F/class_expr_desc@@ @`@@@AnpGGopGG@@J   , .pcl_attributes@@ @b@B@AwrHHxrHH0@@S @A{qGG|qGH@@W +#@@;5@@ h|%@@ఐ"ce i i@@@a  0 @VP@Q@v@@@(pcl_desc i i@3@@2@@ @*@Ġ)Pcl_apply j j@  < )Pcl_applyC@@ @@@@ @)arg_label@@ @	X@@ @@ @@@ @@BC@HH@AJcJeJcJ@@@ @ j j@@"@@E@4  0 @B@@@Ġ j j@@@@@('@@E@=	}@@E@>@E@<@@E@;@@@C" j@@@@E@?@@@@ఐz'no_args/ j0 j@@@@@@C@URB@B@PC@T@C@S4@@ఐР#locG jH j@@@@@D@ZD@^D@]H@@#
@@I@Ġ*Pcl_constr\ k] k@  < *Pcl_constr}@9#loc8!t@@ @}@@ @|0+@@ @@@ @~@B@@HH@A@vHfHhAvHfH@@@ ࠠ"idg k k@@@$"@@ @H@@ @G@@ k k@@#M@@E@J@@E@I@@@= k@@@@E@K@@@@ఐ0simple_longident k k@@@@@@C@f@@C@e@@C@d@C@c  0 @93@4@w@@@@ఐA"id k k	@@@e@@D@oD@vD@t@@D@s@@,@@@@ l
 l
@@:@@E@M@@@@ภ l
@@@@B@@@A i@@@1@@g@@@h@@AA@  0 @@@@@AA@@@ @x  0 @@@@@@@ࠠ+module_typeh n# n.@@@@@@ @B@{@+module_type@@ @B@@@ @B@@ @B@|@ @}B@z  0         @)JD@E@ *s@@@@$selfj $ n/ % n3@@@&  0  " ! ! " " " " "@2 + n , r@@@@@@#mtyk 7 n4 8 n7@@@0  0  5 4 4 5 5 5 5 5@ <@@ Ny@@@@ఐ-%super K o:> L o:C@@@H@@E@ @  0  N M M N N N N N@&L@@ gz@@@+module_type [ o:D \ o:O@H@@@X@@C@@G@@C@E@@C@@C@@C@@@ఐU$self u o:P v o:T@;@@yB@B@~(@@ఐR#mty  o:U  o:X@2@@B@B@B@:@@C@@j@@B@C@@@ఐk#mty  pZd  pZg@K@@N@)pmty_desc  pZh  pZq@  , )pmty_desc@@ @R0module_type_desc@@ @@@  , (pmty_loc!t@@ @@A	@AR;R@R;RU@@_  , /pmty_attributes@@ @@B@ARVR[RVRw@@h@ARRRR:@@l.&@@ @@ @|@Ġ*Pmty_alias  qw}  qw@  < *Pmty_alias1@@ @@#loc!t@@ @@@ @@AF@GG@AT5T7T5TV@@@ࠠ"idl  qw  qw@@@@@ @@@ @@@@+
@@X@@E@@@@@ఐ0simple_longident! qw! qw@ @@@@@C@@@C@@@C@@C@  0 !!!!!!!!@,&@'@!3{@@@@ఐ4"id!- qw!. qw@@@O@@D@D@D@@@D@@@,@@)@@!B r!C r@@@@E@@@@@ภ!L r!@@"@@=B@@@A!Q pZ^&@@?  0 !M!L!L!M!M!M!M!M@@@@	(@@A@@A)A@M  0 !P!O!O!P!P!P!P!P@@@@@A3+A@@VQ@ @ Q  0 !T!S!S!T!T!T!T!T@2@@@@0@@ࠠ0open_descriptionm!d t!e t@@@@e@@ @ vB@ T@@@ @ uB@ [@@ @ tB@ \@ @ ]B@ U@ @ VB@ S  0 !y!x!x!y!y!y!y!y@i@@!x@@@@$selfo! t! t@@@$  0 !!!!!!!!@0! t! u@@@@@@#opnp! t! t@@@.  0 !!!!!!!!@ :@@!}@@@@ఐ%super! u! u@I@@@@D@ j @ d  0 !!!!!!!!@$H@@!~@@@0open_description! u! u@l@@@@@B@ i@k@@B@ hi@@B@ g@B@ f@B@ e@@ఐS$self! u! u@9@@uB@ wB@ W(@@ఐP#opn! uX@1Y@@{B@ |B@ ^7@@@]@@v8@@AS^A@  0 !!!!!!!!@P@@@@Ah`A@@@ @   0 !!!!!!!!@g@@@@e@@ࠠ/with_constraintq" w " w @@@@@@ @ B@ @i@@ @ B@ @@ @ B@ @ @ B@ @ @ B@   0 """"""""@@@"/|@@@@$selfs") w "* w @@@$  0 "'"&"&"'"'"'"'"'@0"0 w "1 |@@@@@@"wct"< w "= w @@@.  0 ":"9"9":":":":":@ :@@"S @@@@@ఐ2%super"P x $"Q x )@@@M@@E@  @   0 "S"R"R"S"S"S"S"S@&J@@"l A@@@/with_constraint"` x *"a x 9@@@@]@@C@ @@@C@ @@C@ @C@ @C@ @@ఐU$self"z x :"{ x >@;@@wB@ B@ (@@ఐR"wc" x ?" x A@2@@~B@ B@ 8@@A@@m@@B@ C@ >@ఐg"wc" yCM" yCO@G@@J@Ġ*Pwith_type" zU[" zUe@  < *Pwith_typeX/with_constraint@@ @@#loc!t@@ @@@ @k@@ @@B@@FF@AR``R``@@@nAࠠ"idu" zUg" zUi@@@!t@@ @ E@ @@ @ @@" zUk" zUl@@@@F@ @@@>" zUm@@@@@Ġ,Pwith_module" {nt" {n@  < ,Pwith_moduleG@#loc#@@ @@@ @#loc!t@@ @@@ @@BA@FF@AWaTaVWaTa@@@BH"id# {n# {n@@@$E@@E@ @@#% {n#& {n@@#!@@F@ @@F@ @@@:#/ {n@@@@@@@@@@ఐ20simple_longident#: {n#; {n@*@@@.'@@C@ @@C@  @@C@ @C@   0 #D#C#C#D#D#D#D#D@{u@v@#] B@@@@ఐ"id#W {n#X {n@@@F@@D@ D@ D@ @@D@ @@,@@N@@#l |#m |@@[@@[@@ภ+#s |C@*@D@@_B@ @@A#x yCGH@@a  0 #t#s#s#t#t#t#t#t@!@@@+J@@c@@A@KA@m  0 #w#v#v#w#w#w#w#w@=@@@@AUMA@@vq@ @!  0 #{#z#z#{#{#{#{#{@T@@@@R@@ࠠ+module_exprw# ~# ~@@@@@@ @!B@!@C+module_expr@@ @!B@!~@@ @"B@!@ @!B@!@ @!B@!  0 ########@@@#@@@@$selfy# ~# ~@@@&  0 ########@2# ~# 5B@@@@@@"mez# ~# ~@@@0  0 ########@ <@@# D@@@@ఐ%super# # @t@@@@E@! @!  0 ########@&L@@# E@@@+module_expr# # @@@@@@C@!@@@C@!@@C@!@C@!@C@!@@ఐU$self$ $ @;@@yB@!B@!(@@ఐR"me$ $ @2@@B@!B@!B@!:@@C@@@@B@!C@!@@ఐk"me$/ $0 @K@@N@)pmod_desc$6 $7 @  , )pmod_desc@@ @0module_expr_desc@@ @@@  , (pmod_locC!t@@ @@A	@Agccgcc@@H  , /pmod_attributes@@ @@B@Ahcchcc@@I@A!fcc"fcc@@G.&@@ @@ @!|@Ġ*Pmod_ident$j 
$k 
@  < *Pmod_ident1@@ @@J#locI!t@@ @@@ @@A@@GG@AHld d"Ild dA@@@$Jࠠ"id{$ 
$ 
@@@@@ @!@@ @!@@@+
@@X@@E@!@@@@ఐ0simple_longident$ 
!$ 
1@@@@@@C@"@@C@"@@C@"@C@"  0 $$$$$$$$@,&@'@$ F@@@@ఐ4"id$ 
2$ 
4@@@O@@D@"D@"D@"@@D@"@@,@@)@@$ 5;$ 5<@@@@E@!@@@@ภ$ 5@!@@"@@=B@"%@@A$ &@@?  0 $$$$$$$$@@@@	(@@A@@A)A@M  0 $$$$$$$$@@@@@A3+A@@VQ@ @"3  0 $$$$$$$$@2@@@@0@@ࠠ.structure_item|$ HN$ H\@@@@@@ @"YB@"6@.structure_item@@ @"gB@"=@@ @"B@">@ @"?B@"7@ @"8B@"5  0 %%%%%%%%@k@@%% C@@@@$self~% H]%  Ha@@@&  0 %%%%%%%%@2%& HJ%' #@@@@@@"st%2 Hb%3 Hd@@@0  0 %0%/%/%0%0%0%0%0@ <@@%I H@@@@ఐ(%super%F gk%G gp@ް@@C@@E@"M @"G  0 %I%H%H%I%I%I%I%I@&L@@%b I@@@.structure_item%V gq%W g@}@@@S@@C@"L@|@@C@"Kz@@C@"J@C@"I@C@"H@@ఐU$self%p g%q g@;@@yB@"ZB@"9(@@ఐR"st% g% g@2@@B@"bB@"XB@"[B@"@<@@E
@@ g@@B@"^C@"WB@@ࠠ#loc% % @@@!t@@ @"aC@"_  0 %%%%%%%%@W@@@ఐ"st% % @a@@+
@(pstr_loc% % @  , (pstr_loc@@ @@@ @@A  , )pstr_desc	i3structure_item_desc@@ @@@@Aff"ffA@@mQ@AfBfGfBf\@@qR"@@2,@@% @@ఐ"st% % @@@X  0 %%%%%%%%@MG@H@% J@@@)pstr_desc% % @*@@)@@ @"f@Ġ)Pstr_type% % @  < )Pstr_type:@@ @@(rec_flag@@ @ɠ@@ @@@ @@BC@OO@Agggh@@@V@& & @@@@E@"n;@Ġ+&" &# @*@@@@@@E@"t@@E@"sK@@@4&- @@k@@E@"uP@@P@@ఐ"*empty_type&: &; @"@@@$@@C@":B@"BB@"C@"@C@"g@@ఐ#loc&R &S @q@@$@@D@"D@"D@"{@@#
@@|@Ġ*Pstr_value&g &h @  < *Pstr_valuen@D(rec_flag@@ @4@@ @@@ @@BA@OO@ADffEff@@@ T@& & @@@@E@"|@Ġ& & @@@@@
@@E@"@@E@"@@@1& @@@@E@"@@@@ఐ#y)empty_let& & @"@@@%(@@C@"kB@"C@"@C@"@@ఐ!#loc& & @ڰ@@%@@@D@"D@"D@"@@!
@@@@& & @@@@E@"@@@@ภ& !@@@@@@A& @@@	@@6@@@7@@AA@  0 &&&&&&&&@@@@@AA@@@ @#-  0 &&&&&&&&@@@@@@@ࠠ.signature_item& )/& )=@@@@@@ @#SB@#0@.signature_item@@ @#aB@#7@@ @#B@#8@ @#9B@#1@ @#2B@#/  0 ''''''''@@@' G@@@@$self' )>' )B@@@&  0 ''''''''@2' )+' .;@@@@@@"sg') )C'* )E@@@0  0 '''&'&''''''''''@ <@@'@ L@@@@ఐ %super'= HL'> HQ@հ@@ :@@E@#G @#A  0 '@'?'?'@'@'@'@'@@&L@@'Y M@@@.signature_item'M HR'N H`@@@@ J@@C@#F@@@C@#E@@C@#D@C@#C@C@#B@@ఐU$self'g Ha'h He@;@@yB@#TB@#3(@@ఐR"sg'w Hf'x Hh@2@@B@#\B@#RB@#UB@#:<@@E
@@"^@@B@#XC@#QB@@ࠠ#loc' jr' ju@@@!t@@ @#[C@#Y  0 ''''''''@W@@@ఐ"sg' jx' jz@a@@+
@(psig_loc' j{' j@  , (psig_loc@@ @
@@ @	@A  , )psig_desc	 `3signature_item_desc@@ @@@@AUbUgUbU@@ d@AUUUU@@ h"@@2,@@' jn@@ఐ"sg' ' @@@X  0 ''''''''@MG@H@' N@@@)psig_desc' ' @*@@)@@ @#`@Ġ)Psig_type' ' @  < )Psig_type:@@ @9@(rec_flag@@ @# @@ @%@@ @$@BA@PP@AV9V;V9Vj@@@ @( ( @@@@E@#h;@Ġ"( ( @!@@@@ @@E@#n@@E@#mK@@@4($ @@k@@E@#oP@@P@@ఐ$*empty_type(1 (2 @$	@@@&@@C@#:B@#<B@#C@#@C@#g@@ఐ#loc(I (J @q@@&@@D@#D@#D@#{@@#
@@|@Ġ1Psig_modtypesubst(^ (_ @  < 1Psig_modtypesubstn@!	7module_type_declaration@@ @/@AI@PP@A2XX3XY@@@!'ঠ)pmtd_type(v (w @  , )pmtd_type@@ @`u@@ @]@@ @\@A  , )pmtd_name`#loc]@@ @[@@ @Z@@
@A[&\\\&\\@@!76  , /pmtd_attributes@@ @^@B@Ad(\\e(\\@@!@8  , (pmtd_loc'!t@@ @_@C"@Ap)]]q)]]3@@!L9@At'\\u'\\@@!P7Ġ$None( ( @  < ('s@@@@AAB@A(@@(&@@@@=@@E@#~@@E@#}@@A( ( @@c@@E@#E@#@@@l@@@@E@#@@@@ఐ$E	$module_type_substitution_missing_rhs( ( )@#@@@'Y@@C@#B@#C@#@C@#
@@ఐ[#loc( *( -@@@'q@@D@#D@#D@#@@!
@@@@( .4( .5@@E@@E@#*@@*@@ภ) .9@@@@1@@A)
 @@3@C@@p@@@q@@AA@  0 )	)))	)	)	)	)	@@@@@AA@@@ @%  0 )
)))
)
)
)
)
@@@@@@@ࠠ)row_field) AG) AP@@@@"@@ @%'B@%@!)row_field@@ @%aB@%!@@ @%NB@%@ @%
B@%@ @%B@%  0 )4)3)3)4)4)4)4)4@2SM@N@)M K@@@@$self)G AQ)H AU@@@&  0 )E)D)D)E)E)E)E)E@2)N AC)O g@@@@@@%field)Z AV)[ A[@@@0  0 )X)W)W)X)X)X)X)X@ <@@)q P@@@@ఐ"P%super)n ^b)o ^g@"@@"k@@E@% @%  0 )q)p)p)q)q)q)q)q@&L@@) Q@@@)row_field)~ ^h) ^q@y@@@"{@@C@%@x@@C@%v@@C@%@C@%@C@%@@ఐU$self) ^r) ^v@;@@yB@%(B@%(@@ఐR%field) ^w) ^|@2@@B@%5B@%0B@%&B@%)B@%>@@G@@$@@B@%,C@%%D@@ࠠ#loc) ~) ~@@@!t@@ @%/C@%-  0 ))))))))@Y@@@ఐ%field) ~) ~@c@@-
@'prf_loc) ~) ~@  , 'prf_loc@@ @@@ @@A  , (prf_desc	".row_field_desc@@ @@@@A  @@" _  , .prf_attributesT@@ @@B@A 	 	'@@" a@A  @@" `+#@@;5@@* ~%@@ఐ%field* * @@@c  0 ********@VP@Q@*( R@@@(prf_desc* * @3@@2@@ @%4@Ġ$Rtag*, *- @  < $RtagC@@ @@#loc%label@@ @@@ @$boolE@@ @	@@ @@@ @@C@@BB@A @B @m@@@" b@*W *X @@%#@@E@%?@@E@%>L@@@"@@E@%@Q@@@ #@@E@%B@@E@%AZ@@@C@@@@E@%C^@@^@@ภ/*w *x @/@@@Df@Ġ(Rinherit* * @  < (RinheritX@B@@ @@AA@BB@AV  "W  9@@@#2 c@* * @@O@@E@%H@@@@@@@E@%I@@@@డ)m!=*  * @@!a @ S@$p@@ @ R@ @ Q@ @ P&%equalBA$j@@@@$j y$k y@@$iQ@@@!@@C@%`C@%V@@@C@%U@C@%T@C@%S@@ఐ%field* * @c@@)@.prf_attributes* * @
@@@@ภ* * @@@@+C@%h@@@@$7@@C@%jD@%^@ภ* * @@@@B@%m@ఐ)#err+
 + !@)5@@@)@@C@%s@)@@C@%rB@%lC@%q@C@%p@C@%o@@ఐa#loc+% "+& %@@@)@@D@%}D@%D@%@@	LIn variant types, attaching attributes to inherited subtypes is not allowed.+7 &1+8 g@@+: &0@@)@@D@%|D@%D@%.@@9@@,/@+D @@G1@@A+F @@3@C@@y@@@z@@AA@  0 +E+D+D+E+E+E+E+E@@@@@AA@@(#@ @%  0 +I+H+H+I+I+I+I+I@@@@@@@ࠠ,object_field+Y +Z @@@@$Z@@ @&B@%@$,object_field@@ @&PB@%$@@ @&=B@%@ @& B@%@ @%B@%  0 +p+o+o+p+p+p+p+p@=^X@Y@+ O@@@@$self+ + @@@&  0 ++++++++@2+ + @@@@@@%field+ + @@@0  0 ++++++++@ <@@+ T@@@@ఐ$%super+ + @$B@@$@@E@& @&  0 ++++++++@&L@@+ U@@@,object_field+ + @ @@@$@@C@&
@ @@C@& @@C@&@C@&
@C@&	@@ఐU$self+ + @;@@yB@&B@%(@@ఐR%field+ + @2@@B@&(B@&#B@&B@&B@&>@@G@@&@@B@&C@&D@@ࠠ#loc,  , @@@ !t@@ @&"C@&   0 ,,,,,,,,@Y@@@ఐ%field, , @c@@-
@'pof_loc, , @  , 'pof_loc@@ @@@ @@A  , (pof_desc	$1object_field_desc@@ @@@@A fh f@@$ d  , .pof_attributes@@ @@B@A     @@$ f@A    @@$ e+#@@;5@@,A %@@ఐ%field,M ,N @@@c  0 ,K,J,J,K,K,K,K,K@VP@Q@,d V@@@(pof_desc,X ,Y @3@@2@@ @&'@Ġ$Otag,h ,i @  < $OtagC@@ @@ H#loc M%label@@ @@@ @ 5@@ @@B@@BB@A I  J @@@%% g@, , @@@@E@&0@@E@&/@@@@ K@@E@&1E@@@.@@m@@E@&2I@@I@@ภV, !, #@V@@@/Q@Ġ(Oinherit, $*, $2@  < (OinheritC@ i@@ @@AA@BB@A }  ~ @@@%Y h@, $3, $4@@ v@@E@&7p@@@@@@@E@&8t@@t@@డ+'), 8V, 8W@&@@@ 1@@C@&OC@&E@'@@C@&D@C@&C@C@&B@@ఐW%field, 8A, 8F@7@@@.pof_attributes, 8G, 8U@
@@@@ภ , 8X, 8Z@ @@@+C@&W@@@@&G@@C@&YD@&M@ภð- [f- [h@@@@B@&\@ఐ+#err- it- iw@+E@@@+@@C@&b@+@@C@&aB@&[C@&`@C@&_@C@&^@@ఐ5#loc-5 ix-6 i{@@@+@@D@&lD@&pD@&o@@	KIn object types, attaching attributes to inherited subtypes is not allowed.-G |-H @@-J |@@+@@D@&kD@&rD@&q@@9@@,@-T 8>@@G@@A-V @@@@@M@@@N@@AA@  0 -U-T-T-U-U-U-U-U@@@@@AA@@@ @&  0 -Y-X-X-Y-Y-Y-Y-Y@@@@@@   %@&`@@A@(@%@@A@(%@@A@(@A@(@A@(A@(Ǡ%@&q@@A@(@%%@@A@(@@A@(%@@A@(@A@(@A@(A@(Ӡ%@&@@A@(@%@@A@(%@@A@(@A@(@A@(A@(%@&@@A@(@%@@A@(%@@A@(@A@(@A@(A@(%@&@@A@)@%%@@A@)@@A@)%@@A@)@A@)@A@) A@(%|@&@@A@)@%}@@A@)%{@@A@)@A@)@A@)
A@)%w@&@@A@)@%x@@A@)%v@@A@)@A@)@A@)A@)%r*class_expr- =A- =K@ఐ	A
װ	A@@&@@B@'@@@B@'(@@B@'@B@'@B@'  0 --------@@@. S@@@%|@&@@A@)/@%}@@A@).%{@@A@)-@A@),@A@)+A@)%%w@'@@A@);@%x@@A@):%v@@A@)9@A@)8@A@)7A@)1%r@'!@@A@)G@%s@@A@)F%q@@A@)E@A@)D@A@)CA@)=%m@'2@@A@)S@%n@@A@)R%l@@A@)Q@A@)P@A@)OA@)I%h@'C@@A@)_@%i@@A@)^%g@@A@)]@A@)\@A@)[A@)U%c@'T@@A@)k@%d@@A@)j%b@@A@)i@A@)h@A@)gA@)a%^@'e@@A@)w@%_@@A@)v%]@@A@)u@A@)t@A@)sA@)m%Y$expr.~ . "@ఐ	A	A@@'@@B@''@@@B@'&)k@@B@'%@B@'$@B@'#@%_@'@@A@)@%`@@A@)%^@@A@)@A@)@A@)A@)%Z5extension_constructor. #'. #<@ఐ\	Að	A@@'@@B@'I@Q@@B@'H)@@B@'G@B@'F@B@'E@%`@'@@A@)@%a@@A@)%_@@A@)@A@)@A@)A@)%[@'@@A@)@%\@@A@)%Z@@A@)@A@)@A@)A@)%V@'@@A@)@%W@@A@)%U@@A@)@A@)@A@)A@)%Q@'@@A@)@%R@@A@)%M@@A@)@A@)@A@)A@)%I@(@@A@)@%J@@A@)%H@@A@)@A@)@A@)A@)%D@(@@A@)@%E@@A@)%C@@A@)@A@)@A@)A@)͠%?@(%@@A@)@%@@@A@)%>@@A@)@A@)@A@)A@)٠%:+module_expr/> LP/? L[@ఐ	A
3	A@@(A@@B@'k@@@B@'j*+@@B@'i@B@'h@B@'gW@%@+module_type/Z \`/[ \k@ఐi	A
	A@@(]@@B@'@^@@B@'*G@@B@'@B@'@B@'s@%F@(n@@A@)@%G@@A@)%E@@A@)@A@)@A@)A@)%A@(@@A@*@%B@@A@*%@@@A@*@A@*@A@*A@)%<0open_description/ lp/ l@ఐ=	A
	A@@(@@B@'@%H@@B@'%F@@B@'@B@'@B@'@%B#pat/ / @ఐi	A	A@@(@@B@'@^@@B@'*@@B@'@B@'@B@'@%H@(@@A@*@%I@@A@*%G@@A@*@A@*@A@*A@*%C@(@@A@*+@%D@@A@**%B@@A@*)@A@*(@A@*'A@*!%>.signature_item/ / @ఐ		A	A@@(@@B@'@	@@B@'(@@B@'@B@'@B@'@%D@)@@A@*=@%E@@A@*<%C@@A@*;@A@*:@A@*9A@*3%?.structure_item0 0  @ఐ3	A		A@@)"@@B@(@(@@B@((@@B@(@B@(@B@(8@%E#typ0; 
0< 
@ఐ"ࠐ	AѰ	A@@)>@@B@(7@$@@B@(6"@@B@(5@B@(4@B@(3T@%K)row_field0W 0X @ఐC	A	A@@)Z@@B@(Y@8@@B@(X)@@B@(W@B@(V@B@(Up@%Q,object_field0s 0t @ఐ#	A|	A@@)v@@B@({@@@B@(z)"@@B@(y@B@(x@B@(w@(ۡ0type_declaration0 0 	@ఐ)P	A#	A@@)@@B@(@)E@@B@()>@@B@(@B@(@B@(@%s@)@@A@*g@%t@@A@*f%r@@A@*e@A@*d@A@*cA@*]%n@)@@A@*s@%o@@A@*r%m@@A@*q@A@*p@A@*oA@*i%i@)@@A@*@%j@@A@*~%h@@A@*}@A@*|@A@*{A@*u%d@)@@A@*@%e@@A@*%c@@A@*@A@*@A@*A@*%_@)@@A@*@%`@@A@*%^@@A@*@A@*@A@*A@*%Z/with_constraint1  1 @ఐ	A
_	A@@*@@B@(@%f@@B@(+@@B@(@B@(@B@(@@ఐ* %super1 1 @)@@*@@A@*A@*A@(+@1) 1* @@*#.@@@*$@@@*%@
@@*&
&@	@@*'@
t@@*(
@@@*)@@@**@	@@*+@1
@@*,F@@@*-@w@@*.@ 
@@*/ @#@@*0#@)@@*1)@)@@*2**@@1;f@@@*-@ࠠ)structure1H 1I @@@@&@@ @*A@*&@@ @*A@*@ @*A@*  0 1T1S1S1T1T1T1T1T@*J*\*V@*W@1mS@@@@"st1g 1h @@@  0 1e1d1d1e1e1e1e1e@'1n 1o @@@@@ఐ*x(iterator1{ 1| @"@@*x@@C@* @*  0 1~1}1}1~1~1~1~1~@&7@@1 X@@@)structure1 1 @&Ȱ@@@*@@A@*@&@@A@*&@@A@*@A@*@A@*@@ఐ*(iterator1 1 
@L@@*@@B@*B@*B@*,@@ఐV"st1 K@5L@@nA@*A@*;@@DP@@i<@@AYQA@@ql@ @*  0 11111111@X@@@@V@VU@k@ࠠ)signature1 1 @@@@'6@@ @*A@*'6@@ @*A@*@ @*A@*  0 11111111@@@1 W@@@@"sg1 1 !@@@  0 11111111@'1 1 B@@@@@ఐ*(iterator2 $2 ,@@@*@@C@* @*  0 22222222@&7@@2 Z@@@)signature2 -2 6@'{@@@+@@A@*@'z@A'|%(@ @*@ @* @*@A@*'@@A@*@A@*@A@*%@@ఐ+6(iterator29 72: ?@@@+8@@B@*B@*B@*9@@ఐc"sg2M @X@BY@@{A@*A@*H@@Q]@@vI@@Af^A@@~y@ @*  0 2Q2P2P2Q2Q2Q2Q2Q@e@@@@c@cb@x@00@00@0$/@//$@/:.@..:@.P-@--<@-f+X@+m@*@@@2 Y@@  0 2m2l2l2m2m2m2m2m@@@@)Parsetree)signature@@ @*$unitF@@ @*@ @*@:parsing/ast_invariants.mliWW@@.Ast_invariantsA@)structure@@ @*@@ @*@ @*@V__V_@@@@	H************************************************************************2A@@2A@ L@	H                                                                        2B M M2B M @	H                                 OCaml                                  2C  2C  @	H                                                                        2D  2D 3@	H                   Jeremie Dimino, Jane Street Europe                   2E442E4@	H                                                                        2F2F@	H   Copyright 2015 Jane Street Group LLC                                 2G2G@	H                                                                        2H2Hg@	H   All rights reserved.  This file is distributed under the terms of    2Ihh2Ih@	H   the GNU Lesser General Public License version 2.1, with the          2J2J@	H   special exception on linking described in the file LICENSE.          2K2KN@	H                                                                        2LOO2LO@	H************************************************************************2M2M@	! allow unary tuple, see GPR#523. 2|		2|	
@	! allow unary tuple, see GPR#523. 2 M:T2 M:y@@   *./ocamlopt"-g)-nostdlib"-I&stdlib"-I1otherlibs/dynlink0-strict-sequence*-principal(-absname"-w>+a-4-9-40-41-42-44-45-48-66-70+-warn-error"+a*-bin-annot,-safe-string/-strict-formats"-I%utils"-I'parsing"-I&typing"-I(bytecomp"-I,file_formats"-I&lambda"-I*middle_end"-I2middle_end/closure"-I2middle_end/flambda"-I=middle_end/flambda/base_types"-I'asmcomp"-I&driver"-I(toplevel2-function-sections"-c3'"-I'parsing3*!. 0/$#"! @02 q>  uFΚ  0 3;3:3:3;3;3;3;3;@39@@3S0'(^H1089712sd\֠3M0CoࠌD(5Build_path_prefix_map0vFgj9l!}0	rɲ,i8CamlinternalFormatBasics0ĵ'(jdǠ0CamlinternalLazy01H^(YPhOD5g(Location0BJ/Dj̾&>Sޠ)Longident0+۴7$ȷG~T$Misc0Z+\\4:WlA?L2&0e3S#ʌo&Stdlib0-&fºnr39tߠ.Stdlib__Buffer0ok
Vj.Stdlib__Digest0Bł[5	>շ.Stdlib__Either0$_ʩ<.Stdlib__Format0~RsogJyc/Stdlib__Hashtbl0a
~Xӭ,Stdlib__Lazy09=C;!7.Stdlib__Lexing0XVC[E,Stdlib__List0U#r&L+Stdlib__Map0@mŘ`rnࠠ+Stdlib__Seq0Jd8_mJk+Stdlib__Set0b)uǑ
bQ8.Stdlib__String0.BdJP.F4Y3-Stdlib__Uchar0o9us:2[]20/%ㆀbExm(Warnings0^1]/3W@@A                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   )VŎ"Nz}^p"kD95!1%坬N2όТ&C3
 `-7GO'o[`FNg:0܉*.TPiMJA(ʺ2	S̣%YW7H4bx(!a.(/o ^]tڑez
X\Vn%7NYw͆fF=':  [ϕ,CFěXƨSn6\sH!qV #ZVRyo
Л{+J]QG3\`\VVF8E{K@QvD@5'YMph+~	Hfac
ʐp%|'E3%[VTvVKYn~9s\~Y=Po
ӪXMHG%]'34Y٘B&U2׍d
$xq*1(D3@lX/κAzy4rweڗv(r},999+l ıSsS 5^j(T}>@4K3L%$c>^E+xH&M	Ho.Pς	zJ.<;~fE簣-zS\?]Vp Ljl?R>zN@g28<4`|e~YP:\Hr}b;UT&򐄐 T]z1ynaWwV[)/1Eԁѭt[<NUQM6pln54\M'=P=HY̌Ҭǀ=<87\42PJ	6d"\{``^VNO<4\2xb/wMKd%ꙻr\m <.HZZZJw3Y	SJ{21	
Y2ekx4G=<E;HgwM0
A {ɖ\;	vv}]69	9A#Xd܇jS (6J	fR\B'	yYX?bZ
R2<)w9n1NRx1mAፃ0PZ}{}}<@,xV)wv
}PW>|k
4'p3eU˫V%w#S#j lCt苺Y9)i
N&<v51K4e-CăG8Ƽ>B2
^ ;ڿA9}<8\
?wGfD[Ks۱`wi9;lm>Aܝ*p[n*"j(R9[Q5йLY4L|1&61
KNI"=n6@2&*pf~៰kuqx.n@^nDVD]=t}zv Yz]5
ܙ j)51R;j:e'>zϩُq)ls$sR̊UH'y P/{xֻyRkbHdGql]3'%oOL8qà6.Z$kh]-ԜH4UcSl<T$bTc=G)ʁ󡜰~bKg{u=!?]x2?v[GƮH6G}ka.\knoR-q砒&`{JfP/*[-;K4C%fܲ"\J6H\8_4.f^*A)D;.G
˥	oɟF־+U'X&sKr[88ZNC3VHݢ;ZGA֤[8Y4Ɣ	&%T\o2ɍ+'aHB5T#DA9w]z
V^#"ﺓBB]Nlsjrrk[7u_Q#L~wM->ȈihrܰdR%.*?i
󌄊?`CB::؛%ȓÕjw4vw6I]ށ.fEuT](%>ر4CC3>ϝL:wicPfydY+}3כWG
FƉ

ԗr*vf6MB[63mymcڬUi6n[kkc}y-۰ YQmݽAE
9OxO\=z;AĐ<'\'j`q;)j*MeAUA
@5&6	۔M
e-)5NT4ʴt4[ӫ):2MISo
*kT֪kړ5&kTmeCض}f}u$	0)]ZH"SE"J]FjKHR#D& %"QD	i"(Qڢ4Ei}irW ѨZ#4BhиhAEAў5Ah@ѼДh&H
:	:9k,gJΒpV8qFvflƙY{1clkFlYYmV̂-,3J:EP* i@Ѐ$HY7=|	 ߜR88ăo巻4x']&'F: ::VI^=/&xo6Jܞ[[,6o /0~4ĕjV`IF_Cnos8:Hί\S;Z7,'}p].}=_z_>nˣUHG!J0hB_3~n_ܳ:hEH5ݜ.F$4DzK2lheYQ<YwW}͙/}o$\D*djGyrr!>h3մoVH?,_n])'M!KI(ĆS'?J ~#>U7KB0*-mK50RzuQ8W;U6T&'	?ruCLDUT+IF Z|fҌ[$iS`L<IB1$w ?ۈgÀo-]8{Vu|nB~cEW==U @tOٖf6=Q -e(
I-$J6ybEBi*AQ*n?.tiz7\:<X;@XuoM͹Byku&?U8NpnHfj2bW	:A%Ѽ]0oYPvI#$0!QGzvNqJY54R>p.Tz?󱄇=5`whRc$K\
9VXQ;"
U&xR@Kͮ&f:d+1"!GG?o7q}ܚlڨM6:(`0=bק:V>Qu
܋NMb}$	h*!aI!fd?I0$Rm4|cDet|O'Ѓ9KE+bIy*UIu`nnK~v*$ YUHGSjO%:Q-L⹇,i
UC:1X"Q)'$ hJHGL]8Ћ5dsZW(Ꮎ>L9KzTň~@z$30(d)EuȞxLp{ď~{{dt{yxw"Z:sY= ݜ[jY,
Z$IKcA'P!3LAXЏwM0@	Օѱ 4e)*5!ѺhA֑nfcz-Z\H"U$V5
_*=A>?%98x
1N|A{%#zyH< 1?莻w>vxw"Aqn:@]
܏3M$k2!d>h+Ts0`bZ:r&	$vq,zvp1 @7#ӇɻrylٴMv&vKHuz9>653x8͂4UR
xZ(z/{)Ip5W%>掿Te@\YUxʱQI1	DBv>P;ӯ!xF"w-
#P$`s`Iۑۯ
Xo\I]=7S@ޞ@G@:Ls8馋x|dLJ^õ'o4<Gr0eh&y ZR7[
plc
	{o'˧nס[r\kC*wuר&jl>һh(f Y:wiC2r
]
RMe\	
	/粇wOG}xEjj1dj=]
lלwUV!㨊fٸKβdcEX %pM$X4M
D~G} ~cG^D.ow);oVJݭخ 	rœut
:lشtF	Q(cDBV m;4YƒV!ᢓ5GxX73NXW.x~=))\0x!;A:Zv;;98u& @`?]ȳW֙	 [UW`Ԯ	v)h\+F<T|ϜuSǘ92ESIMAG:cZm`'f)^z`'OOضІإȂyK\5ˊ_}EAPLԘkR;Ode'1&pS*{@skB/ B{?;n3ˏbn+G-ERGDBE2!W3<H܏I.PJRćfP7*Sɔh)	b܁	9ICB1 "!F d	zGI}wdԝ`nr	.!.ꦢjM6tR4(zQY!BtPڼi/ϔA)7ɕc
@0ϰϋ'xݡwGsgmҰ7KPA۝CW _)~ĕ~TJMʎ>E@;8yJɆQYl܁y\j)d*7t#ƩAH$1!zf Sps@`      8& 4(   <>hPc=F{&ߣ0]ew,%}
7q!ZP_.ي`
:#1Sg [eEKA,ub(xzC#f/|x;?<`K}#]L(e=nLNENUߘmk;P6'	<ƧG(+ kCr#[a`jOa38)imW5㕙ziU^vt6GCa}Lg[_A2ۨntg.h8VT3 BKbn)MNav
Iw8?ҮQc<}=huw!ߠ0g{:	w%#;g~h0lEHtw,|uwgڢmz?vO3aYnGcSŅ5:\/drp'\.1xh<ZVpN]'if׃	)?q
unI˙2Pʁ%zASfs&*{.і8ۢݹ@C{ BfLƑOfwJHhJB@r2.Ӣw%>/úo{72gr
B
#,Q{P]rn&(,2=Xti5q:irPWOY.!vS&Y]g?1-(B/tE@\wr˲-nwl.N$~w.ň<^drM岻h˵ܱA#tӟSzf'车S$!skP%E>*/g{2ЮFoOOs?O2gKrvv=9{1&P:0v/Sז]:V?\~<qÎEȀs	wAr߀}c-$h\t)Mc yc8k`v(f c9p/yjGL=k@ϺZ97}{v%8V zQ;-1Nq(pWFr"~̯|.t>7∽X˄Ee5]dpt¹!mX]8}!7<&s:7jMd:Ɠ+'jӱx!r<vqVx#`'#+;>AV}FE	} w\_Sa~BXG#?гuQo#ð
xV8/D򍂍CPgb܅n#>*)65'foeEe"|$GH.i3:*;LV=0zi:CV8ݧz	s?$ȉ*6KCq,cp/<`u&،(oJ=p܃;K̀7yf9Ȓ<)%A? ^ZJs]ňvq+Jq\b>:X֤n_&q
Bw:-r|V?*m2Qpa5bh06nթ,ax`!7X!z=Wdnd'H\j9qYƮBRu$u"@\w)oVE	J]6̥)wO?}3/eSPdҿe[ެH#,
<iQzTp5us
=d*-v䤫a &f'Lc~3w*rESwd༑u)gF8&.mhy/+<9!7X?,װk_M݉J L vdMy[eMYkA]E	߷hUt"\*=L%~3ǛO0kNU4<vڨzt梍Uk*`H*i+.BWXF`VSh7qȶJDB@U
1qhx3qIP@6NḌ\Z	,s9]K^,1SAN2}O~8@ʹ7IO+g+.6 _
ezmT=JQ1ANr:9%e(ڗ}c4W1>,Fz98NRVcO;ٍ(e?f8}tOQҾ9F8.bS^BG{8be?xڑ݈t/cS9Nb(>a+٘S hQXOҕf|OqѮ<NQm2])xF3Av2'ˀy'AU9'øx `!rOqB A< d V(! Oa@BCA<Ɖ x2z
 rO`B ȡ4GyRx}/P(a5H/bԅ8rqX~h':s%>Pڗ8hW1},r8K]4/R~ffWT/+MfP
qge;u%#\u}gz^pݵm]30?5`]H,:䫆ȨRNHd"NafћS9c˟@V0i;"sOC2)@C]@/,pTͩW20umNUjm;H5CJwa
?qB\Sh`iS!m
RbgT)/rnt~.u'S:DBKzEM~Yud~i)/rN@p~l>)"g-gYA	uă;\J@}& eߊ>cjGIWrOt>%)BBK>JR7D$߃Y-/s#JF`/ЎlBF9Y,>qi_#܏9v;8~T'8ӽM|HF'mJd(݊6L/0RsvK6qټ KbQ<QmU#IR#M
60)(Ci_]Ɏyeg1}ǉe˖䊺GqĒ,\7rl18~BlAYDڛT*~ܥhoIًe'p<i	n@N<ArR|1᠅;W ~w;{8[JʄF:MAڲ0B݋t##}wڢ¥T4iI|guMpìߑΈ[:5E;\bz&R1tGIx /tkwJ@8gKi=æA ._',dGW=	:ă;\E@}&D_
\ǿثJ##zݱ|>zc*sw u_1Q{)
#0刋V\{^GގK(Kݠ8YQGbǍ)tDgO$~@_0bo4#!2j<WIH挞'`@#v'8['vr-
K	kwγsU{(ݹH>n
y㘄w cix
{T"\Tw#袛/0f	N g3xb9pk\7+?ڽM_MpОZn)?݁j&&ȑ~eܺbw<^[r]'/4ߴ:[uO:^E@srRBfQKU/דvr7],8rklt&!
-^\K\M^8	oc-.y章TZ%cZ}:sWdx&'g*+>EdCVj~G7E\֡2֞1ZtJf7	-d/eV{ˎJ	g)~xĶ[Ts EΣnj+Yk26eJǄ!4~8lϹ%L1Ƒ?Uʠ+k,R1LUN:Bd<e.*C9X'gu3FdUYûq{UrF X/#VxK6/X'U-{g#(1U5gO}Ź9Uc
Gr܍ꪉύ;2d0+ќl?~\C|-<Dyׁvk-eL-R6<
-WIo+Fx_\PjËFYwQyP%/Q!v{ֹ>ϭ9^er\eWxr[*+[ru¹ߢgX]55lL9Ok)ru	FpQ^o+^&_xjZ$ZplWyJ]Rqy皑㉸(5~E:Yvs(,/9،(vxqE&'}5IxTSG4Ջ.^z8ԓF=VR_]Km5,վ,D.o;f,8ϝ~WQ[
lmի#k=QO:kkO/{%n'2>dr($KYq(,j)f'm0pl9**|2[R B_ɈYƇSs=q/a[AWϷ,Yg)KSd)BQXj&?ij8<ôY
ᨴR21`fOhn"> !XQ!'I"aN{S.E %(o"`,@	SQ_j24_2h ӤN1W1aF\nb4_L1"d:_#~
giM.G'q[+2An@{w`L
=Mqv59ԉt(^(;1
/zTĎe]CRk%-}Gzk:
2Ev?9rNK.T_[$B+via&])¡^ #
Ov	q!~IJC.kرB-`PIW]a{-|+̷`}!^^L+s%ۅNA {}.mu8|Kj},RB'ߴL2\gӤE3`3F^;Z5OE

])(%N'ѽ"{rq,.=n>g,a.v>GHM]r|t:ݹ[5j0AI=dMԡs-r'.ZXh/ߣ1kGIQ-I.
orW\vI߲d7]tx;ǲ}sIYn#9Ք]d`ނ	qܮ^t"'
FS+~BaJc) bqAe=l]'˂	Uyp~IlL#2pPU5us<qX4H2=|I~t
IoQ"ӰJ׶'IHVzW4K/y|H{s:Sr!O%X͋(\q(
T
l˯碊w:mt Ϊʩdu\e(EuWUN^u͡hz4,:ѹJ1^~n~|ojϦ?
;C4,[Eୢ%1[@OJwxӌC6~oBRz
tD>g9k:>H9Sz|}XlaO[[/$ch"UKTQ
I)2~[U#*KWug}D潢U^NQLS:;Ndg((36	JH_*Q	N۔w)fGdp,,'-OSV#tZm%Leei؎"
}#z/)}i̕`Pz"a/^H'w;ɳ3$/l1F~չf3*2u?7{CG4^ Q%Ӗ+hepD	PigcBU_}J'PId

<u)5׳-67JQ ѐ^AJ:4
za> v^dBʓ{[7ü\7%ݐ%GKo
:p"+xbp44w ZD5̳)En=:ڥ	u<QL
5FoZ6^P	=}U=&^!,F(^x7/xwm}ūk뾝p-u#	Ȃ0caĤ?6	1R+mc	~/7ryHsiRp}d	&
z]ě0V-~WumAϖ9fyx*BM`ou!.YOCd7LN.~\mu2Hs5{Hm^IHe%WGe\ -9me7)]#m)g
ʪ(mEZ&DќD"p{fs=?<\ >{=zYz}7}v^q=/;$Joe7IeUCrt4xut4xs\tФWV.ζ<m81`V
xsN¦wM(ZRɜ̈-c`m⭒?^ `)eSoL[Zk>,cʘۦIʡHUKr~^fk9`uEۦPP;RЍQ}#Iǐ}Ly:>?y?ޏ|<̾s\o<?.kiZLqb!
uۈV+:k>3nK鶎h6<
P:C ]}[1;6*sV(% ,Q=lqb̓J&eWx`-NQ0q	POYAm?b_GyfA3m!I&
eQ^pZ*/UvxӖ:n&O~[e:\cUMx/[R^h:D<kCO3h̨7|. %HC\e6̀&Gf}T7o-7NT6NǨ0bdo͞|(LaA\OcyyxL><๊b.[=>x~[!/!,BL
$= mPzfh6P7iSxU9%*aطk!b{mZLOE*]7)i8@3/;K!3B6>uiX#f
R]<f=N!p~yfh:;Q7K)#{F]!0{ A\K2E
[%[0<zrG6nb	{)%B4bo#"lͨT'*,Kqy1S\ʕ%gLD*J<:3{{vg`ɸ<
|Kzzx9c<x7#U*e^I扩%k>ǡ6dڼoH,ds"$pyFٔ8 y+0N90ϑbhbs̛F%"b>:cf4e.|3oRt𔆬MH_nP<mf5EELYz3O|yl:4HLx4Ü70TMN΃
qU̧B*D;YWU)Fń)hL=h֘bht+dhdՏ3&>Ͼ,p
IfvOГg 0-޲Xiq54ai|P}r'k"gW+DR$HaV385 xGgi,B"ӯe(Y9+Y'Sޓhׄk
 yHk4B""QsO$:d!hRϪ;i>냂|c@ͻl>z9OO!g[߁h|%Y	TZu(|}!x\cгģLNz|>Xp ?΄Eq~oq|ap83a6s#zU<٪^2a7 z	#~,̹P?Ƅ`[H2L,n!}7oqg%RƱo!$Z
)V
_,צȜ'aӑ Ep( D+/<7c#)!BsȫyWnc]CM@8w|~OJG1:ЁKvɟ82ׂ<JDBu'q\m!ZP4ҙ&^u'Bvۇ0't}nK<	>c=%&o f4s?Ϲ~Sk*%͆>U*I%k)A49Ғy~XH<FR<J Q`|Ot|OY\[\ssN:H@
W01<BH!ceU
a]cYAn{hg#5_eѝi[yZ.Nէ4PtWb qwp4y̫@ћ%1P$zJcoE*xti)t_Gћ~yM%Y:4Qk>ѯHt鳳ز$)
2wU<¶Jм+ Vt&\B\EqH1^%knǕ\J3~j2,#P,L`gAB-qۡI~;&18Jw1օy@AQ"u¯p):Sܵ#(ǅ)o1ylq3y+:"~glt{3R4q	
S3)f01q"vb<KaHNG.,+D2^	
GymPTcw~b	`{	
޴HUF84eiy{1qj	R~[<9+s
dW"l}=mt2˜0r$ū?iѨ^54svvNXU^ai5tA_Vh+ްhVd:$/y%VoyBT
5Ԡ)x9rq[x11rCrм$B>
 I%0RdvU2w}]<e1 s,ʟDPO{ݻd=)xϯzEqx/PTGQE|Oz>(gUR?jf5xNE^'J),tl<iqd< ,\jb9!5d5cyw:cPp@p:̌:/='UxHk!xb	f7k	"$(yuC\`=	EyIK/wP}MS |p3;EC3	^\6!u8n'N3Hdzqjìhf&EG` KQƔp9~Y5o"41o,=BQ&8gq\+p@
O9+dBk֗>-83oA/Z8*9i$}1{?Lr08:yuh]0S3, -ǖF*]`LU oGK[1Y%U(/E_/\FP6>Ύt(lEqx
#
04ɼ1Xխj	tְP$MxvSW:%2Py*<J(Pdq.wy~I\_QWѧͧVC1$H] 
yDpPyG00J_$@%&VYzMΡ)&j2 1$-&8IOEy#hĆ0u
rQAp,<(Аb80b(:ukb`!vҕ(YӌLT
WKLy$jN|laW]u1Fv;.i
:ϕ"S ^0ߚ93"ڦ@x G$OJtޛcACrU@#5|u`,],,¾|X]E1$xy#1&3փJYi|J i[;X5yI7Gŉv}Z" 
XEQ}+:KH%ZoOva
3ҝxN.)*0ȭP0(|B#$8!<!8@cpt'
~ %cE,CteP	,.ST9	&E('BB01}"	
|iC< :`
O 0 *kBH$;@HM=9*	`pc_4Qy&X*PNzi||PDB9h@H#fqj7B
QKT!iM%B% n@ g#O]J1`:\8pb~akǛUeB `a¸u5C5I0aM1\s(3oؚĀ_ p%hafk
ZZ(3kXĭ%A^%cZC~8`(1	BA>" *,]B ~8ii	(*7 0X 
 
1b'<08{ Lpʒz5e ȥ@]*耂r8CIf2ڄQp%D^Rᇍ?ؠ,nK@"e0#SZ$+[ a
mYJin笅 !(E$=.]DW&
#@$I	䁣ۺ9H
"`9 Hj2MqbbI6̺ilxHvkXp=IGtƷD2fץXTU%(R>$6# ]HY:I	[ &6
8!Ix k;#+9^.$S9%_YgfJ4M  ( 0IO@U\Cq- <>@uU)2-zR SRxk$gf*~[MJ N<|"S|ŚRؑ0	%ULM݃CL[sZR(1*D9p
xT;?_ԎﷶlAo8H̀1$"rⱃ2-	BsDD}-ols#'ӾN+9>O7+?=K]D-N[YÙJZzbtʄ=mYvaMyΕJs{at/\o!9*V?
.$MQ1-QMr iZo9blV+ N\	4WCvwhGhQ4%ȯMk><D~mJ
|{6#P$&8/.g:9kMo-UMMFi<Ï$_od7=v-bMz$
_X4G[mֳiMz";KbjD.~",4ͨhKo)<L7+f[Nkа]eY'ûai*pRkvEm73>nwڬWkΆf}צ-Yۇg|a;C4óQݱsx	#1.)^A-)ZeA"|SlSkē>, 	ҏK:PI(ȳM =TecͯiM囦xz
WܳM@|V~ݱ2.|zS_]}qZeDCj 4qΐ|4z	Q`!Rɢٯ.]?+ɮ~"lfM&Ms޴${s^/1
g0F\s΃}Lmy|qQ 2O;&t0J[!;Q{<K;;9O+)A:L;0i4>z}GϖhRi,9iY?̔Ihh̥l~Wxti*S.tny{3W:;f$XU(Kڪ7B|sՙ4Bve0*ʓſ^L9YQATk|@^ǵOEoa+X_2z&ʞ~vm9	!VJc
C	!?H+%!eM_ǚe/P	1䘯߃](]"1S<4|1HAK[3TO I4 +Et3F4aAxxꅏƥZ	
JziH
ALX~LO'"&Ux( 7(E5  ^g,F*S
S5A2Dgc6纛w+rÿ<@_<gsb:Ӑ]=*xMH?LE.J4y
O5g4,D4{GlaGPSLĜ*D+gKtO3!%}T|ln]T7tt$|֛H8m#
ށڊc)bAKLh)-7&*S \7kW8p!0A}wyރ79մ^{,Θw!q=C1!bΘh4&x-MD~ɝ9
ϐW>Ufèwoy|'㾩ǻ H)*Ly!{Y5\ bXϕan:lLo` SN1#yoYCiD>'	O:	?]y@bomJW)c'!@	OkW(OJ!qݪb<!1Z\Jeks")>o<$}|6toUM`E<_UP:$_җ_{ery^f	r#	;o7Abbo ŹQN}<X5g
K[cسٮr} %ف66ۻ,).R7&!d|@stnm)Odn<Lh{*sێgKssm)usQELgK1=`Q47k~6</Ý4>М  Q}UޟT"?I95=C}ԊuƯOs	e&Inҹ7QZe_t+x=rj,dsNNM#4 *>|{yWog:Wuu,,°zAM4kɜV-,1{V'y{!z_y2fhEV߂f9|Vl밊Ds o?n4|[ui!<!-a̇߉Ѓ8DZWdioZ	T#C.\7͇ݻ
Ѫ\6$R&@FUBvm<	9&+ Z#7 
xlHĦ_f&UZD6lu
L_,M򢿨bWC'5&AӓL܅O]9O
6%ɂDdH 
2%?Nip&'eܵõ1'KhR>YYZEnMmRH*@fhi٬o?3w ~1t6?3=K =(_<f
MS0DQ)yͤ^M8Y8PL0a0M @uivsB7thٸ+(Xh'eAsSFg'ISh=۳ݟ0G,?	.EE	:`8s˶RtɌahx$%3[]Qf;hdہYl)t\NJ
K
:Of; qtdR6;ܮWf85̝2s^ ufMeA!b&YDP3.S!8Mt
d6vRU!fJ_s9+Sk<B?Mw7noK1Y<tKە?wc
|hU3g:$ +p`}ّW1HxK02hZCӈ	\"-mOz*hKͦK5Z$Co]k_{ݟó\91>RB;gwݡƳM	y~#9'*y~ҡ8vDnK	BoK}벧Xͦs_c̳=,O'lWϪczVh~]Ϯ7>Uα]6ƨ&ugud
tStnNɑheUѓl
_GtVT6!Lj6gEDչR>Eu<u!XuM̯bulu![/Ab1v	ߚc|۟cέԭ'Qo6T!Y7уHn>޳s<;"^zα:}i#.4o6;F ;8L$OBQb +s87{`{Jhf~i%ml

p۬#zf[B65Ygn30"Όj<j _/۠_se3|NUBGz 1E\Sԁwc,[(`.6͒rs!āM߆;fhVs8
#/SWtN &:)U#ETDz5琳d}ݰȭ
*J{&mMYE{qG^cЉ.V6<qM&*x%`#$!`CYɂh%K%xPߢ_JWgTʳ_YM.ī5%\PTWm(	*F8-b﹜AE|Pi1!(ښu5|	/AFc;Yw4|KXIoP"$:$	X K5=e-7݈ܮ,ft&8lS>&}31SVm-q0Ä3_MCbwԋ74bB)p<EaތAr#z	ҝLE,UF><CI59Q\s1L4\`1(Uғ9 %VƒK~*sZ<	l0Y<s<A:Y,6|NL_yRΊp0EwGE'#z͍kJǟD5ώD NM%|
l"YikZl"# F<Q ޲q-xvC-$sWRA)mm:qɂDtO B+÷xhIoEQݓ*-5>\Y	Cz"iAസW	x% Sw	^cKn1I2n\&>gB,KgDKgEY0޳
y>cD7}v5DHale܆1ksԩrڴ3jՎ
7a4qo+YAn{k*M5,u~|*i-Xy*!0Yt빒>kCq]Iw?8-*ąjӦN0#t-*S
oTcwsq7#`ҹw'yoN#b
bD.|۳x/R̷d5ny2-"MX-iirQkXlhGce<<ۇ2!u%q]F,x4oM0^1!s,֝|^1%-|7]<-)6QԷDK^%RAAp
,<U	4f-j8L߲y"!hxW-RL$跾(+s]w؄9`>gj_"r>Ǻdtc=F.3'5T$%|lQ<E@\l|+{ϳEXYP<9(8ruFU`5Q*[cim͈噔GC_d9H#@B7DpFo>/[cX;d6f9c_pJ"̉<wΦ2qYw~v_F2qFYLoGnh6oyV*S|g*K m#]Umҟ:
	>76TF='Kt&sYc,V
PYs&0`Wv{~Lq3Π6{%9Qi-/<d<͊0ML4Eb
6*XAE>#6RdW#cy<\|{v8c/*dK,rֺ(
RdIp	0&VMPFmc5pQÆa
oJڮ6j<w֣T41R
okl)-͖[P:GjiՆ*RF]K)i5zq(+9Y}Yp3y3{Ffs`v2&y3,cȷ􈼦_0l
:n)$RnԼa}̋vyKf\bs-üGfsxV] #Y%֥$޹Pi6!`'
n.%D&N9>IOr&c&)~=&:̯+h֔>w
3aSL&z3KCCVHfMYPHK
dQǘ+rHHLןk&?Dt, 	?sO9N1UTֿ[}ֹI, =z &duv8(]Mb.{0?-^J6}
c-ee<p2
\'j#3wBj"s+"&YK9aoР!eJͰP$MTև:)y,[&*ClM(1g羠%QK(br8GIm %Vv_|ꌯ{bUIl&U]`9*i}w 	[NR.д<r9	_oǘ'hV9ѬGr 4GZRyА܀#*c0?_ sm?g&Lz7E[ը*H~{d[4~EZ!IC*20KB=H>Mo2 U4Y:'$K"di&`Nr( DF[igxsm'.\[Qud@y֏M 
%e, eSRVil#}P4_CعRI:.]`'db '$]~ݷo=a[.W4x-tEi0}#6b!uaz`·+LΑdϦXNgHeX%;R\:$L*}叶DjB
P$icHpxvRhB#R#3@bP=3֨1l ڞ-ߢ:%d)'GN[AϏcg'Eud:P$x}cPݒBAȯ";"?${R{ΥcFm)}Ñ*"_B+cp+Wl}l1vl)"Jq8UIDy7{%&e	W2<vRf'Mf& NNS<٨͐ޔL8ƇW=k"AQxH板|8Ǡ4Rҹ9M['HNT8$/5ϳߟ1qو:
$;:!QyΉlcEQ_z	yqó.WTG!J!2{v7>9 {x1ȯ]
_shH1̟ fD۲҅#wcĤҌUI1%<1*%ow1ⶅZȼL勉Nao)1r\CV
Q<|	泳9C]rc7s&ȕuݨMA9m1hə]=t<ATY\\羺y!eq2'ֳ4S)3GɏW4(
ҤJ)yQe;y& w٧0"^Ԛ7ཱི`y7=by__L%X%ܖa5nZ8[7/u_
47+OD"ɔ฻b[`h& @Nb~ 96ұdV܊-1DQ-X2Ѱ;+eq2HV7-9ԉmܪA޶܈C:
6~ڦT1hC	[0KlM8MJm-$fi0|;@,fJzn)㬫cPk@hR<>2#\Nr<ЫvƎaL@Wv7lzn"
f}kXJqy2XO³!*}sA7A+J1jm}|9,Jqr,Kc]Y&+vDQEQ'<
}fv#OA~ă	D7I!qnSMBptCå
lxcv|]F~9ᛚv4rpi!<	TL&P8( Ǎ]g8
Z_NCl)J@xכgq`hB4
'6 s

|Mq-4t}_/8s_S|V,K0yrz6F^.5("N
.~<Y5pŐJ#U!@:Q]Fh[* ԎƏ>-'9Ѱ-!N
yQs6
1)@Ѵ!ޔH$_kMG-uR
ЫzcK
ΎX8Biq2<Avo1x6Ň:d7ޯ8U"C&Eќ+	(I3dk2>GR̞J9NO{p]IcXV`}=hz+ƋOAL[M)e2Sj}Dh_`j}!@H
sW4ً(8,`~YQbڦZݐjmVU_o~|7JSaM ̷a

t#IRlr5LSl4v@.ctILIv`qe/>}o.?qQYP9&)&S4^oTVd#0w@pAfNU}٣EX<?Xz\<H mSUH+˞/	,V)J
=yIrŷJ9/>{J=-t&l-I%35ۻA[ʻ3  UVQ^2j,pK q
|/h!q<Xɾ~e;=j,EH`·|g繭/Y8{s|:Xf<-;o3,meMIf𭮄FpQFawݟఌwx~#XMY&V (`H|w7s7oyg3'YMC@30Y1)ȼ3,]CVl"rO2 aRz/2#-u+ZzUE 17~0 ATxPakϛs@U1+/8<=CB:Av޴U@$!3t!#!m= ?Ƅ\H+5~k  <"|X-jO!JxӸ_]\_aoX))EqOEu[\׊EA):?`?2i</`&1OAg'"&3SjlfRLjl/#$.(P`6{}|6z-SZnnD#;9nhhIc- yvpA;(fe6̶VtSbq4ԨQF5jԨQFf"BIޕs"i1p1&[(}Y&lU
1&m]}M Ew@Pi[ʻo^˴_!ۄ7ڽ<+0ꙭ߽c:H}>>ŷ@Lyc=oPTS>+λqtcDQH`9Wx#QOr8~op:-ULT'$iMxpi\)uȋn]bszg[zy[HGnz,}fuy<Oi KGk$#\YB@&yO'>,Ve{
Q %-CAuZR%-HhwDmvoK6\zSJ[|(QDT:5E	T*GǀM QnZHjc
l3%Q6⢥..0j5cD󆓖f&[Oʾ х1xo[JӾuz}mk65:N<^PK,"wk׎5jDsQHwD-~ޤ]-X6J-)O,"&\=S3}eWu3\Wxoyl]Q36sD%BFf:\8':&&=:Z]t>Ew7Ll»Y<_pM\||Xj풶>2ȶoxTE}?Zu@CV}y)C{]j9%@C!AmJEͥ
s,ٯ,}d$3K4ḑ"'o[J?e
{Npya*гY-❃dAb	|Nڔr[b"]<Gج,>rK.0Abne0droP^-ު֪zEw;\<h-v/|ƣʷ*x+:r?^.Mz_ 0ӂ޽GJ-WjJ)?J<P)y<+iAxbb1SkNr@Za|b޴_%$(8r=1(2|gJ
r,>;_Hv:1~yqBȱxaE$2]|U<%_>HV2~!R1G9"UyL/%]|D:7 "yn
|\?Xn9 [&DANSFYTӎJ!nM|T,ȵ v\w$r-dAb	Y<HdpMNz	wtZpN
]%d",A$g;<22ϺłRKJaxMpA"ׯtj*A_~Ւ|']/ٹZC_Z֤̑%b\	L3͉(J5{w~v`Q *>;Hd Ori|p x4><1$2(|vĐ,׭  8Nǂ=yF *HϗXZ|V
_HoHdVa<K\wHL~%KYA\%|	!\ "s&rBL`K"oFʜYG &ZZY"w ɂ71$iYi<Kwɢ/۟h*8^xW%	h]U
P,9oĒf|Hy:
N!A|4y!N19.i#EnZ7v:0iKD`̜ZM|<![;
y!_F혐^IYzA<EEkl³D̬<dſ@sy n=8jI1hueic
R#wT1"Xls01IL9P4S(srS4Q)sI,Q%>A%M-0h[tyxyt;t;ztLW%41SwhbV$\;bg
/($ɉ%Nd	fY'V`xk)X--J)Zz} J
P!ByCJ#񯺶=[,g#H4fuE>k_}6
UeJk47 HKd6 ,kRM=h&Lqg_A&/2j6&lb
`|̝繭ƓgWy3f~ OpLi?[*Qd=kA}||'}7_
%؞VSڹx$DՅ#&hV	Ny@l	֍*9c2o9#c>y|;p5Zb}49`̡99KdЛ!:W)A)\|V1Qs+4sȯMTx3QQLQ(G|,Uu:çu_\K똖] \щM<D-Lp2ޥ*|&R6}ML+3צcp7lr]`8{g"ųx?мKkyddqlѤɾrIo{D!~y3#ʄ11ețhF^biӦɾ"!q(		y4ѻ+rucs{\D%` Z	PAg{>
'SzzhA`zΝw<@Ӹe-"d-,5ޡu^&|<3,Ѽ_~/xB1u}m>?pI BC^?3/ch`-u<g4.'" ̖gxv ρ
u0vC%9oWՅOL6}kKs]n+-7ii[W7j5V/PA<r·0e!FY(G0ug(D*eeQa<(+FӪ$,(
vg'yv_Ӌ:mnA,,u(TU!N~J J:<{jB}TRD)(OHanLGH*`ZoJwyCWI"Jxo1c'U%pyۃ&KVy cK/$W8#ߞ<rPTVW`GmSbFEm*=j%KG"z;)EyMvA'2GؚJס(w}ע!x)̗Ib
@LRZ4˂<mW5Q=TXUZ*K+ k~iK2X{>-]	ܩxS%c%wJ.gjPCȜ.9Zס!ؑA",ZF
'xbLfLL?@
DN0E+ G|g5]Y3&O`s'Ok\刮R	)ԲsE	gg˾;rsߩN>8sWߛ9s)]t%U3W1s]~ q ݑCrs~hLa)~y+E>O `"L
"J'U+5:?|80L׾1ݘ1}G֑g
alK"(\\`3sw@1PssN9d᜘sCY*}{MxQpalxK\/`lP\&<QA6oQXŜC\ZEtărEDZ{>(v=> D')|~(Kbu{><O9$~Ds!C#y 
4l@Pj8,#-QAp[_}/YL\B
p+sthȱߖ3f{eXs,eD;.)'A/Fw*~u(Ԛo+G ͼY
<E4ޖJhXz$0OͷgkoP.PJ4w\[4(kί3G#:֏A7xʂIOoN	4c<B^IY^W3Z}~k V{[~>?nY߂o~+~}#-^y}=?n6I_kжp <÷%,_|#ed%24 @( >#osX}<*[LYr hqlhEm~Xi $ |i{1|lkiq
M)&mo] /ӔWx#.)O@[}F
3|oZ֬Hs06?-5='tH/ik7zm
.%:L,`e@^육YHZ/7T(:Gq3
V 
Ox>#)%Jx5`%WQo'i %p/#|KLZ2Tshh>WbR@^ OdAQMl-xwd:xeN<Ev5J~0kE1:* J⠤-/6̑T@4sìM(a젨!${͂p@mz
[ ݉֘"</v5ӯ1֘@<GqTI2#u,4䗆P&y0%vݞe=:@H-/ʄ ̯h/7sFvD{ӂ/Y^
jjyQbN
W:cR:byo,y.<Re8OPDvߒ۝3  ͬe'HIތD4sc}],aƭ(o+d׀%VCЃwUdɂOTZTyؤ><0ь~ഘ@Zs_NT'{"]m,U|c@hl>Ix佞ϑ <t^H<ϫ2Zx®_;~VMh<X-ҷ
-n)Xy9V9ԄKܢyśLAjih`Zzu^ ڣ,xo'|KTSC^|`
%ӟ>pbq
=%_XcCycfau?D=012}R<{o޼<ǡ:QvB|d<"{v0khSdy
cH)gc:5HOQTGK,֣
H1qIYњy%9K}jH%K놈l\V2\jz6\Ȃ8n?j:zCBjHEt<V f$<dy,
+7&h@yr@lz>y7ͷjAO#hK|Jov-yl)AH%;?gWmp59<3X܁:sD O$hHb͐F	#󚫴bI'vU2=G\c5AiM{ 7K,K{;dMT)[n7+==6^;/Pn	e$1C37#@zLzӶڦTvP8my$
6{@P+QJ+Pμ
r'xw*u$vo#ܘg7Kā5[ǓLȔûxŇ?S)ϟ7R_47wEQO곯5,XmUW-o$IEq$IZzo'ei%F3>EO\ϟ<W]ZQ	Iu;oOt9F
z;++m"jfc<yZ81f?RTqoBy234V$pMM~V+k_p,nv_[`l)*=.nށ[G%3.-Ul_(؄DXmAn~?$ܻe`5
Ł&U }|%* c2-8/& 1^[$!BG!Xz@Enpx˽>
5IzGs$eݬw	IyG#L~<X:|~m;[?teg7hD(QV<Cz>-5c2I0pޢRu`KŨpYUMNJf&H\kT\l F]<퀻ڡ)nӦQe/#AOa6
5MW\={oՑc	sѠ1$WH( nol;m޳~]ݛH<)TuabbHIaO>пy(Hg{dW}q,!ǠSw{4oQpp<:W2$K	[`7b(H_<	]lvhϐj^!(Fdv%!I6қ=b"!2_CUmr[\6BXx[	uG4w#|Vg;Gi% 쭗 1@鞽.I<hζ@= dH\w"2g,\oH']" 38GS:oҹX[߁_%(2Uzg}-YW
cb&ޮny@)Nq-aLҶ_<>Cn_hiЈ-=ӠKSrLW)%DnYz	2c@^׎A"6ŕI^K%h\
ϙJ- L5~{C)xӞ9:2"s`sFs]s!]7'tuHI6t§A1K;o1eu;F<S9m)lZX!_FU`o'}u˺F-;q1&ӻURqhs$OcM&u`˳旅Ws)<L]["$bmk9.=pQiCWYA~NgW?|,h<X#?\B=bD7#) 3yC7ZZA6Ї1K1$CGI~(<d_h1is8K8!8-T49b`q{v-W2Kκw?p<?0H
C-4St>@jIa=XK>׹c_քz.t`+[1nPPK3lEE}<5s
[=L;b@oKPo -Ĳռ"V1
'9K 4g)Es0QOXl+:gab1b^-dM5kY-15qs$B^*V̋YDwRw@QPo-+sʲf*RK2HGE>O2_J!]OAnk?FxN[cS53 ~F}A)(N)xCc{Ȼ
$& c\Fvj~Ll
&2 &(!eǸ{O,{IE* zݩχzĤJsyZN;W%:&6b5̨Ќ1r'WiќfWWE9ʩX~LfL^>#N}쮲J|nEלL=Hs>&5IFkaɇiktY<Ex/8ENTql̇fü奥<DM!?A'=oYs0Bm==UdQ2s_0xyvb
N qNL8=9@\@QO93=gdA&~L5P.Ex@ΤЃz
*\s?6Ty<n3F[-2XbypUi-Y,-rAX)!IP*k$4F`lFoĳDV <0Q6TA 
Vv,(7Q.0@HmZzɔwRxdCرwɮx#'dck eW#5A8CX-|C9hzgp	1HL$,>T["FF|# IK>C(.ɻxw>)'Wo՝ͷJ;^h<_>,kn)|.@û*ƥ[tD0τmou	`" $v9w]w|ǐa1yՄpK^E8I-{ҫƀ̙9_ĀVMќ縨dM(ɢ"a{YD%)<W?3f	鯟|E 4$s_+Kׂ+}f+6Ӑ:ӳz1ԋuAB!Q ٷ!yVÉa.L1u SIi\q~HU|JG,ƒF87>`<OtԱ %Cff   0(bx8 }vV6Y9N!Ő       )_=Ri:lG8*<ӛ<B4Ha7>VqKΪ(:ؖ)<E1n&foA!,Q7]@dG{
i%Ye"1VCe( {yta	g0P9#c=Mt쨧 $x
P/$q3%*%/:јz.I}'fd#JbU
hv7C`>%e5<.sh 5{ME?#"ۮ.0[9JX~ψd}ȴv^Ÿ!GuqN.%i c,X'[N],a>B;p
L$1rػ>~;tه؆n}βD|¥$qWrz^}Y\Zzr?zSnJFP@Ż p򖺇vdz:ur;T(AVڀX<vn lkܘ qlz}tuK:|Dm6#vH6L\tc]bAĶg
W9f˄
K`nپ8 _4|iQ(BjٻW=1ƶ3x kEKۀ=46wviS4c6!2EF*s7G'F7OkNp/Luǣ9_;H$8.Cߜp_]2`ムZE:Csuh81y zP!)qψߞQ*ӤݧР׿&Տd{kt-=ʁo#xYտ3Kv9>S0kISvG4[n6pum~`&Xu/t`	W$+]lw_2	yuٶb«>]kgVx=m#nebl꽅4
iK]
[4J36e<hO/<炥H@_H㽢Ni<1ޏ?HgA"4E~
|mKFFtƨZ5(ow8mm/?/~ DC>~/o2n|(f`oѳ~jӆNP2Ct4ȭ5sLAcdgPT"o$FŊ͚V̀Ι5b%b%W
i\go1
wWI޽xJҘ @2[BW>/[tl duǕM"v߮}?KlMd S"1MF7
5+KyZP_tRP"IӃzز̔4q۱ON^72WAF5؞;<
0͐ƃQyi7[gRW 1Q}v|speϦHd*rG hsKw]%-m<@ҵ
~M`vxsS&RXF96[]Kbr(^g<) Aw{B4V-@,5vC L=m켫@4ˋ^{,'PGTHt{Ѹ643W@?V)Eݶ	)lft?뭜P]
GL4g!7ChBs	ysnbR_Ԉy̹`Lm,#o^˫rZԋv[趪VHѹȦ?Z!?:m
gc͵ȳYl
`va+u'/Hdlڅy:JqyO:9#ex(Q&!OT1@iAj(.x6@٩=xY$Ь+ny0[$<w̕
ݪ+\ju;M˩]6戛R>V!λbE#Qϡ! hw.{LzUL~rLoK$%fU<t},W^7{>rcW2%cE`+X5{}f
	/|57U53SLP%5H!87%UµEښ?KD1U0S~z)r1׸QԼ^g{9#`z8Q
Dwc:nv7:LH{w~j`bsIiF<%lTSnSx寺d 2ȹĳ?ߢ	gɩ'.ɒ=u>%Eɓj7x\ T&[  b*[Hs!C2|PCt@.O?땓.y$(>o<}Z k=ft{p\ōsN5D`>R !|Fا ZX.\9;7#%<O\|S)^E fL'TW//f%6mdSꎏxi# ed8$f;	KɕNvDhӲæKo"
m橒G\+EU}XӔv"bfo &DbRVS<YV
l2)$xQ:~P
Q
5Yq!ώԆWh2b!U}ɂH1ZlEOyPx ٶsJٻ:#hF]{r8În*e6<D<&~Ip5$DxqH a{8F@CBczlb]+*Rp5(Gm-L:v@BnQvfWC䶕EE,2UT7(;)=|/Ozl{r۞x	Sf 3="koΙ"͸A4n_ūS1MGO%N^мWݹM/<1=q"V$7URt:%1b^#X	9m%Ğlr>iFJkN2ȟ-\Ӟ[V9`ḠuI0W `@Szz|I
-GMwDh0?
	jjP]Eac)6`[2pqn͸m(x8F>O]g(pL1Ĝc<1߈<"ubM)Ǽ'nGB
wA';Z F^_hO>B&1V'V` -zÆsDUc+~\f̖y#ks}ʀ~QtWE;QVp1TˤMjt--uC]H8[O#=d'3&_Ʃ/PXO(aaۥ4ۙbgw۹x198}>Jd7𵖸)eZpbX<'Hް?uveCV(|TPHdE
&,^=-`)XH{](;f> ZgOfge+jpEE]oM(P1JvU93Qhn9y	Ȅ]hW8r"Ҧ,P_ܪ-[AkKBӤ	B+Xi¡-hK709i{Ki;ڤ1'9,D8f+
+_[ugEAˀ$]3>yzީfue$"?ag'Wd9wZ&j߽jU9ZNCcs6G,EaftA9
a*K{eo'*f>Gnu%M(iS{!Z-o92T'FH =O% @j.VkFV"h^*/a6kƴBh5sم>
paҡ]|hm3i%pD9U|b۾,:#Wkc(/:D17-$ees2j5 _JY2xDN tH1}΀k `DϾ 8(ȼ*X `
Y߷* K\T@aUpc<Wv,&.u6PhLwV/u\*Ek^ff\0G0Ҕ['}dhrjZNI=%U(LgMzC{AKƕIX)LXy#օف=Oܾ!*L5;xyb0tW4?u1aU%m˶xJv{57y[AKl3[|dFFY@H P*YHkNrzٜ6VõoUs	W騒`.k	6]H~l+m#k.Xn3 O@3#qGJlmӁq.'>&E uXi	7k'_	QLIqn#0x[H/|lz{Ľf dƉRƒPK+8=qٿ@n]K&:J-0yX)A
A9
I+ AKFd[V<K]'3b낤77(?>z=!%LU+LYyatL!Z	/H[;9]/`(bbTpHi4\
[']Z`<
qMitXp_]ƓrCfӤb͖D4CoNcAOO-k+nscs9(vF3ނFypXO.WsKJ
d!G*T	%MU&2HCK;'L;$s;GuBL	
3`q5
9O#Oewvc3YWo!ْ
(euX>@2]ۯA*wҌ2@e8JNti!Ƀްc#O]RV6p'͡ d\3t$FH^c<
p{ kx{H#_w
;)Vm:Mv|3M 2Q 32c!h'aK
\rOb!WuaF1/$.-Vg*s.2湹BDT'12;LDLXxd1SUN.0!o./4 >x	'ps;>㫈LbPXG	R7BjZ)d1c6Ch_l8MHAWx2,$y;N'1:Xw5$ۨ8냋28Nƌb:a!	!{7Ut 8p(X	Ms*7]MBgdMR`[TcyQES
j4~qRŋnq_ :!͋%⌑cx!7$@`*
ס
W/l`=die<1Ys_XYck3X 3uje\
ጔN<ES6}Ikr8Ƃ!	y/:69Li:*d䇰7P.O	 _td9\^2^C(p H;	Johz:U :ǘ5J3@	DHⰰF;<7/#u;Xmgx`	U"9Q3('ok)uPװL*gAv<3@	sH@J:ϟ: ]2$g!9X+`2iM4633Woz[ 9
r#.2**n0A"Co	5b%B<L-&#:<
1yU##^u@fKۃ3ZzIbE2m}S
|gl iYWi1)h	Yv<{04=]b"+4숧+&Pp]YPxQ#v	TB:p@,ϱ8Û&&BܬpG *_-R[7xd/
3{`(:LhлrOh
˿4k7F
/˂E{h;ku~cfc\@MI/NILwcbT
=N[fܭ&P Nsxxlj8Jt<v*ԧc.Sd<"zw<oRJTA|(~ߠB]x@X&NeYnr$Asat3x{oR=NycڨFB_zHD0>r3aL sw_3_ɵ,als86d~Bv(4Z)E]2ɮ{A8?Y*ǭ̹yvd=}ȃ۲|Qy_>7w>Hw%$Hl&'?b]D춨:5
u5ӿx#+9[!SŀϴAb>UFNwbI愇=͂ˆ)vC}2uB[.(0z6j4M/u!Ot`+wKYxٔȧ5
'@t9؊{(|2;>:v֋kZ.F"I.脃
HR`xI؝6/8]f
tB
LQ$nxLK {2{kDOQo:Ƞ^CƬdz%Ȁr,65W4+Q-raHG87M:;;[%!5E,9 DF&au@Cfa7iܐGqINa]R>겱ZSLc9bBO{ذ5)Am\/&yYW{,	dNK	Owd
͜7[{Ÿ@-%rB۱e{w +z4wƵ5\Y[6Θ*6p┢ٶ¨"@l( 5DӸP)Mę^p4W[u\Le[?ix@w,4pD:0ٶ#9c˭RrA٤)(:pFu/IcWf+p: ^7g
ОFMbbl<Bz3_~ni
Q<č1-[MX%7IFy_.):a҇(Q	nA)V)x-sEdOSQ}~v>N6TjCgnZȧ^;]pno;ޝXވ@*qd#'%oGv,Z, Jx#R
@v1s~_
gEǅg~cH 'T֜eѠkxǉI3?rrk_*(39>o߼ 
A&yhL pe/Gn;MSyRmTUa	n7$Rol N@m)Rf]z@?HM	B
QН^^=K<雳?ٔ2nۯM`sv$Ȗ@-;NbHqT(팗4"ċ!<dTOW[(`L15لMmN\igN.jP絸R-	٤«{!ɰ۲Pe4%o@|j"bW-6%T_pbd&+0Fƭب%]r`t5P͠C`hrede A=ϾѸNrS@#ч-s
C>36[ycBk95B3'[Vqsk;ukD.Ni]:>i; s|v?a-{&bP7Hg4,pC# 
5CdǽF7ٟ!*"j´O_<j"Gt@8hZXfЮtiYV644@D kc#$7ȒGc(,!Y<_-cHab7kom><.o_4JΌ.!4BR̀&uRJ'ټN:q>"UӧP:CgW47/i0p	ߖB-pX4*B$4!י{]88QtRɈ.`L"R8^,?5ܪ/~)dFC;=DZ9%exP2 $[qݕ4ܧ) Gŉ!A
npUM(eM\CE
sq+H)ǓxK_)Ρ<FTԹϙ"ƸgN*6p4SE4rOhn 'eC+'Mt8ٮj8Z@N3_}5^}`p*g P!OH
lpR&P hC]g7~eluK@^.@JQߊV;3{,_C9x1jZ-`޽ele,<t/bt1*~tdVDfWOf|3aʿ&Dӂ;VDuf HYWO%);{CȪiR
ljb?p}Xl%[*ۆ)/L(Rk@ގC$Z	CG`	R[.\f㿺Mё0\DJ
NsES:Ӭ.6Vs߈UuDM42N2Il2t~LJ|=r2،NZLdn5*l G65Dc; O?If|~sGs BWv{'=0apPy:߀*k(}Hs<ldF
#MM] -d4S&=cǷn\R9.jөD:?qGjl^Ot-mGo|Vd)1[<VZ["8>XgzM%F<eV& LU:Vo-q B3U9-閙<VfO5y芲C"D;2'-ݗX\n
fTMvK9?[B
usYHT([ɔ`nn_n{F9\|aG.fB]nLrtM
)/
z|v"B_MjݥvGpop1-N
.k|1{Zu皹`W1t'87\T	]
-z1[gB5-Ǫa(S#(}1qsL7V^	 KfYټGgkExJe=LK.^X  5|؉3Wꌖ̍Բ
W8Ɖj84Qj%%Q7nsvK (_=UłζͶỐI)xjjA040˾]-d\Js$'8-VIdcᇜ?0ɝ,(8&'	rS*9bG.y-bO
DTos%fdrZ[E"v[|+6<ޠ\vp4Q)cS{Ue\h%mA1\5[>YiIrq5%$o$\mtr{GV;X;
4dAC|
	D[H%J.t
e0B{1~Em2K'cɎMX2*V]L'M?+,4`{ 	rfrYiWw&,5j>gtFd?vvc) frcxfoI?x-K"̰;2|=o>3A͡Fn ,κωǼggZSY7E6H-وm[|hU6IW<k&g]l	!gRH`c"7]k&m'pPבucݾERleFeںşdI!m] *y L)45)ߩ"KӸAz!0ƪ؊Jڳ-17_K'?I$X"I 7oC;1v^5 `[P,;LM`%&lO+4̒폭l`oV$R2%pcimrBO4~/#8xWһ.g:r*\j(sF7lmcg^kgT6c'E]`H uw72^ϮURl#l	u
C)dn
ϙeOPca!Ji)}':$r 6$llkc۟+ag9NUe4#B
q㼌bq9FZb҆E/+ʿ6l*i+6,CZsyUڃ1 9v1lV6J9b{Hه*[}#I.0Ġ6u\w} sTԸ%;)[<$S9iVJ/{zݩ1;@+h3Orgͦ[E)[	O?SY23<q8 )M\֚"wf+~*T_wnUZZc%M.& Pt+=FpV
!;>NV~.ܙ@<uClmtp9-q	2(y#K׈\G%%],-VMtTJȵK.t]?^]&-]񕮛'X
?M29\cz-F#T&l&`M1SdK3 2'M׎{/h,fov/hlb\sD\u}4:豎ɣЬ+sfIK!Kv$:b4{2ۢvx>ׄ#b$>v "k, 5[_.d-t#\+Jc#Uz:u&o[	g	G܍#
)ɶm)DP^P2w˔'tU~à%$54US.ad"Yۦc0l1=9J^nkb)tb&8ʪ欍k+<~klR8LL D;=Tae#%j/[A-GmR6D']:jTmEy:\مGXkC>V__koW]Y]bjy[X$DBCGش|Ѭ+G2z^3+{5kIq
Wqeŭ2L]bߤj}iڔb~F$(I-7/=[%Fwh9 <r&+Z
2#Brt7j
ثyɶy#I
 HXOBLwR'$(X	ǻ,^P_KA:&H^Ȅ&?U#^M%m&JIRG|C*hZ9"sv]JPP
y4E)צ.F{3U Pp+ǘ`qțHw$%Y}[ڎ057-&ڹ3ҭ俀HoIxUlU ~ԚK[&
D V{	,LiS{+{6FW˅Zn=QX-%^{86bzmףHBzk+Uìivqeηt)8klp}irA)~Vequ>Vlz*}yMuLcuC@\i/3&f[[&us	7
V "-ՅGu0QشtUGcikk/ZM=Ĳ7As%vIU`^p5_Ut͡U#^S5M)ڃc3PiE
"p{E#\D1£	=}҉8S;@,@&|acNǎgZ䓈f~&Ǧ'@@/xؠx6#PiL7>S@3%HRL'P-\XjfMr'r|>W+ZG^i헩XqF֩Q]&L'}z]3)-Y$߹eqD\cJA1)@T
@(9qyӁrƸb-8:( !IwvX&=#P6Ќ_c1kd))ӀTB#mhK\lkP6Z3uz0;*ϺАZB.dZjt=RI]ul+Ex:^]:P5t)Fp<=j4ֻ=ap贯2eӔHn
P;5sOR;eFY=EF	@w"	u3c} w$Zc8r`p;DA/"u<&x1׻ {D1suʵ[x$f頵<>*I!v,?^m{!+ii(;7|GQ
O7s3qX
]t'fFH
D8HHYPl>UA=#X.zKoPP"\	QJSYK+8˭ngw1ta{1[n1<
&
2i!g
@1	Tއ9I,yYJF:53LzeBg֗#clĴXg9qlaUkpԆ{qi Bc_Kiv/]uVpekTfs (7/x1h2W`(D-ܤɵ;-nt/?Q3Z){'ٱ.WBI,vEDmk@<>
nIX﷉?o	?^it]JD{@cGm4%@[gZ-}kWFoJ'X?W/m؜tjAYz	L
x@`]`G$ՉT5l!K#ү=ʼm6Ht^'sO[ְpܡwh]Vִ28	}8NhZd8~&`tn1E
lݭ6˲@6Q(|T \3RY}VgR;XlٕUK&IW̥\QQ`Z& #jMx§ͫg5U6&R~;ӓI@Oqq!RjR)"z^EӀjoX>({rM&sѡYEe丐Fu䙉$הCi4;\>~)p,-,1ICYwZmIZ
R$\ANsgᙶIMѳ(;'ԯMvbL MRgvARӟ uR9dglMj֤v4&vx
|]&328plۥov`dE3hܲP;6bjۈ}0,n{(VZ;1
{pm1ZEZb4}(N!1MCbqd;yžؑRu1Y9 jxJkl~ R]ӦPSwnZ\<1^qJƬ 5q'RPi/a?uD_` "b*h4̓(H3GSKz
F2M,
 S/[3^϶	Z(` alMgġq-͛oy>CM#D
lgʃ'i.p1"~s4|3&dйNOWI*ZKI۠8iL?tP3׶0V3L:If53{m̞Z\, VzL]̺ v/o0lj D!8Z\Ch|<9=Uܧ']uÐ?ͳ!˥DI
r"lvYШm{	I2sI<&p#d ?Lfq@xU:)g;+5BV5>	T,8dJB=Ie7{xiH-:|tۗ($
dPJ%Ɣ[V#WVGA
ptUez),>/5`mZq <<5-'zOX8%y5ץu[xWyݠ)9Y5`1mq<B`番z8;jn)W9Q(o!ig8ɒJOQKx^\Pm̊%l/likc6v0Lܙ^ g62Wdh}3;IظebJLܕ}?ĩ?kxii32P;o,zj "	8=DD|[-lb2\!T![гØEsoQs%Y<o.=BJVĻ}5'l3 _7@`5x@n(uzV+dC: I?41`.@n7ynSPH1;[lcOϋ6pP:p!ĂeD5#wlq	3Rq.jSr'Y].>*mYY{:=[I&F|(i"|ޘnq[_	?nd_kvMBk N
m(onc :^;r|Q `7}DItƍ1D,BfeouU0+D&VW|6fWum:(Os#A1=FY^v])M81Cr	g4ZŨX`yO,<-\=akJ3dfQ}krv_t{F2EP-F0C<ttZkyXudN#C̳:VC(5@4MyXۚmBnLWD(t͡k54djݼS~@brLhP}\fh>Z~e|>q|Ge<w$D.drYF7%Áۑ?p<QJ;PAC՗4`IrѺ;+<u dby0@M(PB<43*6D @* }M7-DY:[-DS_~巑
=;E6z#Sy	Y`_ҰQz^SG#f.jcRXi:Z~WQh
'Qč*]}Cw^{ÙhTeQ¨0:NcB'%ڞpW
pT8U>qt䠯UI{5 6*칯zg4Kw"g&/KR"!;-hVM"pIU_.	yTI
w=
$,=w̢,_%=brOYPBNr	r)xύP!(^Յr{^rhFBmщ+o+
l;Sr3^fwX^i㩌bms?U{'GoI!Uȸ5@f_Z+KޣF .(ݺ֕;3H{.ŮWԊtvfF3!ɀeW8'ˢ;zrگ96aʛYq䕓!-<I. 	ZͬrzV/M[dt=ZV*Цc{D*җK闝%5Rfrť 55-:?5=EnpճiC?}ef_紣$_I(r贌-wQNb<$^ݻDlY!F=-6 S0dKm{m>$צ0<TIoYBFyGS
RDN7cAߌ?TVf8^Mk# z#f=ҺWNѧ M'
dLfbp@-hCGj	lf5Rn:{w)t=UܻZ|c􏢀\/ݣcmKof陋H>J̧(UdԞ×FVzSFI_ pH	qjsmaa{~IhU֚t*h4ຄq12n
'߬Yb
6ru /RX6?b#PۻHaуr(!FnHVe_'869WXe;@GV큨c1 Miqs'qt'q,fֽx6T{KaTl]@`;Xޡf7O#;+
:3o6rZR"y8"%T@}b$ğ^3&dI$dre\;eQ.3w|娧?:v<3QuJ~HYVO'Cj/"6E-lx)hE 2N:C
(Xl{ƖO4,QrMnTߌEХB*wҋDh܄\OC64Qhl*fr^Caml1999I030  Ϸ  '.    i*Ast_helper(with_loc  8 !a @@A@A(Location#loc
@@ @Y@@@@@6parsing/ast_helper.mli[[
@@@@@A@#loc  8 @@@A!t@@ @@@@@\\#@@@@,AA@#lid  8 @@@A2)Longident!t@@ @@@ @@@@@(^%%)^%D@@@@CBA@#str  8 @@@A&stringO@@ @@@ @@@@@<_EE=_E_@@@@WCA@'str_opt  8 @@@A+&optionJ@@ @@@ @@@ @ @@@@U```V``@@@@pDA@%attrs  8 @@@A$listI)Parsetree)attribute@@ @@@ @@@@@naoa@@@@EA@+default_loc&Stdlib#ref{@@ @@@ @@ee@@F@0with_default_loc@@@ @@@$unitF@@ @!a @@ @@ @	@ @
@hhH@@G@Ӡ%Const@$char@$charB@@ @R(constant@@ @@ @
@oo@@H@&string3quotation_delimiter@@ @@@ @#loc
!t@@ @@@ @@@@ @(constant@@ @@ @@ @@ @@pqM@@I@'integer&suffix/J@@ @@@ @@@@ @(constant@@ @@ @@ @@rNPrN@@&J@#int&suffixOj@@ @@@ @@#intA@@ @(constant@@ @ @ @!@ @"@-s.s@@HK@%int32&suffixq@@ @#@@ @$@%int32L@@ @%(constant@@ @&@ @'@ @(@OtPt@@jL@%int64&suffix@@ @)@@ @*@%int64M@@ @+(constant@@ @,@ @-@ @.@quru@@M@)nativeint&suffix@@ @/@@ @0@)nativeintK@@ @1)(constant@@ @2@ @3@ @4@v
v
D@@N@%float&suffixנ@@ @5@@ @6@u@@ @7I(constant@@ @8@ @9@ @:@wEGwEu@@O@@@nxvy@P@@Ӡ$Attr@"mk#locN@@ @;@@ @<@@@ @=@t'payload@@ @>y)attribute@@ @?@ @@@ @A@ @B@||@@Q@@@{}@R@@Ӡ#Typ@"mk#loc1~@@ @C@@ @D%attrs<@@ @E@@ @F@.core_type_desc@@ @G)core_type@@ @H@ @I@ @J@ @K@ D		# D		b@@4S@$attr@)core_type@@ @L@)attribute@@ @M)core_type@@ @N@ @O@ @P@5 E	c	g6 E	c	@@PT@#any#locy@@ @Q@@ @R%attrsH@@ @S@@ @T@@@ @U)core_type@@ @V@ @W@ @X@ @Y@_ G		` G		@@zU@#var#loc@@ @Z@@ @[%attrsr@@ @\@@ @]@K@@ @^)core_type@@ @_@ @`@ @a@ @b@ H		 H	

@@V@%arrow#loc͠@@ @c@@ @d%attrsؠ@@ @e@@ @f@(Asttypes)arg_label@@ @g@O)core_type@@ @h@V)core_type@@ @i[)core_type@@ @j@ @k@ @l@ @m@ @n@ @o@ I

 J
]
x@@W@%tuple#loc	V@@ @p@@ @q%attrs@@ @r@@ @s@)core_type@@ @t@@ @u)core_type@@ @v@ @w@ @x@ @y@ K
y
} K
y
@@X@&constr#loc9@@ @z@@ @{%attrsD@@ @|@@ @}@@@ @~@)core_type@@ @@@ @)core_type@@ @@ @@ @@ @@ @@+ L

, L
@@FY@'object_#loco@@ @@@ @%attrsz>@@ @@@ @@,object_field@@ @@@ @@+closed_flag@@ @)core_type@@ @@ @@ @@ @@ @@b Mc NN|@@}Z@&class_#loc@@ @@@ @%attrsu@@ @@@ @@m@@ @@)')core_type@@ @@@ @-)core_type@@ @@ @@ @@ @@ @@ O} O}@@[@%alias#loc۠(@@ @@@ @%attrs@@ @@@ @@S)core_type@@ @@@@ @^)core_type@@ @@ @@ @@ @@ @@ P P@@\@'variant#locY@@ @@@ @%attrs@@ @@@ @@)row_field@@ @@@ @@K+closed_flag@@ @@Z%label@@ @@@ @@@ @)core_type@@ @@ @@ @@ @@ @@ @@ Q Rc@@+]@$poly#locT@@ @@@ @%attrs_#@@ @@@ @@Ҡb@@ @@@ @@)core_type@@ @)core_type@@ @@ @@ @@ @@ @@E SF S@@`^@'package#loc@@ @@@ @%attrsX@@ @@@ @@P@@ @@\@@ @ˠ)core_type@@ @@ @@@ @)core_type@@ @@ @@ @@ @@ @@ T U
.
K@@_@)extension#locŠ@@ @@@ @%attrsР@@ @@@ @@=)extension@@ @B)core_type@@ @@ @@ @@ @@ V
L
P V
L
@@`@*force_poly@R)core_type@@ @W)core_type@@ @@ @@ X

 X

@@a@3varify_constructors@m@@ @@@ @@q)core_type@@ @v)core_type@@ @@ @@ @@ Z

 Z

@@b@@@ B		 b]b@c@@Ӡ#Pat@"mkl#loc.{@@ @@@ @%attrs9@@ @@@ @@,pattern_desc@@ @'pattern@@ @@ @@ @@ @@ g g@@0d@$attrm@'pattern@@ @@)attribute@@ @'pattern@@ @@ @@ @@1 h2 h@@Le@#anyn#locu@@ @@@ @%attrsD@@ @@@ @@@@ @'pattern@@ @@ @@ @@ @@[ j\ j,@@vf@#varo#loc@@ @@@ @%attrsn@@ @@@ @@@@ @ 'pattern@@ @@ @@ @@ @@ k-1 k-d@@g@%aliasp#locȠ@@ @@@ @%attrsӠ@@ @@@ @@@'pattern@@ @	@@@ @
J'pattern@@ @@ @@ @
@ @@ @@ lei le@@h@(constantq#locE@@ @@@ @%attrs@@ @@@ @@p(constant@@ @u'pattern@@ @@ @@ @@ @@ m m@@i@(intervalr#loc#p@@ @@@ @%attrs.@@ @@@ @@(constant@@ @@(constant@@ @'pattern@@ @@ @ @ @!@ @"@ @#@ n n9@@,j@%tuples#locU@@ @$@@ @%%attrs`$@@ @&@@ @'@Ӡ'pattern@@ @(@@ @)'pattern@@ @*@ @+@ @,@ @-@A o:>B o:|@@\k@)constructt#loc@@ @.@@ @/%attrsT@@ @0@@ @1@L@@ @2@@@ @4@@ @5'pattern@@ @3@ @6@@ @7'pattern@@ @8@ @9@ @:@ @;@ @<@ p} q@@l@'variantu#locƠ@@ @=@@ @>%attrsѠ@@ @?@@ @@@%label@@ @A@aI'pattern@@ @B@@ @CO'pattern@@ @D@ @E@ @F@ @G@ @H@ r r/@@m@&recordv#locJ@@ @I@@ @J%attrs@@ @K@@ @L@{@@ @N'pattern@@ @M@ @O@@ @P@C+closed_flag@@ @Q'pattern@@ @R@ @S@ @T@ @U@ @V@ s04 t@@n@%arrayw#loc;@@ @W@@ @X%attrsF
@@ @Y@@ @Z@'pattern@@ @[@@ @\'pattern@@ @]@ @^@ @_@ @`@' u( u@@Bo@#or_x#lock@@ @a@@ @b%attrsv:@@ @c@@ @d@'pattern@@ @e@'pattern@@ @f'pattern@@ @g@ @h@ @i@ @j@ @k@Y vZ v$@@tp@+constraint_y#loc@@ @l@@ @m%attrsl@@ @n@@ @o@'pattern@@ @p@)core_type@@ @q!'pattern@@ @r@ @s@ @t@ @u@ @v@ w%) w%u@@q@%type_z#locϠ@@ @w@@ @x%attrsڠ@@ @y@@ @z@@@ @{J'pattern@@ @|@ @}@ @~@ @@ xvz xv@@r@%lazy_{#locE@@ @@@ @%attrs@@ @@@ @@p'pattern@@ @u'pattern@@ @@ @@ @@ @@ y y@@s@&unpack|#loc#p@@ @@@ @%attrs.@@ @@@ @@@@ @'pattern@@ @@ @@ @@ @@	 z
 z,@@$t@%open_}#locM@@ @@@ @%attrsX@@ @@@ @@@@ @@'pattern@@ @'pattern@@ @@ @@ @@ @@ @@9 {-1: {-r@@Tu@*exception_~#loc}@@ @@@ @%attrsL@@ @@@ @@'pattern@@ @'pattern@@ @@ @@ @@ @@d |swe |s@@v@)extension#loc@@ @@@ @%attrsw@@ @@@ @@ )extension@@ @%'pattern@@ @@ @@ @@ @@ } }@@w@@@ ett ~@x@@Ӡ#Exp@"mkC#locݠ*@@ @@@ @%attrs@@ @@@ @@U/expression_desc@@ @Z*expression@@ @@ @@ @@ @@ &* &k@@y@$attrD@j*expression@@ @@q)attribute@@ @v*expression@@ @@ @@ @@ lp l@@z@%identE#loc$q@@ @@@ @%attrs/@@ @@@ @@@@ @*expression@@ @@ @@ @@ @@		 	
 @@	${@(constantF#locM@@ @@@ @%attrsX@@ @@@ @@(constant@@ @*expression@@ @@ @@ @@ @@	4 	5 "@@	O|@$let_G#locx@@ @@@ @%attrsG@@ @@@ @@(rec_flag@@ @@-value_binding@@ @@@ @@	*expression@@ @	*expression@@ @@ @@ @@ @@ @@ @@	r #'	s l@@	}@$fun_H#loc	@@ @@@ @%attrs@@ @@@ @@)arg_label@@ @@	Q	9*expression@@ @@@ @@	A'pattern@@ @@	H*expression@@ @	M*expression@@ @@ @@ @@ @@ @@ @@ @@	 	 @@	~@)function_I#loc	H@@ @@@ @%attrs	@@ @@@ @@	y	w$case@@ @@@ @	}*expression@@ @@ @@ @@ @@	 	 Z@@
@%applyJ#loc	+	x@@ @@@ @%attrs	6@@ @@@ @@	*expression@@ @@	l)arg_label@@ @	*expression@@ @@ @@@ @	*expression@@ @ @ @@ @@ @@ @@
' [_
( @@
B @@&match_K#loc	k	@@ @@@ @%attrs	v:@@ @@@ @@	*expression@@ @	@		$case@@ @
@@ @	*expression@@ @@ @
@ @@ @@ @@
^ 
_ 0@@
y A@$try_L#loc		@@ @@@ @%attrs	q@@ @@@ @@
*expression@@ @@
'
%$case@@ @@@ @
+*expression@@ @@ @@ @@ @@ @@
 15
 1@@
 B@%tupleM#loc	٠
&@@ @@@ @%attrs	@@ @@@ @ @
W
U*expression@@ @!@@ @"
[*expression@@ @#@ @$@ @%@ @&@
 
 @@
 C@)constructN#loc
	
V@@ @'@@ @(%attrs
@@ @)@@ @*@@@ @+@

*expression@@ @,@@ @-
*expression@@ @.@ @/@ @0@ @1@ @2@
 
 2@@ D@'variantO#loc
>
@@ @3@@ @4%attrs
I	
@@ @5@@ @6@q%label@@ @7@
٠
*expression@@ @8@@ @9
*expression@@ @:@ @;@ @<@ @=@ @>@1 372 {@@L E@&recordP#loc
u
@@ @?@@ @@%attrs
	D@@ @A@@ @B@
C@@ @D
*expression@@ @C@ @E@@ @F@*expression@@ @G@@ @H
*expression@@ @I@ @J@ @K@ @L@ @M@t u @@ F@%fieldQ#loc
@@ @N@@ @O%attrs
à	@@ @P@@ @Q@0*expression@@ @R@@@ @S:*expression@@ @T@ @U@ @V@ @W@ @X@  [@@ G@(setfieldR#loc
5@@ @Y@@ @Z%attrs
	@@ @[@@ @\@`*expression@@ @]@@@ @^@l*expression@@ @_q*expression@@ @`@ @a@ @b@ @c@ @d@ @e@ \` @@ H@%arrayS#locl@@ @f@@ @g%attrs*	@@ @h@@ @i@*expression@@ @j@@ @k*expression@@ @l@ @m@ @n@ @o@  @@& I@*ifthenelseT#locO@@ @p@@ @q%attrsZ
@@ @r@@ @s@*expression@@ @t@*expression@@ @u@*expression@@ @v@@ @w*expression@@ @x@ @y@ @z@ @{@ @|@ @}@I J \@@d J@(sequenceU#loc@@ @~@@ @%attrs
\@@ @@@ @@*expression@@ @@*expression@@ @*expression@@ @@ @@ @@ @@ @@{ | @@ K@&while_V#loc@@ @@@ @%attrsʠ
@@ @@@ @@7*expression@@ @@>*expression@@ @C*expression@@ @@ @@ @@ @@ @@  ?\@@ L@$for_W#loc>@@ @@@ @%attrs
@@ @@@ @@i'pattern@@ @@p*expression@@ @@w*expression@@ @@
9.direction_flag@@ @@*expression@@ @*expression@@ @@ @@ @@ @@ @@ @@ @@ @@ ]a @@
 M@&coerceX#loc8@@ @@@ @%attrsC@@ @@@ @@*expression@@ @@Ӡ)core_type@@ @@@ @@)core_type@@ @*expression@@ @@ @@ @@ @@ @@ @@
2 
3 2\@@
M N@+constraint_Y#locv@@ @@@ @%attrsE@@ @@@ @@*expression@@ @@)core_type@@ @*expression@@ @@ @@ @@ @@ @@
d ]a
e @@
 O@$sendZ#loc@@ @@@ @%attrsw@@ @@@ @@
 *expression@@ @@@@ @
**expression@@ @@ @@ @@ @@ @@
 
 @@
 P@$new_[#locؠ
%@@ @@@ @%attrs@@ @@@ @@
@@ @
S*expression@@ @@ @@ @@ @@
 
 N@@
 Q@*setinstvar\#loc

N@@ @@@ @%attrs
@@ @@@ @@@@ @@
~*expression@@ @
*expression@@ @@ @@ @@ @@ @@
 OS
 O@@ R@(override]#loc
1
~@@ @@@ @%attrs
< @@ @@@ @@
B@@ @
*expression@@ @@ @@@ @
*expression@@ @@ @@ @@ @@$ % @@? S@)letmodule^#loc
h
@@ @@@ @%attrs
s7@@ @@@ @@E@@ @@
+module_expr@@ @@
*expression@@ @
*expression@@ @@ @@ @@ @@ @@ @@[ 	\ Ky@@v T@,letexception_#loc

@@ @@@ @%attrs
n@@ @@@ @@5extension_constructor@@ @@*expression@@ @#*expression@@ @@ @@ @@ @@ @ @ z~ @@ U@'assert_`#loc
Ѡ@@ @@@ @%attrs
ܠ@@ @@@ @@I*expression@@ @N*expression@@ @@ @@ @@ @	@   /@@ V@%lazy_a#loc
I@@ @
@@ @%attrs@@ @@@ @
@t*expression@@ @y*expression@@ @@ @@ @@ @@  0 4  0 s@@ W@$polyb#loc't@@ @@@ @%attrs2@@ @@@ @@*expression@@ @@ )core_type@@ @@@ @*expression@@ @@ @@ @@ @@ @@  t x   @@5 X@'object_c#loc^@@ @@@ @ %attrsi
-@@ @!@@ @"@/class_structure@@ @#*expression@@ @$@ @%@ @&@ @'@E   F  !#@@` Y@'newtyped#loc@@ @(@@ @)%attrs
X@@ @*@@ @+@
@@ @,@*expression@@ @-*expression@@ @.@ @/@ @0@ @1@ @2@u !$!(v !$!p@@ Z@$packe#loc@@ @3@@ @4%attrsĠ
@@ @5@@ @6@1+module_expr@@ @76*expression@@ @8@ @9@ @:@ @;@ !q!u !q!@@ [@%open_f#loc1@@ @<@@ @=%attrs
@@ @>@@ @?@\0open_declaration@@ @@@c*expression@@ @Ah*expression@@ @B@ @C@ @D@ @E@ @F@ !! !"@@ \@%letopg#locc@@ @G@@ @H%attrs!
@@ @I@@ @J@*binding_op@@ @K@*binding_op@@ @L@@ @M@*expression@@ @N*expression@@ @O@ @P@ @Q@ @R@ @S@ @T@ ""  "R"@@+ ]@)extensionh#locT@@ @U@@ @V%attrs_#@@ @W@@ @X@)extension@@ @Y*expression@@ @Z@ @[@ @\@ @]@; ""< ""@@V ^@+unreachablei#loc@@ @^@@ @_%attrsN@@ @`@@ @a@@@ @b*expression@@ @c@ @d@ @e@ @f@e ""f "#@@ _@$casej@'pattern@@ @g%guard*expression@@ @h@@ @i@*expression@@ @j$$case@@ @k@ @l@ @m@ @n@ ##  ##\@@ `@*binding_opk@@@ @o@9'pattern@@ @p@@*expression@@ @q@-@@ @rJ*binding_op@@ @s@ @t@ @u@ @v@ @w@ #]#a #]#@@ a@@@  ##@ b@@Ӡ#Val@"mkB#locO@@ @x@@ @y%attrs
@@ @z@@ @{$docs*Docstrings$docs@@ @|@@ @}$prim(@@ @~@@ @@@ @@-@@ @@)core_type@@ @1value_description@@ @@ @@ @@ @@ @@ @@ @@ ## $$L@@* c@@@ ## $M$R@. d@@Ӡ$Type@"mk?#loc]@@ @@@ @%attrsh,@@ @@@ @$docss[$docs@@ @@@ @$texth$text@@ @@@ @&params)core_type@@ @(variance@@ @+injectivity@@ @@ @@ @@@ @@@ @%cstrs)core_type@@ @%)core_type@@ @@@ @@ @@@ @@@ @$kindР7)type_kind@@ @@@ @$privݠ,private_flag@@ @@@ @(manifestQ)core_type@@ @@@ @@@@ @\0type_declaration@@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ $$ %%@@ e@+constructor@#loc
W@@ @@@ @%attrs@@ @@@ @$info $info@@ @@@ @$args-5constructor_arguments@@ @@@ @#res:)core_type@@ @@@ @@;@@ @7constructor_declaration@@ @@ @@ @@ @@ @@ @@ @@ %% &&3@@1 f@%fieldA#locZ@@ @@@ @%attrse)@@ @@@ @$infopX$info@@ @@@ @#mut},mutable_flag@@ @@@ @@~@@ @@)core_type@@ @1label_declaration@@ @@ @@ @@ @@ @@ @@ @@` &4&8a &m&@@{ g@@@d $m$me &&@ h@@Ӡ"Te@"mk:#loc@@ @@@ @%attrs}@@ @@@ @$docsĠ$docs@@ @@@ @&paramsѠ>?)core_type@@ @ݠ(variance@@ @۠	+injectivity@@ @@ @@ @@@ @@@ @$priv,private_flag@@ @@@ @@@@ @@om5extension_constructor@@ @@@ @s.type_extension@@ @@ @@ @@ @@ @@ @@ @@ @@ && 'P'@@ i@,mk_exception;#loc!n@@ @@@ @%attrs,@@ @@@ @$docs7$docs@@ @@@ @@5extension_constructor@@ @.type_exception@@ @@ @@ @@ @@ @@ '' '(@@0 j@+constructor<#locY@@ @@@ @%attrsd(@@ @@@ @$docsoW$docs@@ @@@ @$info|d$info@@ @ @@ @@}@@ @@:extension_constructor_kind@@ @5extension_constructor@@ @@ @@ @@ @@ @@ @	@ @
@_ ((` (](@@z k@$decl=#loc@@ @@@ @%attrsr@@ @
@@ @$docs$docs@@ @@@ @$infoƠ$info@@ @@@ @$argsӠ:5constructor_arguments@@ @@@ @#resG)core_type@@ @@@ @@@@ @R5extension_constructor@@ @@ @@ @@ @@ @@ @@ @@ @@ (( )#)>@@ l@&rebind>#loc M@@ @ @@ @!%attrs@@ @"@@ @#$docs$docs@@ @$@@ @%$info#$info@@ @&@@ @'@$@@ @(@@@ @)5extension_constructor@@ @*@ @+@ @,@ @-@ @.@ @/@ @0@ )?)C ))@@ m@@@ &&	 ))@# n@@Ӡ#Mty@"mk1#locR@@ @1@@ @2%attrs]!@@ @3@@ @4@0module_type_desc@@ @5+module_type@@ @6@ @7@ @8@ @9@9 **	: **L@@T o@$attr2@+module_type@@ @:@)attribute@@ @;+module_type@@ @<@ @=@ @>@U *M*QV *M*@@p p@%ident3#loc@@ @?@@ @@%attrsh@@ @A@@ @B@`@@ @C+module_type@@ @D@ @E@ @F@ @G@~ ** **@@ q@%alias4#loc @@ @H@@ @I%attrs͠@@ @J@@ @K@@@ @L=+module_type@@ @M@ @N@ @O@ @P@ ** **@@ r@)signature5#loc8@@ @Q@@ @R%attrs@@ @S@@ @T@c)signature@@ @Uh+module_type@@ @V@ @W@ @X@ @Y@ + + + +G@@ s@(functor_6#locc@@ @Z@@ @[%attrs!@@ @\@@ @]@1functor_parameter@@ @^@+module_type@@ @_+module_type@@ @`@ @a@ @b@ @c@ @d@ +H+L +v+@@ t@%with_7#locH@@ @e@@ @f%attrsS@@ @g@@ @h@+module_type@@ @i@͠/with_constraint@@ @j@@ @k+module_type@@ @l@ @m@ @n@ @o@ @p@; ++< +,@@V u@'typeof_8#loc@@ @q@@ @r%attrsN@@ @s@@ @t@+module_expr@@ @u+module_type@@ @v@ @w@ @x@ @y@f ,,g ,,W@@ v@)extension9#loc@@ @z@@ @{%attrsy@@ @|@@ @}@")extension@@ @~'+module_type@@ @@ @@ @@ @@ ,X,\ ,X,@@ w@@@ )),,@ x@@Ӡ#Mod@"mk(#locߠ,@@ @@@ @%attrs@@ @@@ @@W0module_expr_desc@@ @\+module_expr@@ @@ @@ @@ @@,,,-@@ y@$attr)@l+module_expr@@ @@s)attribute@@ @x+module_expr@@ @@ @@ @@----P@@ z@%ident*#loc&s@@ @@@ @%attrs1@@ @@@ @@@@ @+module_expr@@ @@ @@ @@ @@	-R-V	-R-@@& {@)structure+#locO@@ @@@ @%attrsZ@@ @@@ @@)structure@@ @+module_expr@@ @@ @@ @@ @@6
--7
--@@Q |@(functor_,#locz@@ @@@ @%attrsI@@ @@@ @@1functor_parameter@@ @@+module_expr@@ @+module_expr@@ @@ @@ @@ @@ @@h--i..;@@ }@%apply-#loc@@ @@@ @%attrs{@@ @@@ @@$+module_expr@@ @@++module_expr@@ @0+module_expr@@ @@ @@ @@ @@ @@
.<.@..@@ ~@+constraint_.#locޠ+@@ @@@ @%attrs@@ @@@ @@V+module_expr@@ @@]+module_type@@ @b+module_expr@@ @@ @@ @@ @@ @@....@@ @&unpack/#loc]@@ @@@ @%attrs@@ @@@ @@*expression@@ @+module_expr@@ @@ @@ @@ @@.../=@@ @)extension0#loc;@@ @@@ @%attrsF
@@ @@@ @@)extension@@ @+module_expr@@ @@ @@ @@ @@"/>/B#/>/@@= @@@&,,'//@A @@Ӡ#Sig@"mk#locp@@ @@@ @@3signature_item_desc@@ @.signature_item@@ @@ @@ @@L//M//@@g @%value#loc@@ @@@ @@1value_description@@ @.signature_item@@ @@ @@ @@l//m/03@@ @%type_#loc@@ @@@ @@(rec_flag@@ @@*(0type_declaration@@ @@@ @..signature_item@@ @@ @@ @@ @@0408040@@ @*type_subst#locܠ)@@ @@@ @@OM0type_declaration@@ @@@ @S.signature_item@@ @@ @@ @@0000@@ @.type_extension#locN@@ @@@ @@n.type_extension@@ @s.signature_item@@ @@ @@ @@0001@@ @*exception_#loc!n@@ @@@ @@.type_exception@@ @.signature_item@@ @@ @@ @@1111P@@ @'module_#locA@@ @@@ @@2module_declaration@@ @ .signature_item@@ @@ @@ @@1Q1U1Q1@@8 @)mod_subst#loca@@ @@@ @@3module_substitution@@ @.signature_item@@ @@ @@ @	@= 11> 11@@X @*rec_module#loc@@ @
@@ @@2module_declaration@@ @@@ @
.signature_item@@ @@ @@ @@b!11c!12!@@} @'modtype#loc@@ @@@ @@7module_type_declaration@@ @.signature_item@@ @@ @@ @@"2"2&"2"2h@@ @-modtype_subst #locƠ@@ @@@ @@37module_type_declaration@@ @8.signature_item@@ @@ @@ @@#2i2m#2i2@@ @%open_!#loc3@@ @@@ @@S0open_description@@ @X.signature_item@@ @ @ @!@ @"@$22$22@@ @(include_"#locS@@ @#@@ @$@s3include_description@@ @%x.signature_item@@ @&@ @'@ @(@%22%237@@ @&class_##loc&s@@ @)@@ @*@1class_description@@ @+@@ @,.signature_item@@ @-@ @.@ @/@&383<&383|@@" @*class_type$#locK@@ @0@@ @1@6class_type_declaration@@ @2@@ @3.signature_item@@ @4@ @5@ @6@,'3}3-'3}3@@G @)extension%#locp@@ @7@@ @8%attrs{?@@ @9@@ @:@)extension@@ @;.signature_item@@ @<@ @=@ @>@ @?@W(33X(34@@r @)attribute&#loc@@ @@@@ @A@)attribute@@ @B
.signature_item@@ @C@ @D@ @E@w)44x)44P@@ @$text'@$text@@ @F(&.signature_item@@ @G@@ @H@ @I@*4Q4U*4Q4z@@ @@@//+4{4@ @@Ӡ#Str@"mk#locߠ,@@ @J@@ @K@L3structure_item_desc@@ @LQ.structure_item@@ @M@ @N@ @O@044044@@ @$eval#locL@@ @P@@ @Q%attrs
q*attributes@@ @R@@ @S@y*expression@@ @T~.structure_item@@ @U@ @V@ @W@ @X@2442455@@ @%value#loc,y@@ @Y@@ @Z@T(rec_flag@@ @[@-value_binding@@ @\@@ @].structure_item@@ @^@ @_@ @`@ @a@3565:3565@@/ @)primitive#locX@@ @b@@ @c@1value_description@@ @d.structure_item@@ @e@ @f@ @g@44555455@@O @%type_	#locx@@ @h@@ @i@(rec_flag@@ @j@0type_declaration@@ @k@@ @l.structure_item@@ @m@ @n@ @o@ @p@`555a556@@{ @.type_extension
#loc@@ @q@@ @r@.type_extension@@ @s.structure_item@@ @t@ @u@ @v@666666X@@ @*exception_#locĠ@@ @w@@ @x@1.type_exception@@ @y6.structure_item@@ @z@ @{@ @|@76Y6]76Y6@@ @'module_#loc1@@ @}@@ @~@Q.module_binding@@ @V.structure_item@@ @@ @@ @@866866@@ @*rec_module
#locQ@@ @@@ @@wu.module_binding@@ @@@ @{.structure_item@@ @@ @@ @@966967@@  @'modtype#loc)v@@ @@@ @@7module_type_declaration@@ @.structure_item@@ @@ @@ @@:77":77d@@  @%open_#locI@@ @@@ @@0open_declaration@@ @.structure_item@@ @@ @@ @@%;7e7i&;7e7@@@ @&class_#loci@@ @@@ @@ܠ1class_declaration@@ @@@ @.structure_item@@ @@ @@ @@J<77K<77@@e @*class_type#loc@@ @@@ @@6class_type_declaration@@ @@@ @.structure_item@@ @@ @@ @@o=77p=785@@ @(include_#loc @@ @@@ @@ 3include_declaration@@ @%.structure_item@@ @@ @@ @@>868:>868y@@ @)extension#locӠ @@ @@@ @%attrsޠ@@ @@@ @@K)extension@@ @P.structure_item@@ @@ @@ @@ @@?8z8~?8z8@@ @)attribute#locK@@ @@@ @@k)attribute@@ @p.structure_item@@ @@ @@ @@@88@88@@ @$text@$text@@ @.structure_item@@ @@@ @@ @@A9 9A9 9)@@ @@@.44B9*9/@ @@Ӡ"Md@"mk#locB@@ @@@ @%attrsM@@ @@@ @$docsX@$docs@@ @@@ @$texteM$text@@ @@@ @@9@@ @@+module_type@@ @2module_declaration@@ @@ @@ @@ @@ @@ @@ @@HG9]9aIH99@@c @@@LE9L9LMI99@g @@Ӡ"Ms@"mk#loc@@ @@@ @%attrse@@ @@@ @$docs$docs@@ @@@ @$text$text@@ @@@ @@@@ @@|@@ @03module_substitution@@ @@ @@ @@ @@ @@ @@ @@N::O:L:s@@ @@@L99P:t:y@ @@Ӡ#Mtd@"mk#loc5@@ @@@ @%attrs@@ @@@ @$docs$docs@@ @@@ @$text$text@@ @@@ @#typ+module_type@@ @@@ @@@@ @7module_type_declaration@@ @@ @@ @@ @@ @@ @@ @@U::V:;)@@ @@@S::W;*;/@ @@Ӡ"Mb@"mk#locB@@ @@@ @%attrsM@@ @@@ @$docsX@$docs@@ @@@ @$texteM$text@@ @@@ @@9@@ @@+module_expr@@ @.module_binding@@ @@ @@ @@ @@ @@ @ @ @@H\;Y;]I];;@@c @@@LZ;H;HM^;;@g @@Ӡ#Opn@"mk #loc@@ @@@ @%attrse@@ @@@ @$docs$docs@@ @@@ @(override-override_flag@@ @@@ @	@!a @
,*open_infos	@@ @@ @@ @
@ @@ @@ @@c;;d<)<]@@ @@@a;;e<^<c@ @@Ӡ$Incl@"mk#loc2@@ @@@ @%attrs@@ @@@ @$docs$docs@@ @@@ @@!a @n-include_infos	@@ @@ @@ @@ @@ @@j<<j<<@@ @@@h<u<uk<<@ @@Ӡ"Vb@"mk#loc't@@ @@@ @%attrs2@@ @@@ @ $docs=
%$docs@@ @!@@ @"$textJ
2$text@@ @#@@ @$@'pattern@@ @%@*expression@@ @&-value_binding@@ @'@ @(@ @)@ @*@ @+@ @,@ @-@/p==0q=I=u@@J @@@3n<<4r=v={@N @@Ӡ#Cty@"mk#loc}@@ @.@@ @/%attrsL@@ @0@@ @1@/class_type_desc@@ @2*class_type@@ @3@ @4@ @5@ @6@dz==ez=>@@ @$attr@
*class_type@@ @7@)attribute@@ @8*class_type@@ @9@ @:@ @;@{>>{>>B@@ @&constr#locĠ@@ @<@@ @=%attrsϠ@@ @>@@ @?@@@ @@@GE)core_type@@ @A@@ @BK*class_type@@ @C@ @D@ @E@ @F@ @G@}>D>H}>D>@@ @)signature#locF@@ @H@@ @I%attrs@@ @J@@ @K@q/class_signature@@ @Lv*class_type@@ @M@ @N@ @O@ @P@~>>~>>@@ @%arrow#loc$q@@ @Q@@ @R%attrs/@@ @S@@ @T@W)arg_label@@ @U@)core_type@@ @V@*class_type@@ @W*class_type@@ @X@ @Y@ @Z@ @[@ @\@ @]@>>?&?D@@4 @)extension#loc]@@ @^@@ @_%attrsh,@@ @`@@ @a@)extension@@ @b*class_type@@ @c@ @d@ @e@ @f@D?E?IE?E?@@_ @%open_#loc@@ @g@@ @h%attrsW@@ @i@@ @j@ 0open_description@@ @k@*class_type@@ @l*class_type@@ @m@ @n@ @o@ @p@ @q@v??w??@@ @@@zx=={??@ @@Ӡ#Ctf@"mk#locĠ@@ @r@@ @s%attrsϠ@@ @t@@ @u$docsڠ$docs@@ @v@@ @w@I5class_type_field_desc@@ @xN0class_type_field@@ @y@ @z@ @{@ @|@ @}@@%@)@[@@@ @$attr@^0class_type_field@@ @~@e)attribute@@ @j0class_type_field@@ @@ @@ @@@@@@@@ @(inherit_#loce@@ @@@ @%attrs#@@ @@@ @@*class_type@@ @0class_type_field@@ @@ @@ @@ @@@@  @A@@  @$val_#locC@@ @@@ @%attrsN@@ @@@ @@M@@ @@{,mutable_flag@@ @@,virtual_flag@@ @@)core_type@@ @0class_type_field@@ @@ @@ @@ @@ @@ @@ @@ =AA >AZA@@ X @'method_#loc@@ @@@ @%attrsP@@ @@@ @@@@ @@,private_flag@@ @@,virtual_flag@@ @@ )core_type@@ @ 0class_type_field@@ @@ @@ @@ @@ @@ @@ @@ {AA |AB@@  @+constraint_#loc @@ @@@ @%attrsʠ@@ @@@ @@ 7)core_type@@ @@ >)core_type@@ @ C0class_type_field@@ @@ @@ @@ @@ @@ BB
 BQBg@@  @)extension#loc >@@ @@@ @%attrs@@ @@@ @@ i)extension@@ @ n0class_type_field@@ @@ @@ @@ @@ BhBl BhB@@  @)attribute#loc  i@@ @@@ @@ )attribute@@ @ 0class_type_field@@ @@ @@ @@ BB BB@@! @$text@$text@@ @  0class_type_field@@ @@@ @@ @@!BB!BC@@!- @@@!@@!CC#@!1 @@Ӡ"Cl@"mk#loc ` @@ @@@ @%attrs k/@@ @@@ @@ /class_expr_desc@@ @ *class_expr@@ @@ @@ @@ @@!GCOCS!HCOC@@!b @$attr@ *class_expr@@ @@ )attribute@@ @ *class_expr@@ @@ @@ @@!cCC!dCC@@!~ @&constr#loc  @@ @@@ @%attrs v@@ @@@ @@n@@ @@!*!()core_type@@ @@@ @!.*class_expr@@ @@ @@ @@ @@ @@!CC!CD@@! @)structure#loc ܠ!)@@ @@@ @%attrs @@ @@@ @@!T/class_structure@@ @!Y*class_expr@@ @@ @@ @@ @@!DD!DDf@@! @$fun_#loc!!T@@ @@@ @%attrs!@@ @@@ @@:)arg_label@@ @@!!*expression@@ @@@ @@!'pattern@@ @@!*class_expr@@ @!*class_expr@@ @@ @@ @@ @@ @@ @@ @@"DgDk"	DD@@"# @%apply#loc!L!@@ @@@ @%attrs!W @@ @@@ @@!*class_expr@@ @@!Ѡ)arg_label@@ @!*expression@@ @ @ @@@ @!*class_expr@@ @@ @@ @@ @@ @@"HDD"IEEG@@"c @$let_#loc!!@@ @	@@ @
%attrs! [@@ @@@ @@(rec_flag@@ @
@""-value_binding@@ @@@ @@"*class_expr@@ @"*class_expr@@ @@ @@ @@ @@ @@ @@"EHEL"EE@@" @+constraint_#loc!ʠ"@@ @@@ @%attrs!ՠ @@ @@@ @@"B*class_expr@@ @@"I*class_type@@ @"N*class_expr@@ @@ @@ @@ @ @ @!@"EE"F F@@" @)extension#loc!"I@@ @"@@ @#%attrs" @@ @$@@ @%@"t)extension@@ @&"y*class_expr@@ @'@ @(@ @)@ @*@"FF"FFW@@" @%open_#loc"'"t@@ @+@@ @,%attrs"2 @@ @-@@ @.@"0open_description@@ @/@"*class_expr@@ @0"*class_expr@@ @1@ @2@ @3@ @4@ @5@#FXF\#FF@@#0 @@@#C>C>#FF@#4 @@Ӡ"Cf@"mk#loc"c"@@ @6@@ @7%attrs"n!2@@ @8@@ @9$docs"ya$docs@@ @:@@ @;@"0class_field_desc@@ @<"+class_field@@ @=@ @>@ @?@ @@@ @A@#WFF#XG5GF@@#r @$attr@"+class_field@@ @B@#)attribute@@ @C#	+class_field@@ @D@ @E@ @F@#sGGGK#tGGG|@@# @(inherit_#loc"#@@ @G@@ @H%attrs" !@@ @I@@ @J@ -override_flag@@ @K@#6*class_expr@@ @L@#Y!@@ @M@@ @N#E+class_field@@ @O@ @P@ @Q@ @R@ @S@ @T@#G~G#GG@@# @$val_#loc"#@@@ @U@@ @V%attrs"!@@ @W@@ @X@!@@ @Y@!+,mutable_flag@@ @Z@#w0class_field_kind@@ @[#|+class_field@@ @\@ @]@ @^@ @_@ @`@ @a@#GG#H,HQ@@$ @'method_#loc#*#w@@ @b@@ @c%attrs#5!@@ @d@@ @e@"4@@ @f@!b,private_flag@@ @g@#0class_field_kind@@ @h#+class_field@@ @i@ @j@ @k@ @l@ @m@ @n@$HRHV$HH@@$8 @+constraint_#loc#a#@@ @o@@ @p%attrs#l"0@@ @q@@ @r@#)core_type@@ @s@#)core_type@@ @t#+class_field@@ @u@ @v@ @w@ @x@ @y@$OHH$PII@@$j @,initializer_#loc##@@ @z@@ @{%attrs#"b@@ @|@@ @}@$*expression@@ @~$+class_field@@ @@ @ @ @ @ @ @$zII${IId@@$ @)extension#loc#$@@ @ @@ @ %attrs#ɠ"@@ @ @@ @ @$6)extension@@ @ $;+class_field@@ @ @ @ @ @ @ @ @$IeIi$IeI@@$ @)attribute#loc#$6@@ @ @@ @ @$V)attribute@@ @ $[+class_field@@ @ @ @ @ @ @$II$II@@$ @$text@$text@@ @ $v$t+class_field@@ @ @@ @ @ @ @$II$IJ@@$ @(virtual_@$)core_type@@ @ $0class_field_kind@@ @ @ @ @$J
J$J
J<@@% @(concrete@"U-override_flag@@ @ @$*expression@@ @ $0class_field_kind@@ @ @ @ @ @ @%J=JA%J=J~@@%+ @@@%FF%JJ@%/ @@Ӡ"Ci@"mk#loc$^$@@ @ @@ @ %attrs$i#-@@ @ @@ @ $docs$t\$docs@@ @ @@ @ $text$i$text@@ @ @@ @ $virt$",virtual_flag@@ @ @@ @ &params$%%	)core_type@@ @ "(variance@@ @ "+injectivity@@ @ @ @ @ @ @@ @ @@ @ @#@@ @ @!a @ %*+class_infos	@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @%JJ%KDKe@@% @@@%JJ%KfKk@% @@Ӡ$Csig@"mk@%E)core_type@@ @ @%R%P0class_type_field@@ @ @@ @ %V/class_signature@@ @ @ @ @ @ @%KK%KK@@% @@@%KK%KK@% @@Ӡ$Cstr@"mk@%p'pattern@@ @ @%}%{+class_field@@ @ @@ @ %/class_structure@@ @ @ @ @ @ @%LL%LLF@@& @@@%KK%LGLL@&
 @@Ӡ"Rf@"mk#loc%9%@@ @ @@ @ %attrs%D$@@ @ @@ @ @%.row_field_desc@@ @ %)row_field@@ @ @ @ @ @ @ @ @& LqLu&!LqL@@&; @#tag#loc%d%@@ @ @@ @ %attrs%o$3@@ @ @@ @ @&&#%label@@ @ @@ @ @$boolE@@ @ @%%)core_type@@ @ @@ @ %)row_field@@ @ @ @ @ @ @ @ @ @ @ @ @&cLL&dLM@@&~ @(inherit_#loc%%@@ @ @@ @ @&)core_type@@ @ &)row_field@@ @ @ @ @ @ @&MM&MMN@@& @@@&L`L`&MOMT@& @@Ӡ"Of@"mk#loc%Ѡ&@@ @ @@ @ %attrs%ܠ$@@ @ @@ @ @&I1object_field_desc@@ @ &N,object_field@@ @ @ @ @ @ @ @ @&M|M&MM@@& @#tag#loc%&I@@ @ @@ @ %attrs&$@@ @ @@ @ @&$2%label@@ @ @@ @ @&)core_type@@ @ &,object_field@@ @ @ @ @ @ @ @ @ @ @&MM&MN&@@'	 @(inherit_#loc&2&@@ @ @@ @ @&)core_type@@ @ &,object_field@@ @ @ @ @ @ @'N'N+'N'N^@@') @@@'MkMk'N_Nd@'- @@@  .   U  =  *Ast_helper0/IS *vM,@A(Warnings0^1]/3W-Stdlib__Uchar0o9us:2[]+Stdlib__Seq0Jd8_mJk.Stdlib__Lexing0XVC[E,Stdlib__Lazy09=C;!7.Stdlib__Format0~RsogJyc.Stdlib__Either0$_ʩ<.Stdlib__Buffer0ok
Vj&Stdlib0-&fºnr39tߠ)Parsetree0e3S#ʌo)Longident0+۴7$ȷG~T(Location0BJ/Dj̾&>Sޠ*Docstrings0<4u<	g|0CamlinternalLazy01H^(YPhOD5g8CamlinternalFormatBasics0ĵ'(jdǠ(Asttypes0CoࠌD(@            @@Caml1999T030 <  b { (  4 *Ast_helper*ocaml.text&_none_@@ A	 Helpers to produce Parsetree fragments

  {b Warning} This module is unstable and part of
  {{!Compiler_libs}compiler-libs}.

6parsing/ast_helper.mliP77U@@@@@@  0 @@@@@@*floatarrayQ  8 @@@A@@@@@3@@@5extension_constructorP  8 @@@A@@@@@7@@@#intA  8 @@@A@@@@@;@A@$charB  8 @@@A@@@@@?@A@&stringO  8 @@@A@@@@@C@@@%floatD  8 @@@A@@@@@G@@@$boolE  8 @@%false^@@Q@$true_@@W@@@A@@@@@X@A@$unitF  8 @@"()`@@b@@@A@@@@@c@A@
#exnG  8 @@AA@@@@@g@@@%arrayH  8 @ @O@A@A@ @@@@@p@@@$listI  8 @ @P@A"[]a@@}@"::b@@ @Q@@@
@@A@Y@@@@@@@@&optionJ  8 @ @S@A$Nonec@@@$Somed@@@@@A@Y@@@@@@@@&lazy_tN  8 @ @U@A@A@Y@@@@@@@@)nativeintK  8 @@@A@@@@@@@@%int32L  8 @@@A@@@@@@@@%int64M  8 @@@A@@@@@@@@:Undefined_recursive_module]    Z@@@ @J@@ @@@ @V@@A͠=ocaml.warn_on_literal_patternѐ@@.Assert_failure\    @@ @X@@Aݠ@
0Division_by_zeroY    '@@@A堰@+End_of_fileX    /@@@A @)Sys_errorW    7@3@@A)(@.Sys_blocked_io[    @@@@A10@)Not_foundV    H@@@A9	8	@'FailureU    P@L@@ABA@0Invalid_argumentT    Y@U@@AKJ@.Stack_overflowZ    b@@@A S#R#@-Out_of_memoryS    j@@@A([+Z+@-Match_failureR    r@qmn@ @c@@A6i9h9@
%bytesC  8 @@@A@@@@@=@@@&Stdlib@A6ࠐ(Asttypes(AsttypesAWBW@@A  0 @??@@@@@@?@AFW@@D@ࠐ*Docstrings*DocstringsTXUX@@A  0 SRRSSSSS@@AYX@@@ࠐ)Parsetree)ParsetreegYhY@@A  0 feefffff@@AlY@@@A  ( (with_loc Aw[x[@А!a @  0 ~}}~~~~~@  8 @ @@A@A@B@
@@B@
B@נG@B@@@[[
@@@@@@A[[@@BA@  8 @A@A(Location#loc*C@
@@ @
Y@@@@@@@@@@Aг(Location[@А!a7[[ @@@:'@@)@@S)(@A  ( #loc B\\@@  8 @@@A,!t@@ @
@@@@\\#@@@@A@@Aг(Location
\@@  0 @vmE  8 @@@A%@@C@
C@
@@@@@@@@A
@@@@  0 @@A@A  ( #lid C^%*^%-@@  8 @@@A)Longident!t@@ @
@@ @
@@@@^%%^%D@@@@B@@Aг(with_loc^%<
@г)Longident^%0^%;@@  0 @?\V.  8 @@@A5@@D@
D@
@@@@!@@@@A
@@@/!@@#@@  0 %$$%%%%%@@A$#@A  ( #str D3_EJ4_EM@@  8 @@@AǠ
@@ @@@ @@@@@A_EEB_E_@@@@YC@@Aг(with_locK_EW
@г&stringS_EPT_EV@@  0 RQQRRRRR@;hb)  8 @@@A0@@E@E@@@@@ @@@@A
@@@* @@"@@  0 _^^_____@@A#"@A  ( 'str_opt Em``en``l@@  8 @@@AH@@ @@@ @@@ @@@@@`````@@@@D@@Aг(with_loc``}
@г&option``v``|@г&string``o``u@@$  0 @Iqk7  8 @@@A>@@F@F@@@@@)@@@&@A
@@@4@@@9
*@@,@@  0 @
@A-,@A  ( %attrs Faa@@  8 @@@AXa)attribute@@ @2@@ @4@@@@aa@@@@E@@Aг$lista
@гaa@@  0 @<rl)  8 @@@A0@@G@5G@1@@@@@@@@A
@@@*@@!@@  0 @@A"!@7 {1 Default locations} cc@@@@@@  0 @F@@A+default_loc  ee@г#ref	e
e@гM#locee@@	@@ @@"@@@@@ @B'@@@ e@)ocaml.doc1	4 Default value for all optional location arguments. .f/f@@@@@@@FF@(@<0with_default_loc :h;h-@б@г#locEh/Fh2@@	@@ @C  0 GFFGGGGG@UP.@A@@б@б@г$unitXh7Yh;@@	@@ @D@@А!a @JG@Egh?hhA@@@
@ @F!@@А!a%phFqhH@@@@ @G*uh6@@@1@ @H.4@@@{h@[	[ Set the [default_loc] within the scope of the execution
        of the provided function. iIMj@@@@@@@G@@A/ {1 Constants} ll@@@@@@  0 @Qf#@A%Const Gnn@@Б$char oo@б@г$charoo@@	@@ @K  0 @)@A@@гh(constantoo@@	@@ @L@@@@ @M@@@o@@H@
@@&string pp@б3quotation_delimiterг&stringqq$@@	@@ @N  0 @[G!@A@@б#locг]!t(Locationq-q7@@@@ @O@@б@гܠ&stringq;qA@@	@@ @P%@@г(constant!qE"qM@@	@@ @Q2@@@@ @R5@@3)@@ @S
@ @T=2q(@@O	G@@ @U@ @VE:q	@@	@=p@@TI@@@L'integer HrNTIrN[@б&suffixг!$charUrNfVrNj@@	@@ @W  0 WVVWWWWW@g~!@A@@б@г.&stringfrNngrNt@@	@@ @X@@г(constantsrNxtrN@@	@@ @Y@@@@ @Z!@@2R*@@ @[	@ @\(rN^@@	@rNP@@J@@@/#int ss@б&suffixгj$charss@@	@@ @]  0 @Ja!@A@@б@г#intss@@	@@ @^@@гX(constantss@@	@@ @_@@@@ @`!@@2*@@ @a	@ @b(s@@	@s@@K@@@/%int32 tt@б&suffixг$chartt@@	@@ @c  0 @Ja!@A@@б@гN%int32tt@@	@@ @d@@г(constanttt@@	@@ @e@@@@ @f!@@2*@@ @g	@ @h(t@@	@t@@/L@@@/%int64  #u$u@б&suffixг$char0u1u@@	@@ @i  0 21122222@Ja!@A@@б@г%int64AuBu @@	@@ @j@@г(constantNuOu@@	@@ @k@@@@ @l!@@2-*@@ @m	@ @n(^u@@	@au@@xM@@@/)nativeint àlv
mv
@б&suffixгE$charyv
'zv
+@@	@@ @o  0 {zz{{{{{@Ja!@A@@б@г䠐)nativeintv
/v
8@@	@@ @p@@г3(constantv
<v
D@@	@@ @q@@@@ @r!@@2v*@@ @s	@ @t(v
@@	@v
@@N@@@/%float ĠwEKwEP@б&suffixг$charwE[wE_@@	@@ @u  0 @Ja!@A@@б@г&stringwEcwEi@@	@@ @v@@г|(constantwEmwEu@@	@@ @w@@@@ @x!@@2*@@ @y	@ @z(wES@@	@wEG@@
O@@@/@I#@@x@q1@*@@\@U@@  0 @@W@Ao
nxvy@@@
n@t@$Attr H{{@@Б"mk Ơ&|'|@б#locгm#loc3|4|@@	@@ @{  0 54455555@@3@/QP@A
	@@б@г#strF|G|@@	@@ @|@@б@г'payloadU|V|@@	@@ @}"@@г)attributeb|c|@@	@@ @~/@@@@ @2@@@%@ @5(@@FD>@@ @	@ @<u|@@	@x|@@Q@@@C@[@@  0 zyyzzzzz@F]	@A  0 }||}}}}}@H@A{}@@c0 {1 Attributes} z{{z{@@@@@@@{@@3 {1 Core language} @@@@@@  0 @l@'"R@A#Typ I B		 B		@@Б"mk Ƞ D		' D		)@б#locг#loc D		0 D		3@@	@@ @  0 @-@A@@б%attrsг'%attrs D		> D		C@@	@@ @@@б@г.core_type_desc D		G D		U@@	@@ @!@@г)core_type D		Y D		b@@	@@ @.@@@@ @1@@0ؠ(@@ @	@ @8	 D		7@@JB@@ @@ @@ D		+@@	@ D		#@@+S@@@G$attr ɠ E	c	k  E	c	o@б@г)core_type* E	c	q+ E	c	z@@	@@ @  0 ,++,,,,,@w@A@@б@г)attribute; E	c	~< E	c	@@	@@ @@@г)core_typeH E	c	I E	c	@@	@@ @@@@@ @!@@@'@ @$*@@@V E	c	g@@mT@@@*#any ʠa G		b G		@б#locг#locn G		o G		@@	@@ @  0 pooppppp@EZ!@A@@б%attrsгˠ%attrs G		 G		@@	@@ @@@б@г?$unit G		 G		@@	@@ @"@@г9)core_type G		 G		@@	@@ @/@@@@ @2@@0|(@@ @	@ @9 G		@@KC@@ @@ @A G		@@	@ G		@@U@@@H#var ˠ H		 H		@б#locг
#loc H		 H		@@	@@ @  0 @cz!@A@@б%attrsг-%attrs H		 H		@@	@@ @@@б@г&string H		 H	
 @@	@@ @"@@г)core_type H	
  H	

@@	@@ @/@@@@ @2@@0ޠ(@@ @	@ @9 H		@@KC@@ @@ @A H		@@	@ H		@@1V@@@H%arrow ̠% I

& I

@б#locгl#loc2 I

"3 I

%@@	@@ @  0 43344444@cz!@A@@б%attrsг%attrsE I

0F I

5@@	@@ @@@б@г)arg_labelT I

9U I

B@@	@@ @"@@б@г)core_typec I

Fd I

O@@	@@ @1@@б@г)core_typer I

Ss I

\@@	@@ @@@@г)core_type J
]
o J
]
x@@	@@ @M@@@@ @P@@@%@ @S(@@@7@ @V:@@TdL@@ @	@ @] I

)@@olg@@ @@ @e I

@@	@ I

!@@W@#@@l%tuple ͠ K
y
 K
y
@б#locг#loc K
y
 K
y
@@	@@ @  0 @!@A@@б%attrsг%attrs K
y
 K
y
@@	@@ @@@б@гq$list K
y
 K
y
@г)core_type K
y
 K
y
@@	@@ @,@@@@@ @1@@г)core_type K
y
 K
y
@@	@@ @>@@@@ @A@@?ՠ7@@ @	@ @H	 K
y
@@ZݠR@@ @@ @P	 K
y
@@	@	 K
y
}@@	(X@@@W&constr Π	 L

	 L

@б#locгc#loc	) L

	* L

@@	@@ @  0 	+	*	*	+	+	+	+	+@r!@A@@б%attrsг%attrs	< L

	= L

@@	@@ @@@б@гW#lid	K L

	L L

@@	@@ @"@@б@г$list	Z L

	[ L
@г )core_type	d L

	e L

@@	@@ @;@@@@@ @@@@г)core_type	v L
	w L
@@	@@ @M@@@@ @P@@@4@ @S7@@QXI@@ @	@ @Z	 L

@@l`d@@ @@ @b	 L

@@	@	 L

@@	Y@ @@i'object_ Ϡ	 M	 M@б#locг栐#loc	 M%	 M(@@	@@ @  0 								@!@A@@б%attrsг	%attrs	 M3	 M8@@	@@ @@@б@г	e$list	 MI	 MM@гt,object_field	 M<	 MH@@	@@ @,@@@@@ @1@@б@г+closed_flag	 NNd	 NNo@@	@@ @@@@г)core_type	 NNs	 NN|@@	@@ @M@@@@ @P@@@&@ @S-@@Q۠I@@ @	@ @Z
 M,@@ld@@ @@ @b
 M @@	@
 M@@
.Z@ @@i&class_ Р
" O}
# O}@б#locгi#loc
/ O}
0 O}@@	@@ @  0 
1
0
0
1
1
1
1
1@!@A@@б%attrsг%attrs
B O}
C O}@@	@@ @@@б@г]#lid
Q O}
R O}@@	@@ @"@@б@г	$list
` O}
a O}@г	)core_type
j O}
k O}@@	@@ @;@@@@@ @@@@г	)core_type
| O}
} O}@@	@@ @M@@@@ @P@@@4@ @S7@@Q^I@@ @	@ @Z
 O}@@lfd@@ @@ @b
 O}@@	@
 O}@@
[@ @@i%alias Ѡ
 P
 P@б#locг점#loc
 P
 P@@	@@ @  0 







@!@A@@б%attrsг%attrs
 P
 P@@	@@ @@@б@г	p)core_type
 P
 P @@	@@ @"@@б@г
&string
 P
 P
@@	@@ @1@@г	)core_type
 P
 P@@	@@ @>@@@@ @A@@@%@ @D(@@BҠ:@@ @	@ @K P@@]ڠU@@ @@ @S P@@	@ P@@%\@ @@Z'variant Ҡ Q  Q'@б#locг	`#loc& Q.' Q1@@	@@ @  0 (''(((((@u!@A@@б%attrsг%attrs9 Q<: QA@@	@@ @@@б@г
ߠ$listH QOI QS@г	)row_fieldR QES QN@@	@@ @,@@@@@ @1@@б@г
(+closed_flagf QWg Qb@@	@@ @@@@б@г
&optionu Rcv Rc@г$list Rc} Rc@г
K%label Rcw Rc|@@	@@ @c@@@@@ @h@@@&@@ @m#@@г
<)core_type Rc Rc@@	@@ @z@@@@ @} @@@C@ @F@@@V@ @]@@y@@ @	@ @ Q5@@@@ @@ @ Q)@@	@ Q!@@]@#@@$poly Ӡ S S@б#locг
#loc S S@@	@@ @   0 @!@A@@б%attrsг	6%attrs S S@@	@@ @@@б@г$list S S@г	Ҡ#str S S@@	@@ @,@@@@@ @1@@б@г
)core_type S S@@	@@ @@@@г
)core_type& S' S@@	@@ @M@@@@ @P@@@&@ @S-@@QI@@ @		@ @
Z9 S@@ld@@ @@ @bA S@@	@D S@@[^@ @@i'package ԠO TP T@б#locг
#loc\ T] T@@	@@ @
  0 ^]]^^^^^@!@A@@б%attrsг	%attrso T
p T
@@	@@ @@@б@г
#lid~ T
 T
@@	@@ @"@@б@г$$list T
) T
-@Вг
#lid T
 T
@@	@@ @>@@гD)core_type T
 T
'@@	@@ @L@@@@ @Q
@@@-@@ @V T
+@@г\)core_type U
.
B U
.
K@@	@@ @d@@@@ @g@@@K@ @jN@@h`@@ @	@ @q T
 @@{@@ @@ @y T@@	@ T@@_@ @@)extension ՠ V
L
T V
L
]@б#locг0#loc V
L
d V
L
g@@	@@ @  0 @!@A@@б%attrsг
S%attrs
	 V
L
r
 V
L
w@@	@@ @@@б@г)extension
 V
L
{
 V
L
@@	@@ @"@@г)core_type
% V
L

& V
L
@@	@@ @/@@@@ @ 2@@0	(@@ @!	@ @"9
5 V
L
k@@K	C@@ @#@ @$A
= V
L
_@@	@
@ V
L
P@@
W`@@@H*force_poly ֠
K X


L X

@б@г)core_type
V X


W X

@@	@@ @%  0 
X
W
W
X
X
X
X
X@ax@A@@г)core_type
e X


f X

@@	@@ @&@@@@ @'@@@
p X

@@
a@
@@3varify_constructors נ
{ Z


| Z

@б@г
$list
 Z


 Z

@г]#str
 Z


 Z

@@	@@ @(  0 







@;P)@A@@@	@@ @*
@@б@гB)core_type
 Z


 Z

@@	@@ @+@@гO)core_type
 Z


 Z

@@	@@ @,#@@@@ @-&@@@&@ @.)/@@@
 Z

@

  T [varify_constructors newtypes te] is type expression [te], of which
        any of nullary type constructor [tc] is replaced by type variable of
        the same name, if [tc]'s name appears in [newtypes].
        Raise [Syntaxerr.Variable_in_scope] if any type variable inside [te]
        appears in [newtypes].
        @since 4.05
     
 [

 aU\@@@@@@@
b@@<@@@z!@@=@6@M@F@K@D@(@!@@@@z2@@  0 







@]|4@A#Q
 C		
 b]b@@
֐2 Type expressions  A A	@@@@@@@ B		@c@#Pat J et{ et~@@Б"mk ٠ g g@б#locгe#loc+ g, g@@	@@ @/  0 -,,-----@@@</Ic@A
	@@б%attrsг%attrs@ gA g@@	@@ @0@@б@г,pattern_descO gP g@@	@@ @1$@@г'pattern\ g] g@@	@@ @21@@@@ @34@@0
;(@@ @4	@ @5;l g@@M
CE@@ @6@ @7Ct g@@	@w g@@d@@@J$attr ڠ h h@б@г
)'pattern h h@@	@@ @8  0 @cz@A@@б@г
:)attribute h h@@	@@ @9@@г
G'pattern h h@@	@@ @:@@@@ @;!@@@'@ @<$*@@@ h@@e@@@*#any ۠ j j@б#locг
#loc j j	@@	@@ @=  0 @EZ!@A@@б%attrsг.%attrs j j@@	@@ @>@@б@г$unit j j!@@	@@ @?"@@г
'pattern  j% j,@@	@@ @@/@@@@ @A2@@0
ߠ(@@ @B	@ @C9 j
@@K
C@@ @D@ @EA j@@	@ j@@2f@@@H#var ܠ& k-5' k-8@б#locг
m#loc3 k-?4 k-B@@	@@ @F  0 54455555@cz!@A@@б%attrsг%attrsF k-MG k-R@@	@@ @G@@б@г
"#strU k-VV k-Y@@	@@ @H"@@г
'patternb k-]c k-d@@	@@ @I/@@@@ @J2@@0A(@@ @K	@ @L9r k-F@@KIC@@ @M@ @NAz k-:@@	@} k-1@@g@@@H%alias ݠ lem ler@б#locг
Ϡ#loc ley le|@@	@@ @O  0 @cz!@A@@б%attrsг%attrs le le@@	@@ @P@@б@гS'pattern le le@@	@@ @Q"@@б@г
#str le le@@	@@ @R1@@гo'pattern le le@@	@@ @S>@@@@ @TA@@@%@ @UD(@@B:@@ @V	@ @WK le@@]U@@ @X@ @YS let@@	@ lei@@h@ @@Z(constant ޠ m m@б#locгC#loc	 m
 m@@	@@ @Z  0 

@u!@A@@б%attrsг
f%attrs m m@@	@@ @[@@б@г(constant+ m, m@@	@@ @\"@@г'pattern8 m9 m@@	@@ @]/@@@@ @^2@@0(@@ @_	@ @`9H m@@KC@@ @a@ @bAP m@@	@S m@@ji@@@H(interval ߠ^ n_ n@б#locг#lock nl n@@	@@ @c  0 mllmmmmm@cz!@A@@б%attrsг
Ƞ%attrs~ n n@@	@@ @d@@б@г)(constant n n"@@	@@ @e"@@б@г8(constant n& n.@@	@@ @f1@@гE'pattern n2 n9@@	@@ @g>@@@@ @hA@@@%@ @iD(@@B:@@ @j	@ @kK n
@@]U@@ @l@ @mS n@@	@ n@@j@ @@Z%tuple  o:B o:G@б#locг#loc o:N o:Q@@	@@ @n  0 @u!@A@@б%attrsг<%attrs o:\ o:a@@	@@ @o@@б@г$list o:m o:q@г'pattern o:e o:l@@	@@ @p,@@@@@ @r1@@г'pattern o:u o:|@@	@@ @s>@@@@ @tA@@?7@@ @u	@ @vH- o:U@@Z
R@@ @w@ @xP5 o:I@@	@8 o:>@@Ok@@@W)construct C p}D p}@б#locг#locP p}Q p}@@	@@ @y  0 RQQRRRRR@r!@A@@б%attrsг%attrsc p}d p}@@	@@ @z@@б@г~#lidr qs q@@	@@ @{"@@б@г&option q q@Вг%$list q q@гe#str q q@@	@@ @|H@@@@@ @~M@@гG'pattern q q@@	@@ @[@@@@ @`
@@@<@@ @e q:@@г_'pattern q q@@	@@ @s@@@@ @v@@@Z@ @y]@@w
o@@ @	@ @ p}@@
@@ @@ @ p}@@	@ p}@@l@ @@'variant  r r@б#locг3#loc r r@@	@@ @  0 @!@A@@б%attrsгV%attrs r
 r	@@	@@ @@@б@г%label r
 r@@	@@ @"@@б@г&option* r+ r$@г'pattern4 r5 r@@	@@ @;@@@@@ @@@@г'patternF r(G r/@@	@@ @M@@@@ @P@@@4@ @S7@@Q(I@@ @	@ @ZY r@@l0d@@ @@ @ba r@@	@d r@@{m@ @@i&record o s08p s0>@б#locг#loc| s0E} s0H@@	@@ @  0 ~}}~~~~~@!@A@@б%attrsг٠%attrs s0S s0X@@	@@ @@@б@г5$list s0l s0p@Вг#lid s0] s0`@@	@@ @/@@гU'pattern s0c s0j@@	@@ @=@@@@ @B
@@@-@@ @G s0\+@@б@г+closed_flag s0t s0@@	@@ @W@@г|'pattern t t@@	@@ @d@@@@ @g@@@'@ @j#@@h `@@ @	@ @q s0L@@ʠ{@@ @@ @y s0@@@	@ s04@@n@ @@%array 	 u
 u@б#locгP#loc u u@@	@@ @  0 @!@A@@б%attrsгs%attrs) u* u@@	@@ @@@б@гϠ$list8 u9 u@г'patternB uC u@@	@@ @,@@@@@ @1@@г'patternT uU u@@	@@ @>@@@@ @A@@?37@@ @	@ @Hd u@@Z;R@@ @@ @Pl u@@	@o u@@o@@@W#or_ z v{ v@б#locг#loc v v@@	@@ @  0 @r!@A@@б%attrsг䠐%attrs v v@@	@@ @@@б@гE'pattern v v@@	@@ @"@@б@гT'pattern v v@@	@@ @1@@гa'pattern v v$@@	@@ @>@@@@ @A@@@%@ @D(@@B:@@ @	@ @K v@@]U@@ @@ @S v@@	@ v@@p@ @@Z+constraint_  w%- w%8@б#locг5#loc w%? w%B@@	@@ @  0 @u!@A@@б%attrsгX%attrs w%M w%R@@	@@ @@@б@г'pattern w%V w%]@@	@@ @"@@б@г)core_type, w%a- w%j@@	@@ @1@@г'pattern9 w%n: w%u@@	@@ @>@@@@ @A@@@%@ @D(@@B:@@ @	@ @KL w%F@@]#U@@ @@ @ST w%:@@	@W w%)@@nq@ @@Z%type_ b xv~c xv@б#locг#loco xvp xv@@	@@ @  0 qppqqqqq@u!@A@@б%attrsг̠%attrs xv xv@@	@@ @@@б@г#lid xv xv@@	@@ @"@@г:'pattern xv xv@@	@@ @/@@@@ @2@@0}(@@ @	@ @9 xv@@KC@@ @@ @A xv@@	@ xvz@@r@@@H%lazy_  y y@б#locг#loc y y@@	@@ @  0 @cz!@A@@б%attrsг.%attrs y y@@	@@ @@@б@г'pattern y y@@	@@ @"@@г'pattern  y y@@	@@ @/@@@@ @2@@0ߠ(@@ @	@ @9 y@@KC@@ @@ @A y@@	@ y@@2s@@@H&unpack & z' z@б#locгm#loc3 z4 z@@	@@ @  0 54455555@cz!@A@@б%attrsг%attrsF zG z@@	@@ @@@б@г蠐'str_optU zV z!@@	@@ @"@@г'patternb z%c z,@@	@@ @/@@@@ @2@@0A(@@ @	@ @9r z
@@KIC@@ @@ @Az z@@	@} z@@t@@@H%open_  {-5 {-:@б#locгϠ#loc {-A {-D@@	@@ @  0 @cz!@A@@б%attrsг%attrs {-O {-T@@	@@ @@@б@гà#lid {-Y {-\@@	@@ @"@@б@гb'pattern {-` {-g@@	@@ @1@@гo'pattern {-k {-r@@	@@ @>@@@@ @A@@@%@ @D(@@B:@@ @	@ @K {-H@@]U@@ @@ @S {-<@@	@ {-1@@u@ @@Z*exception_  |s{ |s@б#locгC#loc	 |s
 |s@@	@@ @  0 

@u!@A@@б%attrsгf%attrs |s |s@@	@@ @@@б@г'pattern+ |s, |s@@	@@ @"@@г'pattern8 |s9 |s@@	@@ @/@@@@ @2@@0(@@ @	@ @9H |s@@KC@@ @@ @AP |s@@	@S |sw@@jv@@@H)extension ^ }_ }@б#locг#lock }l }@@	@@ @  0 mllmmmmm@cz!@A@@б%attrsгȠ%attrs~ } }@@	@@ @@@б@г))extension } }@@	@@ @"@@г6'pattern } }@@	@@ @/@@@@ @2@@0y(@@ @	@ @9 }@@KC@@ @@ @A }@@	@ }@@w@@@H@E@>@@E@>@s@l@@@j@c@c@\@@x@@_@X@@-@@  0 @q/@A+  0 @@A f ~@@Ɛ* Patterns  ddd dds@@@@@@@ ett@@#ExpK  @@Б"mk  &. &0@б#locгU#loc &7 &:@@	@@ @  0 @	@A</9x@A
	@@б%attrsгz%attrs0 &E1 &J@@	@@ @
 @@б@г/expression_desc? &N@ &]@@	@@ @
$@@г*expressionL &aM &k@@	@@ @
1@@@@ @
4@@0+(@@ @
	@ @
;\ &>@@M3E@@ @
@ @
Cd &2@@	@g &*@@~y@@@J$attr r lts lx@б@г*expression} lz~ l@@	@@ @
  0 ~~@cz@A@@б@г*)attribute l l@@	@@ @
	@@г7*expression l l@@	@@ @
@@@@ @
!@@@'@ @
$*@@@ lp@@z@@@*%ident   @б#locг#loc  @@	@@ @

  0 @EZ!@A@@б%attrsг%attrs  @@	@@ @
@@б@г#lid  @@	@@ @
"@@г*expression  @@	@@ @
/@@@@ @
2@@0Ϡ(@@ @
	@ @
9  @@KנC@@ @
@ @
A @@	@ @@"{@@@H(constant   @б#locг]#loc# $ @@	@@ @
  0 %$$%%%%%@cz!@A@@б%attrsг%attrs6 7 @@	@@ @
@@б@г(constantE F @@	@@ @
"@@г*expressionR S "@@	@@ @
/@@@@ @
2@@01(@@ @
	@ @
9b @@K9C@@ @
@ @
Aj @@	@m @@|@@@H$let_ x #+y #/@б#locг#loc #6 #9@@	@@ @
  0 @cz!@A@@б%attrsг⠐%attrs #D #I@@	@@ @
 @@б@гi(rec_flag #M #U@@	@@ @
!"@@б@гM$list #g #k@г\-value_binding #Y #f@@	@@ @
";@@@@@ @
$@@@б@гp*expression l} l@@	@@ @
%O@@г}*expression l l@@	@@ @
&\@@@@ @
'_@@@&@ @
(b-@@@F@ @
)eI@@cƠ[@@ @
*	@ @
+l #=@@~Πv@@ @
,@ @
-t #1@@	@ #'!@@}@#@@{$fun_ 
  @б#locгT#loc  @@	@@ @
.  0 @!@A@@б%attrsгw%attrs- . @@	@@ @
/@@б@г)arg_label< = @@	@@ @
0"@@б@гŠ&optionK L @г*expressionU V @@	@@ @
1;@@@@@ @
3@@@б@г'patterni j @@	@@ @
4O@@б@г*expressionx y @@	@@ @
5^@@г!*expression 	 @@	@@ @
6k@@@@ @
7n@@@%@ @
8q(@@@8@ @
9t?@@@X@ @
:w[@@umm@@ @
;	@ @
<~ @@u@@ @
=@ @
> !@@	@ $@@~@&@@)function_   %@б#locг#loc , /@@	@@ @
?  0 @!@A@@б%attrsг%attrs : ?@@	@@ @
@@@б@гz$list H L@г$case C G@@	@@ @
A,@@@@@ @
C1@@г*expression P  Z@@	@@ @
D>@@@@ @
EA@@?ޠ7@@ @
F	@ @
GH 3@@ZR@@ @
H@ @
IP '@@	@ @@1@@@W%apply % [c& [h@б#locгl#loc2 [o3 [r@@	@@ @
J  0 43344444@r!@A@@б%attrsг%attrsE [}F [@@	@@ @
K@@б@г*expressionT [U [@@	@@ @
L"@@б@г$listc d @Вг2)arg_labelp q @@	@@ @
M>@@г*expression~  @@	@@ @
NL@@@@ @
OQ
@@@-@@ @
QV +@@г2*expression  @@	@@ @
Rd@@@@ @
Sg@@@K@ @
TjN@@hx`@@ @
U	@ @
Vq [v@@{@@ @
W@ @
Xy [j@@	@ [_@@ @@ @@&match_   @б#locг#loc  @@	@@ @
Y  0 @!@A@@б%attrsг)%attrs  @@	@@ @
Z@@б@г*expression  @@	@@ @
["@@б@г$list  @г$case 	 
@@	@@ @
\;@@@@@ @
^@@@г*expression & 0@@	@@ @
_M@@@@ @
`P@@@4@ @
aS7@@QI@@ @
b	@ @
cZ, @@ld@@ @
d@ @
eb4 @@	@7 @@N A@ @@i$try_ B 19C 1=@б#locг#locO 1DP 1G@@	@@ @
f  0 QPPQQQQQ@!@A@@б%attrsг%attrsb 1Rc 1W@@	@@ @
g@@б@г
*expressionq 1[r 1e@@	@@ @
h"@@б@г$list 1n 1r@г&$case 1i 1m@@	@@ @
i;@@@@@ @
k@@@г8*expression 1v 1@@	@@ @
lM@@@@ @
mP@@@4@ @
nS7@@Q~I@@ @
o	@ @
pZ 1K@@ld@@ @
q@ @
rb 1?@@	@ 15@@ B@ @@i%tuple   @б#locг#loc  @@	@@ @
s  0 @!@A@@б%attrsг/%attrs  @@	@@ @
t@@б@г$list  @г*expression  @@	@@ @
u,@@@@@ @
w1@@г*expression  @@	@@ @
x>@@@@ @
yA@@?7@@ @
z	@ @
{H  @@ZR@@ @
|@ @
}P( @@	@+ @@B C@@@W)construct 6 7 @б#locг}#locC D @@	@@ @
~  0 EDDEEEEE@r!@A@@б%attrsг%attrsV W @@	@@ @
@@б@гq#lide f @@	@@ @
"@@б@г&optiont u @г*expression~   
@@	@@ @
;@@@@@ @
@@@г,*expression ( 2@@	@@ @
M@@@@ @
P@@@4@ @
S7@@QrI@@ @
	@ @
Z @@lzd@@ @
@ @
b @@	@ @@ D@ @@i'variant  3; 3B@б#locг #loc 3I 3L@@	@@ @
  0 @!@A@@б%attrsг#%attrs 3W 3\@@	@@ @
@@б@г%label 3` 3e@@	@@ @
"@@б@гq&option 3t 3z@г*expression 3i 3s@@	@@ @
;@@@@@ @
@@@г*expression { {@@	@@ @
M@@@@ @
P@@@4@ @
S7@@QI@@ @
	@ @
Z& 3P@@ld@@ @
@ @
b. 3D@@	@1 37@@H E@ @@i&record < = @б#locг#locI J @@	@@ @
  0 KJJKKKKK@!@A@@б%attrsг%attrs\ ] @@	@@ @
@@б@г$listk l @Вг#lidx y @@	@@ @
/@@г"*expression  @@	@@ @
=@@@@ @
B
@@@-@@ @
G +@@б@г&option  @гF*expression  @@	@@ @
a@@@@@ @
f@@гX*expression  @@	@@ @
s@@@@ @
v@@@6@ @
y2@@wo@@ @
	@ @
 @@@@ @
@ @
 @@	@ @@ F@ @@%field   @б#locг,#loc % (@@	@@ @
  0 @!@A@@б%attrsгO%attrs 3 8@@	@@ @
@@б@г*expression < F@@	@@ @
"@@б@г/#lid# J$ M@@	@@ @
1@@г*expression0 Q1 [@@	@@ @
>@@@@ @
A@@@%@ @
D(@@B:@@ @
	@ @
KC ,@@]U@@ @
@ @
SK  @@	@N @@e G@ @@Z(setfield Y \dZ \l@б#locг#locf \sg \v@@	@@ @
  0 hgghhhhh@u!@A@@б%attrsгà%attrsy \z \@@	@@ @
@@б@г$*expression \ \@@	@@ @
"@@б@г#lid \ \@@	@@ @
1@@б@гB*expression \ \@@	@@ @
@@@гO*expression  @@	@@ @
M@@@@ @
P@@@%@ @
S(@@@7@ @
V:@@TL@@ @
	@ @
] \z@@og@@ @
@ @
e \n@@	@ \`!@@ H@#@@l%array   @б#locг&#loc  @@	@@ @
  0 @!@A@@б%attrsгI%attrs   @@	@@ @
@@б@г$list   @г*expression  @@	@@ @
,@@@@@ @
1@@г*expression* + @@	@@ @
>@@@@ @
A@@?	7@@ @
	@ @
H: @@ZR@@ @
@ @
PB @@	@E @@\ I@@@W*ifthenelse P Q %@б#locг#loc] ,^ /@@	@@ @
  0 _^^_____@r!@A@@б%attrsг%attrsp :q ?@@	@@ @
@@б@г*expression C M@@	@@ @
"@@б@г**expression Q [@@	@@ @
1@@б@г&option \~ \@гC*expression \s \}@@	@@ @
J@@@@@ @
O@@гU*expression \ \@@	@@ @
\@@@@ @
_@@@4@ @
b7@@@F@ @
eI@@c[@@ @
	@ @
l 3@@~v@@ @
@ @
t '@@	@ !@@ J@#@@{(sequence   @б#locг,#loc  @@	@@ @
  0 @!@A@@б%attrsгO%attrs    @@	@@ @
@@б@г*expression    @@	@@ @
"@@б@г*expression #  $ @@	@@ @
1@@г*expression 0  1 @@	@@ @
>@@@@ @
A@@@%@ @
D(@@B:@@ @
	@ @
K C @@]U@@ @
@ @
S K @@	@ N @@ e K@ @@Z&while_ Y  Z @б#locг#loc f  g @@	@@ @
  0  h g g h h h h h@u!@A@@б%attrsгà%attrs y  z "@@	@@ @
@@б@г$*expression  &  0@@	@@ @
"@@б@г3*expression  4  >@@	@@ @
1@@г@*expression  ?R  ?\@@	@@ @
>@@@@ @
A@@@%@ @
D(@@B:@@ @
	@ @
K  @@]U@@ @
@ @
S  
@@	@  @@  L@ @@Z$for_  ]e  ]i@б#locг#loc  ]p  ]s@@	@@ @
  0         @u!@A@@б%attrsг7%attrs  ]~  ]@@	@@ @
@@б@г'pattern  ]  ]@@	@@ @
"@@б@г*expression! ]! ]@@	@@ @
1@@б@г*expression! ]! ]@@	@@ @
@@@б@г.direction_flag!) !* @@	@@ @
O@@б@г*expression!8 !9 @@	@@ @
^@@г*expression!E !F @@	@@ @
k@@@@ @
n@@@%@ @
q(@@@7@ @
t:@@@I@ @
wL@@@[@ @
z^@@x0p@@ @
	@ @
!a ]w@@8@@ @ @ @!i ]k$@@	@!l ]a'@@! M@)@@&coerce!w !x @б#locг#loc! ! @@	@@ @  0 !!!!!!!!@!@A@@б%attrsг᠐%attrs! 
! @@	@@ @@@б@г B*expression! ! @@	@@ @"@@б@г!/&option! +! 1@г [)core_type! !! *@@	@@ @;@@@@@ @@@@б@г o)core_type! 2E! 2N@@	@@ @O@@г |*expression! 2R! 2\@@	@@ @	\@@@@ @
_@@@&@ @b-@@@F@ @eI@@cŠ[@@ @
	@ @l! @@~͠v@@ @@ @t! @@	@" !@@" N@#@@{+constraint_" ]e"
 ]p@б#locг S#loc" ]w" ]z@@	@@ @  0 """"""""@!@A@@б%attrsгv%attrs", ]"- ]@@	@@ @@@б@г *expression"; ]"< ]@@	@@ @"@@б@г )core_type"J ]"K ]@@	@@ @1@@г *expression"W "X @@	@@ @>@@@@ @A@@@%@ @D(@@B9:@@ @	@ @K"j ]~@@]AU@@ @@ @S"r ]r@@	@"u ]a@@" O@ @@Z$send" " @б#locг Ǡ#loc" " @@	@@ @  0 """"""""@u!@A@@б%attrsгꠐ%attrs" " @@	@@ @@@б@г!K*expression" " @@	@@ @"@@б@г #str" " @@	@@ @1@@г!g*expression" " @@	@@ @ >@@@@ @!A@@@%@ @"D(@@B:@@ @#	@ @$K" @@]U@@ @%@ @&S" @@	@" @@#  P@ @@Z$new_" " @б#locг!;#loc# &# )@@	@@ @'  0 ########@u!@A@@б%attrsг ^%attrs# 4# 9@@	@@ @(@@б@г!/#lid## =#$ @@@	@@ @)"@@г!*expression#0 D#1 N@@	@@ @*/@@@@ @+2@@0(@@ @,	@ @-9#@ -@@KC@@ @.@ @/A#H !@@	@#K @@#b Q@@@H*setinstvar#V OW#W Oa@б#locг!#loc#c Oh#d Ok@@	@@ @0  0 #e#d#d#e#e#e#e#e@cz!@A@@б%attrsг %attrs#v Ov#w O{@@	@@ @1@@б@г!R#str# O# O@@	@@ @2"@@б@г"0*expression# O# O@@	@@ @31@@г"=*expression# O# O@@	@@ @4>@@@@ @5A@@@%@ @6D(@@B:@@ @7	@ @8K# Oo@@]U@@ @9@ @:S# Oc@@	@# OS@@# R@ @@Z(override# # @б#locг"#loc# # @@	@@ @;  0 ########@u!@A@@б%attrsг!4%attrs# # @@	@@ @<@@б@г#$list# # @Вг!Ӡ#str$ $ @@	@@ @=/@@г"*expression$ $ @@	@@ @>=@@@@ @?B
@@@-@@ @AG$$ +@@г"*expression$, $- @@	@@ @BU@@@@ @CX@@V N@@ @D	@ @E_$< @@q i@@ @F@ @Gg$D @@	@$G @@$^ S@@@n)letmodule	$R 
$S @б#locг"#loc$_ $`  @@	@@ @H  0 $a$`$`$a$a$a$a$a@!@A@@б%attrsг!%attrs$r +$s 0@@	@@ @I@@б@г"'str_opt$ 4$ ;@@	@@ @J"@@б@г#,+module_expr$ ?$ J@@	@@ @K1@@б@г#;*expression$ Ka$ Kk@@	@@ @L@@@г#H*expression$ Ko$ Ky@@	@@ @MM@@@@ @NP@@@%@ @OS(@@@7@ @PV:@@T L@@ @Q	@ @R]$ $@@o g@@ @S@ @Te$ @@	@$ 	!@@$ T@#@@l,letexception
$ z$ z@б#locг##loc$ $ @@	@@ @U  0 $$$$$$$$@!@A@@б%attrsг"B%attrs$ $ @@	@@ @V@@б@г#5extension_constructor% % @@	@@ @W"@@б@г#*expression% % @@	@@ @X1@@г#*expression%# %$ @@	@@ @Y>@@@@ @ZA@@@%@ @[D(@@B!:@@ @\	@ @]K%6 @@]!
U@@ @^@ @_S%> @@	@%A z~@@%X U@ @@Z'assert_%L %M @б#locг##loc%Y   %Z  @@	@@ @`  0 %[%Z%Z%[%[%[%[%[@u!@A@@б%attrsг"%attrs%l  %m  @@	@@ @a@@б@г$*expression%{  %|  !@@	@@ @b"@@г$$*expression%  %%  /@@	@@ @c/@@@@ @d2@@0!g(@@ @e	@ @f9%  @@K!oC@@ @g@ @hA% @@	@% @@% V@@@H%lazy_%  0 8%  0 =@б#locг##loc%  0 D%  0 G@@	@@ @i  0 %%%%%%%%@cz!@A@@б%attrsг#%attrs%  0 R%  0 W@@	@@ @j@@б@г$y*expression%  0 [%  0 e@@	@@ @k"@@г$*expression%  0 i%  0 s@@	@@ @l/@@@@ @m2@@0!ɠ(@@ @n	@ @o9%  0 K@@K!ѠC@@ @p@ @qA&  0 ?@@	@&  0 4@@& W@@@H$poly
&  t |&  t @б#locг$W#loc&  t &  t @@	@@ @r  0 &&&&&&&&@cz!@A@@б%attrsг#z%attrs&0  t &1  t @@	@@ @s@@б@г$*expression&?  t &@  t @@	@@ @t"@@б@г%Ƞ&option&N  t &O  t @г$)core_type&X  t &Y  t @@	@@ @u;@@@@@ @w@@@г%*expression&j   &k   @@	@@ @xM@@@@ @yP@@@4@ @zS7@@Q"LI@@ @{	@ @|Z&}  t @@l"Td@@ @}@ @~b&  t @@	@&  t x@@& X@ @@i'object_&   &   @б#locг$ڠ#loc&   &   @@	@@ @  0 &&&&&&&&@!@A@@б%attrsг#%attrs&   &  !@@	@@ @@@б@г%^/class_structure&  !&  !@@	@@ @"@@г%k*expression&  !&  !#@@	@@ @/@@@@ @2@@0"(@@ @	@ @9&   @@K"C@@ @@ @A&   @@	@&   @@' Y@@@H'newtype& !$!,& !$!3@б#locг%<#loc' !$!:' !$!=@@	@@ @  0 ''''''''@cz!@A@@б%attrsг$_%attrs' !$!H' !$!M@@	@@ @@@б@г$#str'$ !$!Q'% !$!T@@	@@ @"@@б@г%*expression'3 !$!X'4 !$!b@@	@@ @1@@г%*expression'@ !$!f'A !$!p@@	@@ @>@@@@ @A@@@%@ @D(@@B#":@@ @	@ @K'S !$!A@@]#*U@@ @@ @S'[ !$!5@@	@'^ !$!(@@'u Z@ @@Z$pack'i !q!y'j !q!}@б#locг%#loc'v !q!'w !q!@@	@@ @  0 'x'w'w'x'x'x'x'x@u!@A@@б%attrsг$Ӡ%attrs' !q!' !q!@@	@@ @@@б@г&4+module_expr' !q!' !q!@@	@@ @"@@г&A*expression' !q!' !q!@@	@@ @/@@@@ @2@@0#(@@ @	@ @9' !q!@@K#C@@ @@ @A' !q!@@	@' !q!u@@' [@@@H%open_' !!' !!@б#locг&#loc' !!' !!@@	@@ @  0 ''''''''@cz!@A@@б%attrsг%5%attrs' !!' !!@@	@@ @@@б@г&0open_declaration' !!' !!@@	@@ @"@@б@г&*expression(	 !!(
 !!@@	@@ @1@@г&*expression( !"( !"@@	@@ @>@@@@ @A@@@%@ @D(@@B#:@@ @	@ @K() !!@@]$ U@@ @@ @S(1 !!@@	@(4 !!@@(K \@ @@Z%letop(? ""$(@ "")@б#locг&#loc(L ""0(M ""3@@	@@ @  0 (N(M(M(N(N(N(N(N@u!@A@@б%attrsг%%attrs(_ "">(` ""C@@	@@ @@@б@г'
*binding_op(n ""G(o ""Q@@	@@ @"@@б@г($list(} "R"o(~ "R"s@г'#*binding_op( "R"d( "R"n@@	@@ @;@@@@@ @@@@б@г'7*expression( "R"w( "R"@@	@@ @O@@г'D*expression( "R"( "R"@@	@@ @\@@@@ @_@@@&@ @b-@@@F@ @eI@@c$[@@ @	@ @l( ""7@@~$v@@ @@ @t( ""+@@	@( "" !@@( ]@#@@{)extension( ""( ""@б#locг'#loc( ""( ""@@	@@ @  0 ((((((((@!@A@@б%attrsг&>%attrs( ""( ""@@	@@ @@@б@г')extension) "") ""@@	@@ @"@@г'*expression) "") ""@@	@@ @/@@@@ @2@@0$(@@ @	@ @9)  ""@@K$C@@ @@ @A)( ""@@	@)+ ""@@)B ^@@@H+unreachable)6 "")7 ""@б#locг'}#loc)C "")D ""@@	@@ @  0 )E)D)D)E)E)E)E)E@cz!@A@@б%attrsг&%attrs)V "")W "#@@	@@ @@@б@г)$unit)e "#)f "#@@	@@ @"@@г(*expression)r "#)s "#@@	@@ @/@@@@ @2@@0%Q(@@ @	@ @9) ""@@K%YC@@ @@ @A) ""@@	@) ""@@) _@@@H$case) ##$) ##(@б@г(?'pattern) ##*) ##1@@	@@ @  0 ))))))))@ax@A@@б%guardг(R*expression) ##<) ##F@@	@@ @@@б@г(a*expression) ##J) ##T@@	@@ @"@@г(n$case) ##X) ##\@@	@@ @/@@@@ @2@@0%(@@ @	@ @9) ##5@@@@
@ @=C@@@) ## @@) `@@@C*binding_op) #]#e) #]#o@б@г'ˠ#str) #]#q) #]#t@@	@@ @  0 * ))* * * * * @\q@A@@б@г('pattern* #]#x* #]#@@	@@ @@@б@г(*expression* #]#* #]#@@	@@ @ @@б@г(g#loc*- #]#*. #]#@@	@@ @/@@г(*binding_op*: #]#*; #]#@@	@@ @<@@@@ @?@@@%@ @B(@@@7@ @E:@@@K@ @HN@@@*N #]#a@@*e a@@@N@I@@N@G@[@T@G@@@.@'@>@7
@

<@
5@#@@0@)
@

+@
$	@		@	
~@w@@:@3@B@;@L@E@@@@9@2@g@`@t@m@
@W@@  0 ********@Y@AU  0 ********@@A*  "* ##@@'- Expressions * * @@@@@@@* @@#ValL* ##* ##@@Б"mk* ##* ##@б#locг)#loc* ##* ##@@	@@ @  0 ********@@A</* b@A
	@@б%attrsг(=%attrs* ##* ##@@	@@ @@@б$docsг)$docs+ #$+ #$@@	@@ @&@@б$primг*$list+ $$+ $$#@г*砐&string+ $$+  $$@@	@@ @A@@@@@ @F@@б@г) #str+3 $$'+4 $$*@@	@@ @U@@б@г))core_type+B $$.+C $$7@@	@@ @d@@г)1value_description+O $$;+P $$L@@	@@ @q@@@@ @t@@@%@ @w(@@Q'1;@@ @	@ @~+b $$@@j'9b@@ @@ @+j ##@@'A{@@ @@ @+r ###@@'I@@ @@ @+z ##+@@	@+} ##.@@+ c@0@@@@@  0 ++~+~+++++@	@A  0 ++++++++@@A+ ##+ $M$R@@(h4 Value declarations + ##+ ##@@@@@@@+ ##@@$TypeM+ $m$t+ $m$x@@Б"mk+ $$+ $$@б#locг)#loc+ $$+ $$@@	@@ @  0 ++++++++@@A</+ d@A
	@@б%attrsг)%attrs+ $$+ $$@@	@@ @@@б$docsг*$docs+ $$+ $$@@	@@ @&@@б$textг*$text+ $$+ $$@@	@@ @7@@б&paramsг+$list, $$, $$@Вг*)core_type, $$, $$@@	@@ @U@@Вг*(variance,# $$,$ $$@@	@@ @f@@г*+injectivity,1 $$,2 $$@@	@@ @t@@@@ @y
@@@+	@ @~/,A $$@@@D	@@ @,G $$B@@б%cstrsг+ꠐ$list,S %%,,T %%0@Вг*)core_type,` %%,a %%@@	@@ @@@г+
)core_type,n %%,o %%$@@	@@ @@@г*#loc,| %%',} %%*@@	@@ @@@@#	@ @Ű(@@@<	@@ @ʰ, %%:@@б$kindг+5)type_kind, %4%@, %4%I@@	@@ @ܰ@@б$privг+l,private_flag, %4%S, %4%_@@	@@ @@@б(manifestг+W)core_type, %4%m, %4%v@@	@@ @@@б@г*#str, %4%z, %4%}@@	@@ @ 
@@г+s0type_declaration, %%, %%@@	@@ @@@@@ @@@0((@@ @	@ @$, %4%c@@I(A@@ @@ @,, %4%M@@b(ƠZ@@ @@ @4, %4%: @@(Πu@@ @	@ @
<, %%(@@(֠@@ @@ @D- $$0@@(ޠ@@ @
@ @L- $$8@@8(0@@ @@ @T- $$@@@Q(I@@ @@ @\- $$H@@n(f@@ @@ @d-' $$P@@	@-* $$S@@-A e@U@@k+constructor-5 %%-6 %%@б#locг+|#loc-B %%-C %%@@	@@ @  0 -D-C-C-D-D-D-D-D@!@A@@б%attrsг*%attrs-U %%-V %%@@	@@ @@@б$infoг,$info-f %%-g %%@@	@@ @$@@б$argsг,5constructor_arguments-w %%-x %%@@	@@ @5@@б#resг,$)core_type- %&- %&@@	@@ @F@@б@г+d#str- %&- %&@@	@@ @U@@г,@7constructor_declaration- &&- &&3@@	@@ @b@@@@ @e@@0)(@@ @	@ @l- %%@@I)A@@ @@ @ t- %%@@b)Z@@ @!@ @"|- %% @@{)s@@ @#@ @$- %%(@@)@@ @%@ @&- %%0@@	@- %%3@@- f@5@@%field- &4&<- &4&A@б#locг,)#loc- &4&H- &4&K@@	@@ @'  0 --------@!@A@@б%attrsг+L%attrs. &4&V. &4&[@@	@@ @(@@б$infoг,$info. &4&e. &4&i@@	@@ @)$@@б#mutг,,mutable_flag.$ &m&x.% &m&@@	@@ @*5@@б@г, #str.3 &m&.4 &m&@@	@@ @+D@@б@г,)core_type.B &m&.C &m&@@	@@ @,S@@г,1label_declaration.O &m&.P &m&@@	@@ @-`@@@@ @.c@@@%@ @/f(@@B*1:@@ @0	@ @1m.b &m&s@@[*9S@@ @2@ @3u.j &4&_@@t*Al@@ @4@ @5}.r &4&O#@@*I@@ @6@ @7.z &4&C+@@	@.} &4&8.@@. g@0@@@Z@S@@@  0 ........@
@A	  0 ........@@A. $z$|. &&@@+l3 Type declarations . $T$T. $T$l@@@@@@@. $m$m@@"Te#N. &&. &&@@Б"mk. &&. &&@б#locг,#loc. &&. &&@@	@@ @8  0 ........@*@A</. h@A
	@@б%attrsг, %attrs. &&. &'@@	@@ @9@@б$docsг-$docs. &'. &'@@	@@ @:&@@б&paramsг.$list. ''H. ''L@Вг-)core_type/ ''"/ ''+@@	@@ @;D@@Вг-(variance/ ''// ''7@@	@@ @<U@@г-+injectivity/$ '':/% ''E@@	@@ @=c@@@@ @>h
@@@+	@ @?m//4 ''F@@@D	@@ @As/: ''!B@@б$privг.,private_flag/F 'P'\/G 'P'h@@	@@ @B@@б@г-a#lid/U 'P'l/V 'P'o@@	@@ @C@@б@г.$list/d 'P'/e 'P'@г.
5extension_constructor/n 'P's/o 'P'@@	@@ @D@@@@@ @F@@г..type_extension/ 'P'/ 'P'@@	@@ @G@@@@ @H°@@@4@ @IŰ7@@Q+bI@@ @J	@ @K̰/ 'P'V@@+jd@@ @L@ @M԰/ ''@@+r@@ @N@ @Oܰ/ &'#@@+z@@ @P@ @Q/ &&+@@+@@ @R@ @S/ &&3@@	@/ &&6@@/ i@8@@,mk_exception/ ''/ ''@б#locг.#loc/ ''/ ''@@	@@ @T  0 ////////@%!@A@@б%attrsг-+%attrs/ ''/ ''@@	@@ @U@@б$docsг.$docs/ ''/ ''@@	@@ @V$@@б@г.5extension_constructor0 ''0 ''@@	@@ @W3@@г..type_exception0 '( 0 '(@@	@@ @X@@@@@ @YC@@0+(@@ @Z	@ @[J0 ''@@I+A@@ @\@ @]R0& ''@@d+\@@ @^@ @_Z0. '' @@	@01 ''#@@0H j@%@@a+constructor 0< ((0= ((#@б#locг.#loc0I ((*0J ((-@@	@@ @`  0 0K0J0J0K0K0K0K0K@|!@A@@б%attrsг-%attrs0\ ((80] ((=@@	@@ @a@@б$docsг/$docs0m ((G0n ((K@@	@@ @b$@@б$infoг/-$info0~ ((U0 ((Y@@	@@ @c5@@б@г.Z#str0 (](c0 (](f@@	@@ @dD@@б@г/8:extension_constructor_kind0 (](j0 (](@@	@@ @eS@@г/E5extension_constructor0 (](0 (](@@	@@ @f`@@@@ @gc@@@%@ @hf(@@B,:@@ @i	@ @jm0 ((O@@[,S@@ @k@ @lu0 ((A@@t,l@@ @m@ @n}0 ((1#@@,@@ @o@ @p0 ((%+@@	@0 ((.@@0 k@0@@$decl!0 ((0 ((@б#locг/)#loc0 ((0 ((@@	@@ @q  0 00000000@!@A@@б%attrsг.L%attrs1 ((1 ((@@	@@ @r@@б$docsг/$docs1 ((1 ((@@	@@ @s$@@б$infoг/$info1$ ((1% ((@@	@@ @t5@@б$argsг/5constructor_arguments15 ((16 ()@@	@@ @uF@@б#resг/)core_type1F ()1G ()@@	@@ @vW@@б@г/"#str1U ()1V ()@@	@@ @wf@@г/5extension_constructor1b )#))1c )#)>@@	@@ @xs@@@@ @yv@@0-A(@@ @z	@ @{}1r ()
@@I-IA@@ @|@ @}1z ((@@b-QZ@@ @~@ @1 (( @@{-Ys@@ @@ @1 (((@@-a@@ @@ @1 ((0@@-i@@ @@ @1 ((8@@	@1 ((;@@1 l@=@@&rebind"1 )?)G1 )?)M@б#locг/#loc1 )?)T1 )?)W@@	@@ @  0 11111111@!@A@@б%attrsг/%attrs1 )?)b1 )?)g@@	@@ @@@б$docsг0$docs1 )?)q1 )?)u@@	@@ @$@@б$infoг0$info1 )?)1 )?)@@	@@ @5@@б@г/Ơ#str1 ))1 ))@@	@@ @D@@б@г0#lid2 ))2	 ))@@	@@ @S@@г05extension_constructor2 ))2 ))@@	@@ @`@@@@ @c@@@%@ @f(@@B-:@@ @	@ @m2( )?)y@@[-S@@ @@ @u20 )?)k@@t.l@@ @@ @}28 )?)[#@@.@@ @@ @2@ )?)O+@@	@2C )?)C.@@2Z m@0@@@@@w@p@@@  0 2M2L2L2M2M2M2M2M@@A
  0 2P2O2O2P2P2P2P2P@@A2U &&2V ))@@/61 Type extensions 2b &&2c &&@@@@@@@2e &&@@2y5 {1 Module language} 2t ))2u ))@@@@@@  0 2s2r2r2s2s2s2s2s@@'"2 n@A#Mty-O2 ))2 ))@@Б"mk$2 **
2 **@б#locг0ؠ#loc2 **2 **@@	@@ @  0 22222222@-@A@@б%attrsг/%attrs2 **$2 **)@@	@@ @@@б@г1[0module_type_desc2 **-2 **=@@	@@ @!@@г1h+module_type2 **A2 **L@@	@@ @.@@@@ @1@@0.(@@ @	@ @82 **@@J.B@@ @@ @@2 **@@	@2 **	@@2 o@@@G$attr%2 *M*U2 *M*Y@б@г1+module_type2 *M*[2 *M*f@@	@@ @  0 22222222@w@A@@б@г1)attribute3 *M*j3 *M*s@@	@@ @@@г1+module_type3 *M*w3 *M*@@	@@ @@@@@ @!@@@'@ @$*@@@3) *M*Q@@3@ p@@@*%ident&34 **35 **@б#locг1{#loc3A **3B **@@	@@ @  0 3C3B3B3C3C3C3C3C@EZ!@A@@б%attrsг0%attrs3T **3U **@@	@@ @@@б@г1o#lid3c **3d **@@	@@ @"@@г2+module_type3p **3q **@@	@@ @/@@@@ @2@@0/O(@@ @	@ @93 **@@K/WC@@ @@ @A3 **@@	@3 **@@3 q@@@H%alias'3 **3 **@б#locг1ݠ#loc3 **3 **@@	@@ @  0 33333333@cz!@A@@б%attrsг1 %attrs3 **3 **@@	@@ @@@б@г1Ѡ#lid3 **3 **@@	@@ @"@@г2n+module_type3 **3 **@@	@@ @/@@@@ @2@@0/(@@ @	@ @93 **@@K/C@@ @@ @A3 **@@	@3 **@@4 r@@@H)signature(3 + +3 + +@б#locг2?#loc4 + +4 + +@@	@@ @  0 44444444@cz!@A@@б%attrsг1b%attrs4 + +&4 + ++@@	@@ @@@б@г2)signature4' + +/4( + +8@@	@@ @"@@г2+module_type44 + +<45 + +G@@	@@ @/@@@@ @2@@00(@@ @	@ @94D + +@@K0C@@ @@ @A4L + +@@	@4O + +@@4f s@@@H(functor_)4Z +H+P4[ +H+X@б#locг2#loc4g +H+_4h +H+b@@	@@ @  0 4i4h4h4i4i4i4i4i@cz!@A@@б%attrsг1Ġ%attrs4z +H+m4{ +H+r@@	@@ @@@б@г3%1functor_parameter4 +v+|4 +v+@@	@@ @"@@б@г34+module_type4 +v+4 +v+@@	@@ @1@@г3A+module_type4 +v+4 +v+@@	@@ @>@@@@ @A@@@%@ @D(@@B0:@@ @	@ @K4 +H+f@@]0U@@ @@ @S4 +H+Z@@	@4 +H+L@@4 t@ @@Z%with_*4 ++4 ++@б#locг3#loc4 ++4 ++@@	@@ @  0 44444444@u!@A@@б%attrsг28%attrs4 ++4 ++@@	@@ @@@б@г3+module_type4 ++4 ++@@	@@ @"@@б@г4$list5 ++5
 +, @г3/with_constraint5 ++5 ++@@	@@ @;@@@@@ @@@@г3+module_type5( +,5) +,@@	@@ @M@@@@ @P@@@4@ @S7@@Q1
I@@ @	@ @Z5; ++@@l1d@@ @@ @b5C ++@@	@5F ++@@5] u@ @@i'typeof_+5Q ,,5R ,,@б#locг3#loc5^ ,,&5_ ,,)@@	@@ @  0 5`5_5_5`5`5`5`5`@!@A@@б%attrsг2%attrs5q ,,45r ,,9@@	@@ @@@б@г4+module_expr5 ,,=5 ,,H@@	@@ @"@@г4)+module_type5 ,,L5 ,,W@@	@@ @/@@@@ @2@@01l(@@ @	@ @95 ,,-@@K1tC@@ @@ @A5 ,,!@@	@5 ,,@@5 v@@@H)extension,5 ,X,`5 ,X,i@б#locг3#loc5 ,X,p5 ,X,s@@	@@ @  0 55555555@cz!@A@@б%attrsг3%attrs5 ,X,~5 ,X,@@	@@ @@@б@г4~)extension5 ,X,5 ,X,@@	@@ @"@@г4+module_type5 ,X,5 ,X,@@	@@ @/@@@@ @2@@01Π(@@ @	@ @95 ,X,w@@K1֠C@@ @@ @A6 ,X,k@@	@6
 ,X,\@@6! w@@@H@*@#@@*@#@X@Q@w@p@@  0 66666666@[r@A6# )*6$,,@@39 Module type expressions 60 ))61 ))@@@@@@@63 ))@@#Mod7P6?,,6@,,@@Б"mk.6L,,6M,,@б#locг4#loc6Y,,6Z,,@@	@@ @  0 6[6Z6Z6[6[6[6[6[@@@</6w x@A
	@@б%attrsг3%attrs6n,,6o,,@@	@@ @@@б@г50module_expr_desc6},,6~,-@@	@@ @$@@г5&+module_expr6,-6,-@@	@@ @1@@@@ @4@@02i(@@ @	@ @;6,,@@M2qE@@ @@ @C6,,@@	@6,,@@6 y@@@J$attr/6--#6--'@б@г5W+module_expr6--)6--4@@	@@ @  0 66666666@cz@A@@б@г5h)attribute6--86--A@@	@@ @@@г5u+module_expr6--E6--P@@	@@ @@@@@ @!@@@'@ @$*@@@6--@@6 z@@@*%ident06	-R-Z6	-R-_@б#locг59#loc6	-R-f7 	-R-i@@	@@ @  0 77 7 77777@EZ!@A@@б%attrsг4\%attrs7	-R-t7	-R-y@@	@@ @@@б@г5-#lid7!	-R-}7"	-R-@@	@@ @"@@г5+module_expr7.	-R-7/	-R-@@	@@ @/@@@@ @2@@03
(@@ @	@ @97>	-R-m@@K3C@@ @@ @ A7F	-R-a@@	@7I	-R-V@@7` {@@@H)structure17T
--7U
--@б#locг5#loc7a
--7b
--@@	@@ @  0 7c7b7b7c7c7c7c7c@cz!@A@@б%attrsг4%attrs7t
--7u
--@@	@@ @@@б@г6)structure7
--7
--@@	@@ @"@@г6,+module_expr7
--7
--@@	@@ @/@@@@ @2@@03o(@@ @	@ @97
--@@K3wC@@ @@ @	A7
--@@	@7
--@@7 |@@@H(functor_27--7--@б#locг5#loc7--7--@@	@@ @
  0 77777777@cz!@A@@б%attrsг5 %attrs7--7-.@@	@@ @@@б@г61functor_parameter7..7..@@	@@ @"@@б@г6+module_expr7..!7..,@@	@@ @
1@@г6+module_expr8..08..;@@	@@ @>@@@@ @A@@@%@ @D(@@B3:@@ @	@ @K8--@@]3U@@ @@ @S8--@@	@8--@@86 }@ @@Z%apply38*
.<.D8+
.<.I@б#locг6q#loc87
.<.P88
.<.S@@	@@ @  0 8988888989898989@u!@A@@б%attrsг5%attrs8J
.<.^8K
.<.c@@	@@ @@@б@г6+module_expr8Y
.<.g8Z
.<.r@@	@@ @"@@б@г7+module_expr8h
.<.v8i
.<.@@	@@ @1@@г7+module_expr8u..8v..@@	@@ @>@@@@ @A@@@%@ @D(@@B4W:@@ @	@ @K8
.<.W@@]4_U@@ @@ @S8
.<.K@@	@8
.<.@@@8 ~@ @@Z+constraint_48..8..@б#locг6堐#loc8..8..@@	@@ @   0 88888888@u!@A@@б%attrsг6%attrs8..8..@@	@@ @!@@б@г7i+module_expr8..8..@@	@@ @""@@б@г7x+module_type8..8..@@	@@ @#1@@г7+module_expr8..8..@@	@@ @$>@@@@ @%A@@@%@ @&D(@@B4ˠ:@@ @'	@ @(K8..@@]4ӠU@@ @)@ @*S9..@@	@9..@@9 @ @@Z&unpack59./ 9./@б#locг7Y#loc9./
9 ./@@	@@ @+  0 9!9 9 9!9!9!9!9!@u!@A@@б%attrsг6|%attrs92./93./ @@	@@ @,@@б@г7*expression9A./$9B./.@@	@@ @-"@@г7+module_expr9N./29O./=@@	@@ @./@@@@ @/2@@05-(@@ @0	@ @199^./@@K55C@@ @2@ @3A9f./@@	@9i..@@9 @@@H)extension69t/>/F9u/>/O@б#locг7#loc9/>/V9/>/Y@@	@@ @4  0 99999999@cz!@A@@б%attrsг6ޠ%attrs9/>/d9/>/i@@	@@ @5@@б@г8?)extension9/>/m9/>/v@@	@@ @6"@@г8L+module_expr9/>/z9/>/@@	@@ @7/@@@@ @82@@05(@@ @9	@ @:99/>/]@@K5C@@ @;@ @<A9/>/Q@@	@9/>/B@@9 @@@H@-@&@@-@&@I@B@w@p@@  0 99999999@[r@A  0 99999999@@A9,,9//@@6Ɛ4 Module expressions 9,,9,,@@@@@@@9,,@@#SigJQ://://@@Б"mk8://://@б#locг8U#loc://://@@	@@ @=  0 ::::::::@@A</:9 @A
	@@б@г83signature_item_desc:.//:///@@	@@ @>@@г8.signature_item:;//:<//@@	@@ @? @@@@ @@#@@46,@@ @A	@ @B*:K//@@	@:N//@@:e @@@1%value9:Y//:Z/0@б#locг8#loc:f/0	:g/0@@	@@ @C  0 :h:g:g:h:h:h:h:h@Lc!@A@@б@г91value_description:w/0:x/0!@@	@@ @D@@г9 .signature_item:/0%:/03@@	@@ @E@@@@ @F!@@26c*@@ @G	@ @H(:/0@@	@://@@: @@@/%type_::040<:040A@б#locг8預#loc:040H:040K@@	@@ @I  0 ::::::::@Ja!@A@@б@г9(rec_flag:040O:040W@@	@@ @J@@б@г:f$list:040l:040p@г9u0type_declaration:040[:040k@@	@@ @K*@@@@@ @M/@@г9.signature_item:040t:040@@	@@ @N<@@@@ @O?@@@4@ @PB7@@S6͠K@@ @Q	@ @RI:040C@@	@;0408@@; @@@P*type_subst;;00;
00@б#locг9S#loc;00;00@@	@@ @S  0 ;;;;;;;;@k!@A@@б@г:$list;*00;+00@г90type_declaration;400;500@@	@@ @T@@@@@ @V @@г9.signature_item;F00;G00@@	@@ @W-@@@@ @X0@@A7%9@@ @Y	@ @Z7;V00@@	@;Y00@@;p @@@>.type_extension<;d00;e00@б#locг9#loc;q00;r00@@	@@ @[  0 ;s;r;r;s;s;s;s;s@Yp!@A@@б@г:.type_extension;00;00@@	@@ @\@@г:+.signature_item;01;01@@	@@ @]@@@@ @^!@@27n*@@ @_	@ @`(;00@@	@;00@@; @@@/*exception_=;11;11"@б#locг9#loc;11);11,@@	@@ @a  0 ;;;;;;;;@Ja!@A@@б@г:g.type_exception;110;11>@@	@@ @b@@г:t.signature_item;11B;11P@@	@@ @c@@@@ @d!@@27*@@ @e	@ @f(;11$@@	@;11@@< @@@/'module_>;1Q1Y;1Q1`@б#locг:=#loc<1Q1g<1Q1j@@	@@ @g  0 <<<<<<<<@Ja!@A@@б@г:2module_declaration<1Q1n<1Q1@@	@@ @h@@г:.signature_item<!1Q1<"1Q1@@	@@ @i@@@@ @j!@@28 *@@ @k	@ @l(<11Q1b@@	@<41Q1U@@<K @@@/)mod_subst?<? 11<@ 11@б#locг:#loc<L 11<M 11@@	@@ @m  0 <N<M<M<N<N<N<N<N@Ja!@A@@б@г:3module_substitution<] 11<^ 11@@	@@ @n@@г;.signature_item<j 11<k 11@@	@@ @o@@@@ @p!@@28I*@@ @q	@ @r(<z 11@@	@<} 11@@< @@@/*rec_module@<!11<!11@б#locг:Ϡ#loc<!11<!11@@	@@ @s  0 <<<<<<<<@Ja!@A@@б@г<=$list<!12<!12@г;L2module_declaration<!11<!12
@@	@@ @t@@@@@ @v @@г;^.signature_item<!12<!12!@@	@@ @w-@@@@ @x0@@A89@@ @y	@ @z7<!11@@	@<!11@@< @@@>'modtypeA<"2"2*<"2"21@б#locг;'#loc<"2"28<"2"2;@@	@@ @{  0 <<<<<<<<@Yp!@A@@б@г;7module_type_declaration<"2"2?<"2"2V@@	@@ @|@@г;.signature_item="2"2Z="2"2h@@	@@ @}@@@@ @~!@@28*@@ @	@ @(="2"23@@	@="2"2&@@=5 @@@/-modtype_substB=)#2i2q=*#2i2~@б#locг;p#loc=6#2i2=7#2i2@@	@@ @  0 =8=7=7=8=8=8=8=8@Ja!@A@@б@г;7module_type_declaration=G#2i2=H#2i2@@	@@ @@@г;.signature_item=T#2i2=U#2i2@@	@@ @@@@@ @!@@293*@@ @	@ @(=d#2i2@@	@=g#2i2m@@=~ @@@/%open_C=r$22=s$22@б#locг;#loc=$22=$22@@	@@ @  0 ========@Ja!@A@@б@г<,0open_description=$22=$22@@	@@ @@@г<9.signature_item=$22=$22@@	@@ @@@@@ @!@@29|*@@ @	@ @(=$22@@	@=$22@@= @@@/(include_D=%22=%23@б#locг<#loc=%23=%23@@	@@ @  0 ========@Ja!@A@@б@г<u3include_description=%23=%23%@@	@@ @@@г<.signature_item=%23)=%237@@	@@ @@@@@ @!@@29Š*@@ @	@ @(=%23@@	@=%22@@> @@@/&class_E>&383@>&383F@б#locг<K#loc>&383M>&383P@@	@@ @  0 >>>>>>>>@Ja!@A@@б@г=$list>"&383f>#&383j@г<1class_description>,&383T>-&383e@@	@@ @@@@@@ @ @@г<.signature_item>>&383n>?&383|@@	@@ @-@@@@ @0@@A:9@@ @	@ @7>N&383H@@	@>Q&383<@@>h @@@>*class_typeF>\'3}3>]'3}3@б#locг<#loc>i'3}3>j'3}3@@	@@ @  0 >k>j>j>k>k>k>k>k@Yp!@A@@б@г>$list>z'3}3>{'3}3@г= 6class_type_declaration>'3}3>'3}3@@	@@ @@@@@@ @ @@г=2.signature_item>'3}3>'3}3@@	@@ @-@@@@ @0@@A:u9@@ @	@ @7>'3}3@@	@>'3}3@@> @@@>)extensionG>(33>(33@б#locг<#loc>(33>(33@@	@@ @  0 >>>>>>>>@Yp!@A@@б%attrsг<%attrs>(33>(33@@	@@ @@@б@г=)extension>(33>(34@@	@@ @"@@г=.signature_item>(34>(34@@	@@ @/@@@@ @2@@0:Ϡ(@@ @	@ @9? (33@@K:נC@@ @@ @A?(33@@	@?(33@@?" @@@H)attributeH?)44?)44'@б#locг=]#loc?#)44.?$)441@@	@@ @  0 ?%?$?$?%?%?%?%?%@cz!@A@@б@г=)attribute?4)445?5)44>@@	@@ @@@г=.signature_item?A)44B?B)44P@@	@@ @@@@@ @!@@2; *@@ @	@ @(?Q)44)@@	@?T)44@@?k @@@/$textI?_*4Q4Y?`*4Q4]@б@г>$text?j*4Q4_?k*4Q4c@@	@@ @  0 ?l?k?k?l?l?l?l?l@H_@A@@г?$list?y*4Q4v?z*4Q4z@г>.signature_item?*4Q4g?*4Q4u@@	@@ @@@@@@ @@@@$@ @!'@@@?*4Q4U@@? @@@'@L@E@@G@@ @@r@k+@$@@G@@ @@c@\
@@f@_)@@  0 ????????@La+@A'  0 ????????@@A?//?+4{4@@<1 Signature items ?//?//@@@@@@@?//@@#Str\R?.44?.44@@Б"mkK?044?044@б#locг>/#loc?044?044@@	@@ @  0 ????????@ @A</@ @A
	@@б@г>3structure_item_desc@044@	044@@	@@ @@@г>.structure_item@044@044@@	@@ @ @@@@ @#@@4;,@@ @	@ @*@%044@@	@@(044@@@? @@@1$evalL@3244@4244@б#locг>z#loc@@244@A245 @@	@@ @  0 @B@A@A@B@B@B@B@B@Lc!@A@@б%attrsг>*attributes@S245@T245@@	@@ @@@б@г>*expression@b245@c245#@@	@@ @"@@г?.structure_item@o245'@p2455@@	@@ @/@@@@ @2@@0<N(@@ @	@ @9@245@@K<VC@@ @@ @A@244@@	@@244@@@ @@@H%valueM@3565>@3565C@б#locг>ܠ#loc@3565J@3565M@@	@@ @  0 @@@@@@@@@cz!@A@@б@г?u(rec_flag@3565Q@3565Y@@	@@ @@@б@г@Y$list@3565k@3565o@г?h-value_binding@3565]@3565j@@	@@ @*@@@@@ @/@@г?z.structure_item@3565s@3565@@	@@ @<@@@@ @?@@@4@ @B7@@S<K@@ @	@ @I@3565E@@	@@3565:@@A @@@P)primitiveN@455A 455@б#locг?F#locA455A
455@@	@@ @  0 AA
A
AAAAA@k!@A@@б@г?1value_descriptionA455A455@@	@@ @@@г?.structure_itemA*455A+455@@	@@ @@@@@ @!@@2=	*@@ @	@ @(A:455@@	@A=455@@AT @@@/%type_OAH555AI555@б#locг?#locAU555AV555@@	@@ @  0 AWAVAVAWAWAWAWAW@Ja!@A@@б@г@((rec_flagAf555Ag555@@	@@ @@@б@гA$listAu555Av556@г@0type_declarationA555A555@@	@@ @*@@@@@ @/@@г@-.structure_itemA556A556@@	@@ @<@@@@ @?@@@4@ @B7@@S=sK@@ @	@ @IA555@@	@A555@@A @@@P.type_extensionPA666A666*@б#locг?#locA6661A6664@@	@@ @  0 AAAAAAAA@k!@A@@б@г@l.type_extensionA6668A666F@@	@@ @@@г@y.structure_itemA666JA666X@@	@@ @@@@@ @!@@2=*@@ @	@ @(A666,@@	@A666@@B @@@/*exception_QA76Y6aA76Y6k@б#locг@B#locB76Y6rB	76Y6u@@	@@ @  0 B
B	B	B
B
B
B
B
@Ja!@A@@б@г@.type_exceptionB76Y6yB76Y6@@	@@ @@@г@.structure_itemB&76Y6B'76Y6@@	@@ @@@@@ @!@@2>*@@ @	@ @(B676Y6m@@	@B976Y6]@@BP @@@/'module_RBD866BE866@б#locг@#locBQ866BR866@@	@@ @  0 BSBRBRBSBSBSBSBS@Ja!@A@@б@г@.module_bindingBb866Bc866@@	@@ @@@гA.structure_itemBo866Bp866@@	@@ @@@@@ @!@@2>N*@@ @	@ @(B866@@	@B866@@B @@@/*rec_moduleSB966B966@б#locг@Ԡ#locB966B966@@	@@ @  0 BBBBBBBB@Ja!@A@@б@гBB$listB967B967@гAQ.module_bindingB966B967@@	@@ @@@@@@ @ @@гAc.structure_itemB967B967@@	@@ @-@@@@ @0@@A>9@@ @	@ @7B966@@	@B966@@B @@@>'modtypeTB:77&B:77-@б#locгA,#locB:774B:777@@	@@ @  0 BBBBBBBB@Yp!@A@@б@гA7module_type_declarationC:77;C:77R@@	@@ @@@гA.structure_itemC:77VC:77d@@	@@ @@@@@ @!@@2>*@@ @	@ @(C :77/@@	@C#:77"@@C: @@@/%open_UC.;7e7mC/;7e7r@б#locгAu#locC;;7e7yC<;7e7|@@	@@ @   0 C=C<C<C=C=C=C=C=@Ja!@A@@б@гA0open_declarationCL;7e7CM;7e7@@	@@ @@@гA.structure_itemCY;7e7CZ;7e7@@	@@ @@@@@ @!@@2?8*@@ @	@ @(Ci;7e7t@@	@Cl;7e7i@@C @@@/&class_VCw<77Cx<77@б#locгA#locC<77C<77@@	@@ @  0 CCCCCCCC@Ja!@A@@б@гC,$listC<77C<77@гB;1class_declarationC<77C<77@@	@@ @@@@@@ @	 @@гBM.structure_itemC<77C<77@@	@@ @
-@@@@ @0@@A?9@@ @	@ @
7C<77@@	@C<77@@C @@@>*class_typeWC=77C=77@б#locгB#locC=78C=78@@	@@ @  0 CCCCCCCC@Yp!@A@@б@гC$listC=78C=78#@гB6class_type_declarationC=78C=78@@	@@ @@@@@@ @ @@гB.structure_itemD	=78'D
=785@@	@@ @-@@@@ @0@@A?9@@ @	@ @7D=77@@	@D=77@@D3 @@@>(include_XD'>868>D(>868F@б#locгBn#locD4>868MD5>868P@@	@@ @  0 D6D5D5D6D6D6D6D6@Yp!@A@@б@гB3include_declarationDE>868TDF>868g@@	@@ @@@гB.structure_itemDR>868kDS>868y@@	@@ @@@@@ @!@@2@1*@@ @	@ @(Db>868H@@	@De>868:@@D| @@@/)extensionYDp?8z8Dq?8z8@б#locгB#locD}?8z8D~?8z8@@	@@ @  0 DD~D~DDDDD@Ja!@A@@б%attrsгAڠ%attrsD?8z8D?8z8@@	@@ @@@б@гC;)extensionD?8z8D?8z8@@	@@ @"@@гCH.structure_itemD?8z8D?8z8@@	@@ @/@@@@ @ 2@@0@(@@ @!	@ @"9D?8z8@@K@C@@ @#@ @$AD?8z8@@	@D?8z8~@@D @@@H)attributeZD@88D@88@б#locгC#locD@88D@88@@	@@ @%  0 DDDDDDDD@cz!@A@@б@гC)attributeD@88D@88@@	@@ @&@@гC.structure_itemD@88D@88@@	@@ @'@@@@ @(!@@2@ܠ*@@ @)	@ @*(E
@88@@	@E@88@@E' @@@/$text[EA9 9EA9 9@б@гC$textE&A9 9E'A9 9@@	@@ @+  0 E(E'E'E(E(E(E(E(@H_@A@@гD̠$listE5A9 9%E6A9 9)@гC.structure_itemE?A9 9E@A9 9$@@	@@ @,@@@@@ @.@@@$@ @/!'@@@EOA9 9@@Ef @@@'@p.@'@f@_@@p@i)@"@@E@>@@R@K@@d@]'@@  0 EqEpEpEqEqEqEqEq@J_)@A%  0 EtEsEsEtEtEtEtEt@}@AEy/44EzB9*9/@@BZ1 Structure items E-44E-44@@@@@@@E.44@@"Md^SEE9L9SEE9L9U@@Б"mk]EG9]9eEG9]9g@б#locгC預#locEG9]9nEG9]9q@@	@@ @0  0 EEEEEEEE@@A</E @A
	@@б%attrsгC%attrsEG9]9|EG9]9@@	@@ @1@@б$docsгD$docsEG9]9EG9]9@@	@@ @2&@@б$textгD$textEG9]9EG9]9@@	@@ @37@@б@гC'str_optEH99EH99@@	@@ @4F@@б@гD+module_typeFH99FH99@@	@@ @5U@@гD2module_declarationFH99FH99@@	@@ @6b@@@@ @7e@@@%@ @8h(@@BA:@@ @9	@ @:oF$G9]9@@[AS@@ @;@ @<wF,G9]9@@tBl@@ @=@ @>F4G9]9u#@@B@@ @?@ @@F<G9]9i+@@	@F?G9]9a.@@FV @0@@@@@  0 FAF@F@FAFAFAFAFA@	@A  0 FDFCFCFDFDFDFDFD@@AFIF9W9YFJI99@@C*5 Module declarations FVD9191FWD919K@@@@@@@FYE9L9L@@"Ms`TFeL99FfL9: @@Б"mk_FrN::FsN::@б#locгD#locFN::FN::@@	@@ @A  0 FFFFFFFF@@A</F @A
	@@б%attrsгCޠ%attrsFN::'FN::,@@	@@ @B@@б$docsгET$docsFN::6FN:::@@	@@ @C&@@б$textгEe$textFN::DFN::H@@	@@ @D7@@б@гD#strFO:L:RFO:L:U@@	@@ @EF@@б@гDࠐ#lidFO:L:YFO:L:\@@	@@ @FU@@гE}3module_substitutionFO:L:`FO:L:s@@	@@ @Gb@@@@ @He@@@%@ @Ih(@@BBà:@@ @J	@ @KoFN::>@@[BˠS@@ @L@ @MwFN::0@@tBӠl@@ @N@ @OGN:: #@@B۠@@ @P@ @QGN::+@@	@GN::.@@G& @0@@@@@  0 GGGGGGGG@	@A  0 GGGGGGGG@@AGM::GP:t:y@@C6 Module substitutions G&K99G'K99@@@@@@@G)L99@@#MtdbUG5S::G6S::@@Б"mkaGBU::GCU::@б#locгE#locGOU::GPU::@@	@@ @R  0 GQGPGPGQGQGQGQGQ@@A</Gm @A
	@@б%attrsгD%attrsGdU::GeU::@@	@@ @S@@б$docsгF$$docsGuU::GvU::@@	@@ @T&@@б$textгF5$textGU::GU::@@	@@ @U7@@б#typгF3+module_typeGV::GV:;@@	@@ @VH@@б@гEs#strGV:;GV:;@@	@@ @WW@@гFO7module_type_declarationGV:;GV:;)@@	@@ @Xd@@@@ @Yg@@0C(@@ @Z	@ @[nGV::@@ICA@@ @\@ @]vGU::@@bCZ@@ @^@ @_~GU:: @@{Cs@@ @`@ @aGU::(@@C@@ @b@ @cGU::0@@	@GU::3@@G @5@@@@@  0 GGGGGGGG@	@A  0 GGGGGGGG@@AGT::GW;*;/@@Dѐ: Module type declarations GR:{:{GR:{:@@@@@@@H S::@@"MbdVHZ;H;OH
Z;H;Q@@Б"mkcH\;Y;aH\;Y;c@б#locгF`#locH&\;Y;jH'\;Y;m@@	@@ @d  0 H(H'H'H(H(H(H(H(@@A</HD @A
	@@б%attrsгE%attrsH;\;Y;xH<\;Y;}@@	@@ @e@@б$docsгF$docsHL\;Y;HM\;Y;@@	@@ @f&@@б$textгG$textH]\;Y;H^\;Y;@@	@@ @g7@@б@гE'str_optHl];;Hm];;@@	@@ @hF@@б@гG+module_exprH{];;H|];;@@	@@ @iU@@гG$.module_bindingH];;H];;@@	@@ @jb@@@@ @ke@@@%@ @lh(@@BDj:@@ @m	@ @noH\;Y;@@[DrS@@ @o@ @pwH\;Y;@@tDzl@@ @q@ @rH\;Y;q#@@D@@ @s@ @tH\;Y;e+@@	@H\;Y;].@@H @0@@@@@  0 HHHHHHHH@	@A  0 HHHHHHHH@@AH[;S;UH^;;@@E1 Module bindings HY;1;1HY;1;G@@@@@@@HZ;H;H@@#OpnfWHa;;Ha;;@@Б"mkeHc;;Hc;;@б#locгG0#locHc;<Hc;<@@	@@ @u  0 HHHHHHHH@@A</I @A
	@@б%attrsгFU%attrsIc;<Ic;<@@	@@ @v@@б$docsгG$docsIc;<!Ic;<%@@	@@ @w&@@б(overrideгG-override_flagI-d<)<9I.d<)<F@@	@@ @x7@@б@А!a @X@yBI>d<)<JI?d<)<L@@гG*open_infosIGd<)<SIHd<)<]@А!aRINd<)<PIOd<)<R@@@@@ @{Y
@@@@ @|\@@6E..@@ @}	@ @~cI_d<)</@@OE6G@@ @@ @kIgc;< @@hE>`@@ @@ @sIoc;<(@@EF}@@ @@ @{Iwc;;0@@	@Izc;;3@@I @5@@@@@  0 I|I{I{I|I|I|I|I|@	@A  0 II~I~IIIII@@AIb;;Ie<^<c@@Fe' Opens I`;;I`;;@@@@@@@Ia;;@@$InclhXIh<u<|Ih<u<@@Б"mkgIj<<Ij<<@б#locгG#locIj<<Ij<<@@	@@ @  0 IIIIIIII@@A</I @A
	@@б%attrsгG%attrsIj<<Ij<<@@	@@ @@@б$docsгH$docsIj<<Ij<<@@	@@ @&@@б@А!a @Y@1Ij<<Ij<<@@гH-include_infosIj<<Ij<<@А!aAJj<<Jj<<@@@@@ @H
@@@@ @K@@6E.@@ @	@ @RJj<<@@OEG@@ @@ @ZJj<< @@lEd@@ @@ @bJ"j<<(@@	@J%j<<+@@J< @-@@i@@@  0 J'J&J&J'J'J'J'J'@l	@A  0 J*J)J)J*J*J*J*J*@n@AJ/i<<J0k<<@@G* Includes J<g<e<eJ=g<e<t@@@@@@@J?h<u<u@@"VbjYJKn<<JLn<<@@Б"mkiJXp==JYp==@б#locгH#locJep==Jfp==@@	@@ @  0 JgJfJfJgJgJgJgJg@@A</J @A
	@@б%attrsгGĠ%attrsJzp==$J{p==)@@	@@ @@@б$docsгI:$docsJp==3Jp==7@@	@@ @&@@б$textгIK$textJp==AJp==E@@	@@ @7@@б@гIG'patternJq=I=OJq=I=V@@	@@ @F@@б@гIV*expressionJq=I=ZJq=I=d@@	@@ @U@@гIc-value_bindingJq=I=hJq=I=u@@	@@ @b@@@@ @e@@@%@ @h(@@BF:@@ @	@ @oJp==;@@[FS@@ @@ @wJp==-@@tFl@@ @@ @Jp==#@@F@@ @@ @Jp==+@@	@Jp==.@@K @0@@@@@  0 JJJJJJJJ@	@A  0 JJJJJJJJ@@AJo<= K r=v={@@G0 Value bindings Km<<K
m<<@@@@@@@Kn<<@@K#4 {1 Class language} Ku=~=~Ku=~=@@@@@@  0 KKKKKKKK@@'"K9 @A#CtyrZK.x==K/x==@@Б"mkkK;z==K<z==@б#locгI#locKHz==KIz==@@	@@ @  0 KJKIKIKJKJKJKJKJ@-@A@@б%attrsгH%attrsKZz==K[z==@@	@@ @@@б@гJ/class_type_descKiz==Kjz=> @@	@@ @!@@гJ*class_typeKvz=>Kwz=>@@	@@ @.@@@@ @1@@0GU(@@ @	@ @8Kz==@@JG]B@@ @@ @@Kz==@@	@Kz==@@K @@@G$attrlK{>>K{>>@б@гJC*class_typeK{>>K{>>'@@	@@ @  0 KKKKKKKK@w@A@@б@гJT)attributeK{>>+K{>>4@@	@@ @@@гJa*class_typeK{>>8K{>>B@@	@@ @@@@@ @!@@@'@ @$*@@@K{>>@@K @@@*&constrmK}>D>LK}>D>R@б#locгJ%#locK}>D>YK}>D>\@@	@@ @  0 KKKKKKKK@EZ!@A@@б%attrsгIH%attrsK}>D>gK}>D>l@@	@@ @@@б@гJ#lidL
}>D>pL}>D>s@@	@@ @"@@б@гK$listL}>D>L}>D>@гJ)core_typeL&}>D>wL'}>D>@@	@@ @;@@@@@ @@@@гJ*class_typeL8}>D>L9}>D>@@	@@ @M@@@@ @P@@@4@ @S7@@QHI@@ @	@ @ZLK}>D>`@@lH"d@@ @@ @bLS}>D>T@@	@LV}>D>H@@Lm @ @@i)signaturenLa~>>Lb~>>@б#locгJ#locLn~>>Lo~>>@@	@@ @  0 LpLoLoLpLpLpLpLp@!@A@@б%attrsгIˠ%attrsL~>>L~>>@@	@@ @@@б@гK,/class_signatureL~>>L~>>@@	@@ @"@@гK9*class_typeL~>>L~>>@@	@@ @/@@@@ @2@@0H|(@@ @	@ @9L~>>@@KHC@@ @@ @AL~>>@@	@L~>>@@L @@@H%arrowoL>>L>>@б#locгK
#locL>>L>>@@	@@ @  0 LLLLLLLL@cz!@A@@б%attrsгJ-%attrsL>?L>?@@	@@ @@@б@гK)arg_labelL>?L>?@@	@@ @"@@б@гK)core_typeM>?M>?"@@	@@ @1@@б@гK*class_typeM?&?,M?&?6@@	@@ @@@@гK*class_typeM?&?:M?&?D@@	@@ @M@@@@ @P@@@%@ @S(@@@7@ @V:@@TIL@@ @	@ @]M3>>@@oI
g@@ @@ @eM;>>@@	@M>>>!@@MU @#@@l)extensionpMI?E?MMJ?E?V@б#locгK#locMV?E?]MW?E?`@@	@@ @  0 MXMWMWMXMXMXMXMX@!@A@@б%attrsгJ%attrsMi?E?kMj?E?p@@	@@ @@@б@гL)extensionMx?E?tMy?E?}@@	@@ @"@@гL!*class_typeM?E?M?E?@@	@@ @/@@@@ @2@@0Id(@@ @	@ @9M?E?d@@KIlC@@ @@ @AM?E?X@@	@M?E?I@@M @@@H%open_qM??M??@б#locгK#locM??M??@@	@@ @  0 MMMMMMMM@cz!@A@@б%attrsгK%attrsM??M??@@	@@ @@@б@гLv0open_descriptionM??M??@@	@@ @"@@б@гL*class_typeM??M??@@	@@ @1@@гL*class_typeM??M??@@	@@ @>@@@@ @A@@@%@ @D(@@BIؠ:@@ @	@ @KN	??@@]IU@@ @@ @SN??@@	@N??@@N+ @ @@Z@@J@C@i@b@@~@@  0 N"N!N!N"N"N"N"N"@i@AN)y==N*??@@K
8 Class type expressions N6w==N7w==@@@@@@@N9x==@@#Ctf|[NE@@NF@@@@Б"mksNR@%@-NS@%@/@б#locгL#locN_@%@6N`@%@9@@	@@ @  0 NaN`N`NaNaNaNaNa@E=@@</N} @A
	@@б%attrsгK%attrsNt@%@DNu@%@I@@	@@ @@@б$docsгM4$docsN@%@SN@%@W@@	@@ @&@@б@гM05class_type_field_descN@[@aN@[@v@@	@@ @5@@гM=0class_type_fieldN@[@zN@[@@@	@@ @B@@@@ @E@@0J(@@ @	@ @LN@%@M@@IJA@@ @@ @TN@%@=@@fJ^@@ @@ @\N@%@1 @@	@N@%@)#@@N @%@@c$attrtN@@N@@@б@гMv0class_type_fieldN@@N@@@@	@@ @  0 NNNNNNNN@|@A@@б@гM)attributeN@@N@@@@	@@ @@@гM0class_type_fieldN@@N@@@@	@@ @@@@@ @!@@@'@ @$*@@@O@@@@O @@@*(inherit_uO@@O@@@б#locгMX#locO@@O@@@@	@@ @  0 O OOO O O O O @EZ!@A@@б%attrsгL{%attrsO1@@O2@@@@	@@ @@@б@гM*class_typeO@@@OA@A@@	@@ @"@@гM0class_type_fieldOM@AON@A@@	@@ @ /@@@@ @2@@0K,(@@ @	@ @9O]@@@@KK4C@@ @@ @AOe@@@@	@Oh@@@@O @@@H$val_vOsAA!OtAA%@б#locгM#locOAA,OAA/@@	@@ @  0 OOOOOOOO@cz!@A@@б%attrsгLݠ%attrsOAA:OAA?@@	@@ @@@б@гMo#strOAACOAAF@@	@@ @"@@б@гNs,mutable_flagOAAJOAAV@@	@@ @	1@@б@гN,virtual_flagOAZA`OAZAl@@	@@ @
@@@б@гNk)core_typeOAZApOAZAy@@	@@ @O@@гNx0class_type_fieldOAZA}OAZA@@	@@ @\@@@@ @
_@@@%@ @b(@@@7@ @e:@@@I@ @hL@@fKĠ^@@ @	@ @oOAA3@@K̠y@@ @@ @wOAA'!@@	@P AA$@@P @&@@~'method_wPAAPAA@б#locгNR#locPAAPAA@@	@@ @  0 PPPPPPPP@!@A@@б%attrsгMu%attrsP+AAP,AA@@	@@ @@@б@гN#strP:AAP;AA@@	@@ @"@@б@гO,private_flagPIAAPJAA@@	@@ @1@@б@гO,virtual_flagPXAAPYAA@@	@@ @@@@б@гO)core_typePgAAPhAA@@	@@ @O@@гO0class_type_fieldPtAAPuAB@@	@@ @\@@@@ @_@@@%@ @b(@@@7@ @e:@@@I@ @hL@@fL\^@@ @ 	@ @!oPAA@@Ldy@@ @"@ @#wPAA!@@	@PAA$@@P @&@@~+constraint_xPBBPBB@б#locгNꠐ#locPBB PBB#@@	@@ @$  0 PPPPPPPP@!@A@@б%attrsгN
%attrsPBB.PBB3@@	@@ @%@@б@гOn)core_typePBB7PBB@@@	@@ @&"@@б@гO})core_typePBBDPBBM@@	@@ @'1@@гO0class_type_fieldPBQBWPBQBg@@	@@ @(>@@@@ @)A@@@%@ @*D(@@BLР:@@ @+	@ @,KQBB'@@]LؠU@@ @-@ @.SQ	BB@@	@QBB
@@Q# @ @@Z)extensionyQBhBpQBhBy@б#locгO^#locQ$BhBQ%BhB@@	@@ @/  0 Q&Q%Q%Q&Q&Q&Q&Q&@u!@A@@б%attrsгN%attrsQ7BhBQ8BhB@@	@@ @0@@б@гO)extensionQFBhBQGBhB@@	@@ @1"@@гO0class_type_fieldQSBhBQTBhB@@	@@ @2/@@@@ @32@@0M2(@@ @4	@ @59QcBhB@@KM:C@@ @6@ @7AQkBhB{@@	@QnBhBl@@Q @@@H)attributezQyBBQzBB@б#locгO#locQBBQBB@@	@@ @8  0 QQQQQQQQ@cz!@A@@б@гP3)attributeQBBQBB@@	@@ @9@@гP@0class_type_fieldQBBQBB@@	@@ @:@@@@ @;!@@2M*@@ @<	@ @=(QBB@@	@QBB@@Q @@@/$text{QBBQBB@б@гP|$textQBC QBC@@	@@ @>  0 QQQQQQQQ@H_@A@@гQs$listQBCQBC@гP0class_type_fieldQBCQBC@@	@@ @?@@@@@ @A@@@$@ @B!'@@@QBB@@R
 @@@'@9@2@@@m@f@@T@M@@  0 RRRRRRRR@:O@A  0 RR
R
RRRRR@@AR@@!RCC#@@N񐠠3 Class type fields R??R?@@@@@@@@R @@@@"Cl\R,C>CER-C>CG@@Б"mk}R9COCWR:COCY@б#locгP#locRFCOC`RGCOCc@@	@@ @C  0 RHRGRGRHRHRHRHRH@
@A</Rd @A
	@@б%attrsгO%attrsR[COCnR\COCs@@	@@ @D@@б@гQ/class_expr_descRjCOCwRkCOC@@	@@ @E$@@гQ*class_exprRwCOCRxCOC@@	@@ @F1@@@@ @G4@@0NV(@@ @H	@ @I;RCOCg@@MN^E@@ @J@ @KCRCOC[@@	@RCOCS@@R @@@J$attr~RCCRCC@б@гQD*class_exprRCCRCC@@	@@ @L  0 RRRRRRRR@cz@A@@б@гQU)attributeRCCRCC@@	@@ @M@@гQb*class_exprRCCRCC@@	@@ @N@@@@ @O!@@@'@ @P$*@@@RCC@@R @@@*&constrRCCRCC@б#locгQ&#locRCCRCC@@	@@ @Q  0 RRRRRRRR@EZ!@A@@б%attrsгPI%attrsRCCS CC@@	@@ @R@@б@гQ#lidSCCSCC@@	@@ @S"@@б@гR$listSCDSCD@гQ)core_typeS'CCS(CD@@	@@ @T;@@@@@ @V@@@гQ*class_exprS9CDS:CD@@	@@ @WM@@@@ @XP@@@4@ @YS7@@QOI@@ @Z	@ @[ZSLCC@@lO#d@@ @\@ @]bSTCC@@	@SWCC@@Sn @ @@i)structureSbDD"ScDD+@б#locгQ#locSoDD2SpDD5@@	@@ @^  0 SqSpSpSqSqSqSqSq@!@A@@б%attrsгP̠%attrsSDD@SDDE@@	@@ @_@@б@гR-/class_structureSDDISDDX@@	@@ @`"@@гR:*class_exprSDD\SDDf@@	@@ @a/@@@@ @b2@@0O}(@@ @c	@ @d9SDD9@@KOC@@ @e@ @fASDD-@@	@SDD@@S @@@H$fun_SDgDoSDgDs@б#locгR#locSDgDzSDgD}@@	@@ @g  0 SSSSSSSS@cz!@A@@б%attrsгQ.%attrsSDgDSDgD@@	@@ @h@@б@гR)arg_labelSDgDSDgD@@	@@ @i"@@б@гS|&optionTDgDTDgD@гR*expressionTDgDT
DgD@@	@@ @j;@@@@@ @l@@@б@гR'patternT DDT!DD@@	@@ @mO@@б@гR*class_exprT/DDT0DD@@	@@ @n^@@гR*class_exprT<DDT=DD@@	@@ @ok@@@@ @pn@@@%@ @qq(@@@8@ @rt?@@@X@ @sw[@@uP$m@@ @t	@ @u~TUDgD@@P,@@ @v@ @wT]DgDu!@@	@T`DgDk$@@Tw @&@@%applyTkDDTlDD@б#locгR#locTxDDTyDD@@	@@ @x  0 TzTyTyTzTzTzTzTz@!@A@@б%attrsгQՠ%attrsTDDTDE@@	@@ @y@@б@гS6*class_exprTDETDE@@	@@ @z"@@б@гT@$listTEE5TEE9@ВгSx)arg_labelTEETEE&@@	@@ @{>@@гS`*expressionTEE)TEE3@@	@@ @|L@@@@ @}Q
@@@-@@ @VTEE+@@гSx*class_exprTEE=TEEG@@	@@ @d@@@@ @g@@@K@ @jN@@hP`@@ @	@ @qTDD@@PƠ{@@ @@ @yTDD@@	@TDD@@U @ @@$let_UEHEPUEHET@б#locгSL#locUEHE[UEHE^@@	@@ @  0 UUUUUUUU@!@A@@б%attrsгRo%attrsU%EHEiU&EHEn@@	@@ @@@б@гS(rec_flagU4EHErU5EHEz@@	@@ @"@@б@гTڠ$listUCEHEUDEHE@гS-value_bindingUMEHE~UNEHE@@	@@ @;@@@@@ @@@@б@гS*class_exprUaEEUbEE@@	@@ @O@@гT
*class_exprUnEEUoEE@@	@@ @\@@@@ @_@@@&@ @b-@@@F@ @eI@@cQS[@@ @	@ @lUEHEb@@~Q[v@@ @@ @tUEHEV@@	@UEHEL!@@U @#@@{+constraint_UEEUEE@б#locгS᠐#locUEEUEE@@	@@ @  0 UUUUUUUU@!@A@@б%attrsгS%attrsUEEUEE@@	@@ @@@б@гTe*class_exprUEEUEE@@	@@ @"@@б@гTt*class_typeUEEUEE@@	@@ @1@@гT*class_exprUF FUF F@@	@@ @>@@@@ @A@@@%@ @D(@@BQǠ:@@ @	@ @KUEE@@]QϠU@@ @@ @SV EE@@	@VEE@@V @ @@Z)extensionVFFVFF"@б#locгTU#locVFF)VFF,@@	@@ @  0 VVVVVVVV@u!@A@@б%attrsгSx%attrsV.FF7V/FF<@@	@@ @@@б@гT)extensionV=FF@V>FFI@@	@@ @"@@гT*class_exprVJFFMVKFFW@@	@@ @/@@@@ @2@@0R)(@@ @	@ @9VZFF0@@KR1C@@ @@ @AVbFF$@@	@VeFF@@V| @@@H%open_VpFXF`VqFXFe@б#locгT#locV}FXFlV~FXFo@@	@@ @  0 VV~V~VVVVV@cz!@A@@б%attrsгSڠ%attrsVFXFzVFXF@@	@@ @@@б@гU;0open_descriptionVFXFVFXF@@	@@ @"@@б@гUJ*class_exprVFXFVFXF@@	@@ @1@@гUW*class_exprVFFVFF@@	@@ @>@@@@ @A@@@%@ @D(@@BR:@@ @	@ @KVFXFs@@]RU@@ @@ @SVFXFg@@	@VFXF\@@V @ @@Z@N@G@@-@&@@]@V@@@@  0 VVVVVVVV@o@A  0 VVVVVVVV@@AVCICKVFF@@S֐3 Class expressions WC%C%WC%C=@@@@@@@WC>C>@@"Cf]WFFWFF@@Б"mkWFFWFF@б#locгUe#locW+FFW,FF@@	@@ @  0 W-W,W,W-W-W-W-W-@@A</WI @A
	@@б%attrsгT%attrsW@FG
WAFG@@	@@ @@@б$docsгV $docsWQFGWRFG@@	@@ @&@@б@гU0class_field_descW`FG!WaFG1@@	@@ @5@@гV	+class_fieldWmG5G;WnG5GF@@	@@ @B@@@@ @E@@0SL(@@ @	@ @LW}FG@@ISTA@@ @@ @TWFG@@fS\^@@ @@ @\WFF @@	@WFF#@@W @%@@c$attrWGGGOWGGGS@б@гVB+class_fieldWGGGUWGGG`@@	@@ @  0 WWWWWWWW@|@A@@б@гVS)attributeWGGGdWGGGm@@	@@ @@@гV`+class_fieldWGGGqWGGG|@@	@@ @@@@@ @!@@@'@ @$*@@@WGGGK@@W @@@*(inherit_WG~GWG~G@б#locгV$#locWG~GWG~G@@	@@ @  0 WWWWWWWW@EZ!@A@@б%attrsгUG%attrsWG~GWG~G@@	@@ @@@б@гV-override_flagXG~GX
G~G@@	@@ @"@@б@гV*class_exprXG~GXG~G@@	@@ @1@@б@гW&optionX*GGX+GG@гV#strX4GGX5GG@@	@@ @J@@@@@ @O@@гV+class_fieldXFGGXGGG@@	@@ @\@@@@ @_@@@4@ @b7@@@F@ @eI@@cT+[@@ @	@ @lX\G~G@@~T3v@@ @@ @tXdG~G@@	@XgG~G!@@X~ @#@@{$val_XrGGXsGG@б#locгV#locXGGXGH@@	@@ @  0 XXXXXXXX@!@A@@б%attrsгUܠ%attrsXGHXGH@@	@@ @@@б@гVn#strXGHXGH@@	@@ @"@@б@гWr,mutable_flagXGHXGH(@@	@@ @1@@б@гW[0class_field_kindXH,H2XH,HB@@	@@ @@@@гWh+class_fieldXH,HFXH,HQ@@	@@ @M@@@@ @P@@@%@ @S(@@@7@ @V:@@TTL@@ @	@ @]XGH@@oTg@@ @@ @eXGG@@	@XGG!@@Y @#@@l'method_XHRHZXHRHa@б#locгW?#locYHRHhYHRHk@@	@@ @  0 YYYYYYYY@!@A@@б%attrsгVb%attrsYHRHvYHRH{@@	@@ @@@б@гV#strY'HRHY(HRH@@	@@ @"@@б@гW,private_flagY6HRHY7HRH@@	@@ @1@@б@гW0class_field_kindYEHHYFHH@@	@@ @@@@гW+class_fieldYRHHYSHH@@	@@ @M@@@@ @P@@@%@ @S(@@@7@ @V:@@TU7L@@ @	@ @]YhHRHo@@oU?g@@ @@ @eYpHRHc@@	@YsHRHV!@@Y @#@@l+constraint_Y~HHYHH@б#locгWŠ#locYHHYHH@@	@@ @  0 YYYYYYYY@!@A@@б%attrsгV蠐%attrsYHHYHH@@	@@ @@@б@гXI)core_typeYHHYHH@@	@@ @"@@б@гXX)core_typeYHHYHI@@	@@ @1@@гXe+class_fieldYII
YII@@	@@ @>@@@@ @A@@@%@ @D(@@BU:@@ @	@ @KYHH@@]UU@@ @@ @SYHH@@	@YHH@@Y @ @@Z,initializer_YII!YII-@б#locгX9#locYII4Z II7@@	@@ @  0 ZZ Z ZZZZZ@u!@A@@б%attrsгW\%attrsZIIBZIIG@@	@@ @@@б@гX*expressionZ!IIKZ"IIU@@	@@ @"@@гX+class_fieldZ.IIYZ/IId@@	@@ @/@@@@ @2@@0V
(@@ @	@ @ 9Z>II;@@KVC@@ @@ @AZFII/@@	@ZIII@@Z` @@@H)extensionZTIeImZUIeIv@б#locгX#locZaIeI}ZbIeI@@	@@ @  0 ZcZbZbZcZcZcZcZc@cz!@A@@б%attrsгW%attrsZtIeIZuIeI@@	@@ @@@б@гY)extensionZIeIZIeI@@	@@ @"@@гY,+class_fieldZIeIZIeI@@	@@ @/@@@@ @2@@0Vo(@@ @	@ @	9ZIeI@@KVwC@@ @
@ @AZIeIx@@	@ZIeIi@@Z @@@H)attributeZIIZII@б#locгX#locZIIZII@@	@@ @  0 ZZZZZZZZ@cz!@A@@б@гYp)attributeZIIZII@@	@@ @
@@гY}+class_fieldZIIZII@@	@@ @@@@@ @!@@2V*@@ @	@ @(ZII@@	@ZII@@[ @@@/$textZII[ II@б@гY$text[
II[II@@	@@ @  0 [[[[[[[[@H_@A@@гZ$list[IJ[IJ@гY+class_field[#II[$IJ@@	@@ @@@@@@ @@@@$@ @!'@@@[3II@@[J @@@'(virtual_[>J
J[?J
J@б@гY)core_type[IJ
J[JJ
J(@@	@@ @  0 [K[J[J[K[K[K[K[K@@U@A@@гY0class_field_kind[XJ
J,[YJ
J<@@	@@ @@@@@ @@@@[cJ
J@@[z @
@@(concrete[nJ=JE[oJ=JM@б@гZ;-override_flag[yJ=JO[zJ=J\@@	@@ @  0 [{[z[z[{[{[{[{[{@1F@A@@б@гZ&*expression[J=J`[J=Jj@@	@@ @@@гZ30class_field_kind[J=Jn[J=J~@@	@@ @@@@@ @!@@@'@ @$*@@@[J=JA@@[ @@@*@@@I@B@A@:@o@h@@@]@V@@  0 [[[[[[[[@CX@A  0 [[[[[[[[@@A[FF[JJ@@X. Class fields [FF[FF@@@@@@@[FF@@"Ci^[JJ[JJ@@Б"mk[JJ[JJ@б#locгZ5#loc[JJ[JJ@@	@@ @  0 [[[[[[[[@@A</\ @A
	@@б%attrsгYZ%attrs\JJ\JJ@@	@@ @ @@б$docsгZ$docs\!JJ\"JJ@@	@@ @!&@@б$textгZ$text\2JJ\3JJ@@	@@ @"7@@б$virtг[,virtual_flag\CJJ\DJK@@	@@ @#H@@б&paramsг[렐$list\TKK<\UKK@@ВгZ)core_type\aKK\bKK@@	@@ @$f@@Вг[4(variance\rKK#\sKK+@@	@@ @%w@@г[B+injectivity\KK.\KK9@@	@@ @&@@@@ @'
@@@+	@ @(/\KK:@@@D	@@ @*\KKB@@б@гZm#str\KDKJ\KDKM@@	@@ @+@@б@А!a @>_@,\KDKQ\KDKS@@г[V+class_infos\KDKZ\KDKe@А!a\KDKW\KDKY@@@@@ @.ǰ
@@@@ @/ʰ@@@+@ @0Ͱ.@@XB@@ @1	@ @2԰\KK
@@X@@ @3@ @4ܰ\JJ#@@X@@ @5@ @6\JJ+@@X@@ @7@ @8\JJ3@@XĠ@@ @9@ @:\JJ;@@X̠@@ @;@ @<\JJC@@	@] JJF@@] @H@@@@@  0 ]]]]]]]]@	@A  0 ]]]]]]]]@@A]
JJ]KfKk@@Y될) Classes ]JJ]JJ@@@@@@@]JJ@@$Csig_]&KK]'KK@@Б"mk]3KK]4KK@б@г[)core_type]>KK]?KK@@	@@ @?  0 ]@]?]?]@]@]@]@]@@Di@?:-]\ @A
	@@б@г\蠐$list]QKK]RKK@г[0class_type_field][KK]\KK@@	@@ @@@@@@@ @B"@@г\	/class_signature]mKK]nKK@@	@@ @C/@@@@ @D2@@@8@ @E5;@@@]{KK@@] @@@;@Q@@  0 ]}]|]|]}]}]}]}]}@>S	@A  0 ]]]]]]]]@@@A]KK]KK@@Zf2 Class signatures ]KmKm]KmK@@@@@@@]KK@@$Cstr`]KL ]KL@@Б"mk]LL]LL@б@г\U'pattern]LL]LL@@	@@ @F  0 ]]]]]]]]@|@?:-] @A
	@@б@г]c$list]LL/]LL3@г\r+class_field]LL#]LL.@@	@@ @G@@@@@ @I"@@г\/class_structure]LL7]LLF@@	@@ @J/@@@@ @K2@@@8@ @L5;@@@]LL@@^
 @@@;@Q@@  0 ]]]]]]]]@>S	@A  0 ]]]]]]]]@@@A^ LL^LGLL@@Zᐠ2 Class structures ^
KK^KK@@@@@@@^KK@@"Rfa^L`Lg^L`Li@@Б"mk^)LqLy^*LqL{@б#locг\p#loc^6LqL^7LqL@@	@@ @M  0 ^8^7^7^8^8^8^8^8@~@A</^T @A
	@@б%attrsг[%attrs^KLqL^LLqL@@	@@ @N@@б@г\.row_field_desc^ZLqL^[LqL@@	@@ @O$@@г])row_field^gLqL^hLqL@@	@@ @P1@@@@ @Q4@@0ZF(@@ @R	@ @S;^wLqL@@MZNE@@ @T@ @UC^LqL}@@	@^LqLu@@^ @@@J#tag^LL^LL@б#locг\Ԡ#loc^LL^LL@@	@@ @V  0 ^^^^^^^^@e|!@A@@б%attrsг[%attrs^LL^LL@@	@@ @W@@б@г]E(with_loc^LL^LL@г]%label^LL^LL@@	@@ @X,@@@@@ @Z1@@б@г^$bool^LL^LL@@	@@ @[@@@б@г^$list^LM^LM@г])core_type^LL^LM@@	@@ @\Y@@@@@ @^^@@г])row_field_LM_LM@@	@@ @_k@@@@ @`n@@@4@ @aq7@@@G@ @btN@@rZj@@ @c	@ @d{_LL@@Z@@ @e@ @f_#LL@@	@_&LL!@@_= @#@@(inherit__1MM"_2MM*@б#locг]x#loc_>MM1_?MM4@@	@@ @g  0 _@_?_?_@_@_@_@_@@!@A@@б@г])core_type_OMM8_PMMA@@	@@ @h@@г])row_field_\MME_]MMN@@	@@ @i@@@@ @j!@@2[;*@@ @k	@ @l(_lMM,@@	@_oMM@@_ @@@/@O@R@K@@  0 _u_t_t_u_u_u_u_u@6M
@A	  0 _x_w_w_x_x_x_x_x@@@A_}LkLm_~MOMT@@\^, Row fields _LNLN_LNL_@@@@@@@_L`L`@@"Ofb_MkMr_MkMt@@Б"mk_M|M_M|M@б#locг]#loc_M|M_M|M@@	@@ @m  0 ________@~@A</_ @A
	@@б%attrsг]%attrs_M|M_M|M@@	@@ @n@@б@г^s1object_field_desc_MM_MM@@	@@ @o$@@г^,object_field_MM_MM@@	@@ @p1@@@@ @q4@@0[à(@@ @r	@ @s;_M|M@@M[ˠE@@ @t@ @uC_M|M@@	@_M|M@@` @@@J#tag`
MM`MM@б#locг^Q#loc`MM`MM@@	@@ @v  0 ````````@e|!@A@@б%attrsг]t%attrs`*MM`+MM@@	@@ @w@@б@г^ (with_loc`9MN`:MN	@г_%label`CMM`DMN @@	@@ @x,@@@@@ @z1@@б@г^)core_type`WMN
`XMN@@	@@ @{@@@г_ ,object_field`dMN`eMN&@@	@@ @|M@@@@ @}P@@@&@ @~S-@@Q\FI@@ @	@ @Z`wMM@@l\Nd@@ @@ @b`MM@@	@`MM@@` @ @@i(inherit_`N'N/`N'N7@б#locг^Ԡ#loc`N'N>`N'NA@@	@@ @  0 ````````@!@A@@б@г_G)core_type`N'NE`N'NN@@	@@ @@@г_T,object_field`N'NR`N'N^@@	@@ @@@@@ @!@@2\*@@ @	@ @(`N'N9@@	@`N'N+@@` @@@/@.@R@K@@  0 ````````@6M
@A	  0 ````````@@A`MvMx`N_Nd@@]/ Object fields `MVMV`MVMj@@@@@@@`MkMk@@@_z_RA@_-_'A@_^A@^^A@^^A@^E^?A@]]@]]@]\@Z@@Z@ZZ@@ZU@R@@R@I@@J	@6 @@6H@5C@@5k@2A@@2i@.@@.@*@@*@&@@'@!@@!=@]@@@@@@@@@@@@@@F@\@@@@@@@@@@@@@@ @	@@
@'@@O@@@@m@@@@@@w@@@^YLaJ @@@  0 a2a1a1a2a2a2a2a2@~@@A@	H************************************************************************a;A@@a<A@ L@	H                                                                        aAB M MaBB M @	H                                 OCaml                                  aGC  aHC  @	H                                                                        aMD  aND 3@	H                         Alain Frisch, LexiFi                           aSE44aTE4@	H                                                                        aYFaZF@	H   Copyright 2012 Institut National de Recherche en Informatique et     a_Ga`G@	H     en Automatique.                                                    aeHafHg@	H                                                                        akIhhalIh@	H   All rights reserved.  This file is distributed under the terms of    aqJarJ@	H   the GNU Lesser General Public License version 2.1, with the          awKaxKN@	H   special exception on linking described in the file LICENSE.          a}LOOa~LO@	H                                                                        aMaM@	H************************************************************************aNaN5@	* Helpers to produce Parsetree fragments

  {b Warning} This module is unstable and part of
  {{!Compiler_libs}compiler-libs}.

a8* {1 Default locations} ^	5* Default value for all optional location arguments. ^g	\* Set the [default_loc] within the scope of the execution
        of the provided function. ^0* {1 Constants} ^1* {1 Attributes} [4* {1 Core language} [ 3* Type expressions S
  U* [varify_constructors newtypes te] is type expression [te], of which
        any of nullary type constructor [tc] is replaced by type variable of
        the same name, if [tc]'s name appears in [newtypes].
        Raise [Syntaxerr.Variable_in_scope] if any type variable inside [te]
        appears in [newtypes].
        @since 4.05
     Sڠ+* Patterns J.* Expressions 65* Value declarations 64* Type declarations 32* Type extensions /T6* {1 Module language} /E:* Module type expressions +5* Module expressions '͠2* Signature items !2* Structure items ?6* Module declarations r7* Module substitutions ;* Module type declarations Ѡ2* Module bindings (* Opens C+* Includes 1* Value bindings Π5* {1 Class language} 9* Class type expressions 4* Class type fields Ơ4* Class expressions 
䠠/* Class fields ** Classes ՠ3* Class signatures ]3* Class structures 堠-* Row fields k0* Object fields @   -./boot/ocamlc"-g)-nostdlib"-I$boot*-use-prims2runtime/primitives0-strict-sequence*-principal(-absname"-w>+a-4-9-40-41-42-44-45-48-66-70+-warn-error"+a*-bin-annot,-safe-string/-strict-formats"-I%utils"-I'parsing"-I&typing"-I(bytecomp"-I,file_formats"-I&lambda"-I*middle_end"-I2middle_end/closure"-I2middle_end/flambda"-I=middle_end/flambda/base_types"-I'asmcomp"-I&driver"-I(toplevel"-cb#b$!. - @0I29vB`'#  0 b5b4b4b5b5b5b5b5@b3@@bP0/IS *vM,@Aa 0CoࠌD(8CamlinternalFormatBasics0ĵ'(jdǠ0CamlinternalLazy01H^(YPhOD5g`0<4u<	g|(Location0BJ/Dj̾&>Sޠ)Longident0+۴7$ȷG~T)Parsetree0e3S#ʌo&Stdlib0-&fºnr39tߠ.Stdlib__Buffer0ok
Vj.Stdlib__Either0$_ʩ<.Stdlib__Format0~RsogJyc,Stdlib__Lazy09=C;!7.Stdlib__Lexing0XVC[E+Stdlib__Seq0Jd8_mJk-Stdlib__Uchar0o9us:2[](Warnings0^1]/3W@0/IS *vM,@AA                                                                                                                                                                                                                             b|Itb\mq<[b%"ߖ7?NJ#GK椑sR[dv"ߘ'Ψ6F=}@\~5-o9dqxd1!~F\ʹ\Z=v7ٮv:TgnJͶy`IX^wtQdw֊Br(Z9.ާ3>){hˑMI܋,}>}yil泘&Pdˊ6QWkCK^|{]J-	PHIhAӌ2LsDÕ.^x4۸9Դ|L>%2lvً6fv&[A/3̋lM!8tyUz_4*N21;{=E=fRF~ly
>056F>7w
g ܻ
Yl5;s;4.kK#emw@AF63˾1sQy\nu?$!]0\c64o.T5!Kxƽ2,0G_f(D]3z؁6^tsCl++~ي ZNBQgd?`eɞƩ
M.XV[KhȃdO ]6/2-QM朐<e6n3k_OKA`_<|{?1&kMXC@v.;KO4~|*O$)ˇ9,"O1~v'W %~1<>_e&7|P09SI!aGZ[>M
oV770^d|ܒ&EFճ6l-8ܳZ3N3F֊\[HƢD2ʩQ
ww8O~qBol>Nt)Md%3Ǥ]JK{T 
=82us2V+G57L4b=\ғy
z*pJ$JP<2$iyH\-k5>e Af1;0tÁONN1jmCvI]RjxyV=˄hf>>+aF3	%~e[CaZCuh e7<|:c"ȯ/2F޼E(n\f3-{[QGݝg#hcyn 1ڹnfʫ=vw`2t<?M%wdlYKhPɚ:Q^awW\Zs{D&4^n3k$jJz:$5R2MhiGYA_$DN<%=?qQki|: :!#K_i4"+&(fgJ#g+>FCIh(
B
:RUD4l
馞
EaL{Q
RAǆ`bI&:O!^NdnYďM$>
>3<Tzf<C&0hv}"h蕦aϴOϜ#wl5;EߎXcVDy&ax/P؄;),Ӏ:v,
eG.4R^؎M?MO9^qtTAc!8wI]<F@x<-w
 8B-qTq-ΣgL]n=t<	E}Ru/C9
;ZfU{ZVL~(zX'?Pٚ  Y5tX/VNje+v8v5HЩ=}LǥIڰ}i%'$_nUBu~Y(D
G>\{PT4`a.ggBQI`fmOI>w!wCO b
}𰉻B\>cVs,Lg)Vf+grߍ$jMC2ML	OÍVnFcIpX;ane݄Y
>&<؋q,aB)p37dX_D#ŸqQ8Gy/2/S4Ɲb&2iaF3 ɮtlAqb9!LL^_] e$죿#H}_t-vJmFTْiZ$=DDTTG7,Dxcq&ܑ=V˹OXkLw^m2f6h7ɣ	ַ9^80Ea͞7*#T?#@D6Bl
\
.<r]NM.&SlyFl[\p1K\L{J1ԕ3q7(.rF 9z=&
57Sj!{*l_7n)5!Ȅd	NiIlp>6Lϣ~HP`f4_%Z'"=@R$oC~y{B&D⡵>!	w:FYUWP)
),;%Q&
cQWc+[glI1wu%f~˕(FOٕ
,J\ޓsV{:R"B
*Y57
R9lOY0iX/s'6EnOo96vS'sz\Ԙ<hrg9;32GaJYx	2a]UL2~a5kAa'/q;SNhtB9%{?'!qB>z	1'uu/F`m,dL1VKiQ'[bo~heK;W*O1]W:
$$X Zg!דLL.ɎUbBΧE|Eu"OVIn{
mGNs͂>^z)X5d^bԕ}#3k0ltVfMnZ6PR/qǗ2izӶU^*F_G6hZMjx)ʝN?X%ٖ_}V:袛?`/mCc[82.
E-2#Ϛؑ?I2rP;
Ran>SJF۽&}-C븐zK7[pBf1g Ѓ;n1#I`vbĂ^C<n7s(w@y.b˓%:Rt3w:w'?bq!§~,>
6Ga̩̖7G&?g%3h>-oEP-vӮtX?O4n]ǭZ
8!HD9^~jG	BV9|Y͹`<_A
S`찑HtA+G*Sԧ;RYq;o@L?gps5p1ą3ڙ!8DNO:]/6?}a;#&3`_ɺ#ʟ&0˳-rQ7v;"1rrEK䲗UCxE)}ݞ_M[aܟlS̼}wIb鿿ֲ0TzzR\3K3 i sLq6q1HXkr5!ea:IGr~&9HV.3u7˄=YbWiډ:zp!v3ReGC<e>5^OZ_8,yyG#0&մ.Ge%VqϘ0xsHq-H͗-ϰP')~?~!Rm\=;8>ZO9V*JcAV(&qib
tbҘ.thމx[qj1oI*x
h`=O?⤻+/\wޔ#OJ7;e0Vo.
c1ʻsm;B/Hd sH\"4-&qȀ<17NYϫ=fvc)K6Ѹi1-u9</F#bi'o47;t6NY	>%5\)}k	?NSnO8 ?Ek7&ghCp3|9Q8n5
-"QM1S[ w5&6h1wZModtp,nѸACr6-\BSx~L
gY=PAOyǭDmwQC}<@|\sB{~aTxvTPWR+J>`=Vm
=+S<
əgףHw=T*TT['ͦci:׳3=m1,o$
baϡE|7>&!ʝk	hp᪯%s'@FN@]EoRd~+Q)Lb<*{C[r)Hмe\¸YbGoOmo.0.آf{([ޛ)_O_>	]Q>'#BoFL*Gm.qSC|YiV3XųD]/ٵq4SѮ9ilj|ƼZdޏj
qu
Dv[yK׉+/#^0ȓL~$.1sͣSn;v7TPl,5Lc{[|ӊm{׸ 8=y$. ?\nJm[{}oiFx6<
DtzıU^nv9p-Vt<\y&=ң[0;@dܶV[p8a_7'i_ЄKz%rɝKSZvNc^`y^-SLP?籡H5
Wx8_% @+tfi.?̑^z=hZ]#R}f2Ӄ"A^{T89YQ"k¨VIݑ}4I{"#\12*g|+L,޳؞TuA*m|De`GTf>v$asSj~pCnv 9{qѫ81tH2"æ՜V<W=,v7A47Q9tXJkaOisʷ\M1f0ʛwCN>XȀnvxkV.@?ky+/F/Jۑ_Z]k롯o+űG;ě.]"=wv>z~Dh1I\1>yeqsW<3E+\v>t.RW<Gw<yJWM9񫶰[f']	opK9Dx~kcS*-$Rɮ7&v6DC{wLH}hfSκo$^w6whԹpg8x	^ FX#M`DM/'ω,~F^o-v+t\-b6T/?/2v^!ށKOA&^s^sHf'o}}W3u|).Y7TsB40aC#9C>=\｝? ꜹؑiRyL	7<p='{%G٦mj0_*n;:tb홏^Wކ`OS@ƯZD*0G~9fP|7ϞX-/G6U
}Uz?-T{nkV&Low
?v	VFnc}ƌýu?"^Wkv??+cՋݳʣW7[a#'pۅ{(Vm#ʅ,d#c߱/m̟ѨrE7 h*+29ÒM?[7Uga}Y,ͅY&%ǟqZ1-Q~kҋv'5]Nf77Z)qZW gaFZW 
֙Ȇ,4 4K6,
-#k(ra]SBK+lu^C
CQyUvu3Mz
uօEBfcWj|m-*,	k
mHw)vgulJ\(\UdT,Kg pKw0.A+ho줷AJsGVW;6\_`[l*Sl4 wTKq	p OfZF ܐ@u0ΪַA$ ׆ןs*6CLgH"4J}'<|O-0yZ?ހ`Ȇ Fed
ABkuMpnKf)"_JiT|9X+
~P wE}h;㐔|c*>Ҙ!mܗPO	"%6mK(E:d_ܭw].>N\iZ^  ZʛCwO
|>ʠK^Hk%s?G0<[7_
87Ϲ7+ۻ]g*}$WLA_ckg@4chmbȯv,}Af31Ij¬Af1atp>r	M@_W$1	bxJ?>j@~
z8aW2zFWDjOgg[iT9g[w$4w@Zb{6ݏg?Z]$\o8k<ȻU\,&>8\wPDޙ\7q/"1ރ tv>
r
tQhw7HV]ZZl@g RCF(g.\wxó Weh*l!XaA&L4磟p7߽0ى:!5;_{w}bdW&|Jy1׺W7?ͥbaEŮm1ؤ|jcvٲ][ڵ56廲187|cgݷ|7~׺]ˇ[wLt܃v4jޮ<z]Dw>!_(8kp4xEl)Dˮknn9IZ

Y:J +F_JWPjbajWkw!)>%+Zjp&{(=
yK1LGlD3p%5<B\3I@(PO<$p$wިD{*i!C&JLYefe&>s0w,tߠkpHc*&
P>ofFt졃gIXZ?pi@IVtn!	$OH¼*>	Q&%e	"upxwqICQ~_@:DN>dZJ~|"[d b!=!Q.r'<J.J/(n Rw݆.6HNPPo.<I6-{Hw)$$r@ʆ@ܘ\;;.
V_j`($~D'|}h:Rxbm4Ӕ$$d^僨{$z8?y<j=F CwaSC.g"2;rdZًC;5(5ey-S[:pԡLFJB@cH t&m	0q^PUN'p\oI21IdFs%fvhYXc,]TS=5R`YA7W<)F딀 jAUX#>[PҀѸۊ+qK<EN
vt"_;x3!gksDܓ`7B58Nh{J.;7F-Ycb~ykA`qq˼|9̯mN#=^kSa;㝘6'a"̱Q{/ݓ7_il5JJ4}z^фޝA'%`Ϝ[EQp×M:PF.S
R'Kq6.X
b d1g39KU:;9\<݇=u0?@/糧P^ ~u<aǏ+k)/c7#wq<؅y I*}a\?D3.VLu=BGi]G^l 6|Y6Qw#N.h{{Qܳ	c0M9mIDX =U񤵴c?wB/&cn72+03wѪ@BCC>=x S0rl.UɈN&^F.aWz]RM2\JH	|"iyN! /xxS/6ұxbFa%-sm;;׀| !]6^HNNf2mEf{x\SevjW´=@<وy5$
mϚ93&L'])+\]¤/.JTO3p>Sɤ*
2	
V$WuB|$[!d4;v5#_oٜI󌐂6
9P='p]kcLnZ'oõ_xT;V %b$ ӾPdK*D!b?C<
@祛C
Q/{%B91L$sEs;rwq{(r㴽k\W쑳zIĸ>+ox.׿z.zL(m4<BuA
\X'-˽*R9`#,ϖŖ6$!3
oRPr"獺vQ1.Re>B4hNh]aWA!i$ID8dDm|ܗ}AqpEټ`-1 
y|[ڞ֔ֈր<;C+GQ230h1~݇e:[Llr0K`xOga' 	wC7.ݕh#0?CC>\jHw
=Q'/a}$2}Hi5hx)&WHc|4_<r"p}2avWD"	LخjG@{ %#1*=~2QgKgV&We<z#%f|6SDٔ_f.+,``-i!d1A#B՘Qbb8E?`%@Nt',3bo6 
< e"g˞[_84T7S
<F
fH&Ԩc
v`g|kZ	ϼBv3S<_lOxE?-xuMB~<~	;4_%)-sqmA"sE2ՍwwG;ƑlHfȎƶ"܀|[_%{ȍ@>nbM`ҏs\]9VRgzHeR	u[h\qgAӖT@,
E|. 
i],yBo+	g&h-.w=$AV[
ŪU8"/"TEP0!*]uV>?
7[Cл>qӄ\_.{{N@d!7GfY..7%ՒM ,Ʀ٭Fy5Rg'iO#(*"InJ"xDJ
7ZYM 5v"c 	

9g=Y9	4 y'&aR G \@\ҔGR(H8$0=cG(E&3G;<w١Hx7VZ{+Tj=:rD9p	0Gb,gcllC~Ƣw1H ~>RWڸ"o|='3.=\(Ä:38b/퀸Q
ⶔWf[cX"G-QI<	5ءz8{BD49F*>1֍ccc)*.-(aPDv!loi߅=\'ltWb+h ?V[5/5>@1?E7,W񇒠
,&ęd
MH-@Z(bg1"q>,BR o  <НRs 8!V@Q=J_: @C`[\ˊ!{{3{{~O ^=3ObC0!	>*5Ds%˞xe>_BR(蠀Ci=zep'Gtj$'f[ēcy
<@1	;nw/(wΦKYJa(350
Ă/I4N}$8h2*qXyoGa<65-1,=$xO, h)%;#!+#(#PBTpmO]hݓuwluYAQ4`߽\EE@aYGys$oq@!!
] L A !l+sMn"r4i9729N-9q7`(o6>ShTѢD׀(NC#SびL6 77͠"|7>nr\7
ͪքfF

6
̍q
pkoMl&k-h=C(ζ~<wLrt<`F%ͽN!NLKoWuU;=z4 z3~+Tk0Z
ץ&LVb"	;T"&HVD>YZ3sg fnTf^}QΆ
eVe
v2Y
Y';CK @vD6k"n	}cƦbbb+!ļb	ĦlxRAކ>
a)3 0pch`@%R4kï
;^k+׏}bޝ͘0^@;LP^kKĮ]uٮ(-a_ .)._~eYeyu!{L-ӗVTkGk&,tճMC	W%am/cBϕZ`a*^UŪ"@
e
!3(*
GXnJ 8ʝa 5iτ( \q2pt%@YB18**kucEP:Y U<个;g*lUO-^Ghg0]vK!A*`oJF2=t<=Yn*L⛪" UF
I$LK;\C?gV
<hIV辬
|BbWJh SottI*	4NOz#v&b.&Vc&# 3`&е==h硢NnNfkDq.` J| 1;1Ls4M`\=2E1!1
)XZrZҡ$i[ i'mjH(7UѺ:מMH9Itzz(}4Y䐸Hz(XnMPQ(F_ґ"k|Jf{WS"HhlIp˓ ~(E$ּ*Hh&RF= 
jZjѺhdHYyHt
Ubzauj)ϴ۷,+4 Hh;f1^*9!hHY3>p*(?̌ZEޭEݚL	c-<<: PK<:<5;hø/sCG}:iQNTTI*7g0'o)GhY\<OŅ`.be	&'(n$[ ?x&0+1:RZB0#Vt4Ď.BKلR2yUV7;ok>O4.f̌+ڟ0b|.
>kGw'A;dV|<(>+Mi@%DSeǡ`|-'^3<fD M33V&:ϵ \rww{hԘh=ߧ4Y&$
'ýI3JE
~	a$MY~5C% ;)('j9	 ݗ//żE랼Fn39Hu~pFY=t	ﶸܲ܉ʯC{&Sɒ!S Yzf8]7ora	%om
YD~<]a]v	WtE
iq"	o烛 1%lBUkOQ"	xߌ%3S<ìi&g#e8|km5_MTS-~c)Oi%26*ŚJ]R41ەTujt~Csc,
\\&/tx*_>,m[?Y/oE|N4i{sD ]RCQyB!3;iۨvc\w+kx'A:@SֺߑYuBZGk0od^,W0/𗟂bg%*Y/:w$_iￍȮZLs4j&4=bzi?5AzA4 GNy9Yn-Hn%KJR!	<T&Gkn0e0
1tD~r!
!s#
:zYB朘a^xK:K%%w^ʈk5AspJ5	cT
r2 #x\"YIgc>&NF:
xȱXoIOQ#Aq@
S3%ӕ]4UhVaL\dH2*,*#sT_
dm\W$jsGioةye"ŮȨ^0ˣK&VT`j*VGkICgI6Ieп7L)f$R	f9?2?\f-(xTH;<H67HX3w,t/E)C.=<O؅2p@]N $Vxr8X$T1y#랞C-{lf!qhf
SmMأяJ١-:f/zLIu-'0<Uന
W<ASSюѴ̇3wPEAr'[T]+z\+;c-nzK]Pb& A~:Rć"8C"HH[/0
;.V
D5bV|>45[-XXXIB]kU%[*I .H̹#;xUZ0҇plŜDq#!XB܎*,,j,D 
?
549C~tyA`zsJj
i&(hhNt
JҎ8j&,\INGA6lA&m !pjj  QT lL|Ĺ˟JD?2fEQ4~nH_V>_ό3h:a1T4L;(atf92ì:]*6ߺ@πpһGs.xe$%UH#9P$
6+0J`@J&IZVwP0V3Od\tbUz,2kx>#7Eo/D\խ<lMK¶	!yp<5 (?`V$8ÝK"S!gSE^ꎚjTەYw:)1PKlNؗ	
%c$HTṕ_tQeA8o39X!/arrBsv3Qcq~(	C1A
t=h$ExwrTscwk3D7l66,_*ju0vV6͐v[>9SϺ\|7S~.u7BpcPbX&qѲpҊr{]՜2a}w|؞xkn
D	"#%OP|2*(ϥ<|#q,/m*./7m,,w8mDLwX60X*bnU;A{޳e@:gT(S>x=@U)zFFm1O lWM{EX'½bI.C"ϸnS7Pz6!llvl<Ljv[Sg#c4OĮ
e ʦh<*߅:iΖ27k\@p#A>L
HLCdv}W[K3`wRaQ2w{G]u]744iPI
ˀnW6 P^=qaDՆV#
8ϡ94
r:lzm&8sA5`uQfskŉSIzΖ1oq,h!% HFϘ %t
 	4Hb1j3>>O꒎,Sz{by4F#y f <QBfK}3}<ɇo/k0Wۺl zBƅ;r9SIn
S"	ɖ---X[x	j!YpWH9{78O(+'W'X6W\Q_a㒀AR8{Zoo;KZb_[`*UHI%2y@O ΕYŝ©<%M)=!\YD{MoÍ_P[Y(FTOO8aTRJODAQl'\ @IHNNl*n6d3&aEye"IO+[>i׃wuڸ222n3  )``7aѣ#_>ǴPGѭX<ˑXDgNeȖ${09IV$AGds
ONܫ`631Ѧqxw$6##DXf_:^^]J]^3;xj%JDǶTTSruf9րli >i$K).Gˡ>桏1];#pf)&pH
߬D~m=k-<>68<|9QAگA`?1s:(Ց#q6t
m
5v& U%+
GW
l_$ r)`GV6,wPB)iZ>qOB﬜)g4uzJkRb[#d*zsu:C}JHW+
B	T춉)F
Mq,q܄Rxң jj5b_ vh9ĨWvV֪dMA;2ɖp]bǃD22S%WwF.t@Ua(Nҁog35 RZ]$y9.1XO0h\u-#c]"eYXpcV]	ldzנ Lb@`N8*`b@?TP'OT̾8`\ 3M#m"4}$=;Dt8'$yzt:T3;j0q\ҝE[j 3*|df'<7-/	*D{glmqxȺ!eÈՌnۺ8ZPHЂW }U.jfDu):+@yY_t2ēO M[BvcWutv:MFrT=8e(}}mKڕ5:h|198E9lgg}g!pN$/P|3M@%G{"_lA^20̓nuD/ @С7*L"/<
ۅs*mh$O_Ƽu!ETVfy!>/ja8Ag`I 2=\Z292	Rnmzγ9,s7}r++wqmf^w#Ro;ﴦl#zdWDCJ3[~tA,YbE]QcWGuǵZ:<G~5ٽ
q^FZGωUw9NqÈ=
btPƨjՊ~W]-9:;~Қ~^W#Zmfh9/m^Mi1j8_;k[WފkCtkoVT6^]7kvA{pZ}LFXvpz.}jYku]pbvNW]M	^ܶH:UOsU!tɽA5s{eۍo`mUlZѻsm|Vk^=f#k:@7}Fi%U+~X8n|k-cuVP1U7s.kv=^V՟z*|5]^҃`Z_0VjJz)־듮u]uBer͎}[Y3I٘zvMW+kf WdY,5XQ>8z}[UZXN
]{:2Vg4m6c³`qWpl{~,՞_+{zo`ˑf}+6;G_0BZ.v}Qi=5\vq&/_v)>#`6ul:9-^`C+,7V|jZuC:5=jg#uXZNk gK/]l17,`[o^n7Zu<;-ҚX}?%\#Wu:]F^9]f%+
*BPJio^oՀ-GuQf56겋"Z}Mh,6wCWr;|nT1ݍkدg뾦:.y]j.4h>њN`_SWM	fZě`/ki 1
D)KEb6E6ރ}
vZUv ւB֮PT
Isy[4#Z}Nb?VH>5Z|XnKݨ5'Mzc><3]5GUWn{c|&SXpVխRYyR{oWx6Ô` :D5ǭޚ6hA<|<&Śb^tuPàYwۿͻiLѨuw+vgEbZfC"5LEgsnhMݡ5jjzDigm|\Wl*`-JmHX+NF=qmIh?uDXPhf8[8 F¢v:v\>cuVU}Lgfmz.unsPK99phOjdGG[ϣw!R$-n%MVie71ዡ+AFUDq7ӧa9RΘbo^=Z.̨"  "S    `PL ~mxk=ￇEcv=e7,:٭lD>#7H^G淈>G0
6=Vx.mPLzgS@e"kBW=^a)55!W#
}}F׺6}P@@&H, "c-@ %`nmF8}'{z<#Pt,)t5nL>'w|7{,9⨺3֖Pz1aoq+X;^ pVoQָ+ y <Y0,\^|0=	n*ڞ?d'X$K?y5Z _fWHJ>KCV	nĤ
[kG=^a+='jh	!p:똠lgНQ'gnԝW+9-M16~h#jGi%'8"S'֘Q}2]a1y.= O}.YCl&s-sZjc
Ict>gC4XmtDiÚ:R}7,.)Z33:S?S9	{Yd3Fr\NYU8V1x'nd] ~LY#9,Aډ]K
)u0D
ԣs[ jJQ,]|q҇a->JRȗQIcQ|"`@Px~Vؐ#]B8 6,`"q648OC#fE
sǐ~1f	Άu'_s9SLQnɦhϐژ]<b[]Op.
fFVb5/O.*jF4*oDr5`@Gu6ԕ,S0C^a'c
ޭ#GNb]L_B
˟ /W@E2	qgQ|<Ch/lfH4\{,ä(Y#:(#ng{B 	BȏLv`<qˏ^b`nblXIx.:JhZHfTrC/tjsHA?/?/l
%{Z<oǼL"y	,xzY*v˗$
vMmi21YAC>+by	̱pǯ;fG{bp_
R흶YH/6mJu9j_<Nu\Rq_αfTwf9"<ArR7$nYA9PQ㜬
0u0cXaQWhpD
Co<SHKoP<y9 F؇XowsxwܡBIUlm2vg
GNK]Dl3سn@-U{ȃvVtaZ]ܜD6ūuZLfUyⓈ8lp,CPOFK窇q{1|
o2+Oyİۀi@%w鶨+LO'a6%	Ҿy,
WJp'jA
a;9:0 %r;N]QƂB(uOY_Nx|jП0q>GOؗYOiQ0A₠B&hT%"pڶgŝ'{[8[5f"GZW"?{GM%tZk2) %pOE)_U&wfh:|B"̔\C_7E vE%D\TוU>x.s5ͺրwSoHܒbk%
]	Z'`)w1Q-o
kMmIȁ-xh0U	-:`f-r''-J6̰hu?IǏis"tw?ˈ&Xsg<xLuum$w?\ߊc9>:Yє
zc֚0dpe2<VjJHv;/ˊF~ -(F6-,D88Wp] aKn#6
~*ٕհֲT8e 6$	X(xqcrk+_w5w?H8vPf%XV'<͘v#7'enb\spc7#-sUUlv哭B;/Z!SO"uxOdy>N==zS75KneX.h.Z	+}IcDo'3BeP#q\O~.vƈ2/DwN<y[O=ĻJ.xNIW4WmȐ:Mje哷IqC6E-ǻx<,%6X~N۫l^kW{-o7:9oGWk9&o\bZ4c4 {ʢ%W3q\{>{y,B,zeJpX`j##37,sC+che_}xgsOSM6?
0'»$Rm_(B5mK炙Ħ[y2|Vl4/BUͯ?5WåOqo<-| /86M,
$˵PG9ǾHҭOy>bLߋ3yCYs K7e?ֶ*^:Dν1V	<;	n@Mb.Llz֍^X1KJ ďnS-	/?}~%ܫ_cڧMt''_l|t1)k!>?jMg6[k;_ʶӂ֪K`{^zlu2rmᣧʯc츸,;0Iclч|ayYRWD:ߪ_marhԺ̈]Mg%]Yu[^8MſQoqLMTs8&X
{KAZtOBlyËel3WN/ݩWo0_;V2٥i
Np1j?вW#)mG@ͥX^՟]$oPbAZ&ؙy%wp46{Iah^1nuc5/X%􅔼
0䃷O^kMNGVv-wZdDKlG(¿%jtI4nL. `(3BώC{+"&mEڪnQhRr?!|0oHoImoEg棬4T?``e&|!e(qwp
q~~6	]HxW&;XbY\b-<޻q-KI_)mOv<OHUaoXdZ[(((tSz0ˎ[@ҵ
RF֛R\o<CzwX:gZTݮwMelK-ظ4-ӥZI3-ϥy[=!;\Z{Wd掞u-A&tNCdoq
>݀P2/Jn;ԡ|m`|#s~D}Evy.4sK:[-׸p/%a"`$3`%KrܼsIh$rELG
Gqt'#ilT撍א))w󝓨\|ANڛrKO?FPBhwz"oZإĩ/Np Fa-2wX-^X^dY݉QybٞZ@۸-[*aypwYFR[[劻\v_rFhVTVdsmE<!Z{\C0_! S~e/! -5_U'4==lo\M>őx-cq\jď v`^H
{N'"k sRkX:`rYD}JRKG)EkY;IEK`^\eB6-a:͂]~nӬ#yveɫbgsޗ-I)ċ-泬tMəS D(*	IlɌOGKzd۵}ZkX>	W&C\9.m/:'2'VkΛ$#v.	yC7٥U4>{݇e|bi3gcadi81֬Ѽ=SFtkmsPq;{*$쮟PMVۄ+QBMn3e =,|*%C%ho$:+#ڗ>{!;1"a	I7q׫sqߑѫ vt4%/GLŞuL"*X?;^ݟIum;9lj.f\q}8#ݖ#/x_[krL*^؞M5Ru #S'liXꞱ9V
L|.Znv[)Y*@wl"Yݺ[F̀Q1c #*+y%eLTNw#y6u`&CӦ|d[I<v|!.V pl68cm}l
M,ns{Xd
鋲2jFl!
sNxؘklJMحgaF4m'cܥݕ^w{5eӆ'8ge^ LbN˹qFPi߮}$m\{\FYaN433?2T,ţ[kGûZmڡ?.{-tp|,e}A~ua[]S&}Ҏqt/vGQUg~Pgd
	VD.lqP1'Vyflr;>~Ѐ"uO0.>ĲDݥŖYhue8ۻ7iymHXݾ𾸜^6 I}wq)rp
۾KqKyǉ.y[r`}_JNW`n`*Rn~y;3(~pݍa{vj1Cu]Q֞t?M>H_8-[֬[ӪB-I7N++ES{ˎ;,L*jj&`)f#%M _QV9鎽1;BU7d7x#Z-@~7V tnNo*y̱;8ܺo.%*n2(Yk薑tlBP~+Bzl.#0b}{ 'Ay/C]HEĔ_^f~BiW'!}sQq#gīTٟZ]2s9F:8'ʓdF;[vyBȬqٲmiww2+kvv.+BF
g淽~1G&[ؘaȕf0,s@,4[zY#7Cm;PwbK	/q@lAf>}02#]/ޑ̖|ޞU
vo|޷,<T=ڴuZcmE#zr~
ܕ{`.9@S-
C6p'!?n	xKuoOmJieqv~SP}u%|}(2+z
6$B_{brJlG7+w+y!_/˦Ex2n2Js'9VkߤLUbZ9l%ȾVx,.+p>k_%4[0;c@XxہA=/jala&_X'~\ٓ'
<vb7iGzp0u
,/PwaS|e$HqɉQqׯэ0M	4+IZ;}%{wf}kIͰh s]Ep_\u1zX G\0`&+635K+{D:
=FSm'gPukuV %+ia|p
w
[G!	f+N]$z-*vR0dGMCx9}<H yDDy}h[N9ܵ
8J a(?x\x\ɮO\[7G&5'G*Tɞ:Γ3	Pj?SCekY&nsi(Jnuԅ^]&{"۲/edcaW',+f=Y]iI|o/W_Q]YqVz	کTUډ=[q7sJ\7ubo&`umnq/@YÂ+`X.h͌h;L˻?0ӰfES
N;i[ޞ7s,´So_жݻ̸.BnvA?G8) |?YqLqm(oZV^3JEb.%C{:aF_
KV㨱:m_jRDbi>܅8sL	HX\Rnlj)騮Ԭ*Ll/ecj77`z@_J[}^qcOo|K:(:WC9Iˌ[aayr'!s٣P/P["jo9ࢽ F+6408;ܷN74ͱaTEq7d]ۍotXIP5z\qs2
Kq%}4+6,>Rحb.a`+L|Ӎ!Ԕ}6LyDiT|'cjv0}x'f 4gtvc
fip.&ycOcbźY #~lIk@|wbآyqQ\̺{zje~~-?eT~4vM
f:=#벴R	i$f^{k
|e3n[!ϛشNX!|\xt݈^jjYT^v"4O뼺<>xڢeiy6J|ΫA,yrblqm0/̙d1͸߷D/)_@ϑ?4}^VvYG{K" 5رE]'nHqn{u|ep},tn(ٵ	Ԑ֖nmٜW@Or)nSk<Fтf [q02I`HշGE5CXshdq4-\FJڥt~T#v/ܗ5}E6z'gg<>Ϸ	׻f|g+OÛ+eo\&dd{Mi_w/p5n*=k<'P!&nrŻ齴\#z
c{y-5q	?F&\p]3f^{=6D$S%ߴӲ6ݮwvW50g ߳ox)d^)C˭ǢwP)7 MpbVlj=Rn	uXΪدܨYsp!.<cz	<}u$c'\nqUl"Dxj\2 Kip8ŸN%U67֘9FAuzls䉝!,5Θd|s,nn
73iFl7V٩E1fh}f_Ӥ8{i^ѴG);cAz}
CxDx+̮t=8cH0n2bEqmK@b.O7NYD+~x*j[7iϨզ&Γ8 kV\ɋ3jT^<uծB(-
I-;CBp"wM-ކ^W/77E Mp,0m@KlB=uAE=߶/jGO^_6\1-[[vog(#uFZG&e;uɎ%BN+clovIe32w&_+vڍ-qnY5&Iu` &rGKFٖ":2JV<d[/8|rg יّQ.0.։jaȂ:aVv4;;4S2vsV'X'b\XP[B
vpEDL|42a`EZe}Aa
H^}b~Rc.g:<w_U۽k[>^L0'nСzO yNTBn&0Mjˡ.rԔ;Wg..~OY#Uu:q|ベ48'?dV,AE;տPWaXBv[=m.*Ш*w\[f5%j`c=>brh,NPd#7K[y8+-	ʲH\9Cfk-X3W	a9gŁAⵝ`Ն==(PwNM*[dN(|u/E#{KEAlH4^5i"}\{08|vސ8#4Bp,O6%Z͢Nڄhzb1Jyfoc3IJ ;-,buHxk'96H_
e?6>~?=	2;A-tfMΎnUl
3ʬ{Ǽn%'Y#oǹ_Vc2{40iq/T^57ɦMPa*2q=x5(}w$aǚfYb-e^ v
/aZWcGL͸p))[XjKnUM,-)epq'r8Cy#Vtg7VT=EgfC}&BG/+C B,BwUTJl1x-u'o/[=UXڱIL ާV5͹^1].\~Z+Zuu:a9h65iծ*zq+A;ˈ
XuoKk"I&{;蟵`==Md)#a,nk.WXLA0].c0lkȥh-u~+q\a!G>I?-|d+/z8^wV昔ʖgܕc[x,Ө Wrٮv@eZwiEt@*}RRX_ֆ=|hW(͵k*&>y`ܙȵJM6&1\fs{ H5D


H>$iE3\5)oJ<'`/erRl+}q]cv\`Q
iY9aɤ"!IE9
٣ƫ' A H AKMˬki h9i5JZ".{tDTBAAtATAAT]ʢ%!+BV/KAG~GG?~@cXnX`maX qh3hB@@uW`W_WU
oǪ̪ˊbj +	U*@U?U}*9U*+USUЪJEՉbU*
UTTg5szyF5''u|1Ǉd>|ˇYQ|AG=p݃N\z|{<qV%2
G<aƣc+<xX?Li`t!_9LpAā ƢnmF׆_6PQQThTdP}Q]B +*+*'	ԘS\cFZ
492td|[~\X`˯%Z:TKJ|jT?f
;dԒ$SHLMzphR)YH!Eҥ"$ْVu+o#/g:X$#V#"Ԭ)GTs<OQlyTZeG3yԘ<JLu$
Gɣ`QPyԞG(=zp22\:sLyOT'y2<
y?qHZa(-rl."{[QMM{iY
sSL3]ȢJ>=]YA|A5L$\yi;3Mk);.o0WgOYCIҳrgAqSXϖsji釨;+4%0{Kd_dرs`/J NQFo^;Ҕ>NոӴѰϬ0/+лl<,Qta]W{%ۮцyoʺWAP`,ib	B9Lz@:vHB'
B.A-Љ^z
x	v:Rn@.".|wp~&5/-	?NsTEN1 v
}
yݺ?ײ]l+>^\R%Q'hԛ
ȳcyc|S/@.zSaN˛ `j[aSYOꮴ]\4( 2pmu򱪫m
l0/Q/-O-N,M0&*$ KTps \,lxV;N*'*'7	w6uM_~32'}Y8-|^/]`;!"l+"j*)^KIHFE-e$qɞX(%AAzux$ݟwgHqm'l%kCL@3y,;! Uv_pڝWM5q-aQ%R$MFQ8	ɵ*T[FiPEPguC?B-H9Vm5l31u:W 5yB(Oz˓IiyR<KI]yR<)G#O'QI4e[ápeǍ¸1&,\
G1$ H^$0H^x$dX&& $q$	 /Ʌ8pHX#9/ n_vr#>.h-ϦRGyr[>\Kl<x|D;L]7\-zoHv]IUŨjy+=C4CM3r%"==kt#XiՂdj|]\I)'ޡ+ >)/^&
=ZLǩÚ0f2Gf0rc=p`.B}[\-\,U+kE֋|c¤_TLR)Y74J'3 ML*VrJ Ud1	gFf "q!~G*azEwCra<Lz'q?3	!5Y:|Na5C~3D ^Iuq[@ڪ4<9bs\iV[U*-S6KhT	gZ"ʳRPNE!
Q\zq*X0Vv\D\?{Q$Cu?'58a
Ad*)7酐s P@'0w
V^xZj?n
[ZJ\5&1eKz 	n2RI$daR@\`~	6t~o-؃ډtr,߁hmu/GNh<";^vސu}Ύ'kŕўl9zb=PS͠~oh-lt41,Y"Q",GqFQ<3>
L4vr4r3Zr3"2br0W>P>-s4_K&Jɿz-sʻ ʳmO[^gX b{ȫ/9˧ȥ!9&ﺒ;1˝
xʯ+-rs}ȹ6@EdDNeْ! /!Bo[|Fe!'2%'"@>}J" %.ϭS۴¬RZPdT**!OB`;Ih3º09?r|x~9j6i24<0OaEb{StQpsmN (Uj)Zj'C<8MRt#ۻ/"!fC2`o/I	Ȏ,dG'}:Kqx1 #ew.m-gX87V72*8*ElTҬ2,(BAZ{Q/b B.	8MWKygv`t`9+x[iִ꼛MGCqF]B\mY:X98ֵ4Kfxdb	I7΀1^,D3" /t\=__#߇@v_P|	f^A#'KaXBvg`VeuT4Ptg&|3˶PRw~qQPLx&^g D(Cgo46mv6\C3f3pٗ;ql,G5t
dyTL%}9}5AYʫGЍD@a!Z4_Mo7%s0.8{}tlc:CX秹G 78m7NKJIHFER^K25yhLIQ770I%$	u<,؆8b~&gG Oj'C#B"Ëon Ok<N?,]&c簙L9Lw{79|u	]
[<AVVx
Z:5ԗƉA<{'W3	%ZGc{b~}~?OPstn헟p8{G[NJh'SD0A%N>vq[9D?'VJYU,մJ#tj61`J$rQ
K89p
UYUSQh`X4
j0i.h5g^dAc?b>=o/[ly<< kGIUNHf1OgYzyȣ$R
B7N7D{ֱs(8v5ߋK8EN&. ~xyt68n@rZTTiRF7g"ye.Y&Q"IA:ƶb"	_tOE'kpwsb3ZCPWtf0/j/3Q^]"mHɲb5l=SuBe2]"MWLLR%!8:ۆykABA;7491_#nwn57pvߐPzN91)]G05|yuٸv[Z)&Hևpu`mP]@U0M EM%>E8C4&dB>8q72**kC4aDZ~X|^'bBgfk3qiax]i.WrNbQѿ b0ٻE:O&.g
&'ϫISR\"v
F c.	 ?6K9\J<
 ξ_Mzf-j5`oճ]Ӟ,[LTJ:#&
zu.uy->AEA.q!![/s<]\98|pohk?
_:ztޒjd8c.0:*򺻅 -wfYc]XTPۦylQ:4JNB9{
#Tq' 7¼+^vat^r]z8֭k[wu986T|# 8ppk~Kֆ3Y/ !z}DllhG)'tr<0*+a	!/u HBμ.L%!Ʊ,)ڼgs_T3s xJP
v骹l[_{Y'Xu*5J5D/@O
N)#<d#|E6M ק{s+ON	b2h2s9L9Kle\EL%<|^m.|Z_XS'Mi(:4C0NI8 8@uer`@^g#'Cs
`XCDZt`Pidq/&jib*jxgI
,k zfjFB<N*
I
	Gg\T<A1! |^ނ/W+9 _F.^Mh-wSi4|W<;p/M.vLdX@HN}ҳT)m`XB)d
d}glS\C"]gWGGdJ"A"^>|kpOh35Fg.fCK[=,kXK2JD@&N&M$
K!9RѱɌ5|jzMՎn*' Eű_߈Ӡ
6ka^.jihOufa^Q.{A.4$
|}o.Ͷ{vJݬ*j)hPkb0fwEvEqPI%:y]ܔbg_x[pOh3ykzR?~vdZW531+%î۴͠Y@55je%Yhד	t*:R˄㏽ȃcC%GP
[=%܎-V"j7wt
RG%$|[ui> me]M3mg}*&j*4hs5L3KLrrS1J)>!n
A g%y0vHTn|~]th?1/Lh׃Q"_[ZX`)')ۄƊ@5
<J_ph!Rr%H%T=MAXA;=79-vi{
	n߬@dʔ8-^=}ҽrV^IwYy\ՌZ6e#AOJ
ܓ*8
шLx%_(5ڮLG )'&%v;)CKY+:xw2rVlÆ\$^$#\#[$?@6:ڧFiR(3cbX^PPrd2fWC+aU S=zwxuvrtqrj"xǲyw(`UR|ىZ%c%bpaGo"o 8XkQS2R10hy:-4}L	˞AlpR͊e6C6B0%NzxvK9R\Ig=viboFւ[T3IƎoa7ۧeZ5,;r`+U+T)Ҩ(hԙ\(Iid!E-bKx6~BC:*) ln}qh`~CZGW'GI1pkK~vy.-Xjk뙪j)hrJh:`6X2PYjGf[km H_-[?r}
l={sqo&Es/ϸNX8WkI&]ӬU)?tTd-ɔdu}{yBAA
w_0C /▶?z
m<f2O!OAZ(ַWL
v\^b]VUuiKEa@[<Y8W4U0I˸Q
>\#WA+S}c2.LˇKT2IuNJ[o<f,&F. \*o<$>o\Y
ӳ4-z|t,c`t+IBAG@#[']aK	ǖ{(;O8MvX!t50[ܱ0
&8e\V
&.XTŨha)hس2,(S9F={T(U"CBa'CW
uM90O"Ź_+l:F՟F
Na~|/2c^|
#o}xtp-XkzJf$
FH>N=M<L<K!ŎXYAN:sбsK9T|xp;즵*W_}k
3r/A&1 nf.JOGY6,oSRYdM
OB6M?=6dc5r`+C+B ԝ?*ׂTN$tWda^ve HzMğI1!F
Uݍ|TV6Eu*,D}	fFtB^8v&#b
AiNȷ𳛣S˥9h36[&7Ti)P.{!c08Hw;cB!OX oSO
,dyt&ȩ>!YC->.=./n=Y	PVxm]}vec_ȳrxx ~;h銹moVSXk*Ĕt =
NMJZ"
	?&L)i7	y\_)'ښBW9P81~
:.@,$^q,!

kuI5BEO
N
	pf%JRqdtP3$
.D¾.-l밹&"q);n7i 4?3Ь@4=slh|ZǶj*c*ZEJ'쐼80(a}dz\^V!oWD؏M(Fw\?x:^K2!i3X(
SSR(д'oN 3-P>;98vFb
ưL~K|IzHxGv"
?7SVp`ge$ь|./гɁk0p/Nղjy+k"0r=yyy*@[?E? 铥 9mXmJURW]:^u~`t_<d[PXM|#	02`kd%SͅHʡȽn3yG{Yb	"o|Gx(uxmh a`yW?V.)!RT xq*!bS=LG{"å';W%dr4V{wXZ?bR>DbL},tq^ۦ' 
* J͠[	8s%Qiˮ#
 $Okۋ( rYaH84wUG
O:aN![g0ש{w)GХ5ӴL }j:s;L
% ]+탊ĥGC#A9$1!GQCi9u8BKD
HCTG#Y	Ϭkry) 7qFIΟsn1c'jP`D[:N&؆e{*N.6:r[Wr8wwi@7GeXq*
ʸN'(nH	<lF[u/*AK»Yp*Ezmi֘7cr^[땽nV*x*#uB^HͥR%ɑ1Mq%B|ν$R+k5
i3R*XzD}ApZcRTϧ	'×eRC
D%0x wS3#~[n|++|\\9WWIV\\'y~ҝ
\Ρy[OCzK
}`Y'>
zxyvktYrTdo;?Q_\h_={0w(;Md}@F~m6.&:yYXUj:*gzЮҙdX.SI%AFAE7?#L XHG3xݘ*W"o3v vjt_2'C3^]\[_ÂJU
;u"FLV'&%	Hdhgd|+qPShzR<.c{7g v
^<K	48Dxe.zЍBmw	C-f4J	ԙz_y-uYFC#a!DB85@3zwGWN.HNE.(~Z[!f
Mß:Kgzr1//XRBby'+fbVJF>vA?S'<`Uԑ+xwtotΜcsޮn4gòމ4 h 7}.*&ںi~OV[J*F=`ꕶ^=UM'SǒJLG(#>
y 
xyvl:?"Ɖ 6{_1)'|3_[dJ#޿(zOk񇲆\	YUQ}LwHuDs@q<m8JsT&ߑi`+!eͯc[994~wn6
Z꟡J@Wws?A61F'~nˀQmֺ|{PNVi;Y4S0Q,3({IdN"bA('Ay~l;xv̉#&Δ8Ik)ZKVhm_S`ͺdƚԚrmZHmLML
ZXm j$ԆjOjA5j@jf6f5f4ٌY95o1o_f̛
Hi4wڠn4iZU3
Gڍ4bZ#@hCۃf -?{tЙl֙xřܧVt}y̗\$e8XpvpɌYf.v3oFoxcMMzeտ]{_tSM7Y7P`tr#7.nn*Ɓ^YPِeXeWe2e{YA<m6hmmvGmhC
ً<,EoiRd%Y12l)M6Vl(L9djdidgdpȨȔdId/\di @#@FaCƺ8{4AfSsGf8jjjZ9aZMb#KQk$H-fH'fukjiΥe^Ϡ-gxI1d#][#R&f "	ؾu98,^|?$ڙ&Slg;frߣ!_1X}zwtopUl?ҹjҧh*&ȉED% 
mH).Q_Pl݆}~GW@O/J#wC_nk6دUN|&gyG';+_0{˃v9dulI͢=Iv"$c9dVtC:9A87:{k19cšpqj4tb2e2r 7еeyYoڀ]uS=R9Q3tSc_}rM
ː6	*Pd@v@0         J  ( (@ pKEpbbp	R
knb,G$&mg(R<ZS@Q`XldD-nqL-}f[V?-iL`$fLcKwUKZ0
@;2ũ f:/Cqy$n(,Ey ,] ƥoh_Pa9qkmO1Vl|Dܱv4nKI@;	D|yDFS;
_96d񟡏5d%퐫O%<NO3zՉ7~T-8.[
!}çR!~cˤT*		IʍÄ+!۸M݁1t5>Y:Oq$kM*k*aʍq7
IFp
*i"JkHH&"ƐHvW	׉
!o
Ƨ$SM^hW[YPj&ZB$JH*!l&7W%lhc6gґU"X*&.Ϙ=kbD
s&*{C̝%^GN!ndǊi#| 0
*Dۮ| ,_JᆸiWx~!$J {gD*Ex@,c^~ʄg*&ԙ_:"6/:6P*W̕m<rfh3\ߥ)A8QO
Ncm3W4h7a)B+3"<]2qEN+hE
b+FivR8AXJ<u§{s`,¡ӈvk`V=Y+?Ϫj .O@Q<
MX*;-Pt𿡲с&
aw\!UxR^ !LA1'X*B-ŝxuY^Y@ώ:E}
-5IYk޼%AY=g (Riy/[i^|u\@qExJKWisӂ.*_hru&+20?z >aqOM!ŝ^MP__ڛ&~Bڧ^/ZXeelH{X(efZ7lX&;vZ>D.|kƾ;Z~_ѮG<pEKL$Ȯguh]/z`3E*QPVKJe,Rz]Myy+2)4{4s厬F"0ܗ	U	
Bԭ?IqƆjzO"V7%SdȨkVep6̩Eo;#JU"R25ƴc)k@zk*´RȸNg"#dΚj'bYNc/-{3N&h:w'zdhCϝJӗ52V<_Xl)Qy4S[~+za4#h\/n$RDjcYݟb%nwyJSWxk3 :qf̾kZ)GP7)0BzdPC`2zF?؁;Ml5Y;qD?$[*-GIi]!pZ$jRʷkX]IG;]Du+gq=p'	խ	Xz_AkY3/dLɴ
(9։l,φ
j;1b Vݸ0D/"&6(fqR
IڍF3/Y2ѺL3/m]G8]p 4Rs3nkpāe(3`{VBeu0KإY%X%̸b@j[dΙ^?5qmt<S|ۗ6sbƋUhcILRg_eFO7-}x'T<d[\"e	,];/<Iڢ9QZ(nJſLՕ!KNmZ5u"J64E@&ZRKh-k.|Ћ|&i6B3n.J 7R%M	3óuZsD* uQNE_( NjC8jiw7sUp*rwR̋*{,2v 7ZF!Z-.@L4hh{_r~2qe{cuN1Mi嵾Li.IμpSSoﴐ?MFID%BWcW76R'o;䵽@f	uP#ku޺'5QǑkTg'z`%Cmf'޺7(+ٸ4gBoc#ṸHsh&Jƀںlb߷9kݢFp
;:XzZk'FfV3n4DQ6	F٘SnObZ}VjZ8Y~"tV=QDܩ}+ptd
Fe^Ј界+3n
Pb堇Vڨd8¬9$=v8J&\]R%?WwIٳoP,iMav 
l'L"셕RtI]_h@n5]YW	\<5Xj[:Sisb.T6:_hr?{au&k+2`~z ^czF!>V?x*h~EXj[:Sitty8X `N
eQ]]&	5{
$3?kЃ8"UWFUcm[{4m
BtE4]16=!xk=h״M
#}=.E~#_w/z]q K"0=	޹){F|`uFTT;7G+CBReu|0aL=[{5N͸Mbtez(/#G̺qMDSZ
9P) +
}gS!N
Ԣ!kٿ1	KWDTDc/{W&ʔNѢocjWb fU1QbLQ7Ѫ6y^jw\hYܸwI*m)}dz L?dl DGϵ@%/I>	Q߆ AOǰ ;zi&0NO飷S>z;}JþY D1~>V	ԳY 	޷Ir:^N`A#[LB9CЦo0K]ƙ߹y
q^`h}(꾫жt@iN5?#22OA|tӒ2BHyh=45ڷ43݄WhMZ-ɞ彼N@9)NX!DgGLTktn3g7Y}
U8i[4vaU:*z˴C\\IΜ(M*	5Unr5XSt{#ܲ[N&w+Z鏈)܅F
w]hDp[
>lc>=ꝛG`Gw׿1"Ew/z]qE~#_=.zqGEw/z] !$i*E Om0FzvV(0U K&dIOmu>O:v!$B'K%E+ZլL*{xq͛Oj$E6uȑAx?6rA3<~6RPЅǧqOPFc,t\?*?9.<ߓx{Z?_祎%4mOC[p;b9VX8HZxrJ?NjMHz}l[uhii[&;` vނߣSN*=gQgT=GpVx =p|G,xFW{ulJG:F҂dp!:`
yU$^+;TRu
?*Uz|{r!p13}58A:o|Γ~0(T{ aA~jNY)U9[2j)FR#8:g`=ZԹxᓂ|Yfguu.!@OU+=6\ZiN1&X4``0I;8<.;|W.>|߁e<nԳr>tsOj^o&`&֪3FS̽A #2^3i:=S-)@toJong7~$v5;	qxZ>ܨ1IpD4r'1Ӛg8z`P]!F/}BGu3Tȧx'|jR)R*G7Ai
y}XIhxИWK)դ1ߕ-W@|_D.\AnhnCچs6WwŖ{|x=̐VC1UA-H0_ZRYx/&7׉oӓvz^:&ބ)5Upo5 4;YgJgpH:_![>\h*%Q0|kDKIFI	yv~vE0 8=B\Q.ks۱ez*×ɥ( %e$[zRqeVgS!>轢"hd7Me>TRiKxv-ӚGK7mZv-iMěZ,fc-Id>['ƌƓ0'I-EbpWx~/܉dPU
xj6r9?GXwR!+qTY䔗o,|R(!9ϴ͔&8Tmx	a ydEhǐp$8qA	
6@eWJ*:uuUEG&KJ
G 0-z"eoC:eQ
SX&kLXHN6r&`saHoOcYprPޅHF`Ҁh4=RM
8ɎHOa5㜃  -b)+TT`z@Fl(ZZ#cr琗3l$6&@"
"-xuD4"{*\!^E)- O$6qbǔ,y
Xf<Fcm	dHPЭ*
M,<hb #-
 2Al
^{@erhˁ'4(2NI8M
"MŸ/)>y4x|(pAY2bo (
s`(Ah/Uަynp_pkf.c7F )պGB Ab;q
B'k{(c$օ4Jh:Y (-iӅ"0(ЩC>5~$!U,#&%xP %e^聛IoΑ,щȢ^.MNSB 
C&))p
Du/ gQ4Ÿ:T,q~7	n+
p^>TE
I35WB@{F"G,AF?swfi$R05QC+C-4TC*?j,=sș!-.F@g@K_`h`Xtl|>V,SRoP4I:`cB3K4HH	M1ń2
B' zy06?Yu&jK#ӆ6
 \?d<O% f0	t=_I`|vԮc#.~rn2ױֻ-ԪKSLf!
~WtwZjTA<f6M\풹[1kXXf^"qG@pZήnj 
T6B}$B%mw.Smi}L~ 00}Iݘ	|!odX9yx@.wݲҩ??_āa@$ޝwiU^ǘPǏ}2rj,|cV.ጷm#xc,v5NkO	h$dO	Cbr\ \Y͢M!@'<;#wlbt#R:EPMDPwvک]Ƭt~~{nb6oJX"USE#WXW5M˻Or=aR6>6$!3+F+&HM\ %}g!q""l[K;=kk⨐QwFX7:$X7pRݓ:|W]
:3D+׿p{af@>6N89= ,tkGu[yie/g9rʜp,F^3}fzH:N qA"KB~%S([W B6>Bd	nܔp58dP$eA7AsڬhE&j1~
^-]sA=Ce]YҚDx;fi
(y4="4O@K &dPL"@LO0-"hF׀$%yE#iԧ@k@mpR[3S [²\?
pG:20XLMU`Vij衏

zZ]IRoJ(wPA{W#HȜܦ89¬옍
q$Zi+n:[N&5QUbjWJx]<ڀT&2da:>~5ԉ$C%__+xQ݉	ag161me
aѰQ<s
C˘0
M(gJTSdk&^|t@+?ҞQ"x9b0m-` E VBE;':֒(r3݈u 5\s[\8++QP;+ʃ:0H[%gfLJ*%jDi杍c#h/a.L=j	C$cK@o_Ke	'"Ē}CvaQus\.m[6V-둋<`w䪠ISTMIQ@}@xpwI ӶKIyY .+Q#&aX
ڢHOq>y|SȠ\[j@Н}]˪a:'~G?E+|#ٚD
ZLIE22:Q3r BQ<3ڃql;0,h⒙cjG?M'yg}f^d|#A߉zs3|dḛӨ2.!vrd
l慏E_pXi"; UwۤEW#ykm,-Z$&Ѿ7,6QAxIqA|wf;-KЮF6 Nf $QX1B+ K?KĮ7ksEViHRZIи@DK iȘ@-\
 ZuSY
/Q{ݖDQGD\v±Ѝ*)y)Rª(j/JSE(	SF	@l`2$Nf@hVbCû7h}<T,"ŒocO@VnA;@6@F-$&@/X9ۅ,b
Z2#'Ɩ?cFK6 @jJ9J4\(I$\ȒC|
ՔY[ fdQ!B,C|q.|bc
H:
X|(Sq4;z-AF9ggXUmue؍ԮȵbY-'VI2PG $zhm'+ggZ}`|i?^/├.{Bzpyl~07YLN5_uehDQRTQ0PEeBniTmSYEAx܈
ȬUP%䏞A`3Z 8G.+Pje^GEL*X9O3hDơQ\~2D9i;ڍZFd-Y+Pؑ, pǴaCdD,+ URQh6]_^@hGJhWļᨣa6D!	Rv*Hzv c\5?-C;Rp?_,F'aVFECsfZlڰYlZ21-떕l˺eݲb(TUɶ.k*XqW_kk[ohgk,r5e!*B3/WZ[
:.ԬPh?a۴\llnWgý]eܪhmhoii])ʬܸ`YL
Ś^ecývmk'#{BCյT23j,WC>j˚UaPzmNl޲V?w؉ A# 3"K3sJ)VjПPh)-(
hP:K"K㟻d??w%eFem)%LIY|HH-7!d	` 5<>0G!.Y*`sH0fPO/>§>v>]wzbEsq=$P_:sI밙 GZd&3D9gpҏN`YaA?if@|ox8?~4@4#HDVf!Ӫ>,!?7iaҴ).t;}25r71͑441}1&M%MŦ]XSSS&&y`%˥
G
;	oÞʻIUddDKrf[e*)(UtK6%ƦMVvoA7;
Bo(7>;dTPx+C3ʬn2~+C^YU}m2,[
8pw`6jW__	~(4?Çn(:X.Y'8^3joz==,(P>
όjen/"9; 18W֐NB3< AvQO>vJcTR[ȮГȋnp'ʌ'Ce׽9ו|~@x0*r᡼ughzé,nTףz$Wu.|hvgKlmCJgF:BgN
Cr&q^jQp0'L߮U3o:R'[OUB_3O]Gf6YW'(j9k$$WuYir+QiFm;<r8 L}:\Sx.)ߣG_9=Ok=G=N6N"V7YfC\g㶜?04Nv҈crK8$)錛g#R=òSe>\OwΆ87ٍivq'+(7I=.
RW0]Y0Sm_f٫>H>
(6ژ~w2zߔ._z
q
Y"5z|%8-{(ii1Wlv;| FГ0Z<OmP<;<xn=O{/"pMg܂/2~HoMg\>?*2N@o.l^9Os,g6̫wOj>M֭xpy35TUbNUT{_}`|Z%zgvBsN(=8J{C	TQS98sCpV88>PDtM? ۽:V`5:e<סAc>f

'_αᴒ~Z\3BR'Jo$&N-s,oy`׏|ͫso,/4ފne&ͱx\Эǣb>=e{F͈x[~{xQn[{7y]%V_䛫*(p'-\{gl
|4ϔbFk=9Mtj1tc
[YT96Nj[Hj'Y?\YRix++-UXRaYV6{(3ϥi|"39\paYlA:>WmgITsbfk>{AWW
0Wٛ"s<h7L>ՅfB^qP`PxOG}ýKd>K^<+V]3x,QOIho=r8N'|n!K#*歫Pj{W%hx̼GDXC?[}:33j̏gx*BoK6OϟRoUQx}unelř] d[θj 7~ K"	C3Y!֐nJ6Mhxd
Z90!-cu(]LHK2Nwd|#rgm6ޟ왞}aokٿr76'yd$ȗNؠ3:8vuku;R_o)x+o<2!Z}W_dPPny[u;5]-ճp
xҡʉg}>iN6J?3e;I\i5,6ȨPovV&fךo>`!U8,OgT##diu;u1+C%|(({3.NzP3.AY I\8hU _fy8TmXv*V:wV4A1-"P$Kz<xT!u'{=k%Zvf}B$jh=SnEA#H3d #
;==O(K
wa<rʏ8P	ϕ2sCER9f;6FˆWsD.rJ>~rrA&j/@@7ރ?F)<:ROWw&O+w#wA\ Bpt*Ӛ/V JBC[אJ?Œl|F_b'ݩDy'sVok4X^䷔|[Y_q:|gPA9<V5c49*-n>GjWGyUW<v_x_
<(=
C%I[a<nV">z"^Ļgx&ntJ9iG+8wylޭ/W J~F{-GR^K]id6\-|~iݪA*^**}Vab1=wuPӿ<{:c<E9<8:_7ߡ%AN?R\OEB8*	c%Y |I0D	yޓZNɆʓI'Lg{@w5v5ʈghg~#ӡB:ޘ]$~Ami RApkp>D}ppQS?%Ba<R\3h!N qi1{bM$(\cj̯0cr)ょ 1EwA *!Są7S!	6LDA䎓,6b'Zo\5x#&Ƃ܂.ѳGDC(B+e*pJE3GIXo<.9MSQ#^"bpqDeLnyLkC=gPCc8(&r22)EhmȄ&Z:5c+hQE	*7m8#PڊЉ&RWiO*cJqN>y +Z.`¾	Ȑ"z\.\H+gG\4!@S脡OC'RxEh7 J
Z"`\n,@w5a
 <$ʟ!2d̔FpBrad
;`5J`oJ:~w/xCÁ\ë#&$d}	L}:OkC=6w`VHƌ?M]+-\~IGÝ8Mn\4h6` 䀩QQ#
F$=9FF/+R(hHE:lyE""ELEKEI1&0I9Y ˤ
k9uMMXzMvj҅>VtIfee^rYfY-˽eTdKqաJÔ2򫴡Sr,KJ$eSid*(v򁤕$='fj&̔FDXl
DIt\dN
=';ըBs?ܟwg;'Ka+Tss6x=I(0&,G^[%7'5CRID2?vHtqxFr-5ⱙ60^[ u;9=eP/.
.B.i	7/nVIv;g) $|6_|2̗]O}WVܮ?1#
kSeoe*%TҊԏqToڪYܙKIJy6h[(yv[<b"U\,K$l~,À/-yJ.zoxs[}cw),ޟؼo-6zVM k,z4M|`2Qqq]d؞ $8)> b?>;"*K@L$A^D
'B&"Q'6;M(MD@7&[ƩTxnDYh(N i~Ċ hN%0he $Ń$]FV#bMDW`S=ƪ]?[TPJf8)9E=xqh{ц2 B$Q+DW,@`*j28xHn\i ¸\N~NNȃ7D
b6pYw36;6 $mH %L]0-A"cmRǇք*Lnexo)G
b GsH[C
3J\r)PH]
dF?!9h  7&r0cN#krJX¾$SĦrD"GiW
FLFDFBF?n&`r@7ڊpE| Pddb襭GL0|@Q<[p ĉKHv@
a[^"5b P1RD!$Xu7dpwf><twm]&@e 7C*^mr8mF\PV)ʤ_$){4 b2hB
;L> Q6eCqxCjD#LZ( 
W:bA3@9Ϊ3NH| yk8!gldZrfYHH<ivAeǋgo%@PLJC>2PEQEQEA0DQ;[Eam[T8d d/GLI2ܮԃ4H	C<#:!(Ϝ4?\gSȱHQÆ'K~Ԙc1b
eEc0|Nؠ{AmQwM*'tzl XA FXsXFp~'\, 0&5ant&Q[յ<4*t^L(ܒx{(! Fv0=w[f!(שV|"u3wS3_ŪhZ7{MY"E`FuCMus?]2,w[/BŚ pXS.0K>][niVkt:|:]tWNX\]]VT{M-ٵjS}.kW`vps}hBTK\j~y]}-50?ll`_V5fNϮ 	.OeZ,[B `Q @l>VKͪnmĶ^G{˱[ʍJnap[XmY޲*^?X	;_`DTT|,@rJ$6)RQ])ZQ:PKDjZK;geB	"D"&;^>Q,+%0 #0{7wIY@wr"<B  4Lt?Mz_Aeq@rQԜځry?i<IoK|1 ~,(I iT'lw~:#owԗZ\񦓐߈ŚU.D,XU0#	K+ ,,
Xl	>D)|82z|plgXlpҐdz7cZGŴlJbZV5.Kx 
D%x6Q|E}-b[Q{ohm9age/p^cQ(Ua*az5uaJFa0sQT
_*&PMX7+
7
n58oh,&բUonmkha7T֖֮Uo
[lSmZ2-REﯵn8a6i=kkR_++6)0(		UJQdETjAnecCcVhlzЭ?£.l]YYB[nԲr+ݢkkm_{ChWNpjq^mej[DQJ)
"s/Pj%H|^ ;|u҃̚>o(Bg`j!<d<1yLN#79lf7T㨔[Z
   S  00(!1 3x\m0DH\0!    @FƦ	 xaEK28 !NJbcrs%-zcQ|?nSTkƫIvZmexѱjKf6aUXK?L
4
E츤{z|Wp@)="K)
HaG`)9BT)T,<G*T;#ј+ʗgshĕPn8kTIT
h45N%W^(Sjρ89ÙXp(iMwW3\Υ;QSCi=]0jZxʮ7Z>5.FOB&-Aɖ& 9}O([;4bG=bZԾ{p޶3:CvJ,HEc%Ȟd'\!=BTAA	O8|6x'"@]T[-
?i> 7Y;_1WV
NVy#+6߲27;9ں\?Ċ/O( XR]_Q]R(voX*^FW3QT%v=|+K0omOWf-ZN\G=@&u-Ҍ`ŁP lk/
M)ސ}1ׇ5S7]{fHti>̛Fh
Mh+3pm゚g7;jEU^LQdŃ4NzEw@I`.fk2ױXT#!YVrn͌^@Si%ݸ!#{6N'+d"_>rwq=S Y&&;DYz5_ܬ&E0KݙhBUv?0M= 'SzUSaO$*D%1ךKv-b x>:qΌkf4SpMO>,n39hh3ͦx	>b"d95YBt6M7/onwrʯ,3vXޔۙ?%mSETں&΋y+dkfb໲zOoH~=zvάβmGײF,Wi.bjѭ򾳳N9v/b､zw{W:+PDğPGu;sA~yf,]H	;X[|2.#O8`q$K	
/0s*\cŵiNuvxiforo}pg%#jT:lJf/|JnEZvȏ(r;b{=}G7wd[,r5[fuoS̗Fdy{Ln<[jnU:FaWޱe7&?!&r2=cwR'uԆ}띷a;oxg5m fǕ䱟/Mz_*_g&Z##Zw!S{Z_4L:@n:Jk\fo2cǊ
:&k0єFSM#aqn	^[ssc(Aa/
m4HEoH^eBJYkN"EqBG88fah`aA7^4hc߿|8<?BW ޠTt o 	Uuߌ]ZQD62,lrOd޵|O@(rbS`3EbdHN	Z^(<vҲ$ظ~=jv2Wjı&_FloޱTfͶŧ9ǥbIyёNH.ErïH $!M%YfOٝ_EDN"wR훢}?}t%bK\qd%Y)h	ЇV	-kcx/^shn=`GĳA:S˫U̚wن*o2/h6ݗ3u_UiH-
ӫy
Tz+kKӴċ5ȼjI{ְ؁0M3ѡ)sP '*t_#~L,zqn~mDS@;Ykۙz^m9:+n~1N&Ю)Xt'rn&ƇrɐY(Q{'v]M%@Öh2'8VOOMAClS74,KIYt"shthkG=%A;^tgPcQPH`6Akm2{{MO;GVχ	{D.eYw'gҵ1i¶Rp}Ϫ>SY^'mpPC0T%Rng:9Қ.ˆ3XopTI_bVtroF`O^<D
ЁJꤛTdU1Ud8`p`c/)2 y-z-FlW}sk%twQ ;lfE;h7~)c%q=SrH'mYB!M
QQq'&D'cO'S9ʝ RJ#3V()6Ϻm G9Q\
&&O7Q\C&P/Jߞ(ڂ$qtn!
ԨCgԜfk(ޛצMeu=fʊI̕^`&f,SK7J}=Niu2	N:$:(}iu 1#&&w!:i$bRĜ<?]0gF-ɋ)oxO
4C]R}Jhi~ѾzGgRpt7%tSw'4'tFwB@Kl:mfժ9ݜe'\l#_l=8Յ:WJF*MN~wе?0ROS>ML.kN;q&KYgs2"C}br7hɦLf+lκJz_&}8Lw1KQGΘr[Vyu 6{>Jؓ[	W:h
<K)ju<\;9j|L(4Ӕ봚A 3asq0TW;PC9 Yvq;C/ΰZ?bm:)H8\YsXYC1%Np
0]10N)sTXyGˁypOr>o׏2<N>lH;ɞi']̈,R;9dLN̘ޕc*(+r
3f81ΧwIۦȝ?,㍫Q6<'f{)c6ŝ/eZTabG,_P~{VTN?+zy{z^W};WlJ$>}I?q}A~ܧjؖ}K}|ƞs%o^jS';2=Ku0}R,"uYR}9{%	o^_y	}zDG}V}֝}_ȋxK=ի?>V
z[.&'w?Ȉɒ<~
N%[bmvfICb
TI|g	ݰ7P]z F p!= k/
.bEqhus%Y͊Uƾ)\5ZL-VՕv0٦JngvXB]2teXvļ`ˇ-ӫv'XU#g~ :$Rr%|P;84s%hJ~3aETXJQg.V&QD	?OU7(6Y2N+dʞ_E,d]L|8D=4%ss &we ̟pg)fPl/\`,͵Wl>Y=#XhToƿUv9p[\-FqAZTrRE7^Q"'ƯjM3?u,LjbWntxb\Ox2UƼCQլg5KM#VbC-z]MkZT!rq;EFѿ( YOmY"ӫg;u?`ô,+ܨј5Iu/hb=퟈hJt"_XL:A
maai++qAlrCR-%?O4,/qS\^hǆ?ҁ aL;9CǇ95TZT&IaB"Yz#vw$MsU*42A~"ATgG =Fsne ef"W]S$ gѐȲ;n/?~A=R%'.KCLsucc,wai#'ar:źX!!847ҥ'YXjPUr>Y!?7f4m?"FdgOR [_\Vؒΰ8FBK_s(+Y_ D
Yp^^92_:7ݺ9FYFћ`bx<5cPSHbJ/~;Dդ5|'%g	6xNBf1c x=T8z	lZ\8*5e2s