nix-archive-1(type directoryentry(nameincludenode(type directoryentry(nametrio.hnode(typeregularcontentss#/************************************************************************* * * $Id$ * * Copyright (C) 1998 Bjorn Reese and Daniel Stenberg. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND * CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER. * ************************************************************************* * * http://ctrio.sourceforge.net/ * ************************************************************************/ #ifndef TRIO_TRIO_H #define TRIO_TRIO_H #if !defined(WITHOUT_TRIO) /* * Use autoconf defines if present. Packages using trio must define * HAVE_CONFIG_H as a compiler option themselves. */ #if defined(HAVE_CONFIG_H) # include #endif #include "triop.h" #include #ifdef __cplusplus extern "C" { #endif /* * Error codes. * * Remember to add a textual description to trio_strerror. */ enum { TRIO_EOF = 1, TRIO_EINVAL = 2, TRIO_ETOOMANY = 3, TRIO_EDBLREF = 4, TRIO_EGAP = 5, TRIO_ENOMEM = 6, TRIO_ERANGE = 7, TRIO_ERRNO = 8, TRIO_ECUSTOM = 9 }; /* Error macros */ #define TRIO_ERROR_CODE(x) ((-(x)) & 0x00FF) #define TRIO_ERROR_POSITION(x) ((-(x)) >> 8) #define TRIO_ERROR_NAME(x) trio_strerror(x) /* Argument function types */ enum { TRIO_TYPE_POINTER = 1, TRIO_TYPE_CHAR = 2, TRIO_TYPE_SHORT = 3, TRIO_TYPE_INT = 4, TRIO_TYPE_LONG = 5, TRIO_TYPE_ULONGLONG = 6, TRIO_TYPE_UINTMAX = 7, TRIO_TYPE_PTRDIFF = 8, TRIO_TYPE_SIZE = 9, TRIO_TYPE_PCHAR = 10, TRIO_TYPE_PWCHAR = 11, TRIO_TYPE_FLOAT = 12, TRIO_TYPE_DOUBLE = 13, TRIO_TYPE_LONGDOUBLE = 14 }; typedef trio_pointer_t (*trio_argfunc_t) TRIO_PROTO((trio_pointer_t, int, int)); typedef int (*trio_outstream_t) TRIO_PROTO((trio_pointer_t, int)); typedef int (*trio_instream_t) TRIO_PROTO((trio_pointer_t)); TRIO_CONST char *trio_strerror TRIO_PROTO((int)); /************************************************************************* * Print Functions */ #if defined(TRIO_COMPILER_GCC) && !TRIO_EXTENSION # define TRIO_PROTO_PRINTF(x,a) TRIO_PROTO(x) __attribute__ ((format (gnu_printf, a, a+1))) # define TRIO_PROTO_SCANF(x,a) TRIO_PROTO(x) __attribute__ ((format (gnu_scanf, a, a+1))) #else # define TRIO_PROTO_PRINTF(x,a) TRIO_PROTO(x) # define TRIO_PROTO_SCANF(x,a) TRIO_PROTO(x) #endif int trio_printf TRIO_PROTO_PRINTF((TRIO_CONST char *format, ...), 1); int trio_vprintf TRIO_PROTO((TRIO_CONST char *format, va_list args)); int trio_printfv TRIO_PROTO((TRIO_CONST char *format, trio_pointer_t *args)); int trio_fprintf TRIO_PROTO_PRINTF((FILE *file, TRIO_CONST char *format, ...), 2); int trio_vfprintf TRIO_PROTO((FILE *file, TRIO_CONST char *format, va_list args)); int trio_fprintfv TRIO_PROTO((FILE *file, TRIO_CONST char *format, trio_pointer_t *args)); int trio_dprintf TRIO_PROTO_PRINTF((int fd, TRIO_CONST char *format, ...), 2); int trio_vdprintf TRIO_PROTO((int fd, TRIO_CONST char *format, va_list args)); int trio_dprintfv TRIO_PROTO((int fd, TRIO_CONST char *format, trio_pointer_t *args)); int trio_cprintf TRIO_PROTO_PRINTF((trio_outstream_t stream, trio_pointer_t closure, TRIO_CONST char *format, ...), 3); int trio_vcprintf TRIO_PROTO((trio_outstream_t stream, trio_pointer_t closure, TRIO_CONST char *format, va_list args)); int trio_cprintfv TRIO_PROTO((trio_outstream_t stream, trio_pointer_t closure, TRIO_CONST char *format, trio_pointer_t *args)); int trio_cprintff TRIO_PROTO((trio_outstream_t stream, trio_pointer_t closure, TRIO_CONST char *format, trio_argfunc_t func, trio_pointer_t context)); int trio_sprintf TRIO_PROTO_PRINTF((char *buffer, TRIO_CONST char *format, ...), 2); int trio_vsprintf TRIO_PROTO((char *buffer, TRIO_CONST char *format, va_list args)); int trio_sprintfv TRIO_PROTO((char *buffer, TRIO_CONST char *format, trio_pointer_t *args)); int trio_snprintf TRIO_PROTO_PRINTF((char *buffer, size_t max, TRIO_CONST char *format, ...), 3); int trio_vsnprintf TRIO_PROTO((char *buffer, size_t bufferSize, TRIO_CONST char *format, va_list args)); int trio_snprintfv TRIO_PROTO((char *buffer, size_t bufferSize, TRIO_CONST char *format, trio_pointer_t *args)); int trio_snprintfcat TRIO_PROTO_PRINTF((char *buffer, size_t max, TRIO_CONST char *format, ...), 3); int trio_vsnprintfcat TRIO_PROTO((char *buffer, size_t bufferSize, TRIO_CONST char *format, va_list args)); #if defined(TRIO_DEPRECATED) char *trio_aprintf TRIO_PROTO_PRINTF((TRIO_CONST char *format, ...), 1); char *trio_vaprintf TRIO_PROTO((TRIO_CONST char *format, va_list args)); #endif int trio_asprintf TRIO_PROTO_PRINTF((char **ret, TRIO_CONST char *format, ...), 2); int trio_vasprintf TRIO_PROTO((char **ret, TRIO_CONST char *format, va_list args)); int trio_asprintfv TRIO_PROTO((char **result, TRIO_CONST char *format, trio_pointer_t * args)); /************************************************************************* * Scan Functions */ int trio_scanf TRIO_PROTO_SCANF((TRIO_CONST char *format, ...), 1); int trio_vscanf TRIO_PROTO((TRIO_CONST char *format, va_list args)); int trio_scanfv TRIO_PROTO((TRIO_CONST char *format, void **args)); int trio_fscanf TRIO_PROTO_SCANF((FILE *file, TRIO_CONST char *format, ...), 2); int trio_vfscanf TRIO_PROTO((FILE *file, TRIO_CONST char *format, va_list args)); int trio_fscanfv TRIO_PROTO((FILE *file, TRIO_CONST char *format, void **args)); int trio_dscanf TRIO_PROTO_SCANF((int fd, TRIO_CONST char *format, ...), 2); int trio_vdscanf TRIO_PROTO((int fd, TRIO_CONST char *format, va_list args)); int trio_dscanfv TRIO_PROTO((int fd, TRIO_CONST char *format, void **args)); int trio_cscanf TRIO_PROTO_SCANF((trio_instream_t stream, trio_pointer_t closure, TRIO_CONST char *format, ...), 3); int trio_vcscanf TRIO_PROTO((trio_instream_t stream, trio_pointer_t closure, TRIO_CONST char *format, va_list args)); int trio_cscanfv TRIO_PROTO((trio_instream_t stream, trio_pointer_t closure, TRIO_CONST char *format, void **args)); int trio_cscanff TRIO_PROTO((trio_instream_t stream, trio_pointer_t closure, TRIO_CONST char *format, trio_argfunc_t func, trio_pointer_t context)); int trio_sscanf TRIO_PROTO_SCANF((TRIO_CONST char *buffer, TRIO_CONST char *format, ...), 2); int trio_vsscanf TRIO_PROTO((TRIO_CONST char *buffer, TRIO_CONST char *format, va_list args)); int trio_sscanfv TRIO_PROTO((TRIO_CONST char *buffer, TRIO_CONST char *format, void **args)); /************************************************************************* * Locale Functions */ void trio_locale_set_decimal_point TRIO_PROTO((char *decimalPoint)); void trio_locale_set_thousand_separator TRIO_PROTO((char *thousandSeparator)); void trio_locale_set_grouping TRIO_PROTO((char *grouping)); /************************************************************************* * Renaming */ #ifdef TRIO_REPLACE_STDIO /* Replace the functions */ #ifndef HAVE_PRINTF # undef printf # define printf trio_printf #endif #ifndef HAVE_VPRINTF # undef vprintf # define vprintf trio_vprintf #endif #ifndef HAVE_FPRINTF # undef fprintf # define fprintf trio_fprintf #endif #ifndef HAVE_VFPRINTF # undef vfprintf # define vfprintf trio_vfprintf #endif #ifndef HAVE_SPRINTF # undef sprintf # define sprintf trio_sprintf #endif #ifndef HAVE_VSPRINTF # undef vsprintf # define vsprintf trio_vsprintf #endif #ifndef HAVE_SNPRINTF # undef snprintf # define snprintf trio_snprintf #endif #ifndef HAVE_VSNPRINTF # undef vsnprintf # define vsnprintf trio_vsnprintf #endif #ifndef HAVE_SCANF # undef scanf # define scanf trio_scanf #endif #ifndef HAVE_VSCANF # undef vscanf # define vscanf trio_vscanf #endif #ifndef HAVE_FSCANF # undef fscanf # define fscanf trio_fscanf #endif #ifndef HAVE_VFSCANF # undef vfscanf # define vfscanf trio_vfscanf #endif #ifndef HAVE_SSCANF # undef sscanf # define sscanf trio_sscanf #endif #ifndef HAVE_VSSCANF # undef vsscanf # define vsscanf trio_vsscanf #endif /* These aren't stdio functions, but we make them look similar */ #undef dprintf #define dprintf trio_dprintf #undef vdprintf #define vdprintf trio_vdprintf #undef aprintf #define aprintf trio_aprintf #undef vaprintf #define vaprintf trio_vaprintf #undef asprintf #define asprintf trio_asprintf #undef vasprintf #define vasprintf trio_vasprintf #undef dscanf #define dscanf trio_dscanf #undef vdscanf #define vdscanf trio_vdscanf #endif #ifdef __cplusplus } /* extern "C" */ #endif #endif /* WITHOUT_TRIO */ #endif /* TRIO_TRIO_H */ ))entry(name triodef.hnode(typeregularcontents&/************************************************************************* * * $Id$ * * Copyright (C) 2001 Bjorn Reese * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND * CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER. * ************************************************************************/ #ifndef TRIO_TRIODEF_H #define TRIO_TRIODEF_H /************************************************************************* * Compiler support detection */ #if defined(__GNUC__) # define TRIO_COMPILER_GCC #endif #if defined(__SUNPRO_CC) # define TRIO_COMPILER_SUNPRO __SUNPRO_CC #else # if defined(__SUNPRO_C) # define TRIO_COMPILER_SUNPRO __SUNPRO_C # endif #endif #if defined(__xlC__) || defined(__IBMC__) || defined(__IBMCPP__) # define TRIO_COMPILER_XLC #else # if defined(_AIX) && !defined(__GNUC__) # define TRIO_COMPILER_XLC /* Workaround for old xlc */ # endif #endif #if defined(__DECC) || defined(__DECCXX) # define TRIO_COMPILER_DECC #else # if defined(__osf__) && defined(__LANGUAGE_C__) && !defined(__GNUC__) # define TRIO_COMPILER_DECC /* Workaround for old DEC C compilers */ # endif #endif #if defined(__HP_aCC) || defined(__HP_cc) # define TRIO_COMPILER_HP #endif #if defined(sgi) || defined(__sgi) # define TRIO_COMPILER_MIPSPRO #endif #if defined(_MSC_VER) # define TRIO_COMPILER_MSVC #endif #if defined(__BORLANDC__) # define TRIO_COMPILER_BCB #endif /************************************************************************* * Platform support detection */ #if defined(VMS) || defined(__VMS) # define TRIO_PLATFORM_VMS #endif #if defined(unix) || defined(__unix) || defined(__unix__) # define TRIO_PLATFORM_UNIX #endif #if defined(TRIO_COMPILER_XLC) || defined(_AIX) # define TRIO_PLATFORM_UNIX #endif #if defined(TRIO_COMPILER_DECC) || defined(__osf___) # if !defined(TRIO_PLATFORM_VMS) # define TRIO_PLATFORM_UNIX # endif #endif #if defined(__NetBSD__) # define TRIO_PLATFORM_UNIX #endif #if defined(__Lynx__) # define TRIO_PLATFORM_UNIX # define TRIO_PLATFORM_LYNX #endif #if defined(__APPLE__) && defined(__MACH__) # define TRIO_PLATFORM_UNIX #endif #if defined(__QNX__) # define TRIO_PLATFORM_UNIX # define TRIO_PLATFORM_QNX #endif #if defined(__CYGWIN__) # define TRIO_PLATFORM_UNIX #endif #if defined(AMIGA) && defined(TRIO_COMPILER_GCC) # define TRIO_PLATFORM_UNIX #endif #if defined(TRIO_COMPILER_MSVC) || defined(WIN32) || defined(_WIN32) # define TRIO_PLATFORM_WIN32 #endif #if defined(_WIN32_WCE) # define TRIO_PLATFORM_WINCE #endif #if defined(mpeix) || defined(__mpexl) # define TRIO_PLATFORM_MPEIX #endif #if defined(_AIX) # define TRIO_PLATFORM_AIX #endif #if defined(__hpux) # define TRIO_PLATFORM_HPUX #endif #if defined(sun) || defined(__sun__) # if defined(__SVR4) || defined(__svr4__) # define TRIO_PLATFORM_SOLARIS # else # define TRIO_PLATFORM_SUNOS # endif #endif #if defined(__powerpc) || defined(__powerpc__) || defined(_ARCH_PPC) # define TRIO_CPU_POWERPC #endif #if defined(__sparc) || defined(__sparc__) # define TRIO_CPU_SPARC #endif #if defined(__s390x__) || defined(__zarch__) || defined(__SYSC_ZARCH__) # define TRIO_CPU_SYSTEMZ #endif /************************************************************************* * Standards support detection */ #if defined(__STDC__) \ || defined(_MSC_EXTENSIONS) \ || defined(TRIO_COMPILER_BCB) # define PREDEF_STANDARD_C89 #endif #if defined(__STDC_VERSION__) # define PREDEF_STANDARD_C90 #endif #if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199409L) # define PREDEF_STANDARD_C94 #endif #if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) # define PREDEF_STANDARD_C99 #endif #if defined(TRIO_COMPILER_SUNPRO) && (TRIO_COMPILER_SUNPRO >= 0x420) # if !defined(PREDEF_STANDARD_C94) # define PREDEF_STANDARD_C94 # endif #endif #if defined(__cplusplus) # define PREDEF_STANDARD_CXX #endif #if defined(__cplusplus) && (__cplusplus >= 199711L) # define PREDEF_STANDARD_CXX89 #endif #if defined(TRIO_PLATFORM_UNIX) # include #endif #if defined(_POSIX_VERSION) # define PREDEF_STANDARD_POSIX _POSIX_VERSION # if (_POSIX_VERSION >= 199506L) # define PREDEF_STANDARD_POSIX_1996 # endif #endif #if (_XOPEN_VERSION - 0 >= 3) || defined(_XOPEN_XPG3) # define PREDEF_STANDARD_XPG3 #endif #if (_XOPEN_VERSION - 0 >= 4) || defined(_XOPEN_XPG4) # define PREDEF_STANDARD_XPG4 #endif #if (_XOPEN_VERSION - 0 > 4) \ || (defined(_XOPEN_UNIX) && (_XOPEN_VERSION - 0 == 4)) # define PREDEF_STANDARD_UNIX95 #endif #if (_XOPEN_VERSION - 0 >= 500) # define PREDEF_STANDARD_UNIX98 #endif #if (_XOPEN_VERSION - 0 >= 600) # define PREDEF_STANDARD_UNIX03 #endif /************************************************************************* * Generic defines */ #if !defined(TRIO_PUBLIC) /* Based on http://gcc.gnu.org/wiki/Visibility */ # if defined(TRIO_PLATFORM_WIN32) || defined (__CYGWIN__) # if defined(BUILDING_DLL) # if defined(TRIO_COMPILER_GCC) # define TRIO_PUBLIC __attribute__ ((dllexport)) # else # define TRIO_PUBLIC __declspec(dllexport) # endif # else # if defined(TRIO_COMPILER_GCC) # define TRIO_PUBLIC __attribute__ ((dllimport)) # else # define TRIO_PUBLIC __declspec(dllimport) # endif # endif # else # if defined(TRIO_COMPILER_GCC) && __GNUC__ >= 4 # define TRIO_PUBLIC __attribute__ ((visibility ("default"))) # define TRIO_PRIVATE __attribute__ ((visibility ("hidden"))) # else # define TRIO_PUBLIC # endif # endif #endif #if !defined(TRIO_PRIVATE) # define TRIO_PRIVATE static #endif #if !(defined(PREDEF_STANDARD_C89) || defined(PREDEF_STANDARD_CXX)) # define TRIO_COMPILER_ANCIENT #endif #if defined(TRIO_COMPILER_ANCIENT) # define TRIO_CONST # define TRIO_VOLATILE # define TRIO_SIGNED typedef double trio_long_double_t; typedef char * trio_pointer_t; # define TRIO_SUFFIX_LONG(x) x # define TRIO_PROTO(x) () # define TRIO_NOARGS # define TRIO_ARGS1(list,a1) list a1; # define TRIO_ARGS2(list,a1,a2) list a1; a2; # define TRIO_ARGS3(list,a1,a2,a3) list a1; a2; a3; # define TRIO_ARGS4(list,a1,a2,a3,a4) list a1; a2; a3; a4; # define TRIO_ARGS5(list,a1,a2,a3,a4,a5) list a1; a2; a3; a4; a5; # define TRIO_ARGS6(list,a1,a2,a3,a4,a5,a6) list a1; a2; a3; a4; a5; a6; # define TRIO_ARGS7(list,a1,a2,a3,a4,a5,a6,a7) list a1; a2; a3; a4; a5; a6; a7; # define TRIO_ARGS8(list,a1,a2,a3,a4,a5,a6,a7,a8) list a1; a2; a3; a4; a5; a6; a7; a8; # define TRIO_VARGS2(list,a1,a2) list a1; a2 # define TRIO_VARGS3(list,a1,a2,a3) list a1; a2; a3 # define TRIO_VARGS4(list,a1,a2,a3,a4) list a1; a2; a3; a4 # define TRIO_VARGS5(list,a1,a2,a3,a4,a5) list a1; a2; a3; a4; a5 # define TRIO_VA_DECL va_dcl # define TRIO_VA_START(x,y) va_start(x) # define TRIO_VA_END(x) va_end(x) #else /* ANSI C */ # define TRIO_CONST const # define TRIO_VOLATILE volatile # define TRIO_SIGNED signed typedef long double trio_long_double_t; typedef void * trio_pointer_t; # define TRIO_SUFFIX_LONG(x) x ## L # define TRIO_PROTO(x) x # define TRIO_NOARGS void # define TRIO_ARGS1(list,a1) (a1) # define TRIO_ARGS2(list,a1,a2) (a1,a2) # define TRIO_ARGS3(list,a1,a2,a3) (a1,a2,a3) # define TRIO_ARGS4(list,a1,a2,a3,a4) (a1,a2,a3,a4) # define TRIO_ARGS5(list,a1,a2,a3,a4,a5) (a1,a2,a3,a4,a5) # define TRIO_ARGS6(list,a1,a2,a3,a4,a5,a6) (a1,a2,a3,a4,a5,a6) # define TRIO_ARGS7(list,a1,a2,a3,a4,a5,a6,a7) (a1,a2,a3,a4,a5,a6,a7) # define TRIO_ARGS8(list,a1,a2,a3,a4,a5,a6,a7,a8) (a1,a2,a3,a4,a5,a6,a7,a8) # define TRIO_VARGS2 TRIO_ARGS2 # define TRIO_VARGS3 TRIO_ARGS3 # define TRIO_VARGS4 TRIO_ARGS4 # define TRIO_VARGS5 TRIO_ARGS5 # define TRIO_VA_DECL ... # define TRIO_VA_START(x,y) va_start(x,y) # define TRIO_VA_END(x) va_end(x) #endif #if defined(PREDEF_STANDARD_C99) || defined(PREDEF_STANDARD_CXX) # define TRIO_INLINE inline #else # if defined(TRIO_COMPILER_GCC) # define TRIO_INLINE __inline__ # endif # if defined(TRIO_COMPILER_MSVC) # define TRIO_INLINE _inline # endif # if defined(TRIO_COMPILER_BCB) # define TRIO_INLINE __inline # endif #endif #if !defined(TRIO_INLINE) # define TRIO_INLINE #endif /************************************************************************* * Workarounds */ #if defined(TRIO_PLATFORM_VMS) /* * Computations done with constants at compile time can trigger these * even when compiling with IEEE enabled. */ # pragma message disable (UNDERFLOW, FLOATOVERFL) # if (__CRTL_VER < 80210001) /* * Although the compiler supports C99 language constructs, the C * run-time library does not contain all C99 functions. */ # if defined(PREDEF_STANDARD_C99) # undef PREDEF_STANDARD_C99 # endif # endif #endif /* * Not all preprocessors supports the LL token. */ #if defined(TRIO_COMPILER_MSVC) || defined(TRIO_COMPILER_BCB) #else # define TRIO_COMPILER_SUPPORTS_LL #endif #if defined(__CYGWIN__) /* * Cygwin defines the macros for hosted C99, but does not support certain * long double math functions. */ # include # define TRIO_CYGWIN_VERSION_API CYGWIN_VERSION_API_MAJOR * 1000 + \ CYGWIN_VERSION_API_MINOR /* * Please change the version number below when the Cygwin API supports * long double math functions (powl, fmodl, etc.) */ # if TRIO_CYGWIN_VERSION_API < 99999999 # define TRIO_NO_FLOORL 1 # define TRIO_NO_CEILL 1 # define TRIO_NO_POWL 1 # define TRIO_NO_FMODL 1 # define TRIO_NO_LOG10L 1 # endif #endif # if defined(TRIO_CPU_POWERPC) || defined(TRIO_CPU_SPARC) || defined(TRIO_CPU_SYSTEMZ) # define TRIO_DOUBLE_DOUBLE # endif #endif /* TRIO_TRIODEF_H */ ))entry(name trionan.hnode(typeregularcontentsT/************************************************************************* * * $Id$ * * Copyright (C) 2001 Bjorn Reese * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND * CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER. * ************************************************************************/ #ifndef TRIO_TRIONAN_H #define TRIO_TRIONAN_H #include "triodef.h" #ifdef __cplusplus extern "C" { #endif #if !defined(TRIO_PUBLIC_NAN) # if !defined(TRIO_PUBLIC) # define TRIO_PUBLIC # endif # define TRIO_PUBLIC_NAN TRIO_PUBLIC #endif enum { TRIO_FP_INFINITE, TRIO_FP_NAN, TRIO_FP_NORMAL, TRIO_FP_SUBNORMAL, TRIO_FP_ZERO }; /************************************************************************* * Dependencies */ #if defined(TRIO_EMBED_NAN) /* * The application that trionan is embedded in must define which functions * it uses. * * The following resolves internal dependencies. */ # if defined(TRIO_FUNC_ISNAN) \ || defined(TRIO_FUNC_ISINF) # if !defined(TRIO_FUNC_FPCLASSIFY_AND_SIGNBIT) # define TRIO_FUNC_FPCLASSIFY_AND_SIGNBIT # endif # endif # if defined(TRIO_FUNC_NAN) # if !defined(TRIO_FUNC_PINF) # define TRIO_FUNC_PINF # endif # endif # if defined(TRIO_FUNC_NINF) # if !defined(TRIO_FUNC_PINF) # define TRIO_FUNC_PINF # endif # endif #else /* * When trionan is not embedded all all functions are defined. */ # define TRIO_FUNC_NAN # define TRIO_FUNC_PINF # define TRIO_FUNC_NINF # define TRIO_FUNC_NZERO # define TRIO_FUNC_ISNAN # define TRIO_FUNC_ISINF # define TRIO_FUNC_ISFINITE # define TRIO_FUNC_SIGNBIT # define TRIO_FUNC_FPCLASSIFY # define TRIO_FUNC_FPCLASSIFY_AND_SIGNBIT #endif /************************************************************************* * Functions */ /* * Return NaN (Not-a-Number). */ #if defined(TRIO_FUNC_NAN) TRIO_PUBLIC_NAN double trio_nan TRIO_PROTO((void)); #endif /* * Return positive infinity. */ #if defined(TRIO_FUNC_PINF) TRIO_PUBLIC_NAN double trio_pinf TRIO_PROTO((void)); #endif /* * Return negative infinity. */ #if defined(TRIO_FUNC_NINF) TRIO_PUBLIC_NAN double trio_ninf TRIO_PROTO((void)); #endif /* * Return negative zero. */ #if defined(TRIO_FUNC_NZERO) TRIO_PUBLIC_NAN double trio_nzero TRIO_PROTO((TRIO_NOARGS)); #endif /* * If number is a NaN return non-zero, otherwise return zero. */ #if defined(TRIO_FUNC_ISNAN) TRIO_PUBLIC_NAN int trio_isnan TRIO_PROTO((double number)); #endif /* * If number is positive infinity return 1, if number is negative * infinity return -1, otherwise return 0. */ #if defined(TRIO_FUNC_ISINF) TRIO_PUBLIC_NAN int trio_isinf TRIO_PROTO((double number)); #endif /* * If number is finite return non-zero, otherwise return zero. */ #if defined(TRIO_FUNC_ISFINITE) TRIO_PUBLIC_NAN int trio_isfinite TRIO_PROTO((double number)); #endif #if defined(TRIO_FUNC_SIGNBIT) TRIO_PUBLIC_NAN int trio_signbit TRIO_PROTO((double number)); #endif #if defined(TRIO_FUNC_FPCLASSIFY) TRIO_PUBLIC_NAN int trio_fpclassify TRIO_PROTO((double number)); #endif #if defined(TRIO_FUNC_FPCLASSIFY_AND_SIGNBIT) TRIO_PUBLIC_NAN int trio_fpclassify_and_signbit TRIO_PROTO((double number, int *is_negative)); #endif #ifdef __cplusplus } #endif #endif /* TRIO_TRIONAN_H */ ))entry(nametriop.hnode(typeregularcontents;/************************************************************************* * * $Id$ * * Copyright (C) 2000 Bjorn Reese and Daniel Stenberg. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND * CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER. * ************************************************************************ * * Private functions, types, etc. used for callback functions. * * The ref pointer is an opaque type and should remain as such. * Private data must only be accessible through the getter and * setter functions. * ************************************************************************/ #ifndef TRIO_TRIOP_H #define TRIO_TRIOP_H #include "triodef.h" #include #if defined(TRIO_COMPILER_ANCIENT) # include #else # include #endif #ifdef __cplusplus extern "C" { #endif /************************************************************************* * Supported standards */ /* * TRIO_C99 (=0 or =1) * * Define this to 0 to disable C99 format specifier extensions, or * define to 1 to enable them. The format specifiers that are * disabled by this switch are labelled with [C99] in the format * specifier documentation. */ #if !defined(TRIO_C99) # define TRIO_C99 1 #endif /* * TRIO_BSD (=0 or =1) * * Define this to 0 to disable BSD format specifier extensions, or * define to 1 to enable them. The format specifiers that are * disabled by this switch are labelled with [BSD] in the format * specifier documentation. */ #if !defined(TRIO_BSD) # define TRIO_BSD 1 #endif /* * TRIO_GNU (=0 or =1) * * Define this to 0 to disable GNU format specifier extensions, or * define to 1 to enable them. The format specifiers that are * disabled by this switch are labelled with [GNU] in the format * specifier documentation. */ #if !defined(TRIO_GNU) # define TRIO_GNU 1 #endif /* * TRIO_MISC (=0 or =1) * * Define this to 0 to disable miscellaneous format specifier * extensions, or define to 1 to enable them. The format specifiers * that are disabled by this switch are labelled with [MISC] in the * format specifier documentation. */ #if !defined(TRIO_MISC) # define TRIO_MISC 1 #endif /* * TRIO_UNIX98 (=0 or =1) * * Define this to 0 to disable UNIX98 format specifier extensions, * or define to 1 to enable them. The format specifiers that are * disabled by this switch are labelled with [UNIX98] in the format * specifier documentation. */ #if !defined(TRIO_UNIX98) # define TRIO_UNIX98 1 #endif /* * TRIO_MICROSOFT (=0 or =1) * * Define this to 0 to disable Microsoft Visual C format specifier * extensions, or define to 1 to enable them. The format specifiers * that are disabled by this switch are labelled with [MSVC] in the * format specifier documentation. */ #if !defined(TRIO_MICROSOFT) # define TRIO_MICROSOFT 1 #endif /* * TRIO_EXTENSION (=0 or =1) * * Define this to 0 to disable Trio-specific extensions, or define * to 1 to enable them. This has two effects: it controls whether * or not the Trio user-defined formating mechanism * (trio_register() etc) is supported, and it enables or disables * Trio's own format specifier extensions. The format specifiers * that are disabled by this switch are labelled with [TRIO] in * the format specifier documentation. */ #if !defined(TRIO_EXTENSION) # define TRIO_EXTENSION 1 #endif /* * TRIO_DEPRECATED (=0 or =1) * * Define this to 0 to disable deprecated functionality, or define * to 1 to enable them. */ #if !defined(TRIO_DEPRECATED) # define TRIO_DEPRECATED 1 #endif /************************************************************************* * Features */ #if defined(TRIO_SNPRINTF_ONLY) # define TRIO_FEATURE_SCANF 0 # define TRIO_FEATURE_FILE 0 # define TRIO_FEATURE_STDIO 0 # define TRIO_FEATURE_FD 0 # define TRIO_FEATURE_DYNAMICSTRING 0 # define TRIO_FEATURE_CLOSURE 0 # define TRIO_FEATURE_ARGFUNC 0 # define TRIO_FEATURE_STRERR 0 # define TRIO_FEATURE_LOCALE 0 # define TRIO_EMBED_NAN 1 # define TRIO_EMBED_STRING 1 #endif /* * TRIO_FEATURE_SCANF (=0 or =1) * * Define this to 0 to disable all the scanf() variants, or define to 1 * to enable them. */ #if !defined(TRIO_FEATURE_SCANF) # define TRIO_FEATURE_SCANF 1 #endif /* * TRIO_FEATURE_FILE (=0 or =1) * * Define this to 0 to disable compilation of the trio_fprintf() and * trio_fscanf() family of functions, or define to 1 to enable them. * * This may be useful on an embedded platform with no filesystem. * Note that trio_printf() uses fwrite to write to stdout, so if you * do not have an implementation of fwrite() at all then you must also * define TRIO_FEATURE_STDIO to 0. */ #if !defined(TRIO_FEATURE_FILE) # define TRIO_FEATURE_FILE 1 #endif /* * TRIO_FEATURE_STDIO (=0 or =1) * * Define this to 0 to disable compilation of the trio_printf() and * trio_scanf() family of functions, or define to 1 to enable them. * * This may be useful on an embedded platform with no standard I/O. */ #if !defined(TRIO_FEATURE_STDIO) # define TRIO_FEATURE_STDIO 1 #endif /* * TRIO_FEATURE_FD (=0 or =1) * * Define this to 0 to disable compilation of the trio_dprintf() and * trio_dscanf() family of functions, or define to 1 to enable them. * * This may be useful on an embedded platform with no filesystem, or on * a platform that supports file I/O using FILE* but not using raw file * descriptors. */ #if !defined(TRIO_FEATURE_FD) # define TRIO_FEATURE_FD 1 #endif /* * TRIO_FEATURE_DYNAMICSTRING (=0 or =1) * * Define this to 0 to disable compilation of the trio_aprintf() * family of functions, or define to 1 to enable them. * * If you define both this and TRIO_MINIMAL to 0, then Trio will never * call malloc or free. */ #if !defined(TRIO_FEATURE_DYNAMICSTRING) # define TRIO_FEATURE_DYNAMICSTRING 1 #endif /* * TRIO_FEATURE_CLOSURE (=0 or =1) * * Define this to 0 to disable compilation of the trio_cprintf() and * trio_cscanf() family of functions, or define to 1 to enable them. * * These functions are rarely needed. This saves a (small) amount of code. */ #if !defined(TRIO_FEATURE_CLOSURE) # define TRIO_FEATURE_CLOSURE 1 #endif /* * TRIO_FEATURE_ARGFUNC (=0 or =1) * * Define this to 0 to disable compilation of trio_cprintff() and * trio_cscanff() functions and related code (might have a tiny * performance gain), or define to 1 to enable them. * * This functionality is needed only if you have to fetch the arguments using * a pull model instead of passing them all at once (for example if you plan * to plug the library into a script interpreter or validate the types). * * Only the closure family of functions are available with this interface, * because if you need this, you usually provide custom input/output * handling too (and so this forces TRIO_FEATURE_CLOSURE to enabled). */ #if !defined(TRIO_FEATURE_ARGFUNC) # define TRIO_FEATURE_ARGFUNC 1 #endif #if TRIO_FEATURE_ARGFUNC # undef TRIO_FEATURE_CLOSURE # define TRIO_FEATURE_CLOSURE 1 #endif /* * TRIO_FEATURE_ERRORCODE (=0 or =1) * * Define this to 0 to return -1 from the print and scan function on * error, or define to 1 to return a negative number with debugging * information as part of the return code. * * If enabled, the return code will be a negative number, which encodes * an error code and an error location. These can be decoded with the * TRIO_ERROR_CODE and TRIO_ERROR_POSITION macros. */ #if defined(TRIO_ERRORS) # define TRIO_FEATURE_ERRORCODE TRIO_ERRORS #endif #if !defined(TRIO_FEATURE_ERRORCODE) # define TRIO_FEATURE_ERRORCODE 1 #endif /* * TRIO_FEATURE_STRERR (=0 or =1) * * Define this to 0 if you do not use trio_strerror(), or define to 1 if * you do use it. * * This saves a (small) amount of code. */ #if !defined(TRIO_FEATURE_STRERR) # define TRIO_FEATURE_STRERR 1 #endif /* * TRIO_FEATURE_FLOAT (=0 or =1) * * Define this to 0 to disable all floating-point support, or define * to 1 to enable it. * * This is useful in restricted embedded platforms that do not support * floating-point. Obviously you cannot use floating-point format * specifiers if you define this. * * Do not compile trionan.c if you disable this. */ #if !defined(TRIO_FEATURE_FLOAT) # define TRIO_FEATURE_FLOAT 1 #endif /* * TRIO_FEATURE_LOCALE (=0 or =1) * * Define this to 0 to disable customized locale support, or define * to 1 to enable it. * * This saves a (small) amount of code. */ #if !defined(TRIO_FEATURE_LOCALE) # define TRIO_FEATURE_LOCALE 1 #endif /* * TRIO_MINIMAL * * Define this to disable building the public trionan.h and triostr.h. * If you define this, then you must not compile trionan.c and triostr.c * separately. */ #if defined(TRIO_MINIMAL) # if !defined(TRIO_EMBED_NAN) # define TRIO_EMBED_NAN # endif # if !defined(TRIO_EMBED_STRING) # define TRIO_EMBED_STRING # endif #endif /* Does not work yet. Do not enable */ #ifndef TRIO_FEATURE_WIDECHAR # define TRIO_FEATURE_WIDECHAR 0 #endif /************************************************************************* * Mapping standards to internal features */ #if !defined(TRIO_FEATURE_HEXFLOAT) # define TRIO_FEATURE_HEXFLOAT (TRIO_C99 && TRIO_FEATURE_FLOAT) #endif #if !defined(TRIO_FEATURE_LONGDOUBLE) # define TRIO_FEATURE_LONGDOUBLE TRIO_FEATURE_FLOAT #endif #if !defined(TRIO_FEATURE_ERRNO) # define TRIO_FEATURE_ERRNO TRIO_GNU #endif #if !defined(TRIO_FEATURE_QUAD) # define TRIO_FEATURE_QUAD (TRIO_BSD || TRIO_GNU) #endif #if !defined(TRIO_FEATURE_SIZE_T) # define TRIO_FEATURE_SIZE_T TRIO_C99 #endif #if !defined(TRIO_FEATURE_SIZE_T_UPPER) # define TRIO_FEATURE_SIZE_T_UPPER TRIO_GNU #endif #if !defined(TRIO_FEATURE_PTRDIFF_T) # define TRIO_FEATURE_PTRDIFF_T TRIO_C99 #endif #if !defined(TRIO_FEATURE_INTMAX_T) # define TRIO_FEATURE_INTMAX_T TRIO_C99 #endif #if !defined(TRIO_FEATURE_FIXED_SIZE) # define TRIO_FEATURE_FIXED_SIZE TRIO_MICROSOFT #endif #if !defined(TRIO_FEATURE_POSITIONAL) # define TRIO_FEATURE_POSITIONAL TRIO_UNIX98 #endif #if !defined(TRIO_FEATURE_USER_DEFINED) # define TRIO_FEATURE_USER_DEFINED TRIO_EXTENSION #endif #if !defined(TRIO_FEATURE_BINARY) # define TRIO_FEATURE_BINARY TRIO_EXTENSION #endif #if !defined(TRIO_FEATURE_QUOTE) # define TRIO_FEATURE_QUOTE TRIO_EXTENSION #endif #if !defined(TRIO_FEATURE_STICKY) # define TRIO_FEATURE_STICKY TRIO_EXTENSION #endif #if !defined(TRIO_FEATURE_VARSIZE) # define TRIO_FEATURE_VARSIZE TRIO_EXTENSION #endif #if !defined(TRIO_FEATURE_ROUNDING) # define TRIO_FEATURE_ROUNDING TRIO_EXTENSION #endif /************************************************************************* * Memory handling */ #ifndef TRIO_MALLOC # define TRIO_MALLOC(n) malloc(n) #endif #ifndef TRIO_REALLOC # define TRIO_REALLOC(x,n) realloc((x),(n)) #endif #ifndef TRIO_FREE # define TRIO_FREE(x) free(x) #endif /************************************************************************* * User-defined specifiers */ typedef int (*trio_callback_t) TRIO_PROTO((trio_pointer_t)); trio_pointer_t trio_register TRIO_PROTO((trio_callback_t callback, const char *name)); void trio_unregister TRIO_PROTO((trio_pointer_t handle)); TRIO_CONST char *trio_get_format TRIO_PROTO((trio_pointer_t ref)); TRIO_CONST trio_pointer_t trio_get_argument TRIO_PROTO((trio_pointer_t ref)); /* Modifiers */ int trio_get_width TRIO_PROTO((trio_pointer_t ref)); void trio_set_width TRIO_PROTO((trio_pointer_t ref, int width)); int trio_get_precision TRIO_PROTO((trio_pointer_t ref)); void trio_set_precision TRIO_PROTO((trio_pointer_t ref, int precision)); int trio_get_base TRIO_PROTO((trio_pointer_t ref)); void trio_set_base TRIO_PROTO((trio_pointer_t ref, int base)); int trio_get_padding TRIO_PROTO((trio_pointer_t ref)); void trio_set_padding TRIO_PROTO((trio_pointer_t ref, int is_padding)); int trio_get_short TRIO_PROTO((trio_pointer_t ref)); /* h */ void trio_set_shortshort TRIO_PROTO((trio_pointer_t ref, int is_shortshort)); int trio_get_shortshort TRIO_PROTO((trio_pointer_t ref)); /* hh */ void trio_set_short TRIO_PROTO((trio_pointer_t ref, int is_short)); int trio_get_long TRIO_PROTO((trio_pointer_t ref)); /* l */ void trio_set_long TRIO_PROTO((trio_pointer_t ref, int is_long)); int trio_get_longlong TRIO_PROTO((trio_pointer_t ref)); /* ll */ void trio_set_longlong TRIO_PROTO((trio_pointer_t ref, int is_longlong)); int trio_get_longdouble TRIO_PROTO((trio_pointer_t ref)); /* L */ void trio_set_longdouble TRIO_PROTO((trio_pointer_t ref, int is_longdouble)); int trio_get_alternative TRIO_PROTO((trio_pointer_t ref)); /* # */ void trio_set_alternative TRIO_PROTO((trio_pointer_t ref, int is_alternative)); int trio_get_alignment TRIO_PROTO((trio_pointer_t ref)); /* - */ void trio_set_alignment TRIO_PROTO((trio_pointer_t ref, int is_leftaligned)); int trio_get_spacing TRIO_PROTO((trio_pointer_t ref)); /* (space) */ void trio_set_spacing TRIO_PROTO((trio_pointer_t ref, int is_space)); int trio_get_sign TRIO_PROTO((trio_pointer_t ref)); /* + */ void trio_set_sign TRIO_PROTO((trio_pointer_t ref, int is_showsign)); #if TRIO_FEATURE_QUOTE int trio_get_quote TRIO_PROTO((trio_pointer_t ref)); /* ' */ void trio_set_quote TRIO_PROTO((trio_pointer_t ref, int is_quote)); #endif int trio_get_upper TRIO_PROTO((trio_pointer_t ref)); void trio_set_upper TRIO_PROTO((trio_pointer_t ref, int is_upper)); #if TRIO_FEATURE_INTMAX_T int trio_get_largest TRIO_PROTO((trio_pointer_t ref)); /* j */ void trio_set_largest TRIO_PROTO((trio_pointer_t ref, int is_largest)); #endif #if TRIO_FEATURE_PTRDIFF_T int trio_get_ptrdiff TRIO_PROTO((trio_pointer_t ref)); /* t */ void trio_set_ptrdiff TRIO_PROTO((trio_pointer_t ref, int is_ptrdiff)); #endif #if TRIO_FEATURE_SIZE_T int trio_get_size TRIO_PROTO((trio_pointer_t ref)); /* z / Z */ void trio_set_size TRIO_PROTO((trio_pointer_t ref, int is_size)); #endif /* Printing */ int trio_print_ref TRIO_PROTO((trio_pointer_t ref, const char *format, ...)); int trio_vprint_ref TRIO_PROTO((trio_pointer_t ref, const char *format, va_list args)); int trio_printv_ref TRIO_PROTO((trio_pointer_t ref, const char *format, trio_pointer_t *args)); void trio_print_int TRIO_PROTO((trio_pointer_t ref, int number)); void trio_print_uint TRIO_PROTO((trio_pointer_t ref, unsigned int number)); /* void trio_print_long TRIO_PROTO((trio_pointer_t ref, long number)); */ /* void trio_print_ulong TRIO_PROTO((trio_pointer_t ref, unsigned long number)); */ void trio_print_double TRIO_PROTO((trio_pointer_t ref, double number)); void trio_print_string TRIO_PROTO((trio_pointer_t ref, TRIO_CONST char *string)); void trio_print_pointer TRIO_PROTO((trio_pointer_t ref, trio_pointer_t pointer)); #ifdef __cplusplus } /* extern "C" */ #endif #endif /* TRIO_TRIOP_H */ ))entry(name triostr.hnode(typeregularcontents@/************************************************************************* * * $Id$ * * Copyright (C) 2001 Bjorn Reese and Daniel Stenberg. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND * CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER. * ************************************************************************/ #ifndef TRIO_TRIOSTR_H #define TRIO_TRIOSTR_H /* * Documentation is located in triostr.c */ #include #include #include #include #include "triodef.h" #include "triop.h" #ifdef __cplusplus extern "C" { #endif enum { TRIO_HASH_NONE = 0, TRIO_HASH_PLAIN, TRIO_HASH_TWOSIGNED }; #if !defined(TRIO_PUBLIC_STRING) # if !defined(TRIO_PUBLIC) # define TRIO_PUBLIC # endif # define TRIO_PUBLIC_STRING TRIO_PUBLIC #endif /************************************************************************* * Dependencies */ #if defined(TRIO_EMBED_STRING) /* * The application that triostr is embedded in must define which functions * it uses. * * The following resolves internal dependencies. */ # if defined(TRIO_FUNC_XSTRING_SET) # if !defined(TRIO_FUNC_DUPLICATE) # define TRIO_FUNC_DUPLICATE # endif # endif # if defined(TRIO_FUNC_DUPLICATE) \ || defined(TRIO_FUNC_DUPLICATE_MAX) \ || defined(TRIO_FUNC_STRING_DUPLICATE) \ || defined(TRIO_FUNC_XSTRING_DUPLICATE) # if !defined(TRIO_FUNC_CREATE) # define TRIO_FUNC_CREATE # endif # if !defined(TRIO_FUNC_COPY_MAX) # define TRIO_FUNC_COPY_MAX # endif # endif # if defined(TRIO_FUNC_STRING_CREATE) # if !defined(TRIO_FUNC_STRING_DESTROY) # define TRIO_FUNC_STRING_DESTROY # endif # endif # if defined(TRIO_FUNC_STRING_DESTROY) \ || defined(TRIO_FUNC_XSTRING_SET) # if !defined(TRIO_FUNC_DESTROY) # define TRIO_FUNC_DESTROY # endif # endif # if defined(TRIO_FUNC_EQUAL_LOCALE) \ || defined(TRIO_FUNC_STRING_EQUAL) \ || defined(TRIO_FUNC_XSTRING_EQUAL) # if !defined(TRIO_FUNC_EQUAL) # define TRIO_FUNC_EQUAL # endif # endif # if defined(TRIO_FUNC_EQUAL_CASE) \ || defined(TRIO_FUNC_STRING_EQUAL_CASE) \ || defined(TRIO_FUNC_XSTRING_EQUAL_CASE) # if !defined(TRIO_FUNC_EQUAL_CASE) # define TRIO_FUNC_EQUAL_CASE # endif # endif # if defined(TRIO_FUNC_SUBSTRING_MAX) \ || defined(TRIO_FUNC_STRING_EQUAL_MAX) \ || defined(TRIO_FUNC_XSTRING_EQUAL_MAX) # if !defined(TRIO_FUNC_EQUAL_MAX) # define TRIO_FUNC_EQUAL_MAX # endif # endif # if defined(TRIO_FUNC_TO_DOUBLE) \ || defined(TRIO_FUNC_TO_FLOAT) # if !defined(TRIO_FUNC_TO_LONG_DOUBLE) # define TRIO_FUNC_TO_LONG_DOUBLE # endif # endif # if defined(TRIO_FUNC_STRING_TERMINATE) # if !defined(TRIO_FUNC_XSTRING_APPEND_CHAR) # define TRIO_FUNC_XSTRING_APPEND_CHAR # endif # endif # if defined(TRIO_FUNC_XSTRING_APPEND_CHAR) # if !defined(TRIO_FUNC_STRING_SIZE) # define TRIO_FUNC_STRING_SIZE # endif # endif #else /* * When triostr is not embedded all functions are defined. */ # define TRIO_FUNC_APPEND # define TRIO_FUNC_APPEND_MAX # define TRIO_FUNC_CONTAINS # define TRIO_FUNC_COPY # define TRIO_FUNC_COPY_MAX # define TRIO_FUNC_CREATE # define TRIO_FUNC_DESTROY # define TRIO_FUNC_DUPLICATE # define TRIO_FUNC_DUPLICATE_MAX # define TRIO_FUNC_EQUAL # define TRIO_FUNC_EQUAL_CASE # define TRIO_FUNC_EQUAL_CASE_MAX # define TRIO_FUNC_EQUAL_LOCALE # define TRIO_FUNC_EQUAL_MAX # define TRIO_FUNC_ERROR # if !defined(TRIO_PLATFORM_WINCE) # define TRIO_FUNC_FORMAT_DATE_MAX # endif # define TRIO_FUNC_HASH # define TRIO_FUNC_INDEX # define TRIO_FUNC_INDEX_LAST # define TRIO_FUNC_LENGTH # define TRIO_FUNC_LENGTH_MAX # define TRIO_FUNC_LOWER # define TRIO_FUNC_MATCH # define TRIO_FUNC_MATCH_CASE # define TRIO_FUNC_SPAN_FUNCTION # define TRIO_FUNC_SUBSTRING # define TRIO_FUNC_SUBSTRING_MAX # define TRIO_FUNC_TO_DOUBLE # define TRIO_FUNC_TO_FLOAT # define TRIO_FUNC_TO_LONG # define TRIO_FUNC_TO_LONG_DOUBLE # define TRIO_FUNC_TO_LOWER # define TRIO_FUNC_TO_UNSIGNED_LONG # define TRIO_FUNC_TO_UPPER # define TRIO_FUNC_TOKENIZE # define TRIO_FUNC_UPPER # define TRIO_FUNC_STRING_APPEND # define TRIO_FUNC_STRING_CONTAINS # define TRIO_FUNC_STRING_COPY # define TRIO_FUNC_STRING_CREATE # define TRIO_FUNC_STRING_DESTROY # define TRIO_FUNC_STRING_DUPLICATE # define TRIO_FUNC_STRING_EQUAL # define TRIO_FUNC_STRING_EQUAL_CASE # define TRIO_FUNC_STRING_EQUAL_CASE_MAX # define TRIO_FUNC_STRING_EQUAL_MAX # define TRIO_FUNC_STRING_EXTRACT # if !defined(TRIO_PLATFORM_WINCE) # define TRIO_FUNC_STRING_FORMAT_DATE_MAX # endif # define TRIO_FUNC_STRING_GET # define TRIO_FUNC_STRING_INDEX # define TRIO_FUNC_STRING_INDEX_LAST # define TRIO_FUNC_STRING_LENGTH # define TRIO_FUNC_STRING_LOWER # define TRIO_FUNC_STRING_MATCH # define TRIO_FUNC_STRING_MATCH_CASE # define TRIO_FUNC_STRING_SIZE # define TRIO_FUNC_STRING_SUBSTRING # define TRIO_FUNC_STRING_TERMINATE # define TRIO_FUNC_STRING_UPPER # define TRIO_FUNC_XSTRING_APPEND # define TRIO_FUNC_XSTRING_APPEND_CHAR # define TRIO_FUNC_XSTRING_APPEND_MAX # define TRIO_FUNC_XSTRING_CONTAINS # define TRIO_FUNC_XSTRING_COPY # define TRIO_FUNC_XSTRING_DUPLICATE # define TRIO_FUNC_XSTRING_EQUAL # define TRIO_FUNC_XSTRING_EQUAL_CASE # define TRIO_FUNC_XSTRING_EQUAL_CASE_MAX # define TRIO_FUNC_XSTRING_EQUAL_MAX # define TRIO_FUNC_XSTRING_MATCH # define TRIO_FUNC_XSTRING_MATCH_CASE # define TRIO_FUNC_XSTRING_SET # define TRIO_FUNC_XSTRING_SUBSTRING #endif /************************************************************************* * String functions */ #if defined(TRIO_FUNC_APPEND) TRIO_PUBLIC_STRING int trio_append TRIO_PROTO((char *target, TRIO_CONST char *source)); #endif #if defined(TRIO_FUNC_APPEND_MAX) TRIO_PUBLIC_STRING int trio_append_max TRIO_PROTO((char *target, size_t max, TRIO_CONST char *source)); #endif #if defined(TRIO_FUNC_CONTAINS) TRIO_PUBLIC_STRING int trio_contains TRIO_PROTO((TRIO_CONST char *string, TRIO_CONST char *substring)); #endif #if defined(TRIO_FUNC_COPY) TRIO_PUBLIC_STRING int trio_copy TRIO_PROTO((char *target, TRIO_CONST char *source)); #endif #if defined(TRIO_FUNC_COPY_MAX) TRIO_PUBLIC_STRING int trio_copy_max TRIO_PROTO((char *target, size_t max, TRIO_CONST char *source)); #endif #if defined(TRIO_FUNC_CREATE) TRIO_PUBLIC_STRING char * trio_create TRIO_PROTO((size_t size)); #endif #if defined(TRIO_FUNC_DESTROY) TRIO_PUBLIC_STRING void trio_destroy TRIO_PROTO((char *string)); #endif #if defined(TRIO_FUNC_DUPLICATE) TRIO_PUBLIC_STRING char * trio_duplicate TRIO_PROTO((TRIO_CONST char *source)); #endif #if defined(TRIO_FUNC_DUPLICATE_MAX) TRIO_PUBLIC_STRING char * trio_duplicate_max TRIO_PROTO((TRIO_CONST char *source, size_t max)); #endif #if defined(TRIO_FUNC_EQUAL) TRIO_PUBLIC_STRING int trio_equal TRIO_PROTO((TRIO_CONST char *first, TRIO_CONST char *second)); #endif #if defined(TRIO_FUNC_EQUAL_CASE) TRIO_PUBLIC_STRING int trio_equal_case TRIO_PROTO((TRIO_CONST char *first, TRIO_CONST char *second)); #endif #if defined(TRIO_FUNC_EQUAL_CASE_MAX) TRIO_PUBLIC_STRING int trio_equal_case_max TRIO_PROTO((TRIO_CONST char *first, size_t max, TRIO_CONST char *second)); #endif #if defined(TRIO_FUNC_EQUAL_LOCALE) TRIO_PUBLIC_STRING int trio_equal_locale TRIO_PROTO((TRIO_CONST char *first, TRIO_CONST char *second)); #endif #if defined(TRIO_FUNC_EQUAL_MAX) TRIO_PUBLIC_STRING int trio_equal_max TRIO_PROTO((TRIO_CONST char *first, size_t max, TRIO_CONST char *second)); #endif #if defined(TRIO_FUNC_ERROR) TRIO_PUBLIC_STRING TRIO_CONST char * trio_error TRIO_PROTO((int)); #endif #if defined(TRIO_FUNC_FORMAT_DATE_MAX) TRIO_PUBLIC_STRING size_t trio_format_date_max TRIO_PROTO((char *target, size_t max, TRIO_CONST char *format, TRIO_CONST struct tm *datetime)); #endif #if defined(TRIO_FUNC_HASH) TRIO_PUBLIC_STRING unsigned long trio_hash TRIO_PROTO((TRIO_CONST char *string, int type)); #endif #if defined(TRIO_FUNC_INDEX) TRIO_PUBLIC_STRING char * trio_index TRIO_PROTO((TRIO_CONST char *string, int character)); #endif #if defined(TRIO_FUNC_INDEX_LAST) TRIO_PUBLIC_STRING char * trio_index_last TRIO_PROTO((TRIO_CONST char *string, int character)); #endif #if defined(TRIO_FUNC_LENGTH) TRIO_PUBLIC_STRING size_t trio_length TRIO_PROTO((TRIO_CONST char *string)); #endif #if defined(TRIO_FUNC_LENGTH_MAX) TRIO_PUBLIC_STRING size_t trio_length_max TRIO_PROTO((TRIO_CONST char *string, size_t max)); #endif #if defined(TRIO_FUNC_LOWER) TRIO_PUBLIC_STRING int trio_lower TRIO_PROTO((char *target)); #endif #if defined(TRIO_FUNC_MATCH) TRIO_PUBLIC_STRING int trio_match TRIO_PROTO((TRIO_CONST char *string, TRIO_CONST char *pattern)); #endif #if defined(TRIO_FUNC_MATCH_CASE) TRIO_PUBLIC_STRING int trio_match_case TRIO_PROTO((TRIO_CONST char *string, TRIO_CONST char *pattern)); #endif #if defined(TRIO_FUNC_SPAN_FUNCTION) TRIO_PUBLIC_STRING size_t trio_span_function TRIO_PROTO((char *target, TRIO_CONST char *source, int (*Function) TRIO_PROTO((int)))); #endif #if defined(TRIO_FUNC_SUBSTRING) TRIO_PUBLIC_STRING char * trio_substring TRIO_PROTO((TRIO_CONST char *string, TRIO_CONST char *substring)); #endif #if defined(TRIO_FUNC_SUBSTRING_MAX) TRIO_PUBLIC_STRING char * trio_substring_max TRIO_PROTO((TRIO_CONST char *string, size_t max, TRIO_CONST char *substring)); #endif #if defined(TRIO_FUNC_TO_DOUBLE) TRIO_PUBLIC_STRING double trio_to_double TRIO_PROTO((TRIO_CONST char *source, char **endp)); #endif #if defined(TRIO_FUNC_TO_FLOAT) TRIO_PUBLIC_STRING float trio_to_float TRIO_PROTO((TRIO_CONST char *source, char **endp)); #endif #if defined(TRIO_FUNC_TO_LONG) TRIO_PUBLIC_STRING long trio_to_long TRIO_PROTO((TRIO_CONST char *source, char **endp, int base)); #endif #if defined(TRIO_FUNC_TO_LOWER) TRIO_PUBLIC_STRING int trio_to_lower TRIO_PROTO((int source)); #endif #if defined(TRIO_FUNC_TO_LONG_DOUBLE) TRIO_PUBLIC_STRING trio_long_double_t trio_to_long_double TRIO_PROTO((TRIO_CONST char *source, char **endp)); #endif #if defined(TRIO_FUNC_TO_UNSIGNED_LONG) TRIO_PUBLIC_STRING unsigned long trio_to_unsigned_long TRIO_PROTO((TRIO_CONST char *source, char **endp, int base)); #endif #if defined(TRIO_FUNC_TO_UPPER) TRIO_PUBLIC_STRING int trio_to_upper TRIO_PROTO((int source)); #endif #if defined(TRIO_FUNC_TOKENIZE) TRIO_PUBLIC_STRING char * trio_tokenize TRIO_PROTO((char *string, TRIO_CONST char *delimiters)); #endif #if defined(TRIO_FUNC_UPPER) TRIO_PUBLIC_STRING int trio_upper TRIO_PROTO((char *target)); #endif /************************************************************************* * Dynamic string functions */ /* * Opaque type for dynamic strings */ typedef struct _trio_string_t trio_string_t; #if defined(TRIO_FUNC_STRING_APPEND) TRIO_PUBLIC_STRING int trio_string_append TRIO_PROTO((trio_string_t *self, trio_string_t *other)); #endif #if defined(TRIO_FUNC_STRING_CONTAINS) TRIO_PUBLIC_STRING int trio_string_contains TRIO_PROTO((trio_string_t *self, trio_string_t *other)); #endif #if defined(TRIO_FUNC_STRING_COPY) TRIO_PUBLIC_STRING int trio_string_copy TRIO_PROTO((trio_string_t *self, trio_string_t *other)); #endif #if defined(TRIO_FUNC_STRING_CREATE) TRIO_PUBLIC_STRING trio_string_t * trio_string_create TRIO_PROTO((int initial_size)); #endif #if defined(TRIO_FUNC_STRING_DESTROY) TRIO_PUBLIC_STRING void trio_string_destroy TRIO_PROTO((trio_string_t *self)); #endif #if defined(TRIO_FUNC_STRING_DUPLICATE) TRIO_PUBLIC_STRING trio_string_t * trio_string_duplicate TRIO_PROTO((trio_string_t *other)); #endif #if defined(TRIO_FUNC_STRING_EQUAL) TRIO_PUBLIC_STRING int trio_string_equal TRIO_PROTO((trio_string_t *self, trio_string_t *other)); #endif #if defined(TRIO_FUNC_STRING_EQUAL_MAX) TRIO_PUBLIC_STRING int trio_string_equal_max TRIO_PROTO((trio_string_t *self, size_t max, trio_string_t *second)); #endif #if defined(TRIO_FUNC_STRING_EQUAL_CASE) TRIO_PUBLIC_STRING int trio_string_equal_case TRIO_PROTO((trio_string_t *self, trio_string_t *other)); #endif #if defined(TRIO_FUNC_STRING_EQUAL_CASE_MAX) TRIO_PUBLIC_STRING int trio_string_equal_case_max TRIO_PROTO((trio_string_t *self, size_t max, trio_string_t *other)); #endif #if defined(TRIO_FUNC_STRING_EXTRACT) TRIO_PUBLIC_STRING char * trio_string_extract TRIO_PROTO((trio_string_t *self)); #endif #if defined(TRIO_FUNC_STRING_FORMAT_DATE_MAX) TRIO_PUBLIC_STRING size_t trio_string_format_date_max TRIO_PROTO((trio_string_t *self, size_t max, TRIO_CONST char *format, TRIO_CONST struct tm *datetime)); #endif #if defined(TRIO_FUNC_STRING_GET) TRIO_PUBLIC_STRING char * trio_string_get TRIO_PROTO((trio_string_t *self, int offset)); #endif #if defined(TRIO_FUNC_STRING_INDEX) TRIO_PUBLIC_STRING char * trio_string_index TRIO_PROTO((trio_string_t *self, int character)); #endif #if defined(TRIO_FUNC_STRING_INDEX_LAST) TRIO_PUBLIC_STRING char * trio_string_index_last TRIO_PROTO((trio_string_t *self, int character)); #endif #if defined(TRIO_FUNC_STRING_LENGTH) TRIO_PUBLIC_STRING int trio_string_length TRIO_PROTO((trio_string_t *self)); #endif #if defined(TRIO_FUNC_STRING_LOWER) TRIO_PUBLIC_STRING int trio_string_lower TRIO_PROTO((trio_string_t *self)); #endif #if defined(TRIO_FUNC_STRING_MATCH) TRIO_PUBLIC_STRING int trio_string_match TRIO_PROTO((trio_string_t *self, trio_string_t *other)); #endif #if defined(TRIO_FUNC_STRING_MATCH_CASE) TRIO_PUBLIC_STRING int trio_string_match_case TRIO_PROTO((trio_string_t *self, trio_string_t *other)); #endif #if defined(TRIO_FUNC_STRING_SIZE) TRIO_PUBLIC_STRING int trio_string_size TRIO_PROTO((trio_string_t *self)); #endif #if defined(TRIO_FUNC_STRING_SUBSTRING) TRIO_PUBLIC_STRING char * trio_string_substring TRIO_PROTO((trio_string_t *self, trio_string_t *other)); #endif #if defined(TRIO_FUNC_STRING_TERMINATE) TRIO_PUBLIC_STRING void trio_string_terminate TRIO_PROTO((trio_string_t *self)); #endif #if defined(TRIO_FUNC_STRING_UPPER) TRIO_PUBLIC_STRING int trio_string_upper TRIO_PROTO((trio_string_t *self)); #endif #if defined(TRIO_FUNC_XSTRING_APPEND) TRIO_PUBLIC_STRING int trio_xstring_append TRIO_PROTO((trio_string_t *self, TRIO_CONST char *other)); #endif #if defined(TRIO_FUNC_XSTRING_APPEND_CHAR) TRIO_PUBLIC_STRING int trio_xstring_append_char TRIO_PROTO((trio_string_t *self, char character)); #endif #if defined(TRIO_FUNC_XSTRING_APPEND_MAX) TRIO_PUBLIC_STRING int trio_xstring_append_max TRIO_PROTO((trio_string_t *self, TRIO_CONST char *other, size_t max)); #endif #if defined(TRIO_FUNC_XSTRING_CONTAINS) TRIO_PUBLIC_STRING int trio_xstring_contains TRIO_PROTO((trio_string_t *self, TRIO_CONST char *other)); #endif #if defined(TRIO_FUNC_XSTRING_COPY) TRIO_PUBLIC_STRING int trio_xstring_copy TRIO_PROTO((trio_string_t *self, TRIO_CONST char *other)); #endif #if defined(TRIO_FUNC_XSTRING_DUPLICATE) TRIO_PUBLIC_STRING trio_string_t * trio_xstring_duplicate TRIO_PROTO((TRIO_CONST char *other)); #endif #if defined(TRIO_FUNC_XSTRING_EQUAL) TRIO_PUBLIC_STRING int trio_xstring_equal TRIO_PROTO((trio_string_t *self, TRIO_CONST char *other)); #endif #if defined(TRIO_FUNC_XSTRING_EQUAL_MAX) TRIO_PUBLIC_STRING int trio_xstring_equal_max TRIO_PROTO((trio_string_t *self, size_t max, TRIO_CONST char *other)); #endif #if defined(TRIO_FUNC_XSTRING_EQUAL_CASE) TRIO_PUBLIC_STRING int trio_xstring_equal_case TRIO_PROTO((trio_string_t *self, TRIO_CONST char *other)); #endif #if defined(TRIO_FUNC_XSTRING_EQUAL_CASE_MAX) TRIO_PUBLIC_STRING int trio_xstring_equal_case_max TRIO_PROTO((trio_string_t *self, size_t max, TRIO_CONST char *other)); #endif #if defined(TRIO_FUNC_XSTRING_MATCH) TRIO_PUBLIC_STRING int trio_xstring_match TRIO_PROTO((trio_string_t *self, TRIO_CONST char *other)); #endif #if defined(TRIO_FUNC_XSTRING_MATCH_CASE) TRIO_PUBLIC_STRING int trio_xstring_match_case TRIO_PROTO((trio_string_t *self, TRIO_CONST char *other)); #endif #if defined(TRIO_FUNC_XSTRING_SET) TRIO_PUBLIC_STRING void trio_xstring_set TRIO_PROTO((trio_string_t *self, char *buffer)); #endif #if defined(TRIO_FUNC_XSTRING_SUBSTRING) TRIO_PUBLIC_STRING char * trio_xstring_substring TRIO_PROTO((trio_string_t *self, TRIO_CONST char *other)); #endif #ifdef __cplusplus } #endif #endif /* TRIO_TRIOSTR_H */ ))))entry(namelibnode(type directoryentry(name libtrio.anode(typeregularcontents! / 0 0 0 0 4728 ` \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t           internal_to_uppertrio_to_lowerinternal_string_allocinternal_string_growinternal_string_grow_totrio_createtrio_destroytrio_lengthtrio_length_maxtrio_appendtrio_append_maxtrio_containstrio_copytrio_copy_maxinternal_duplicate_maxtrio_duplicatetrio_duplicate_maxtrio_equaltrio_equal_casetrio_equal_case_maxtrio_equal_localetrio_equal_maxtrio_errortrio_format_date_maxtrio_hashtrio_indextrio_index_lasttrio_matchtrio_match_casetrio_span_functiontrio_lowertrio_substringtrio_substring_maxtrio_tokenizetrio_to_long_doubletrio_to_doubletrio_to_floattrio_to_longtrio_to_unsigned_longtrio_to_uppertrio_uppertrio_string_destroytrio_string_createtrio_string_extracttrio_xstring_settrio_string_sizetrio_string_appendtrio_xstring_appendtrio_xstring_append_chartrio_string_terminatetrio_xstring_append_maxtrio_string_containstrio_xstring_containstrio_string_copytrio_xstring_copytrio_string_duplicatetrio_xstring_duplicatetrio_string_equaltrio_xstring_equaltrio_string_equal_maxtrio_xstring_equal_maxtrio_string_equal_casetrio_xstring_equal_casetrio_string_equal_case_maxtrio_xstring_equal_case_maxtrio_string_format_date_maxtrio_string_indextrio_string_index_lasttrio_string_lengthtrio_string_gettrio_string_lowertrio_string_matchtrio_xstring_matchtrio_string_match_casetrio_xstring_match_casetrio_string_substringtrio_xstring_substringtrio_string_upperTrioArrayGetterTrioOutStreamCustomTrioOutStreamStringMaxTrioInStreamCustomTrioInStreamStringTrioOutStreamFileTrioOutStreamStringDynamicTrioInStreamFileTrioInStreamFileDescriptorTrioOutStreamStringTrioOutStreamFileDescriptorTrioUndoStreamFileTrioInitializeParameterTrioCopyParameterTrioIsQualifierTrioCalcThousandSeparatorLengthTrioFollowedBySeparatorTrioGetPositionTrioFindNamespaceTrioPowerTrioLogarithmTrioLogarithmBaseTrioParseQualifiersTrioParseSpecifierTrioParseTrioWriteNumberTrioWriteStringCharacterTrioWriteStringTrioWriteDoubletrio_registertrio_unregistertrio_get_formattrio_get_argumenttrio_get_widthtrio_set_widthtrio_get_precisiontrio_set_precisiontrio_get_basetrio_set_basetrio_get_longtrio_set_longtrio_get_longlongtrio_set_longlongtrio_get_longdoubletrio_set_longdoubletrio_get_shorttrio_set_shorttrio_get_shortshorttrio_set_shortshorttrio_get_alternativetrio_set_alternativetrio_get_alignmenttrio_set_alignmenttrio_get_spacingtrio_set_spacingtrio_get_signtrio_set_signtrio_get_paddingtrio_set_paddingtrio_get_quotetrio_set_quotetrio_get_uppertrio_set_uppertrio_get_largesttrio_set_largesttrio_get_ptrdifftrio_set_ptrdifftrio_get_sizetrio_set_sizetrio_print_inttrio_print_uinttrio_print_doubletrio_print_stringtrio_print_pointerTrioFormatProcessTrioFormatReftrio_print_reftrio_vprint_reftrio_printv_refTrioFormattrio_printftrio_vprintftrio_printfvtrio_fprintftrio_vfprintftrio_fprintfvtrio_dprintftrio_vdprintftrio_dprintfvtrio_cprintftrio_vcprintftrio_cprintfvtrio_cprintfftrio_sprintftrio_vsprintftrio_sprintfvtrio_snprintftrio_vsnprintftrio_snprintfvtrio_snprintfcattrio_vsnprintfcattrio_aprintftrio_vaprintftrio_asprintftrio_vasprintftrio_asprintfvtrio_locale_set_decimal_pointtrio_locale_set_thousand_separatortrio_locale_set_groupingTrioSkipWhitespacesTrioGetCollationTrioGetCharacterClassTrioReadNumberTrioReadCharTrioReadStringTrioReadGroupTrioReadDoubleTrioReadPointerTrioScanProcessTrioScantrio_scanftrio_vscanftrio_scanfvtrio_fscanftrio_vfscanftrio_fscanfvtrio_dscanftrio_vdscanftrio_dscanfvtrio_cscanftrio_vcscanftrio_cscanfvtrio_cscanfftrio_sscanftrio_vsscanftrio_sscanfvtrio_strerrorinternal_make_doubletrio_fpclassify_and_signbittrio_isnantrio_isinftrio_isfinitetrio_signbittrio_fpclassifytrio_nzerotrio_pinftrio_ninftrio_nantriostr.o/ 0 0 0 644 18812 ` ELF(tG4( FhS$@ FFhS$@ F #3`8Fhem D h)FF #``8%8MhB( 8F)FhF( #``8pGFFq:#3BO,F]KpGpG i  K@ I H{DyDxDKOrIH{DyDxD pFz FFB p<1F"(F p KOr I H{DyD 3xDK@IH{DyD 3xD 08  KOr I H{DyD3xDK@IH{DyD3xD "" q  K@" I H{DyD,3xDK@"IH{DyD,3xD ""8` FFF<"F#+U 8K@%"IH{DyD83xD K@'" I H{DyD83xD K@&" I H{DyD83xD466*,, ""p`LF FF2F!F(FpK"IH{DyDH3xD pF^D FF2F!F(FpK"IH{DyDH3xD p FFB(F4 FF2F!F(Fp K@W" I H{DyD`3xDKOrIH{DyD`3xD 0@  K@u" I H{DyDt3xDK@v"IH{DyDt3xD ""0@  K@" I H{DyD3xDKO(rIH{DyD3xD ""HF FF@  K@" I H{DyD3xDK@"IH{DyD3xD  q@ K@" I H{DyD3xDKO7rIH{DyD3xD ""HF FF@  K@" I H{DyD3xDK@"IH{DyD3xD p02ӱqp@K@Q2IH{DyD3xDKOUrIH{DyD3xDK@S2IH{DyD3xDK@R2IH{DyD3xDLNNBDD8::.00)F;C @D;+F KO\r I H{DyD3xDKO_rIH{DyD3xD ""@2KIH{DyD3xD @2KIH{DyD3xD (Cб xF*,FOF FB?, 9FK5F*, (Ѵ@ Kx*+KF/**L!F(F(;+  K@2 I H{DyDsxD K@2I H{DyDsxD$&$8(>Љ xF*+F B?+ aF;F*+)ѳ@ 8Kx*+KF/**L!F(F(;+ 8 8 KOb I H{DyDsxDK@BIH{DyDsxD"$"QFFxFP FG ;(FK@CBIH{DyDsxDK@EBIH{DyDsxD K@DB I H{DyDsxD:<:.0."$" JzD0 KFX@K@2IH{DyDsxD( y@ K@aB I H{DyDsxD K@bBI H{DyDsxD$&$-CFJFFFFB6$4B AF*F8F((F%(F K@B I H{DyDsxD KObI H{DyDsxD$&$ @BKIH{DyDsxD F F-#xh0+iУ-+OWcx40+ *? A `60 Ԁ0.+l1D+,bx+- 4O\x460# #/0;6 c :g H,`H (/bxX*Bр0 ( 7: 08x 0firstsecondformatdatetimeFALSEpatternFunctiondelimiters(base >= 2) && (base <= 36)selfothertrio_appendtrio_append_maxtrio_containstrio_copytrio_copy_maxinternal_duplicate_maxtrio_duplicate_maxtrio_equaltrio_equal_casetrio_equal_case_maxtrio_equal_localetrio_equal_maxtrio_format_date_maxtrio_hashtrio_indextrio_index_lasttrio_matchtrio_match_casetrio_span_functiontrio_lowertrio_substringtrio_substring_maxtrio_tokenizetrio_to_longtrio_to_unsigned_longtrio_uppertrio_string_destroytrio_string_extracttrio_xstring_settrio_string_sizetrio_string_appendtrio_xstring_appendtrio_xstring_append_chartrio_xstring_append_maxtrio_string_containstrio_xstring_containstrio_string_copytrio_xstring_copytrio_string_duplicatetrio_xstring_duplicatetrio_string_equaltrio_xstring_equaltrio_string_equal_maxtrio_xstring_equal_maxtrio_string_equal_casetrio_xstring_equal_casetrio_string_equal_case_maxtrio_xstring_equal_case_maxtrio_string_format_date_maxtrio_string_indextrio_string_index_lasttrio_string_lengthtrio_string_gettrio_string_lowertrio_string_matchtrio_xstring_matchtrio_string_match_casetrio_xstring_match_casetrio_string_substringtrio_xstring_substringtrio_string_upperGCC: (GNU) 11.4.0A4aeabi*7-A A   "  $x$$ 0<8D%8*@ LdXp/H4P9\d|?d|0ElH $ d |  Kx , 8 p x Q   8 | W   4@p|], Ph $0t(@4L$0T`$HTLdXpcu9M(u( '.&>PJQ_%lowXT=@DEpX Xe\-5TG\Vbqmvul},,ID% X} 1 ,?F9 @Zhmy |}  \ \9 U 8 < >  8A</},@S-gd!\Xi\\!t)1\;XN\dAX{\XM\X010a0&<9XI%0[U\mX \eX\Xq0$t$d.LC0.LC1.LC2.LC3.LC4.LC5.LC6.LC7.LC8.LC9.LC10.LC11.LC12.LC13.LC14.LC15.LC16internal_to_upper__ctype_toupper_loctrio_to_lower__ctype_tolower_locinternal_string_allocmallocinternal_string_growreallocinternal_string_grow_totrio_createtrio_destroyfreetrio_lengthstrlentrio_length_maxtrio_appendstrcat__assert_failtrio_append_maxstrncattrio_containsstrstrtrio_copystrcpytrio_copy_maxstrncpyinternal_duplicate_maxtrio_duplicatetrio_duplicate_maxtrio_equalstrcasecmptrio_equal_casestrcmptrio_equal_case_maxstrncmptrio_equal_localetrio_equal_maxstrncasecmptrio_errorstrerrortrio_format_date_maxstrftimetrio_hashtrio_indexstrchrtrio_index_lasttrio_matchtrio_match_casetrio_span_functiontrio_lower_GLOBAL_OFFSET_TABLE_trio_substringtrio_substring_maxtrio_tokenizestrtoktrio_to_long_double__ctype_b_locpowltrio_to_doublestrtodtrio_to_floatstrtoftrio_to_longstrtoltrio_to_unsigned_longstrtoultrio_to_uppertrio_uppertrio_string_destroytrio_string_createtrio_string_extracttrio_xstring_settrio_string_sizetrio_string_appendtrio_xstring_appendtrio_xstring_append_chartrio_string_terminatetrio_xstring_append_maxtrio_string_containstrio_xstring_containstrio_string_copytrio_xstring_copytrio_string_duplicatetrio_xstring_duplicatetrio_string_equaltrio_xstring_equaltrio_string_equal_maxtrio_xstring_equal_maxtrio_string_equal_casetrio_xstring_equal_casetrio_string_equal_case_maxtrio_xstring_equal_case_maxtrio_string_format_date_maxtrio_string_indextrio_string_index_lasttrio_string_lengthtrio_string_gettrio_string_lowertrio_string_matchtrio_xstring_matchtrio_string_match_casetrio_xstring_match_casetrio_string_substringtrio_xstring_substringtrio_string_upper * < `   0 D ^ t x|        $(,048N l         2 8<@N \ h       0 F LPTX\`p        > T X\`dhl    & %H ^ dhl ptx(      4 ^ v |/   , 048/<@D    4      F ^ d h l  p t x        ( , 0 4 =B  @      C  $ (  , 0 4 CF v |       I . 48<IJ P l ptxI I    R $(I: P ^   RI   I4 N \ ~  RI  I R4 L PTXI\`dR  IR   IR* J V   R      $(,RV n tx|IR  IR  " (,0I48<Rd | IR  IR 0 48<I@DHRr  IR  IR $(,IN TX\I~ I  I   IB HLPIz  IR  IR. F LPTIX\`R  IR  I R< T X\`IdhlR Ip~.  x |   \  v>LZ4d(bp$t.symtab.strtab.shstrtab.rel.text.data.bss.rodata.str1.4.rodata.comment.note.GNU-stack.ARM.attributes8 @<6 %+02?G0BPU`pU5  L/Gptrio.o/ 0 0 0 644 44348 ` ELF(44( P!pGرhFh2XhG(ۣi3aci3ca#j+o##bci3ca K@r I H{DyDxDKO~bIH{DyDxDhzCiiBhp1h14`a3Ca KA I H{DyD3xDKAIH{DyD3xD 8 hFh F!ajXhG aH#23# #i+`8O3#a KAB I H{DyD,3xDKABIH{DyD,3xD hh$axa4O3a i `Di2`"DB KAB I H{DyD@3xDKORIH{DyD@3xD ""FpFhci3caC bi3a K@r I H{DyDT3xDK@rIH{DyDT3xD Fhx#jci3caɲi3aci3ca KA/ I H{DyDh3xDKA.IH{DyDh3xD ""hޱi#Fa F{ Ci"aDCa0F a(`0F(o'bKARBIH{DyD3xD 0Fh# F"h aCo a#b `223 a2(`0O0 ahhhph124` KA I H{DyD3xDKAIH{DyD3xD Fh"cihDca 0o#bi3aK@rIH{DyD3xD haiF++i# aa KAxB I H{DyD3xDKA|BIH{DyD3xD #33333bcp0pG ho p00`oKhoC`h`h` iaKiCaiaia jbKjCb # #ŖE??+pZ(?( 8( FC3#pG^8(ECH##pG@8A#C#pG pG#J! zDFl)ЙB+ݜ * *F  B+]KpG pG@8( J!zD2F@(x++)Ѱ@ pG 0 FF "(h D8x4$+8,`0O0KpF{D Fhh G K{D\h$,`$hth1F(K{Dhh G Fp$>2 ( ).!$'*  pG pG pG pG pG pG pG pG pG pG eAY@cAחA@@@j@.A  (F-@J @@ +   pG pG pG pGqy O @-OFS F0IF#F0F " FY($x1$+@8lO3&$OX(30O `"xF( :LZ*lkkkkkkkrrrrrrrrrkkkkkkkkkkkkkk[kk;kkkkk2kkkkkkk/kkkkkkkkkkkkkkkkkkkkkkkkk 0 *]6*@ހjx4*>o 0C3h "0YxF(r +/€0!FCc0*]V0!FCc0*]M0Cs0!F*]D0C0!F*]70!FCS0*].0XCS0!FCs0*]0!F#SC0*]0!FC0*] 0!FCS0*]0!FC0*]0!FC0*]0!FC0*]0!FCc0*]0!FCs0*]0Y?GLC@C 0!F*]*]!F0!FCS0*]0!FCs0*]3*1*-8*1"CS 0j\ "IFFQ(𩀒1 $B@20 !Fxj\|jx6*1"^+](.+f0C" *]@***dюC@#IF0 " FY(hx1$+d8l &"xJ1".0(C *]@***!юC@IF0 " FY(8x1$+48l&"xjx2*1"p "$(?&YxF!F(?4 " &Yx1FO01FO01FO0 !FB@2 x-OFO3FcaW\<;<+_y^^^^e^r^^^^^^^^^^^^^^^^^$^^^^^i"v^^^^^^^^^bhBbb`)Fp(Oq>+?+>+>+o chCCc`"#ba#` 'bchCCc`##` ##`#00]+Е0 5D"05+|+>+FF O O :+)F@)XF(@!RF(FchDCsc`ԘD#sc`##`ch""`CCc`chDCsc`ԚD#sc`##`ch""`Cc`ch!"aaCC###` ##`##`chC"#chCsc`chCCchCCC"#nchCsc`chCCCS!"c`aa"`^chCCCC!"c`aa"`Schch "#ba#`Jch(F##`]^+]]+7]-+7]+?4>D"?7+?+[+2]+:7 -OFE}ΛϚ:OS"B9 "FXF!!hF:x*߂&O18F3F(Fh5FO: %*3#FBF9F(7"j#F9F(.ch`jF!բh*@TJF  E;F`C"`Os  +O 6 FFDCM`sF$hQJF  CQabE;F`C"`Os  +O 6 FYCM`_!Xbj!!iJ 0JbbbjE;F&aC!`Os  +O 6CM`sFE;FaO C)`Os0+  6XCE`_E;F&cO C)`Os0+  6XCOaA`Q$JF  EF?*sFA"`;++@𕀼? ##aOr!F0#j6\ڱUUUUUb%cpPY$*?%*?CF\*OuO1BJVDFa8(F; *@рV)0 Zah(cπ+@ (iriiri#FBF9F("j#F9F(#h +?CF!(3#tAQabIFbj  q.?gOr2r9rH?Wh(Sh@EqF#Nc`h h`h3h`?;4Ϙ"IFGϘ "IFG  bEfIFF E}+]@StJ@ŀـ "ϘIFGh #s*:+"ϘIFG# #b  E; *?/IF *soYF E}c"ϘIFGh 2ϘIFG+\иϘ"IFGZ(ϘL""IFGbS ~FF E}i!QDj++ĿAQa`Aqa`[qոw"ϘIFG# #9Ћ@Ϙ "IFGz ~oYF E} "R 4S+bgo!F E} "sR;q3#F#C "<CFP+'"ϘIFG#IFϘGb0O3F0 "<3#F# (ЊϘ"IFG0bbR;bbϘ"IFGhbb"ϘIFGx #K@rIH{DyD3xD -OtM(FhF +4F$;?"+ 4W(4{D{4\ O FOzO V4B ##)#+h4)C*@[FF4 'K% kD{DlK{DD34q#Fl47@ACB<0F)FJFSFF+F EF Fs )*ӸI:F yDF1* x++(*B* D7@ACBC c$;44434/$OYCS4 cO #s4F4C4344%@O43#C4$;RE@F 6 0 ; !@FGE4D$+q0-!@FG-Bѹ4$?F4]+00!@F=Gj4$4Saxe90@FG)g4\+0 !@F"&\,$+h!F(F0@G!F(F\,јG+hf!(F+hv!(F+hn!(F+ht!(F+hb!(F+hr!(F+h(Fx!G#OA"(F2"F0+ha!(FբhG-O (FhF+ FFO )g-Z)F0FBԿO  Fy8"h"! FG C_+#h ! F?Gz-& F FWCD3D+ -#h FGCD3D+ܺ }/#h ! F=Gkѹ #h"! FOGFF--̿O  "r  NFOo~DvNkBFF~D8vNFFO~DovK@"IH{DyDsxD K@" I H{DyDsxD`TB020$&$-O- (FhF+00;?"+ F@G(߀(̀0̀@ʀ +@ޅ # / K{D30zz#+@#r I0+ O O;4,  .&@cE8FI @0@ ?$#I ˰@9@X$Fд˻̿ FԴۨAF8F @ǀ? O H Հ@@J  1F8F EO  y,,F/BIyD +#9 #9 5{/@x:IyD *F F/@d3IyD2IyD+G+@+9: # {z  / K{D303 '#r0* &+>>-C6?<<J@t~ ?O  N  @ @𣂎 +  oC  ہ+@MBD#CEտ F &ݰIMO + . 6< K<@ :&  E +@C   + v +Z03:*8F @ {: z+&+ D3D0+  @+-#h-! FG0+ 0!#h FGO#hX!x! FG[ ENFF#h60! FGE+*z8 s#;8^F{D1F8FFB@? F#hxG.ؿC+ >+F|D\)@;X0+@9 ` _ UFF#h^F FG6m BhO ^F_FBFԿO O UFHFDF67B9VEԿ*FE*- ) = X=@Հ0I۰K:+?0HFG?:HF6'0GBLF]FFS#h F1xG +L0E#h*_- e!E! FG F+#h-!+!G#h0! FG0O+  'Y8F{ FDF0>F,Z)F@F1F0HFG4(F9F\EFLF +? E#h ! F  GME 0oC0= XC++#IH 8F 0 {J4 #hK  F*\G1F8F  8FI @H@H 8@  8`H { 8 {8FZzAF)I (@ƀ $u#8F0,+CF IO 8F8F@N  0 8 ȋ*:B@ ;?nO  @ +@@i\#񸁹𣁺݁ԴFS遀0B& LyD1F % x**+>I %F˰@9@?ޮF$ֻ#h FG?ڭAD)D #h FG)>8F Oi IF8F $ ) K{DmDO+J&!zDF@)DЙBfD+=x*:*0F[ ENFF#h6 ! FGE+<#h-! FG0+0!#h FGO#hX!x! FGK{Ds+@&ED# n񖀨Ѭ#h ! FGIyDIyDj~ԫ#h ! FG- p!P!8F 0 p {:B S+OqC 0 + p ۰M @=@Bi ,8F9F@]0+OH'#?@۫C˻̿ FԴ#h+! FG@#h+! FG8+v+h+i:  {zS T 00v0FFHk8F 0 :3: 0I @9@J5#Ժ #к#̺S ?0F0,#&۹##F0 0ހ : `oCpoC !K@2IH{DyDsxDK@2IH{DyDsxDK@2IH{DyDsxD>>xHvprpdfdXZX%(0 FFa x:+4F?(% F FرK{Dhh G` Fn`FK `{D(`h hG(F%(Fn`K{D]`I FyDF K{D` I FyD(K=F{D`tT82*$p&@FhȱFK{Dhh0FG*h`K{Dhh Gh Fp@ K{DZhhZ`KA2IH{DyDsxDTB&@hh +p0KA2IH{DyDsxD  Chh *јjKA2IH{DyDsxD  ChhpGCh`pGChhpGCh`pGChipGChapGChXhpGBhShCS`pG#S`pGChXh pGBhShCsS`pG#sS`pGChXh@ pGBhShCsS`pG#sS`pGChXh@pGBhShC S`pG# S`pGChXhpGBhShC@S`pG#@S`pGChXhpGBhShCS`pG#S`pGChXhpGBhShCS`pG#S`pGChXh@pGBhShCS`pG#S`pGChXhpGBhShCS`pG#S`pGChXh@0pGBhShCSS`pG#SS`pGChypGBhShCsS`pG#sS`pGChXh0pGBhShCCS`pG#CS`pGChXh0pGBhShCSS`pG#SS`pGChXh pGBhShCcS`pG#cS`pGChXh pGBhShCcS`pG#cS`pG F ihhIh F# ihhIhAA#ah$i#h0Fh Fih$O3Ih4 $AAA0L(!|Dt(hhG)0-OFFtO 'p1y+f!BG17B](F+h%)Rx%*F7G1Bp1X]'Oqj/>ېF/O; |/Oq (K{? Oq (; +I-}sgVf#(Fq  LF"XBHa𶀠j(ChYGqs[ _h(Fh++h"!(FGq:Ff [FAF(FqF(T;FBF(Fq1+ЪioU`qYq;FBF(Fqhi +h"!(FG ?/+h !(FG?+h(FG?/+h !(FG?ь+h(F#!G! #{(FqJo_ 7#h+?Fq0p>`qZ`%pF M FF B2h2F( h2F)F#hj+F MpQ#]pGKA4bIH{DyDsxD 1#]KAGbIH{DyDsxD a0 KD{D ]KAYbIH{DyDsxD4(pM*2F+; C H3P"Fh CD3  hC C@3 )Fh("F)F0F +F M p K@}r I H{DyDsxD K@~rI H{DyDsxD$&$HxDJ !X JhzD@pG KAfI H{DyDsxDB.DDFH F!\ JhzD] KA}I H{DyDsxD<*LDJFDzDHxD^ @ "! J hzD KA I H{DyDsxDD<@.  xӱJ! zD@pG KA I H{DyDsxD KA I H{DyDsxDB(*(` FFJ!zD KA I H{DyDsxD KA I H{DyDsxD:&(& FIyDPJD hzD!]KAIH{DyD sxD KA I H{DyD sxDZJF020$&$ { J !zD]pGKAIH{DyDsxD*aF J F!zDKAIH{DyDsxD&< FIFDJyDzD!@KA4IH{DyDsxD>20   FJ!zD@pG KAK I H{DyDsxD KAL I H{DyDsxDB(*(0ڱFFJ F!zD0 KAb I H{DyD sxD KAc I H{DyD sxD<&(&\ FFKD{DFJzD!KAwIH{DyD$sxD KAx I H{DyD$sxD^RH020$&$0FFbp F !DBJzD0KAIH{DyD(sxDKAIH{DyD(sxDKA IH{DyD(sxDpZDFD8:8,., J$ !FzDDp @pG KA I H{DyD,sxD KA I H{DyD,sxDH&(&0 FѱFJ$zD!FDp0 KA I H{DyD0sxD KA I H{DyD0sxDD(*( F XFHDJxDzD!@"pKAIH{DyD4sxD KA I H{DyD4sxD\PN.0."$" 0R (B j aJzD 0@pGJ%9zDUp 0@pGKA" IH{DyD8sxD KA" I H{DyD8sxDdL,., " O\(L )FڱFQJ+FzDJ'+F9zDwp KA%" I H{DyD<020 0 R[б- Fa$DJ +FzDDp 0@pG KAa" I H{DyDDsxD KAb" I H{DyDDsxDD&(&pF FFaJ+F zD D$Dpp KA{" I H{DyDIsxD KA|" I H{DyDIsxDJ(*(0 HxDFJ+F! zD F FF FF F0@pGKA"IH{DyDNsxDXJpFHFxDFJ!+FzD F FF FF FpKA"IH{DyDRsxDL<𵆰 GFH%xD5`F )FJ;FUzD F F0` F(F@pGoKA"IH{DyDVsxD`H-A9FH&FxD F>`FȱJ+F1FzDf F F8` F(FoKA2IH{DyDZsxD\H-AiFHOFxD FFJ+FAFzDhJzDJzD F F0` F(Fo KA42 I H{DyD^sxDf^NLF K({De"x\ O \"F!@`$8FL!|DD(F(F d8FH@!xDFiFchG3h9F F30(F-O#F  0 0K{D%O),F QF0F_4 5KO{DKDZUZ-OFhF! `0^+A `0]+t13t10-+0300+]+3dt~DD T# 2D# 0]++-+[+   0:+=+U.+9l1F3l10]++ )\<]) 0 30)PBRC; S/2B`Ѯx*:+DF.)/]** $Dt0+@xʱ(D=*\JT"1D"/*+*O0 !ZF0F(qѰHZF !xD(@𥀭HZF !xD(@HZF !xD(@𫀦HZF !xD(@𶀢HZF !xD(@ˀHZF !xD(@րHZF !xD(@HZF !xD(@؀HZF !xD(@HZF !xD(?h#F`:23BS1CB  h"F`;32 BR1BB  #t0D0]+?3\h#F`:23BS1CB  h#F`:23IBS1CB  h#F`:23 BS1CBѪh#F`:23)S1CBіo o h#F`:23BS1CBxh#F`:23IBS1CBdh#F`:23BS1CBPh#F`:23IBS1CB<h#F`:23BS1CB( tfXJ<-O(FChF+ ?"+KF{Do+@ F#i++-+#yci z*@ #@vs}KO NFMF{DzKF{D0CEC@b?h3084h?BԿ!!)PFO UbDEu0GD0+D B 0!PFG?+@,ѹ2;vBeEeHFch F!G#ci~#i0+ Fch!G i(?~/M/yB(tch! FGnO HFch F!G#ci^R/NOrO1~D 0#DF p  F |/ aE3` 0K"{DgX()KABIH{DyDbsxDKAAIH{DyDbsxDKORIH{DyDbsxD2jRTRFHF:<:-O(~АFBhF*iF?+ؿ 1F&  !(FG\,#[U,is?EjhF,i\+=?;97531h3 k& FX(,|khYF(FG#ZFQF#(Fౝ@ $ $ $ $ $$\$$#"QF#(F( KA I H{DyDfsxDKAIH{DyDfsxD"$"-G(;ИFChF+BFFO O O !#JF0Fر4EԿSFJ5ijh3 9/9F#JF0F(#;U KA I H{DyDjsxDKAIH{DyDjsxD"$"-O0(FВFBhF*5иi O O 'ۃ F%@Z$0[ BtU0XF5GEԿKFIc=  #sU  KA I H{DyDnsxDKAIH{DyDnsxD"$"-OF+ }FO @F %i5`+3p1Fch F8pG5h% I+0-}#FiCE&dF{+FD 2 -@1F FU7chG3hZBEF.-+ɀ(FP(ɀBx+!Ur@P-F }N- G0-؀I-OFF' GE [chG5h01F F 30[#IyDT(x-+Է  i-n-OFR?kD0+?k D B chG?+?_"i1F F*5h.-b1F F UchGF  @̀BEch ϘGF0  1F F:30-eFwF(FE(71F3h F}UchG+3ZF ZFCE +chG2h0F51F F3;ogFB }'ch0"1FS FTG0hX(;#5h8IyD(85IyD(SP  1Fch FG#' }1F3h FUchG#5hj !O  }eFwF+?RO5eFwF ThFBB#FBF #عkFLF#0F" F IyDq(W#$;`/$ F;`$ F,-OF#DMF , AF Ch G8h# ( ;@+bw8h3(hE\FhF1* BchAF FG5E`=p%/ Ix%)0%+$o#h FG DM#i3`1 ch F1FG3h 2 0chAF F5GE`8hA(3OS#+@?Oq h!jyiJ 9iO~ !j8(QeJF! Fj+#(3#i0;j`ChSR\[*/[*1@B0F)`! 3FJF)F(€0hY񒀹j F2F(M)JF ! F1F(?@ooj@o@_@@u rJFoJѹj F(JFoQѹj F({JFoMѹj F(oj)?mci?3oo_<9  R!KA" I!H{DyDrsxD `D! F(>!2F F(4! F(,! F($` `K`+O3xzx x2FpGM DH4%h*E-7 DT4 CfP$h DP4  $h G # CL3`a"F)F h( (x "F)F8F$F3j+F M KA)B I H{DyDvsxDKA(BIH{DyDvsxD"$"JzDK !XKhJ{DzD@pG KAR I H{DyDysxDF00HDJ F!F\  Kh J{DzD KA4R I H{DyD|sxD@,,PDKFH{DJzD\h!KJh{DzD KAMR I H{DyDsxDHNF46$&$ K$!J{DzD@pG KAnR I H{DyDcxD KAoR I H{DyDcxDDB*,* p FB!KJ{DzD KAR I H{DyDCxD KAR I H{DyDCxD<:*,*  XDTKJD@{DzD!KARIH{DyD$CxD KAR I H{DyD$CxD^LJJ242&(&0 J# FzD3E0@pGKARIH{DyD4CxD00qF J# FzDF30KARIH{DyDcxD,H FI#xDyD JFhzD KORI H{DyDcxD@4* 0  %J# FPFzD3 0@pG KAb I H{DyDcxD KAb I H{DyDcxDF(*(0FFJ# F3zDF0 KA1b I H{DyDlCxD KA2b I H{DyDlCxD<&(& XLDJ|DC#zDFKAFbIH{DyD|CxD KAGb I H{DyD|CxD^PF.0."$"jpDJzD4#FKA]bIH{DyDCxDKA_bIH{DyDCxD KA^b I H{DyDCxDt\BDB686*,*0 J# FzD3E0@pG KA~b I H{DyDCxD KAb I H{DyDCxDJ(*(0x FɱFJ#zDF30 KAb I H{DyDcxD KAb I H{DyDcxD@&(& FH#IxDyDJFhzDKAbIH{DyDcxD KAb I H{DyDcxDVJ@.0."$"@B8(  HxDpG HxDpG HxDpG HxDpG HxDpG HxDpG HxDpG HxDpG HxDpG20.,*(&$",..trio.cVALID(self)VALID(self->location)VALID(file)self->actually.cached == 1((argfunc == NULL) && (argarray == NULL)) || ((argfunc != NULL) && (argarray != NULL))VALID(self->OutStream)((base >= MIN_BASE) && (base <= MAX_BASE)) || (base == NO_BASE)NANnan-INF-infINFinf:enter:leave((trio_reference_t *)ref)->parameter->type == FORMAT_USER_DEFINEDVALID(format)VALID(OutStream)VALID(stream)VALID(argfunc)VALID(buffer)VALID(buffer) || (max == 0)[:alnum:][:alpha:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:xdigit:]VALID(self->InStream)(base >= MIN_BASE && base <= MAX_BASE) || (base == NO_BASE)INFINITEi <= MAX_PARAMETERSVALID(InStream)End of fileInvalid argumentToo many argumentsDouble referenceReference gapOut of memoryInvalid rangeCustom errorUnknownTrioOutStreamCustomTrioOutStreamStringMaxTrioInStreamCustomTrioInStreamStringTrioOutStreamFileTrioOutStreamStringDynamicTrioInStreamFileTrioOutStreamStringTrioOutStreamFileDescriptorTrioUndoStreamFileTrioParse0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzTrioWriteNumber(nil)TrioWriteStringTrioWriteDoubletrio_unregistertrio_get_formattrio_get_argumenttrio_print_reftrio_vprint_reftrio_printv_refTrioFormattrio_printftrio_vprintftrio_printfvtrio_fprintftrio_vfprintftrio_fprintfvtrio_dprintftrio_vdprintftrio_dprintfvtrio_cprintftrio_vcprintftrio_cprintfvtrio_cprintfftrio_sprintftrio_vsprintftrio_sprintfvtrio_snprintftrio_vsnprintftrio_snprintfvtrio_snprintfcattrio_vsnprintfcattrio_aprintftrio_vaprintftrio_asprintftrio_vasprintftrio_asprintfvTrioReadNumberTrioReadCharTrioReadStringTrioReadGroupTrioScanProcessTrioScantrio_scanftrio_vscanftrio_scanfvtrio_fscanftrio_vfscanftrio_fscanfvtrio_dscanftrio_vdscanftrio_dscanfvtrio_cscanftrio_vcscanftrio_cscanfvtrio_cscanfftrio_sscanftrio_vsscanftrio_sscanfvGCC: (GNU) 11.4.0A4aeabi*7-A A   " lTl4L,8$pp|8V    TB%*\/49 ?EK  *Q$W,*++,,]4D,l,x,,,//00cx22(343l3i3$4<44445P5p55586T6667,7h7x77o7<8X88849uX99{:h::::d;;<8<<<==(>D>>>4?H???,@@@@@@A\AAAAAAAdB(4@LXdlBFpGxII"JJKKKLL|PPPQzRRTTXUpUUU(VDVVVWJ\]#3 |GUll|mxhMp`Lid0XLR%del nVqT40)T }',9R:AKTLfz 9I U"2>L]j z*+ E,4y,4-,<,K,^,q,,, ,-  -%- 1-I- U-m- 'y-;- P-e- x-- --  .!. -.E. Q. i. u.'. 8.I. Z.k. y..$/(E/a/y/T/u2D2D28'53L73B=4dNdk4`x5pq5x5lU66T-7Ly7`7Y8t8 Y9 : :x) :7 ;E 9<T <c =t E> >|     I?p ? A@ @" ]A8@ A$c A| A. At  mB  G  IP K K L. = G U i Pty T  T qUl  Uh EVx V =Wt W =XX XP X` EY Yx AZ- Z: q[F [tS e\` \t$t$d.LC0.LC1.LC2.LC3.LC4.LC5.LC6.LC7.LC8.LC9.LC10.LC11.LC12.LC13.LC14.LC15.LC16.LC17.LC18.LC19.LC20.LC21.LC22.LC23.LC24.LC25.LC26.LC27.LC28.LC29.LC30.LC31.LC32.LC33.LC34.LC35.LC36.LC37.LC38.LC39.LC40.LC41.LC42.LC43.LC44.LC45.LC46.LC47.LC48TrioArrayGetterTrioOutStreamCustom__assert_failTrioOutStreamStringMaxTrioInStreamCustomTrioInStreamStringTrioOutStreamFilefputcTrioOutStreamStringDynamictrio_xstring_append_charTrioInStreamFilefgetcferrorTrioInStreamFileDescriptorreadTrioOutStreamStringTrioOutStreamFileDescriptorwriteTrioUndoStreamFileungetcTrioInitializeParameterTrioCopyParameterTrioIsQualifierTrioCalcThousandSeparatorLengthTrioFollowedBySeparatorTrioGetPositiontrio_to_longTrioFindNamespacetrio_equal_caseTrioPowerpowlTrioLogarithmlog10ltrio_ninftrio_nanTrioLogarithmBaseTrioParseQualifiersTrioParseSpecifiertrio_copy_maxTrioParsememset__errno_locationmblen__aeabi_uldivmodTrioWriteNumbermemcpy__ctype_b_locTrioWriteStringCharacterTrioWriteStringtrio_length_maxtrio_length__aeabi_uidiv__aeabi_uidivmod__aeabi_idivTrioWriteDoubletrio_fpclassify_and_signbittrio_isinffloorlfloorfmodlceilltrio_registermalloctrio_duplicatetrio_equaltrio_unregistertrio_destroyfreetrio_get_formattrio_get_argumenttrio_get_widthtrio_set_widthtrio_get_precisiontrio_set_precisiontrio_get_basetrio_set_basetrio_get_longtrio_set_longtrio_get_longlongtrio_set_longlongtrio_get_longdoubletrio_set_longdoubletrio_get_shorttrio_set_shorttrio_get_shortshorttrio_set_shortshorttrio_get_alternativetrio_set_alternativetrio_get_alignmenttrio_set_alignmenttrio_get_spacingtrio_set_spacingtrio_get_signtrio_set_signtrio_get_paddingtrio_set_paddingtrio_get_quotetrio_set_quotetrio_get_uppertrio_set_uppertrio_get_largesttrio_set_largesttrio_get_ptrdifftrio_set_ptrdifftrio_get_sizetrio_set_sizetrio_print_inttrio_print_uinttrio_print_doubletrio_print_stringtrio_print_pointerTrioFormatProcesstrio_errorTrioFormatReftrio_print_reftrio_vprint_reftrio_printv_refTrioFormattrio_printf_GLOBAL_OFFSET_TABLE_stdouttrio_vprintftrio_printfvtrio_fprintftrio_vfprintftrio_fprintfvtrio_dprintftrio_vdprintftrio_dprintfvtrio_cprintftrio_vcprintftrio_cprintfvtrio_cprintfftrio_sprintftrio_vsprintftrio_sprintfvtrio_snprintftrio_vsnprintftrio_snprintfvtrio_snprintfcattrio_vsnprintfcattrio_aprintftrio_xstring_duplicatetrio_string_terminatetrio_string_extracttrio_string_destroytrio_vaprintftrio_asprintftrio_vasprintftrio_asprintfvtrio_locale_set_decimal_pointtrio_locale_set_thousand_separatortrio_locale_set_groupingTrioSkipWhitespacesTrioGetCollationtrio_equal_localeTrioGetCharacterClasstrio_equal_maxTrioReadNumbertrio_to_upperTrioReadCharTrioReadStringTrioReadGroupTrioReadDoubletrio_to_doubletrio_pinftrio_to_floattrio_to_long_doubleTrioReadPointerTrioScanProcessTrioScantrio_scanfstdintrio_vscanftrio_scanfvtrio_fscanftrio_vfscanftrio_fscanfvtrio_dscanftrio_vdscanftrio_dscanfvtrio_cscanftrio_vcscanftrio_cscanfvtrio_cscanfftrio_sscanftrio_vsscanftrio_sscanfvtrio_strerrorT h lptx| : P TX\`dh    0 48<@DHd       2      8 V l ptx| R ptxN ^  @ L \     0 B 6 ! !j #n $z %   V f ~ % / &\ (& > V \`dhlptx2|3 )6 ' ,< -  2< 2  3 4b  4  +V b 5:?= ;  4$ 4 4 6:! >! 7! " 4" 6# # .# /# 06$ 4l$ $ 4$ 6$ $ $ 4% 4(% 4B% N% 3% % % 4& 4& ' $( z( 4( 2) >) 5~) ) 4^* v* * *******<*>******3***2+ -+ + 9<+ :t+ ;+ ;++++D++E++ + =(, ,,0,4,8,<,@,f, l,p,t,J, ,,,J/ ' $> (>,>0>4>y8><>@>TT> -r> p> > >>>>y>>>T> > p> ?  ? .? 4?8?PP:P P P PdQ )R R #R S .S S S S T "T 6T FT VT TTTT "A!A!.symtab.strtab.shstrtab.rel.text.data.bss.rodata.str1.4.rodata.comment.note.GNU-stack.ARM.attributes8\] @0 %]|+^ 02^?aG0YfPlf`plf5f  $n Īptrionan.o/ 0 0 0 644 1888 ` ELF(4( C J0zDF2σBѝ ] :` C` a    ڵ@   pG pG pG pG@ ]@+O0 ] ](  ]]],"D FF/E ѝ ]$ K{D @  ` pG&L|D @ @   K{D @  `  pG&GCC: (GNU) 11.4.0A4aeabi*7-A A   ",0@Dht01`8C&N\iy4E0u(0$t$dinternal_make_doubletrio_fpclassify_and_signbittrio_isnantrio_isinftrio_isfinitetrio_signbittrio_fpclassifytrio_nzerotrio_pinftrio_ninftrio_nan,     @p .symtab.strtab.shstrtab.rel.text.data.bss.rodata.comment.note.GNU-stack.ARM.attributes8 @X %+080A+Qp+5`   a))entry(namelibtrio.so.2.0.0node(typeregularcontentsELF(44 (p..000̄̄@QtdRtd%/*[RJ6Ht~,&<ZmL(.f^GonS;8!]:27|P3XF1OA#Q Kjuie-V+z MT {YB)b"Wh'q05N?=>x$cv`@yEr a_}9gd sU\C 4kDwpIl3 &QA(J@ L3 NP*AB& II@ E H@ 02 P/ A$eDA E"A  Ұ$ӈA!A` WH34689;<=>BCDFHIJNOPRUWYZ[\]_dghjlnoprtvx{|}x2#/j#m; ØIIyg'- c\O)Ani,jl[kؾ|Go%Js䀥+ KU/1nWf?j`l\;Ѐ<'7jo2ޖD,-n1/etէ2ZvU)xI<-,h?a-*'l$z_u_LD4R3 7'/o`|R P ɯ |G螉L7ԛ)t1J]J)?# \ nȏK! p&y;h`͵.s{T_d^~Ϛct\vXźH~f936.#MD8 σm, g/ JM-W+z"T7q%鬊2eYЋLS<}d6OźMvBB}}]hh"QhgDsqv"lHl4gQ`c۪TL NHRœ3ikM,`a(\Re,BSoncVݦ t ?bP`8j2A'l8YDM3/Ήh U/: sQ*zUV-'lֈP]ԁ8OZoQfQŦ0  Uz H&}s hm, )w[ 3  "U $ aF"& et a  $ } QMG\ )|  z ~T M|   a 56& L P yEHt )q7T eB\ 9{ m~ %6 )6 L< % F | # ٌ   7X ( B MX ` |  w }  @F\ P8D G|   U} t ` }  W{ @ eX ~ 1B 9\ 16 I}  + Ƀ` E I:T E D t B 5& H{ CN0 cG ?B8  i { UL }{ 3 }  $  | IX ~  D } L\ { }JX H= =]< D  mx 9MX ,1KX Y| Y ` m}  q|   ed  %}  %0  B\ qC8 :\ M\ 6l ` 1} f }   %8 ? x n T E~(  4 3| j{  h :7 5| U }  r x -1<, mI\ 1D i5 4 m    R l ]   y} L0 _8p o i }|  u ki>D m{4  } ,NX vK0 9X |  JC< z  }  3 ٦ }  f m ?, : \| J\ C< HK0 ͭ0 | v>X - H\ EN\ r=9X  8 !~$ X= ~ ^QC> ?@ !J\ IX l ]6P S qp '{4 ULX =Ed =F\ E x q|  8 )p D, t :  ]L dK0 *FX ;l <, __gmon_start___ITM_deregisterTMCloneTable_ITM_registerTMCloneTable__cxa_finalize__ctype_toupper_loctrio_to_lower__ctype_tolower_locmallocrealloctrio_createtrio_destroyfreetrio_lengthstrlentrio_length_maxtrio_appendstrcat__assert_failtrio_append_maxstrncattrio_containsstrstrtrio_copystrcpytrio_copy_maxstrncpytrio_duplicatetrio_duplicate_maxtrio_equalstrcasecmptrio_equal_casestrcmptrio_equal_case_maxstrncmptrio_equal_localetrio_equal_maxstrncasecmptrio_errortrio_format_date_maxstrftimetrio_hashtrio_indexstrchrtrio_index_lasttrio_matchtrio_match_casetrio_span_functiontrio_lowertrio_substringtrio_substring_maxtrio_tokenizestrtoktrio_to_long_double__ctype_b_locpowltrio_to_doublestrtodtrio_to_floatstrtoftrio_to_longstrtoltrio_to_unsigned_longstrtoultrio_to_uppertrio_uppertrio_string_destroytrio_string_createtrio_string_extracttrio_xstring_settrio_string_sizetrio_string_appendtrio_xstring_appendtrio_xstring_append_chartrio_string_terminatetrio_xstring_append_maxtrio_string_containstrio_xstring_containstrio_string_copytrio_xstring_copytrio_string_duplicatetrio_xstring_duplicatetrio_string_equaltrio_xstring_equaltrio_string_equal_maxtrio_xstring_equal_maxtrio_string_equal_casetrio_xstring_equal_casetrio_string_equal_case_maxtrio_xstring_equal_case_maxtrio_string_format_date_maxtrio_string_indextrio_string_index_lasttrio_string_lengthtrio_string_gettrio_string_lowertrio_string_matchtrio_xstring_matchtrio_string_match_casetrio_xstring_match_casetrio_string_substringtrio_xstring_substringtrio_string_upperfputcfgetcferrorreadwriteungetclog10ltrio_ninftrio_nanmemset__errno_locationmblenmemcpytrio_fpclassify_and_signbittrio_isinffloorlfloorfmodlceilltrio_registertrio_unregistertrio_get_formattrio_get_argumenttrio_get_widthtrio_set_widthtrio_get_precisiontrio_set_precisiontrio_get_basetrio_set_basetrio_get_longtrio_set_longtrio_get_longlongtrio_set_longlongtrio_get_longdoubletrio_set_longdoubletrio_get_shorttrio_set_shorttrio_get_shortshorttrio_set_shortshorttrio_get_alternativetrio_set_alternativetrio_get_alignmenttrio_set_alignmenttrio_get_spacingtrio_set_spacingtrio_get_signtrio_set_signtrio_get_paddingtrio_set_paddingtrio_get_quotetrio_set_quotetrio_get_uppertrio_set_uppertrio_get_largesttrio_set_largesttrio_get_ptrdifftrio_set_ptrdifftrio_get_sizetrio_set_sizetrio_print_inttrio_print_uinttrio_print_doubletrio_print_stringtrio_print_pointertrio_print_reftrio_vprint_reftrio_printv_reftrio_printfstdouttrio_vprintftrio_printfvtrio_fprintftrio_vfprintftrio_fprintfvtrio_dprintftrio_vdprintftrio_dprintfvtrio_cprintftrio_vcprintftrio_cprintfvtrio_cprintfftrio_sprintftrio_vsprintftrio_sprintfvtrio_snprintftrio_vsnprintftrio_snprintfvtrio_snprintfcattrio_vsnprintfcattrio_aprintftrio_vaprintftrio_asprintftrio_vasprintftrio_asprintfvtrio_locale_set_decimal_pointtrio_locale_set_thousand_separatortrio_locale_set_groupingtrio_pinftrio_scanfstdintrio_vscanftrio_scanfvtrio_fscanftrio_vfscanftrio_fscanfvtrio_dscanftrio_vdscanftrio_dscanfvtrio_cscanftrio_vcscanftrio_cscanfvtrio_cscanfftrio_sscanftrio_vsscanftrio_sscanfvtrio_strerrortrio_isnantrio_isfinitetrio_signbittrio_fpclassifytrio_nzeroraiselibm.so.6libgcc_s.so.1libc.so.6libtrio.so.2GLIBC_2.4/gnu/store/hqpnggqlr3r9l6v2wpc9s98cfpxqksql-glibc-2.39/lib:/gnu/store/zc0labqnpq44i3ysrknr8rhz8kqs6nrk-gcc-11.4.0-lib/lib:/gnu/store/zc0labqnpq44i3ysrknr8rhz8kqs6nrk-gcc-11.4.0-lib/lib/gcc/arm-unknown-linux-gnueabihf/11.4.0/../../..  ii C , ii C hlptx'|,2 NJ{ $(K,04>8g<@D9HLPT X \?` dRhkl pt x|y\DC]E L!az"#$ %&( )$*(,b0<4+8<^@DH-L.P/T0X1\2`df@---Ə ʌxGƏ ʌxGƏ ʌxGƏ ʌƏ ʌxGƏ ʌxGƏ ʌxGƏ ʌxGƏ ʌƏ ʌƏ ʌxƏ ʌpxGƏ ʌdƏ ʌ\Ə ʌTƏ ʌLƏ ʌDxGƏ ʌ8xGƏ ʌ,Ə ʌ$Ə ʌƏ ʌƏ ʌ xGƏ ʌƏ ʌƏ ʌƏ ʌƏ ʌxGƏ ʌxGƏ ʌxGƏ ʌƏ ʌƏ ʌƏ ʌƏ ʌƏ ʌƏ ʌxGƏ ʌxGƏ ʌtxGƏ ʌhxGƏ ʌ\Ə ʌTxGƏ ʌHƏ ʌ@xGƏ ʌ4Ə ʌ,Ə ʌ$Ə ʌxGƏ ʌƏ ʌƏ ʌƏ ʌƏ ʌxGƏ ʌxGƏ ʌƏ ʌxGƏ ʌƏ ʌxGƏ ʌƏ ʌxGƏ ʌƏ ʌƏ ʌxGƏ ʌƏ ʌxxGƏ ʌlxGƏ ʌ`xGƏ ʌTxGƏ ʌHƏ ʌ@Ə ʌ8xGƏ ʌ,Ə ʌ$Ə ʌxGƏ ʌxGƏ ʌƏ ʌƏ ʌƏ ʌƏ ʌƏ ʌƏ ʌƏ ʌƏ ʌƏ ʌƏ ʌƏ ʌ0 0 R/0hHKJxD{DzDBKXGpGpH KxD J{DzDIKXGpGt K J{DzDxk KX#K{DhK"{Dp&FbhS$@ FFrhS$@ F #3`8Fhem D h)FDF #``8%8MhB( 8F)Fh0F( #``8ǽpGFFq:#3BO,F]KpGpG i  K@ I H{DyDxDKOrIH{DyDxDH 4pFz FFB p<1F"(F p KOr I H{DyD 3xDTK@IH{DyD 3xDHލȍ08  KOr I H{DyD3xD(K@IH{DyD3xDVnr@` q  K@" I H{DyD,3xDK@"IH{DyD,3xD4 8` FFF<"F#+U 8K@%"IH{DyD83xD K@'" I H{DyD83xD K@&" I H{DyD83xDЌrp`LF FF2F!F(FpK"IH{DyDH3xDN,pF^D FF2F!F(FpK"IH{DyDH3xDj ؇p FFB(F4 FF2F!F(Fp K@W" I H{DyD`3xDBKOrIH{DyD`3xD6캋r0@  K@u" I H{DyDt3xDK@v"IH{DyDt3xD d2fNX0r@  K@" I H{DyD3xDKO(rIH{DyD3xD چĆHF FF0@  K@" I H{DyD3xDK@"IH{DyD3xD뮊|f q@ K@" I H{DyD3xDKO7rIH{DyD3xD\*^FPHF FF\@  K@" I H{DyD3xDdK@"IH{DyD3xDX̅p02ӱqp@K@Q2IH{DyD3xD6KOUrIH{DyD3xD,K@S2IH{DyD3xD K@R2IH{DyD3xDrz\xFb0t)F;C @D;+F KO\r I H{DyD3xDKO_rIH{DyD3xD„ڄވ@2KIH{DyD3xDts@2KIH{DyD3xDzH`(Cб xF*,FOF FB?, 9FK5F*, (Ѵ@ Kx*+KF/**L!F(FL(;+  K@2 I H{DyDsxDT K@2I H{DyDsxDH ȇ8(>Љ xF*+F B?+ aF;F*+)ѳ@ 8Kx*+KF/**L!F(F(;+ 8 8 KOb I H{DyDsxDK@BIH{DyDsxD*VQFFxFP FG ;(FK@CBIH{DyDsxDK@EBIH{DyDsxD K@DB I H{DyDsxD鶆l҂Tb JzD0 KFX@K@2IH{DyDsxD~l4 y@? K@aB I H{DyDsxD` K@bBI H{DyDsxDTƁ܁́-CFJFFFFB6$4B AF*F8FJ((F%(F K@B I H{DyDsxD KObI H{DyDsxD h6LP< @BKIH{DyDsxDVF F-#xh0+iУ-+OWcx40+ *? A `60 Ԁ0.+l1D+,bx+- 4O\x460# #/0;6 c :g H,`H ~(/bxX*Bр0 ( ^7: 08xyu4vyu$v(@h K@h I H{DyDasxDK@iIH{DyDasxDry@uuZy(uuhBK@}IH{DyDhsxD"ytuh@KIH{DyDosxDxtXuhn@KIH{DyDtsxDxt(u@F@h h``K@IH{DyDzsxDxRtt8hFCBh Fb-۪B*FDF85D%r22K@IbIH{DyDsxDx*xsth@KIH{DyD CxDbwsdt0@ hh3 K@ I H{DyDcxDF K@I H{DyDcxD:ws,twzst(@h K@ I H{DyD4CxDK@IH{DyD4CxD jw8ssRw ss0@ hh K@ I H{DyDcxD KObI H{DyDcxDwrxsvrhs(@hع K@ I H{DyDcxDK@IH{DyDcxDvrsvlrs0@ hh K@% I H{DyDcxD K@&I H{DyDcxD\v*rrDvrr(@hܸ K@8 I H{DyDcxDdK@9IH{DyDcxDXvqjruqZrh.@JKIH{DyDcxD<u~qrP!pGرhFh2XhG(ۣi3aci3ca#j+o##bci3ca K@r I H{DyDxDKO~bIH{DyDxDzqqyqqhzCiiBhp1h14`a3Ca KA I H{DyD3xDKAIH{DyD3xDy\qlqyFqJq8 hFh F!ajXhG aH#23# #i+`8O3#a KAB I H{DyD,3xDKABIH{DyD,3xDyppypphh$axa4O3a i `Di2`"DB KAB I H{DyD@3xDZKORIH{DyD@3xDPxjpzpxTpXpFpFhci3ca6C bi3a K@r I H{DyDT3xD&K@rIH{DyDT3xD>xpp(xooFhx#jci3caɲ2i3aci3ca KA/ I H{DyDh3xDKA.IH{DyDh3xDwoow|oohޱi#Fa F{ Ci"aDCa0FN a(`0F*(o'bKARBIH{DyD3xDLwo6o0Fh# F"h aCo a#b `223 a2(`0O0 ahhhph124` KA I H{DyD3xDfKAIH{DyD3xDZvnnvjnznFh"cihDca b0o#bi3aK@rIH{DyD3xD(Dvn nhaiF++i# aa KAxB I H{DyD3xDKA|BIH{DyD3xDvmmumm#33333bcp0pG ho p00`oKhoC`h`h` iaKiCaiaia jbKjCb # #ŖE??+pZ(?( 8( FC3#pG^8(ECH##pG@8A#C#pG pG#J! zDFl)ЙB+ݜ * *F  B+]KpG pG8( J!zD2F@(x++)Ѱ@ pG0 FF "(h D8x4$+8,`0O0KpF{D Fhh G K{D\h$,`$hth1F(K{Dhh G Fp$粌 ( ).!$'* 徲 pG pG pG pG pG pG pG pG pG pG eAY@cAחA@@@j@.A  (F-@J @@ +   pG pG pG pGqy O @-OFS F0IF#F0F " FY($x1$+@8lO3&$OX(30O `"xFj( :LZ*lkkkkkkkrrrrrrrrrkkkkkkkkkkkkkk[kk;kkkkk2kkkkkkk/kkkkkkkkkkkkkkkkkkkkkkkkk 0 *]6*@ހjx4*>o 0C3h "0YxF(r +/€0!FCc0*]V0!FCc0*]M0Cs0!F*]D0C0!F*]70!FCS0*].0XCS0!FCs0*]0!F#SC0*]0!FC0*] 0!FCS0*]0!FC0*]0!FC0*]0!FC0*]0!FCc0*]0!FCs0*]0Y?GLC@C 0!F*]*]!F0!FCS0*]0!FCs0*]3*1*-8*1"CS 0j\ "IFF8Q(𩀒1 $B@20 !Fxj\|jx6*1"^+](.+f0C" *]@***dюC@#IF0 " FY(hx1$+d8l &"xJ1".0(C *]@***!юC@IF0 " FY(8x1$+48l&"xjx2*1"p "$(?&YxF!Fr(?4 " &Yx1FO01FO01FO0 !FB@2 x-OFO3FcaW\<;<+_y^^^^e^r^^^^^^^^^^^^^^^^^$^^^^^i"v^^^^^^^^^bhBbb`)Fp(Oq>+?+>+>+o chCCc`"#ba#` 'bchCCc`##` ##`#00]+Е0 5D"05+|+>+FF O O :+)F@)XF(@!RF(FchDCsc`ԘD#sc`##`ch""`CCc`chDCsc`ԚD#sc`##`ch""`Cc`ch!"aaCC###` ##`##`chC"#chCsc`chCCchCCC"#nchCsc`chCCCS!"c`aa"`^chCCCC!"c`aa"`Schch "#ba#`Jch(F##`]^+]]+7]-+7]+?4>D"?7+?+[+2]+:7 -OFE}ΛϚ:OS"B9 "FXF!X!hF6:x*߂&O18F3F(Fh5FO: %*3#FBF9F (7"j#F9FV(.ch`jF!բh*@TJF  E;F`C"`Os  +O 6 FFDCM`sF$hQJF  CQabE;F`C"`Os  +O 6 FYCM`_!Xbj!!iJ 0JbbbjE;F&aC!`Os  +O 6CM`sFE;FaO C)`Os0+  6XCE`_E;F&cO C)`Os0+  6XCOaA`Q$JF  EF?*sFA"`;++@𕀼? ##aOr!F0#j6\ڱUUUUUb%cpPY$*?%*?CF\*OuO1BJVDFa8(F; *@рV)0 Zah(cπ+@ (iriiri#FBF9F("j#F9F (#h +?CF!(3#tAQabIFbj  q.?gOr2r9rH?Wh(Sh@EqF#Nc`h h`h3h`?;4Ϙ"IFGϘ "IFG  bEfIFF E}+]@StJ@ŀـ "ϘIFGh #s*:+"ϘIFG# #b  E; *?/IF *soYF E}c"ϘIFGh 2ϘIFG+\иϘ"IFGZ(ϘL""IFGbS ~FF E}i!QDj++ĿAQa`Aqa`[qոw"ϘIFG# #9Ћ@Ϙ "IFGz ~oYF E} "R 4S+bgo!F E} "sR;q3#F#C "<CFP+'"ϘIFG#IFϘGb0O3F0 "<3#F# (ЊϘ"IFG0bbR;bbϘ"IFGhbb"ϘIFGx #K@rIH{DyD3xDBvd8\\-OtM(FhF +4F$;?"+ 4W(4{D{4\ O FOzO V4B ##)#+h4)C*@[FF4 'K% kD{DlK{DD34q#Fl47@ACB<0F)FJFSFF+F EF Fs )*ӸI:F yDF1* x++(*B* D7@ACBC c$;44434/$OYCS4 cO #s4F4C4344%@O43#C4$;RE@F 6 0 ; !@FGE4D$+q0-!@FG-Bѹ4$?F4]+00!@F=Gj4$4Saxe90@FG)g4\+0 !@F{na4`WX`WW`WX0F Fh+h2 R\!(FG , ,.<,>"&\,$+h!F(F0@G!F(F\,јG+hf!(F+hv!(F+hn!(F+ht!(F+hb!(F+hr!(F+h(Fx!G#OA"(F2"F]0+ha!(FբhG-O (FhF+ FFO )g-Z)F0FBԿO  Fy8"h"! FG C_+#h ! F?Gz-& F FWCD3D+ -#h FGCD3D+ܺ }/#h ! F=Gkѹ #h"! FOGFhF--̿O  "r  NFOo~DvNkBFF~D8vNFFO~DovK@"IH{DyDsxD K@" I H{DyDsxD]]]]^U`U]FUU-O- (FhF+00;?"+ F@G(߀(̀0̀@ʀ +@ޅ # / K{D30zz#+@#r I0+ O O;4,  .&@cE8FI @0@ ?$#I L˰@9@X$Fд˻̿ FԴۨAF8F @ǀ? O H Հ@@J  1F8F EO  y,,F/BIyD +#9 #9 5{/@x:IyD *F F/@d3IyD2IyD+G+@+9: # |{z  / K{D303 '#r0* &+>>-C6?<<J@\.T$TSSZ ?O J N D @ @𣂎 +  oC  ہ+@MBD#CEտ F &ݰIMO + . 6< K<@H :&  E +@C   + v +Z03:*8F @ {: z+&+ D3D0+  @+-#h-! FG0+ 0!#h FGO#hX!x! FG[ ENFF#h60! FGE+*z8 s#;8^F{D1F8FBFB@? F#hxG.ؿC+ >+F|D\)@;X0+@9 ` _ UFF#h^F FG6m BhO ^F_FBFԿO O UFHFDF67B9VEԿ*FE*- ) = X=@Հ0I۰K>:+?0HFG?:HF6'0GBLF]FFS#h F1xG +L0E#h*_- e!E! FG F+#h-!+!G#h0! FG0O+  'Y8Fr{ FDF0>F,Z)F@F1F0HFG4(F9F\EFLF +? E#h ! F  GME 0oC0= < XC++#IH 8Fd 0 {J4 #hKf  F*\G1F8F  8FI - @H@H 8@  8`H { 8 {8FZzAF)I $(@ƀ $u#8F0,+CF IO 8F8F@N  0 8 ȋ*:B@ ;?nO  l @ +@@i\#񸁹𣁺݁ԴFS遀0B& LyD1F % x**+>I %F˰@9@?ޮF$ֻ#h FG?ڭAD)D #h FG)>8F Oi IF8F $ ) K{DmDO+J&!zDF@)DЙBfD+=x*:*0F[ ENFF#h6 ! FGE+<#h-! FG0+0!#h FGO#hX!x! FGK{Ds+@&ED# n񖀨Ѭ#h ! FGIyDIyDj~ԫ#h ! FG- p!P!8F 0 p {:B S+OqC 0 + p ۰M @=@Bi ,8F9F@]0+OH'#?@۫C˻̿ FԴ#h+! FG@#h+! FG8+v+h+i:  {zS T 00v0FFHk8F 0 :3: 0I @9@J5#Ժ #к#̺S ?0F0,#&۹##F0 0ހ : `oCpoC !K@2IH{DyDsxDK@2IH{DyDsxDK@2IH{DyDsxD>>pp,pkېF/O; |/Oq (K{? Oq (; +I-}sgVf#(Fq  LF"XBHa𶀠j(ChYGqs[ _h(Fh++h"!(FGq:Ff [FAF(Fq<F(T;FBF(Fq1+ЪioU`qYq;FBF(Fqhi +h"!(FG ?/+h !(FG?+h(FG?/+h !(FG?ь+h(F#!G! #{(FqJo_ 7#h+?Fq0p>`qZ`%pF M FF B2h2FP( h2F)F#hj+F MpQ#]pGKA4bIH{DyDsxDnG0?@1#]KAGbIH{DyDsxD6G>j@a0 KD{D ]KAYbIH{DyDsxD~IF>&@pM*2F+; C H3P"Fh CD3  hC C@3 )Fh("F)F0F +F M p K@}r I H{DyDsxD0 K@~rI H{DyDsxD$TF>?LDJFDzDHxD^ @ "! J hzD& KA I H{DyDsxD[ xӱJ! zD@pG KA I H{DyDsxD\ KA I H{DyDsxDP[Dn<<DV<=` FFJ!zD KA I H{DyDsxD$ KA I H{DyDsxD>D<&<&D;Z= FIyDPJD hzD!]KAIH{DyD sxD KA I H{DyD sxDEoC;;Cn;< { J !zDC]pGKAIH{DyDsxDBC;v<aF J F!zDKAIH{DyDsxDB:,<< FIFDJyDzD!@KA4IH{DyDsxDTDo5B`:;   FJ!zD@pG KAK I H{DyDsxD$ KAL I H{DyDsxD6.8 0R (B j aJzD 0@pGJ%9zDUp 0@pGKA" IH{DyD8sxD6 KA" I H{DyD8sxD*`>"67H> 67O\(L )FڱFQJ+FzDJ'+F9zDw|p KA%" I H{DyD`FȱJ+F1FzDf F FT8` F(FoKA2IH{DyDZsxD\39p12-AiFHOFxD FVFJ+FAFzDhJzDJzD? F F 0` F(Fo KA42 I H{DyD^sxD2n;M90R2F K({De"x\ O \"F!@`P8FL!|DD(F(F d8PFH@!xDPFi8FchG3h9F F30(F-O#F  0 0K{D%O),F QF0F_4 P5KO{DKDZURR-OFhF! `0^+A `0]+t13t10-+0300+]+3dt~DD T# 2D# 0]++-+[+   0:+=+U.+9l1F3l10]++ )\<]) 0 30)PBRC; S/2B`Ѯx*:+DF.)/]** $Dt0+@xʱ(D=*\JT"1D"/*+*O0 !ZF0F@(qѰHZF !xD8(@𥀭HZF !xD0(@HZF !xD&(@𫀦HZF !xD(@𶀢HZF !xD(@ˀHZF !xD (@րHZF !xD(@HZF !xD(@؀HZF !xD(@HZF !xD(?h#F`:23BS1CB  h"F`;32 BR1BB  \#t0D0]+?3\xh#F`:23BS1CB  `h#F`:23IBS1CB  Hh#F`:23 BS1CBѪ4h#F`:23)S1CBіo o h#F`:23BS1CBxh#F`:23IBS1CBdh#F`:23BS1CBPh#F`:23IBS1CB<h#F`:23BS1CB(*1RN//////////-O(FChF+ ?"+KF{Do+@ F;#i++-+#yci z*@ #@vs}KO NFMF{DzKF{D0CEC@b?Hh3084h?BԿ!!)PFO UbDEu0GD0+D B 0!PFG?+@,ѹ2;vBeEeHFch F!G#ci~#i0+ Fch!G i(?~/M/yB(tch! FGnO HFch F!G#ci^R/NOrO1~D 0#DF p  F |/ aE3` 0K"{DgX()KABIH{DyDbsxDKAAIH{DyDbsxDKORIH{DyDbsxDxKJHKJp1>I1(V+0(&+0((-O(~АFBhF*iF?+ؿ 1F&  !(FG\,#[U,is?EjhF,i\+=?;97531h3 k& F0X(,|khYF(FG#ZFQF#(FLౝ@ $ $ $ $ $$\$$#"QF#(F0( KA I H{DyDfsxDKAIH{DyDfsxD/L'N'r/4')-G(;ИFChF+BFFUO O O !#JF0F;ر4EԿSFJ5ijxh3 9/9F#JF0F (#;U KA I H{DyDjsxDfKAIH{DyDjsxDZ.&&.l&(-O0(FВFBhF*5иi O O 'ۃ F%@Z$0[ BtU0XF5GEԿKFIc=  #sU  KA I H{DyDnsxDKAIH{DyDnsxD-%(-%%-OF+ }FO @F %i5`+3p1Fch F8pG5h% I+0-}#FiCE&dF{+FD 2 -@1F FU7chG3hZBEF.-+ɀ(FP(ɀBx+!Ur@P-F }N- G0-؀I-OF8F' GE [chG5h01F F 30[#IyDT(x-+|Է  i-n-OFR?kD0+?k D B chG?+?_"i1F F*5h.-b1F F UchGF  @̀BEch ϘGF0  1F F:30-eFwF(FE(71F3h F}UchG+3ZF ZFCE +chG2h0F51F F3;ogFB }'ch0"1FS FTG0hX(;#5h8IyD(85IyD(SP  1Fch FG#' }1F3h FUchG#5hj !O p }eFwF+?RO5eFwF| 8E%.%b#FBB#FBF #5عkFLF#0F"" F IyDq(W#$;`/$ F;`$ F)-OF#DMF , AF Ch G8h# ( ;@+bw8h3(hE\FphF1* BchAF FG5E`=p%/ Ix%)0%+$o#h FG DM#i3`1 ch F1FG3h 2 0chAF F5GE`8hA(3OS#+@?Oq h!jyiJ 9iO~ !j8(QeJF! Fj+#(3#i0;j`ChSR\[*/[*1@B0F)`! 3FJF)F(€0hY񒀹j F2F[(M)JF ! F1F(?@ooj@o@_@@u rJFoJѹj F(JFoQѹj Fy({JFoMѹj Fg(oj)?mci?3oo_<9  R!KA" I!H{DyDrsxD( `D! Fo(>!2F F(4! F'(,! F($` `K`+O3D& x2FpGM DH4%h*E-7 DT4 CfP$h DP4  $h G # CL3`a"F)F h( (x "F)F8F$F3j+F M KA)B I H{DyDvsxDKA(BIH{DyDvsxD%R%JzDK !XKhJ{DzD@pG KAR I H{DyDysxDT^;x!$`HDJ F!F\  Kh J{DzDK KA4R I H{DyD|sxD":x!8$lPDKFH{DJzD\h!KJh{DzD KAMR I H{DyDsxD:&xG# K$!J{DzD@pG KAnR I H{DyDcxD KAoR I H{DyDcxDM߫Z#BB#vp FB!KJ{DzD KAR I H{DyDCxDx KAR I H{DyDCxDlѬc"" XDTKJD@{DzD!`KARIH{DyD$CxD6 KAR I H{DyD$CxD*$5Sb"$JJ" ~0 J# FzD3E0@pGKARIH{DyD4CxDɪ!0qF J# FzDF30KARIH{DyDcxDu!NH FI#xDyD JFhzD KORI H{DyDcxDh#4!h 0  %J# FPFzD3 0@pG KAb I H{DyDcxDl KAb I H{DyDcxD` $ v0FFJ# F3zDFX0 KA1b I H{DyDlCxD. KA2b I H{DyDlCxD" R : n XLDJ|DC#zDFKAFbIH{DyD|CxD KAGb I H{DyD|CxD"*|jpDJzD4#FKA]bIH{DyDCxDKA_bIH{DyDCxD KA^b I H{DyDCxD!J 2N0 J# FzD3E0@pG KA~b I H{DyDCxDX KAb I H{DyDCxDLfN0x FɱFJ#zDF3F0 KAb I H{DyDcxD KAb I H{DyDcxDe.J FH#IxDyDJFhzDKAbIH{DyDcxD KAb I H{DyDcxDt*\@B8(  HxDpG HxDpG HxDpG HxDpG HxDpG HxDpG HxDpG HxDpG HxDpG$2<FPZC J0zDF2σBѝ ]! :` C` a    ڵ@   pG pG pG pG@ ]r@+O0 ] ]^(  ]R]H],"D FF/E ѝ ] K{D @  ` pGF6L|D @  @  6 K{D @  `  pG5JpG$B@BOFB(pB(pAB(ApB(poB(`oB(`AoB(A`oB(`_B(P_B(PA_B(AP_B(POB(@OB(@AOB(A@OB(@?B(0?B(0A?B(A0?B(0/B( /B( A/B(A /B( B(B(AB(AB(B(B(AB(AB(FpG  pG pGO0~)-@@pG)> HIBJHCBB@B#OF@(s@(sA@(As@(so@(co@(cAo@(Aco@(c_@(S_@(SA_@(AS_@(SO@(CO@(CAO@(ACO@(C?@(3?@(3A?@(A3?@(3/@(#/@(#A/@(A#/@(#@(@(A@(A@(@(@(A@(A@(H@BpGH@BpG8 Op@pG#H@BpG(ȿo@O@&)-@@pGSJ)(O1O0  m #pGO-CB FuF8 8Fdӳ+iе-av @  C"DECu< F  e C@ֳOXFBr[ e$mA4EДBu $mA$A% DD @  $B CaE 1 6-@-;> >>%>3>>>>> >$>>'>>> > >triostr.ctargetsourcestringsubstringmax > 0firstsecondformatdatetimeFALSEpatternFunctiondelimiters(base >= 2) && (base <= 36)selfothertrio.cVALID(self)VALID(self->location)VALID(file)self->actually.cached == 1((argfunc == NULL) && (argarray == NULL)) || ((argfunc != NULL) && (argarray != NULL))VALID(self->OutStream)((base >= MIN_BASE) && (base <= MAX_BASE)) || (base == NO_BASE)NANnan-INF-infINFinf:enter:leave((trio_reference_t *)ref)->parameter->type == FORMAT_USER_DEFINEDVALID(format)VALID(OutStream)VALID(stream)VALID(argfunc)VALID(buffer)VALID(buffer) || (max == 0)[:alnum:][:alpha:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:xdigit:]VALID(self->InStream)(base >= MIN_BASE && base <= MAX_BASE) || (base == NO_BASE)INFINITEi <= MAX_PARAMETERSVALID(InStream)End of fileInvalid argumentToo many argumentsDouble referenceReference gapOut of memoryInvalid rangeCustom errorUnknowntrio_appendtrio_append_maxtrio_containstrio_copytrio_copy_maxinternal_duplicate_maxtrio_duplicate_maxtrio_equaltrio_equal_casetrio_equal_case_maxtrio_equal_localetrio_equal_maxtrio_format_date_maxtrio_hashtrio_indextrio_index_lasttrio_matchtrio_match_casetrio_span_functiontrio_lowertrio_substringtrio_substring_maxtrio_tokenizetrio_to_longtrio_to_unsigned_longtrio_uppertrio_string_destroytrio_string_extracttrio_xstring_settrio_string_sizetrio_string_appendtrio_xstring_appendtrio_xstring_append_chartrio_xstring_append_maxtrio_string_containstrio_xstring_containstrio_string_copytrio_xstring_copytrio_string_duplicatetrio_xstring_duplicatetrio_string_equaltrio_xstring_equaltrio_string_equal_maxtrio_xstring_equal_maxtrio_string_equal_casetrio_xstring_equal_casetrio_string_equal_case_maxtrio_xstring_equal_case_maxtrio_string_format_date_maxtrio_string_indextrio_string_index_lasttrio_string_lengthtrio_string_gettrio_string_lowertrio_string_matchtrio_xstring_matchtrio_string_match_casetrio_xstring_match_casetrio_string_substringtrio_xstring_substringtrio_string_upperTrioOutStreamCustomTrioOutStreamStringMaxTrioInStreamCustomTrioInStreamStringTrioOutStreamFileTrioOutStreamStringDynamicTrioInStreamFileTrioOutStreamStringTrioOutStreamFileDescriptorTrioUndoStreamFileTrioParse0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzTrioWriteNumber(nil)TrioWriteStringTrioWriteDoubletrio_unregistertrio_get_formattrio_get_argumenttrio_print_reftrio_vprint_reftrio_printv_refTrioFormattrio_printftrio_vprintftrio_printfvtrio_fprintftrio_vfprintftrio_fprintfvtrio_dprintftrio_vdprintftrio_dprintfvtrio_cprintftrio_vcprintftrio_cprintfvtrio_cprintfftrio_sprintftrio_vsprintftrio_sprintfvtrio_snprintftrio_vsnprintftrio_snprintfvtrio_snprintfcattrio_vsnprintfcattrio_aprintftrio_vaprintftrio_asprintftrio_vasprintftrio_asprintfvTrioReadNumberTrioReadCharTrioReadStringTrioReadGroupTrioScanProcessTrioScantrio_scanftrio_vscanftrio_scanfvtrio_fscanftrio_vfscanftrio_fscanfvtrio_dscanftrio_vdscanftrio_dscanfvtrio_cscanftrio_vcscanftrio_cscanfvtrio_cscanfftrio_sscanftrio_vsscanftrio_sscanfv;> >>%>3>>>>> >$>>'>>> > >5E5  , 6 M 0 Ĵ4o@ 6 ,+Po+oo)o 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,..GCC: (GNU) 11.4.0A2aeabi(7-A A   ".shstrtab.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rel.dyn.rel.plt.init.text.fini.rodata.ARM.exidx.eh_frame.init_array.fini_array.dynamic.got.data.bss.comment.ARM.attributes44 o` @ @ @6%o))2o++@A ++PJ B,,S00 N 0 0Y44_ĴĴemp x(0p3I)))))