flwrap-1.3.6/0000775000175000017500000000000014364737360010034 500000000000000flwrap-1.3.6/README0000644000175000017500000000104714304245212010614 00000000000000Flwrap is a software utility for Amateur Radio use. Its purpose is to encapsulate both text and binary files in a way that allows them to be transmitted over any of several digital modes verified at the receipt end for correctness The latest version can always be found at: http://www.w1hkj.com/Wrap.html Visit this page for extensive documentation and an archive of XML files for transceivers supported by RigCAT. Join the linuxham Yahoo group for support, news and updates on W1HKJ software: http://groups.yahoo.com/group/linuxham/join flwrap-1.3.6/m4/0000775000175000017500000000000014364737360010354 500000000000000flwrap-1.3.6/m4/opt.m40000644000175000017500000000163414304245212011322 00000000000000AC_DEFUN([AC_FL_OPT], [ AC_ARG_ENABLE([optimizations], AC_HELP_STRING([--enable-optimizations], [use x86 optimizations (none|sse|sse2|sse3|native) @<:@none@:>@]), [case "${enableval}" in none|sse|sse2|sse3|native) ac_cv_opt="${enableval}" ;; *) AC_MSG_ERROR([bad value ${enableval} for --enable-optimizations]) ;; esac], [ac_cv_opt=none]) OPT_CFLAGS="-O2 -ffast-math -finline-functions -fomit-frame-pointer" case "$ac_cv_opt" in sse) OPT_CFLAGS="$OPT_CFLAGS -msse -mfpmath=sse" ;; sse2) OPT_CFLAGS="$OPT_CFLAGS -msse2 -mfpmath=sse" ;; sse3) OPT_CFLAGS="$OPT_CFLAGS -msse3 -mfpmath=sse" ;; native) OPT_CFLAGS="$OPT_CFLAGS -march=native -mfpmath=sse" ;; none) ;; esac AC_SUBST([OPT_CFLAGS]) ]) flwrap-1.3.6/m4/macosx.m40000644000175000017500000000245214304245212012011 00000000000000AC_DEFUN([AC_FL_MACOSX], [ case "$target_os" in darwin*) target_darwin="yes" ;; *) target_darwin="no" ;; esac AC_ARG_ENABLE([mac-universal], AC_HELP_STRING([--enable-mac-universal], [build a universal binary on Mac OS X @<:@no@:>@]), [case "${enableval}" in yes|no) ac_cv_mac_universal="${enableval}" ;; *) AC_MSG_ERROR([bad value "${enableval}" for --enable-mac-universal]) ;; esac], [ac_cv_mac_universal=no]) if test "x$target_darwin" = "xyes" && test "x$ac_cv_mac_universal" = "xyes"; then mac_minversion="-mmacosx-version-min=10.4" case "$target_os" in darwin8*) mac_arches="-arch i386 -arch ppc" mac_sysroot="-isysroot /Developer/SDKs/MacOSX10.4u.sdk" ;; darwin9*) mac_arches="-arch i386 -arch ppc -arch x86_64 -arch ppc64" mac_sysroot="-isysroot /Developer/SDKs/MacOSX10.5.sdk" ;; *) mac_arches="" mac_sysroot="" ;; esac MAC_UNIVERSAL_CFLAGS="$mac_arches $mac_sysroot $mac_minversion" MAC_UNIVERSAL_LDFLAGS="$mac_arches" fi AC_SUBST([MAC_UNIVERSAL_CFLAGS]) AC_SUBST([MAC_UNIVERSAL_LDFLAGS]) AM_CONDITIONAL([DARWIN], [test "x$target_darwin" = "xyes"]) ]) flwrap-1.3.6/m4/build.m40000644000175000017500000000451214304245212011615 00000000000000AC_DEFUN([AC_FLWRAP_SH_DQ], [ ac_sh_dq="\"`$1 | sed 's/"/\\\\"/g'`\"" ]) AC_DEFUN([AC_FLWRAP_BUILD_INFO], [ # Define build flags and substitute in Makefile.in # CPPFLAGS FLWRAP_BUILD_CPPFLAGS="-I\$(srcdir) -I\$(srcdir)/include " # CXXFLAGS FLWRAP_BUILD_CXXFLAGS="$FLTK_CFLAGS $X_CFLAGS -pipe -Wall -fexceptions $OPT_CFLAGS $DEBUG_CFLAGS \ $PTW32_CFLAGS" # LDFLAGS FLWRAP_BUILD_LDFLAGS= # LDADD FLWRAP_BUILD_LDADD="$FLTK_LIBS $X_LIBS $EXTRA_LIBS $PTW32_LIBS" if test "x$ac_cv_debug" = "xyes"; then FLWRAP_BUILD_CXXFLAGS="$FLWRAP_BUILD_CXXFLAGS -UNDEBUG" FLWRAP_BUILD_LDFLAGS="$FLWRAP_BUILD_LDFLAGS $RDYNAMIC" else FLWRAP_BUILD_CXXFLAGS="$FLWRAP_BUILD_CXXFLAGS -DNDEBUG" fi AC_SUBST([FLWRAP_BUILD_CPPFLAGS]) AC_SUBST([FLWRAP_BUILD_CXXFLAGS]) AC_SUBST([FLWRAP_BUILD_LDFLAGS]) AC_SUBST([FLWRAP_BUILD_LDADD]) #define build variables for config.h AC_DEFINE_UNQUOTED([BUILD_BUILD_PLATFORM], ["$build"], [Build platform]) AC_DEFINE_UNQUOTED([BUILD_HOST_PLATFORM], ["$host"], [Host platform]) AC_DEFINE_UNQUOTED([BUILD_TARGET_PLATFORM], ["$target"], [Target platform]) test "x$LC_ALL" != "x" && LC_ALL_saved="$LC_ALL" LC_ALL=C export LC_ALL AC_FLWRAP_SH_DQ([echo $ac_configure_args]) AC_DEFINE_UNQUOTED([BUILD_CONFIGURE_ARGS], [$ac_sh_dq], [Configure arguments]) # Allow BUILD_DATE, BUILD_USER, BUILD_HOST to be externally overridden by # environment variables. ac_sh_dq="\"$BUILD_DATE\"" test "x$BUILD_DATE" = "x" && AC_FLWRAP_SH_DQ([date]) AC_DEFINE_UNQUOTED([BUILD_DATE], [$ac_sh_dq], [Build date]) ac_sh_dq="\"$BUILD_USER\"" test "x$BUILD_USER" = "x" && AC_FLWRAP_SH_DQ([whoami]) AC_DEFINE_UNQUOTED([BUILD_USER], [$ac_sh_dq], [Build user]) ac_sh_dq="\"$BUILD_HOST\"" test "x$BUILD_HOST" = "x" && AC_FLWRAP_SH_DQ([hostname]) AC_DEFINE_UNQUOTED([BUILD_HOST], [$ac_sh_dq], [Build host]) AC_FLWRAP_SH_DQ([$CXX -v 2>&1 | tail -1]) AC_DEFINE_UNQUOTED([BUILD_COMPILER], [$ac_sh_dq], [Compiler]) AC_FLWRAP_SH_DQ([echo $FLWRAP_BUILD_CPPFLAGS $FLWRAP_BUILD_CXXFLAGS]) AC_DEFINE_UNQUOTED([FLWRAP_BUILD_CXXFLAGS], [$ac_sh_dq], [FLWRAP compiler flags]) AC_FLWRAP_SH_DQ([echo $FLWRAP_BUILD_LDFLAGS $FLWRAP_BUILD_LDADD]) AC_DEFINE_UNQUOTED([FLWRAP_BUILD_LDFLAGS], [$ac_sh_dq], [FLWRAP linker flags]) if test "x$LC_ALL_saved" != "x"; then LC_ALL="$LC_ALL_saved" export LC_ALL fi ]) flwrap-1.3.6/m4/static.m40000644000175000017500000000062014304245212012001 00000000000000AC_DEFUN([AC_FL_STATIC], [ AC_ARG_ENABLE([static], AC_HELP_STRING([--enable-static], [enable static linking for some libraries]), [case "${enableval}" in yes|no) ac_cv_static="${enableval}" ;; *) AC_MSG_ERROR([bad value ${enableval} for --enable-static]) ;; esac], [ac_cv_static=no]) ]) flwrap-1.3.6/m4/debug.m40000644000175000017500000000706714304245212011614 00000000000000AC_DEFUN([AC_FL_RDYNAMIC], [ LDFLAGS_saved="$LDFLAGS" LDFLAGS="$LDFLAGS -rdynamic" AC_MSG_CHECKING([whether $CC supports -rdynamic]) AC_TRY_LINK([], [], [ac_cv_rdynamic=yes], [ac_cv_rdynamic=no]) AC_MSG_RESULT([$ac_cv_rdynamic]) AC_LANG_PUSH(C++) AC_MSG_CHECKING([whether $CXX supports -rdynamic]) AC_TRY_LINK([], [], [ac_cv_rdynamic=yes], [ac_cv_rdynamic=no]) AC_MSG_RESULT([$ac_cv_rdynamic]) AC_LANG_POP(C++) LDFLAGS="$LDFLAGS_saved" ]) AC_DEFUN([AC_FL_DEBUG], [ AC_REQUIRE([AC_FL_OPT]) AC_ARG_ENABLE([debug], AC_HELP_STRING([--enable-debug], [turn on debugging]), [case "${enableval}" in yes|no) ac_cv_debug="${enableval}" ;; *) AC_MSG_ERROR([bad value ${enableval} for --enable-debug]) ;; esac], [ac_cv_debug=no]) AC_ARG_VAR([BFD_CFLAGS], [C compiler flags for libbfd]) AC_ARG_VAR([BFD_LIBS], [linker flags for libbfd]) AC_ARG_WITH([bfd], AC_HELP_STRING([--with-bfd@<:@=DIR@:>@], [search for libbfd in DIR/include and DIR/lib @<:@mingw32 only@:>@]), [ac_cv_want_bfd="$withval"], [ac_cv_want_bfd=yes]) if test "x$ac_cv_debug" = "xyes" && test "x$ac_cv_want_bfd" != "xno" && \ test "x$target_mingw32" = "xyes"; then if test "x$ac_cv_want_bfd" != "xyes"; then # set -I and -L switches bfd_default_cflags="-I${ac_cv_want_bfd}/include" bfd_default_libs="-L${ac_cv_want_bfd}/lib" fi # don't override the user-specified vars BFD_CFLAGS="${BFD_CFLAGS:-$bfd_default_cflags}" BFD_LIBS="${BFD_LIBS:-$bfd_default_libs}" ac_cv_want_bfd="yes" CPPFLAGS_saved="$CPPFLAGS" LDFLAGS_saved="$LDFLAGS" CPPFLAGS="$CPPFLAGS $BFD_CFLAGS" LDFLAGS="$LDFLAGS $BFD_LIBS" AC_CHECK_HEADER([bfd.h], [ac_cv_have_bfd="yes"], [ac_cv_have_bfd="no"]) if test "x$ac_cv_have_bfd" = "xyes"; then bfd_other_libs="-liberty -lpsapi -limagehlp" AC_CHECK_LIB([bfd], [bfd_set_format], [ac_cv_have_bfd="yes"], [ac_cv_have_bfd="no"], [$bfd_other_libs]) fi CPPFLAGS="$CPPFLAGS_saved" LDFLAGS="$LDFLAGS_saved" if test "x$ac_cv_have_bfd" = "xyes"; then BFD_LIBS="$BFD_LIBS -lbfd $bfd_other_libs" fi fi if test "x$ac_cv_debug" = "xyes"; then AC_MSG_CHECKING([for debug info flag]) if test "x$GXX" = "xyes"; then if test "x$target_mingw32" = "xyes"; then gflag="-gstabs" else gflag="-ggdb3" fi else gflag="-g" fi AC_MSG_RESULT([$gflag]) DEBUG_CFLAGS="-O0 -fno-inline-functions -fno-omit-frame-pointer $gflag -Wall" AC_FL_RDYNAMIC if test "x$ac_cv_rdynamic" = "xyes"; then RDYNAMIC=-rdynamic fi CXXFLAGS="" CFLAGS="$CXXFLAGS" AC_MSG_NOTICE([debugging enabled; overriding CXXFLAGS]) if test "x$target_darwin" = "xyes"; then ac_cv_compat_stack=yes AC_DEFINE([HAVE_DBG_STACK], 1, [Define to 1 if we have dbg::stack]) elif test "x$target_mingw32" = "xyes" && test "x$ac_cv_have_bfd" = "xyes"; then ac_cv_compat_stack=yes AC_DEFINE([HAVE_DBG_STACK], 1, [Define to 1 if we have dbg::stack]) else ac_cv_compat_stack=no AC_DEFINE([HAVE_DBG_STACK], 0, [Define to 0 if not using dbg::stack]) fi fi AM_CONDITIONAL([ENABLE_DEBUG], [test "x$ac_cv_debug" = "xyes"]) AC_SUBST([DEBUG_CFLAGS]) AC_SUBST([RDYNAMIC]) AM_CONDITIONAL([COMPAT_STACK], [test "x$ac_cv_compat_stack" = "xyes"]) ]) flwrap-1.3.6/m4/fltk.m40000644000175000017500000000363214304245212011460 00000000000000AC_DEFUN([AC_CHECK_FLTK], [ AC_ARG_VAR([FLTK_CONFIG], [Path to fltk-config utility]) AC_ARG_VAR([FLTK_CFLAGS], [C compiler flags for FLTK, overriding fltk-config]) AC_ARG_VAR([FLTK_LIBS], [linker flags for FLTK, overriding fltk-config]) if test "x$FLTK_CFLAGS" = "x" && test "x$FLTK_LIBS" = "x"; then if test "x$FLTK_CONFIG" = "x"; then AC_PATH_PROG([FLTK_CONFIG], [fltk-config], [no]) else AC_MSG_CHECKING([for fltk-config]) AC_MSG_RESULT([$FLTK_CONFIG]) fi if test "$FLTK_CONFIG" = "no"; then AC_MSG_ERROR([ *** The fltk-config script could not be found. Please install the development *** headers and libraries for FLTK 1.1.x, or set PATH to the directory that *** contains fltk-config. ]) fi HAVE_FLTK_API_VERSION=no FLTK_API_VERSION="`$FLTK_CONFIG --api-version`" if test $? -ne 0; then AC_MSG_ERROR([$FLTK_CONFIG failed]) fi if test "x$FLTK_API_VERSION" = "x1.1" || test "x$FLTK_API_VERSION" = "x1.3"; then HAVE_FLTK_API_VERSION=yes fi if test "${HAVE_FLTK_API_VERSION}" = "no"; then AC_MSG_ERROR([ *** The version of FLTK found on your system provides API version $FLTK_API_VERSION. *** To build $PACKAGE you need a FLTK version that provides API 1.1 or 1.3. ]) fi FLTK_CFLAGS=`$FLTK_CONFIG --cxxflags` if test "x$ac_cv_static" != "xyes"; then FLTK_LIBS=`$FLTK_CONFIG --ldflags --use-images` else FLTK_LIBS=`$FLTK_CONFIG --ldstaticflags --use-images` fi else AC_MSG_NOTICE([not checking for FLTK]) fi AC_SUBST([FLTK_CFLAGS]) AC_SUBST([FLTK_LIBS]) AC_DEFINE_UNQUOTED([FLTK_BUILD_VERSION], ["`$FLTK_CONFIG --version`"], [FLTK version]) AC_ARG_VAR([FLUID], [Fast Light User-Interface Designer]) AC_CHECK_PROG([FLUID], [fluid], [fluid]) AM_CONDITIONAL([HAVE_FLUID], [test -n "$FLUID"]) ]) flwrap-1.3.6/m4/win32.m40000644000175000017500000000376114304245212011465 00000000000000AC_DEFUN([AC_FL_WIN32], [ case "$target_os" in *mingw*) target_win32="yes" target_mingw32="yes" ;; *cygwin*|*win32*|*w32*) target_win32="yes" ;; *) target_win32="no" ;; esac if test "x$target_win32" = "xyes"; then AC_CHECK_PROG([WINDRES], [${ac_tool_prefix}windres], [${ac_tool_prefix}windres]) if [ test "x$WINDRES" = "x" ]; then AC_MSG_WARN([The windres utility could not be found]) fi AC_DEFINE([__WOE32__], 1, [Define to 1 if we are building on mingw]) fi if test "x$target_mingw32" = "xyes"; then AC_CHECK_PROG([MAKENSIS], [makensis], [makensis]) fi AC_SUBST([WINDRES]) AM_CONDITIONAL([HAVE_WINDRES], [test "x$WINDRES" != "x"]) AC_SUBST([MAKENSIS]) AM_CONDITIONAL([HAVE_NSIS], [test "x$MAKENSIS" != "x"]) AM_CONDITIONAL([WIN32], [test "x$target_win32" = "xyes"]) AM_CONDITIONAL([MINGW32], [test "x$target_mingw32" = "xyes"]) AC_ARG_VAR([PTW32_CFLAGS], [C compiler flags for pthreads-w32]) AC_ARG_VAR([PTW32_LIBS], [linker flags for pthreads-w32]) AC_ARG_WITH([ptw32], AC_HELP_STRING([--with-ptw32@<:@=DIR@:>@], [search for pthreads-w32 in DIR/include and DIR/lib @<:@mingw32 only@:>@]), [ac_cv_want_ptw32="$withval"], [ac_cv_want_ptw32=no]) if test "x$ac_cv_want_ptw32" != "xno"; then if test "x$ac_cv_want_ptw32" != "xyes"; then # set -I and -L switches ptw32_default_cflags="-I${ac_cv_want_ptw32}/include" ptw32_default_libs="-L${ac_cv_want_ptw32}/lib" fi ptw32_default_cflags="-DPTW32_STATIC_LIB $ptw32_default_cflags" ptw32_default_libs="$ptw32_default_libs -lpthreadGC2 -lws2_32" # don't override the user-specified vars PTW32_CFLAGS="${PTW32_CFLAGS:-$ptw32_default_cflags}" PTW32_LIBS="${PTW32_LIBS:-$ptw32_default_libs}" ac_cv_want_ptw32="yes" else if test "x$target_mingw32" = "xyes"; then PTW32_LIBS="-lpthread -lwsock32 -lws2_32" fi fi AC_SUBST([PTW32_CFLAGS]) AC_SUBST([PTW32_LIBS]) ]) flwrap-1.3.6/src/0000775000175000017500000000000014364737360010623 500000000000000flwrap-1.3.6/src/flwrap-rc.rc0000644000175000017500000000026314304245211012744 00000000000000#include // include for version info constants #include "wraprc.h" IDI_ICON ICON DISCARDABLE "flwrap.ico" //A ICON MOVEABLE PURE LOADONCALL DISCARDABLE "flarq.ico" flwrap-1.3.6/src/config.h.in0000664000175000017500000001301114364737334012563 00000000000000/* src/config.h.in. Generated from configure.ac by autoheader. */ /* Build platform */ #undef BUILD_BUILD_PLATFORM /* Compiler */ #undef BUILD_COMPILER /* Configure arguments */ #undef BUILD_CONFIGURE_ARGS /* Build date */ #undef BUILD_DATE /* Build host */ #undef BUILD_HOST /* Host platform */ #undef BUILD_HOST_PLATFORM /* Target platform */ #undef BUILD_TARGET_PLATFORM /* Build user */ #undef BUILD_USER /* FLTK version */ #undef FLTK_BUILD_VERSION /* FLWRAP compiler flags */ #undef FLWRAP_BUILD_CXXFLAGS /* FLWRAP linker flags */ #undef FLWRAP_BUILD_LDFLAGS /* version string */ #undef FLWRAP_VERSION /* major version number */ #undef FLWRAP_VERSION_MAJOR /* minor version number */ #undef FLWRAP_VERSION_MINOR /* patch/alpha version string */ #undef FLWRAP_VERSION_PATCH /* Define to 0 if not using dbg::stack */ #undef HAVE_DBG_STACK /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_MINIX_CONFIG_H /* Define to 1 if stdbool.h conforms to C99. */ #undef HAVE_STDBOOL_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDIO_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the `strstr' function. */ #undef HAVE_STRSTR /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 if you have the header file. */ #undef HAVE_WCHAR_H /* Define to 1 if the system has the type `_Bool'. */ #undef HAVE__BOOL /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to 1 if all of the C90 standard headers exist (not just the ones required in a freestanding environment). This macro is provided for backward compatibility; new code need not use it. */ #undef STDC_HEADERS /* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # undef _ALL_SOURCE #endif /* Enable general extensions on macOS. */ #ifndef _DARWIN_C_SOURCE # undef _DARWIN_C_SOURCE #endif /* Enable general extensions on Solaris. */ #ifndef __EXTENSIONS__ # undef __EXTENSIONS__ #endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # undef _GNU_SOURCE #endif /* Enable X/Open compliant socket functions that do not require linking with -lxnet on HP-UX 11.11. */ #ifndef _HPUX_ALT_XOPEN_SOCKET_API # undef _HPUX_ALT_XOPEN_SOCKET_API #endif /* Identify the host operating system as Minix. This macro does not affect the system headers' behavior. A future release of Autoconf may stop defining this macro. */ #ifndef _MINIX # undef _MINIX #endif /* Enable general extensions on NetBSD. Enable NetBSD compatibility extensions on Minix. */ #ifndef _NETBSD_SOURCE # undef _NETBSD_SOURCE #endif /* Enable OpenBSD compatibility extensions on NetBSD. Oddly enough, this does nothing on OpenBSD. */ #ifndef _OPENBSD_SOURCE # undef _OPENBSD_SOURCE #endif /* Define to 1 if needed for POSIX-compatible behavior. */ #ifndef _POSIX_SOURCE # undef _POSIX_SOURCE #endif /* Define to 2 if needed for POSIX-compatible behavior. */ #ifndef _POSIX_1_SOURCE # undef _POSIX_1_SOURCE #endif /* Enable POSIX-compatible threading on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # undef _POSIX_PTHREAD_SEMANTICS #endif /* Enable extensions specified by ISO/IEC TS 18661-5:2014. */ #ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ # undef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ #endif /* Enable extensions specified by ISO/IEC TS 18661-1:2014. */ #ifndef __STDC_WANT_IEC_60559_BFP_EXT__ # undef __STDC_WANT_IEC_60559_BFP_EXT__ #endif /* Enable extensions specified by ISO/IEC TS 18661-2:2015. */ #ifndef __STDC_WANT_IEC_60559_DFP_EXT__ # undef __STDC_WANT_IEC_60559_DFP_EXT__ #endif /* Enable extensions specified by ISO/IEC TS 18661-4:2015. */ #ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__ # undef __STDC_WANT_IEC_60559_FUNCS_EXT__ #endif /* Enable extensions specified by ISO/IEC TS 18661-3:2015. */ #ifndef __STDC_WANT_IEC_60559_TYPES_EXT__ # undef __STDC_WANT_IEC_60559_TYPES_EXT__ #endif /* Enable extensions specified by ISO/IEC TR 24731-2:2010. */ #ifndef __STDC_WANT_LIB_EXT2__ # undef __STDC_WANT_LIB_EXT2__ #endif /* Enable extensions specified by ISO/IEC 24747:2009. */ #ifndef __STDC_WANT_MATH_SPEC_FUNCS__ # undef __STDC_WANT_MATH_SPEC_FUNCS__ #endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # undef _TANDEM_SOURCE #endif /* Enable X/Open extensions. Define to 500 only if necessary to make mbstate_t available. */ #ifndef _XOPEN_SOURCE # undef _XOPEN_SOURCE #endif /* Version number of package */ #undef VERSION /* Define to 1 if we are building on mingw */ #undef __WOE32__ /* Define to `unsigned int' if does not define. */ #undef size_t flwrap-1.3.6/src/include/0000775000175000017500000000000014364737360012246 500000000000000flwrap-1.3.6/src/include/crc16.h0000644000175000017500000000164014364736652013257 00000000000000//===================================================================== // // crc16 checksum // //===================================================================== #include class Ccrc16 { private: unsigned int crcval; char ss[5]; public: Ccrc16() { crcval = 0xFFFF; } ~Ccrc16() {}; void reset() { crcval = 0xFFFF;} unsigned int val() {return crcval;} std::string sval() { sprintf(ss,"%04X", crcval); return ss; } void update(char c) { crcval ^= c; for (int i = 0; i < 8; ++i) { if (crcval & 1) crcval = (crcval >> 1) ^ 0xA001; else crcval = (crcval >> 1); } } unsigned int crc16(char c) { update(c); return crcval; } unsigned int crc16(std::string s) { reset(); for (size_t i = 0; i < s.length(); i++) update(s[i]); return crcval; } std::string scrc16(std::string s) { crc16(s); return sval(); } }; flwrap-1.3.6/src/include/wrapdialog.h0000644000175000017500000000076414304245212014455 00000000000000// generated by Fast Light User Interface Designer (fluid) version 1.0110 #ifndef wrapdialog_h #define wrapdialog_h #include #include #include extern Fl_Output *txtResult; #include #include "flwrap.h" extern Fl_Input *inpDropBox; #include extern void cb_close(); extern Fl_Return_Button *btnClose; #include extern Fl_Light_Button *btn_compress; Fl_Double_Window* make_window(); #endif flwrap-1.3.6/src/include/flwrap.h0000644000175000017500000000015514304245212013611 00000000000000#ifndef _FL_WRAP_H #define _FL_WRAP_H extern void inpDropBox_changed(); extern bool usecompression; #endif flwrap-1.3.6/src/include/wraprc.h0000644000175000017500000000007714304245212013617 00000000000000// MS include file for application icon #define IDI_ICON 101 flwrap-1.3.6/src/include/base64.h0000644000175000017500000000121414364736652013422 00000000000000//===================================================================== // // base64 encoding / decoding class // //===================================================================== #include #include #include #include using namespace std; typedef unsigned char t_byte; class base64 { #define LINELEN 72 private: string output; size_t iolen; size_t iocp; bool ateof; t_byte dtable[256]; t_byte etable[256]; int linelength; bool crlf; void init(); public: base64(bool t = false) {crlf = t; init(); }; ~base64(){}; std::string encode(std::string in); std::string decode(std::string in); }; flwrap-1.3.6/src/Makefile.in0000664000175000017500000012645214364737333012622 00000000000000# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Copyright (c) 2008 Dave Freese, W1HKJ (w1hkj AT w1hkj DOT com) VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ bin_PROGRAMS = flwrap$(EXEEXT) @HAVE_WINDRES_TRUE@@MINGW32_TRUE@am__append_1 = $(MINGW32_SRC) @HAVE_NSIS_TRUE@am__append_2 = $(INSTALLER_FILE) @DARWIN_TRUE@am__append_3 = $(APPBUNDLE_NOLIBS) $(APPBUNDLE) $(APPBUNDLE)*.dmg subdir = src ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/build.m4 \ $(top_srcdir)/m4/debug.m4 $(top_srcdir)/m4/fltk.m4 \ $(top_srcdir)/m4/macosx.m4 $(top_srcdir)/m4/opt.m4 \ $(top_srcdir)/m4/static.m4 $(top_srcdir)/m4/win32.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am__flwrap_SOURCES_DIST = flwrap-rc.rc include/wraprc.h flwrap.cxx \ wrapdialog.cxx base64.cxx include/base64.h include/crc16.h \ include/flwrap.h include/wrapdialog.h lzma/Alloc.h \ lzma/Alloc.c lzma/LzFind.c lzma/LzFind.h lzma/LzHash.h \ lzma/LzmaDec.c lzma/LzmaDec.h lzma/LzmaEnc.c lzma/LzmaEnc.h \ lzma/LzmaLib.c lzma/LzmaLib.h lzma/Types.h am__objects_1 = flwrap-rc.$(OBJEXT) @HAVE_WINDRES_TRUE@@MINGW32_TRUE@am__objects_2 = $(am__objects_1) am__dirstamp = $(am__leading_dot)dirstamp am_flwrap_OBJECTS = $(am__objects_2) flwrap-flwrap.$(OBJEXT) \ flwrap-wrapdialog.$(OBJEXT) flwrap-base64.$(OBJEXT) \ lzma/flwrap-Alloc.$(OBJEXT) lzma/flwrap-LzFind.$(OBJEXT) \ lzma/flwrap-LzmaDec.$(OBJEXT) lzma/flwrap-LzmaEnc.$(OBJEXT) \ lzma/flwrap-LzmaLib.$(OBJEXT) am__objects_3 = nodist_flwrap_OBJECTS = $(am__objects_3) flwrap_OBJECTS = $(am_flwrap_OBJECTS) $(nodist_flwrap_OBJECTS) flwrap_DEPENDENCIES = flwrap_LINK = $(CXXLD) $(flwrap_CXXFLAGS) $(CXXFLAGS) \ $(flwrap_LDFLAGS) $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/flwrap-base64.Po \ ./$(DEPDIR)/flwrap-flwrap.Po ./$(DEPDIR)/flwrap-wrapdialog.Po \ lzma/$(DEPDIR)/flwrap-Alloc.Po lzma/$(DEPDIR)/flwrap-LzFind.Po \ lzma/$(DEPDIR)/flwrap-LzmaDec.Po \ lzma/$(DEPDIR)/flwrap-LzmaEnc.Po \ lzma/$(DEPDIR)/flwrap-LzmaLib.Po am__mv = mv -f AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = SOURCES = $(flwrap_SOURCES) $(EXTRA_flwrap_SOURCES) \ $(nodist_flwrap_SOURCES) DIST_SOURCES = $(am__flwrap_SOURCES_DIST) $(EXTRA_flwrap_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) \ config.h.in # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ $(top_srcdir)/build-aux/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AC_CONFIG_ARGS = @AC_CONFIG_ARGS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BFD_CFLAGS = @BFD_CFLAGS@ BFD_LIBS = @BFD_LIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLTK_CFLAGS = @FLTK_CFLAGS@ FLTK_CONFIG = @FLTK_CONFIG@ FLTK_LIBS = @FLTK_LIBS@ FLUID = @FLUID@ FLWRAP_BUILD_CPPFLAGS = @FLWRAP_BUILD_CPPFLAGS@ FLWRAP_BUILD_CXXFLAGS = @FLWRAP_BUILD_CXXFLAGS@ FLWRAP_BUILD_LDADD = @FLWRAP_BUILD_LDADD@ FLWRAP_BUILD_LDFLAGS = @FLWRAP_BUILD_LDFLAGS@ FLWRAP_VERSION = @FLWRAP_VERSION@ FLWRAP_VERSION_MAJOR = @FLWRAP_VERSION_MAJOR@ FLWRAP_VERSION_MINOR = @FLWRAP_VERSION_MINOR@ FLWRAP_VERSION_PATCH = @FLWRAP_VERSION_PATCH@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAC_UNIVERSAL_CFLAGS = @MAC_UNIVERSAL_CFLAGS@ MAC_UNIVERSAL_LDFLAGS = @MAC_UNIVERSAL_LDFLAGS@ MAKEINFO = @MAKEINFO@ MAKENSIS = @MAKENSIS@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ OPT_CFLAGS = @OPT_CFLAGS@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PTW32_CFLAGS = @PTW32_CFLAGS@ PTW32_LIBS = @PTW32_LIBS@ RDYNAMIC = @RDYNAMIC@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WINDRES = @WINDRES@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ flwrap_CPPFLAGS = @FLWRAP_BUILD_CPPFLAGS@ flwrap_CXXFLAGS = @FLWRAP_BUILD_CXXFLAGS@ flwrap_CFLAGS = $(flwrap_CXXFLAGS) flwrap_LDFLAGS = @FLWRAP_BUILD_LDFLAGS@ flwrap_LDADD = @FLWRAP_BUILD_LDADD@ MINGW32_SRC = flwrap-rc.rc include/wraprc.h # We distribute these but do not always compile them EXTRA_flwrap_SOURCES = $(FLWRAP_WIN32_RES_SRC) $(MINGW32_SRC) # Sources that we build. It is OK to have headers here. flwrap_SOURCES = $(am__append_1) flwrap.cxx wrapdialog.cxx base64.cxx \ include/base64.h include/crc16.h include/flwrap.h \ include/wrapdialog.h lzma/Alloc.h lzma/Alloc.c lzma/LzFind.c \ lzma/LzFind.h lzma/LzHash.h lzma/LzmaDec.c lzma/LzmaDec.h \ lzma/LzmaEnc.c lzma/LzmaEnc.h lzma/LzmaLib.c lzma/LzmaLib.h \ lzma/Types.h ######################################################################## flwrap_VERSION_MAJOR = @FLWRAP_VERSION_MAJOR@ flwrap_VERSION_MINOR = @FLWRAP_VERSION_MINOR@ flwrap_VERSION_PATCH = @FLWRAP_VERSION_PATCH@ flwrap_VERSION = @FLWRAP_VERSION@ # Sources that are generated, BUILT_SOURCES = # not distributed, nodist_flwrap_SOURCES = $(BUILT_SOURCES) # and deleted by the clean targets CLEANFILES = $(BUILT_SOURCES) $(am__append_2) CLEAN_LOCAL = $(am__append_3) FL_SRC = wrapdialog.fl INSTALLER_FILE = flwrap-$(FLWRAP_VERSION)_setup.exe APPBUNDLE = flwrap-$(FLWRAP_VERSION) APPBUNDLE_NOLIBS = $(APPBUNDLE)-nolibs # Additional non-source files that are distributed # Additional source files that support non-Linux cross compilation EXTRA_DIST = \ $(srcdir)/../data/flwrap.desktop \ $(srcdir)/../data/flwrap.xpm \ $(srcdir)/../data/win32/fl_app.nsi \ $(srcdir)/../data/win32/flwrap.ico \ $(srcdir)/../scripts/mknsisinst.sh \ $(srcdir)/../scripts/build4mingw.sh \ $(srcdir)/../data/mac/Info.plist.in \ $(srcdir)/../data/mac/flwrap.icns \ $(srcdir)/../scripts/mkappbundle.sh \ $(FLWRAP_WIN32_SRC) \ $(FLWRAP_FL_SRC) all: $(BUILT_SOURCES) config.h $(MAKE) $(AM_MAKEFLAGS) all-am .SUFFIXES: .SUFFIXES: .c .cxx .o .obj .rc $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign src/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): config.h: stamp-h1 @test -f $@ || rm -f stamp-h1 @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status src/config.h $(srcdir)/config.h.in: $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) installcheck-binPROGRAMS: $(bin_PROGRAMS) bad=0; pid=$$$$; list="$(bin_PROGRAMS)"; for p in $$list; do \ case ' $(AM_INSTALLCHECK_STD_OPTIONS_EXEMPT) ' in \ *" $$p "* | *" $(srcdir)/$$p "*) continue;; \ esac; \ f=`echo "$$p" | \ sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ for opt in --help --version; do \ if "$(DESTDIR)$(bindir)/$$f" $$opt >c$${pid}_.out \ 2>c$${pid}_.err &2; bad=1; fi; \ done; \ done; rm -f c$${pid}_.???; exit $$bad lzma/$(am__dirstamp): @$(MKDIR_P) lzma @: > lzma/$(am__dirstamp) lzma/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) lzma/$(DEPDIR) @: > lzma/$(DEPDIR)/$(am__dirstamp) lzma/flwrap-Alloc.$(OBJEXT): lzma/$(am__dirstamp) \ lzma/$(DEPDIR)/$(am__dirstamp) lzma/flwrap-LzFind.$(OBJEXT): lzma/$(am__dirstamp) \ lzma/$(DEPDIR)/$(am__dirstamp) lzma/flwrap-LzmaDec.$(OBJEXT): lzma/$(am__dirstamp) \ lzma/$(DEPDIR)/$(am__dirstamp) lzma/flwrap-LzmaEnc.$(OBJEXT): lzma/$(am__dirstamp) \ lzma/$(DEPDIR)/$(am__dirstamp) lzma/flwrap-LzmaLib.$(OBJEXT): lzma/$(am__dirstamp) \ lzma/$(DEPDIR)/$(am__dirstamp) flwrap$(EXEEXT): $(flwrap_OBJECTS) $(flwrap_DEPENDENCIES) $(EXTRA_flwrap_DEPENDENCIES) @rm -f flwrap$(EXEEXT) $(AM_V_CXXLD)$(flwrap_LINK) $(flwrap_OBJECTS) $(flwrap_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) -rm -f lzma/*.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flwrap-base64.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flwrap-flwrap.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flwrap-wrapdialog.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@lzma/$(DEPDIR)/flwrap-Alloc.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@lzma/$(DEPDIR)/flwrap-LzFind.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@lzma/$(DEPDIR)/flwrap-LzmaDec.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@lzma/$(DEPDIR)/flwrap-LzmaEnc.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@lzma/$(DEPDIR)/flwrap-LzmaLib.Po@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @echo '# dummy' >$@-t && $(am__mv) $@-t $@ am--depfiles: $(am__depfiles_remade) .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` lzma/flwrap-Alloc.o: lzma/Alloc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(flwrap_CPPFLAGS) $(CPPFLAGS) $(flwrap_CFLAGS) $(CFLAGS) -MT lzma/flwrap-Alloc.o -MD -MP -MF lzma/$(DEPDIR)/flwrap-Alloc.Tpo -c -o lzma/flwrap-Alloc.o `test -f 'lzma/Alloc.c' || echo '$(srcdir)/'`lzma/Alloc.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) lzma/$(DEPDIR)/flwrap-Alloc.Tpo lzma/$(DEPDIR)/flwrap-Alloc.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lzma/Alloc.c' object='lzma/flwrap-Alloc.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(flwrap_CPPFLAGS) $(CPPFLAGS) $(flwrap_CFLAGS) $(CFLAGS) -c -o lzma/flwrap-Alloc.o `test -f 'lzma/Alloc.c' || echo '$(srcdir)/'`lzma/Alloc.c lzma/flwrap-Alloc.obj: lzma/Alloc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(flwrap_CPPFLAGS) $(CPPFLAGS) $(flwrap_CFLAGS) $(CFLAGS) -MT lzma/flwrap-Alloc.obj -MD -MP -MF lzma/$(DEPDIR)/flwrap-Alloc.Tpo -c -o lzma/flwrap-Alloc.obj `if test -f 'lzma/Alloc.c'; then $(CYGPATH_W) 'lzma/Alloc.c'; else $(CYGPATH_W) '$(srcdir)/lzma/Alloc.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) lzma/$(DEPDIR)/flwrap-Alloc.Tpo lzma/$(DEPDIR)/flwrap-Alloc.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lzma/Alloc.c' object='lzma/flwrap-Alloc.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(flwrap_CPPFLAGS) $(CPPFLAGS) $(flwrap_CFLAGS) $(CFLAGS) -c -o lzma/flwrap-Alloc.obj `if test -f 'lzma/Alloc.c'; then $(CYGPATH_W) 'lzma/Alloc.c'; else $(CYGPATH_W) '$(srcdir)/lzma/Alloc.c'; fi` lzma/flwrap-LzFind.o: lzma/LzFind.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(flwrap_CPPFLAGS) $(CPPFLAGS) $(flwrap_CFLAGS) $(CFLAGS) -MT lzma/flwrap-LzFind.o -MD -MP -MF lzma/$(DEPDIR)/flwrap-LzFind.Tpo -c -o lzma/flwrap-LzFind.o `test -f 'lzma/LzFind.c' || echo '$(srcdir)/'`lzma/LzFind.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) lzma/$(DEPDIR)/flwrap-LzFind.Tpo lzma/$(DEPDIR)/flwrap-LzFind.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lzma/LzFind.c' object='lzma/flwrap-LzFind.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(flwrap_CPPFLAGS) $(CPPFLAGS) $(flwrap_CFLAGS) $(CFLAGS) -c -o lzma/flwrap-LzFind.o `test -f 'lzma/LzFind.c' || echo '$(srcdir)/'`lzma/LzFind.c lzma/flwrap-LzFind.obj: lzma/LzFind.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(flwrap_CPPFLAGS) $(CPPFLAGS) $(flwrap_CFLAGS) $(CFLAGS) -MT lzma/flwrap-LzFind.obj -MD -MP -MF lzma/$(DEPDIR)/flwrap-LzFind.Tpo -c -o lzma/flwrap-LzFind.obj `if test -f 'lzma/LzFind.c'; then $(CYGPATH_W) 'lzma/LzFind.c'; else $(CYGPATH_W) '$(srcdir)/lzma/LzFind.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) lzma/$(DEPDIR)/flwrap-LzFind.Tpo lzma/$(DEPDIR)/flwrap-LzFind.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lzma/LzFind.c' object='lzma/flwrap-LzFind.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(flwrap_CPPFLAGS) $(CPPFLAGS) $(flwrap_CFLAGS) $(CFLAGS) -c -o lzma/flwrap-LzFind.obj `if test -f 'lzma/LzFind.c'; then $(CYGPATH_W) 'lzma/LzFind.c'; else $(CYGPATH_W) '$(srcdir)/lzma/LzFind.c'; fi` lzma/flwrap-LzmaDec.o: lzma/LzmaDec.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(flwrap_CPPFLAGS) $(CPPFLAGS) $(flwrap_CFLAGS) $(CFLAGS) -MT lzma/flwrap-LzmaDec.o -MD -MP -MF lzma/$(DEPDIR)/flwrap-LzmaDec.Tpo -c -o lzma/flwrap-LzmaDec.o `test -f 'lzma/LzmaDec.c' || echo '$(srcdir)/'`lzma/LzmaDec.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) lzma/$(DEPDIR)/flwrap-LzmaDec.Tpo lzma/$(DEPDIR)/flwrap-LzmaDec.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lzma/LzmaDec.c' object='lzma/flwrap-LzmaDec.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(flwrap_CPPFLAGS) $(CPPFLAGS) $(flwrap_CFLAGS) $(CFLAGS) -c -o lzma/flwrap-LzmaDec.o `test -f 'lzma/LzmaDec.c' || echo '$(srcdir)/'`lzma/LzmaDec.c lzma/flwrap-LzmaDec.obj: lzma/LzmaDec.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(flwrap_CPPFLAGS) $(CPPFLAGS) $(flwrap_CFLAGS) $(CFLAGS) -MT lzma/flwrap-LzmaDec.obj -MD -MP -MF lzma/$(DEPDIR)/flwrap-LzmaDec.Tpo -c -o lzma/flwrap-LzmaDec.obj `if test -f 'lzma/LzmaDec.c'; then $(CYGPATH_W) 'lzma/LzmaDec.c'; else $(CYGPATH_W) '$(srcdir)/lzma/LzmaDec.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) lzma/$(DEPDIR)/flwrap-LzmaDec.Tpo lzma/$(DEPDIR)/flwrap-LzmaDec.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lzma/LzmaDec.c' object='lzma/flwrap-LzmaDec.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(flwrap_CPPFLAGS) $(CPPFLAGS) $(flwrap_CFLAGS) $(CFLAGS) -c -o lzma/flwrap-LzmaDec.obj `if test -f 'lzma/LzmaDec.c'; then $(CYGPATH_W) 'lzma/LzmaDec.c'; else $(CYGPATH_W) '$(srcdir)/lzma/LzmaDec.c'; fi` lzma/flwrap-LzmaEnc.o: lzma/LzmaEnc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(flwrap_CPPFLAGS) $(CPPFLAGS) $(flwrap_CFLAGS) $(CFLAGS) -MT lzma/flwrap-LzmaEnc.o -MD -MP -MF lzma/$(DEPDIR)/flwrap-LzmaEnc.Tpo -c -o lzma/flwrap-LzmaEnc.o `test -f 'lzma/LzmaEnc.c' || echo '$(srcdir)/'`lzma/LzmaEnc.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) lzma/$(DEPDIR)/flwrap-LzmaEnc.Tpo lzma/$(DEPDIR)/flwrap-LzmaEnc.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lzma/LzmaEnc.c' object='lzma/flwrap-LzmaEnc.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(flwrap_CPPFLAGS) $(CPPFLAGS) $(flwrap_CFLAGS) $(CFLAGS) -c -o lzma/flwrap-LzmaEnc.o `test -f 'lzma/LzmaEnc.c' || echo '$(srcdir)/'`lzma/LzmaEnc.c lzma/flwrap-LzmaEnc.obj: lzma/LzmaEnc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(flwrap_CPPFLAGS) $(CPPFLAGS) $(flwrap_CFLAGS) $(CFLAGS) -MT lzma/flwrap-LzmaEnc.obj -MD -MP -MF lzma/$(DEPDIR)/flwrap-LzmaEnc.Tpo -c -o lzma/flwrap-LzmaEnc.obj `if test -f 'lzma/LzmaEnc.c'; then $(CYGPATH_W) 'lzma/LzmaEnc.c'; else $(CYGPATH_W) '$(srcdir)/lzma/LzmaEnc.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) lzma/$(DEPDIR)/flwrap-LzmaEnc.Tpo lzma/$(DEPDIR)/flwrap-LzmaEnc.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lzma/LzmaEnc.c' object='lzma/flwrap-LzmaEnc.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(flwrap_CPPFLAGS) $(CPPFLAGS) $(flwrap_CFLAGS) $(CFLAGS) -c -o lzma/flwrap-LzmaEnc.obj `if test -f 'lzma/LzmaEnc.c'; then $(CYGPATH_W) 'lzma/LzmaEnc.c'; else $(CYGPATH_W) '$(srcdir)/lzma/LzmaEnc.c'; fi` lzma/flwrap-LzmaLib.o: lzma/LzmaLib.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(flwrap_CPPFLAGS) $(CPPFLAGS) $(flwrap_CFLAGS) $(CFLAGS) -MT lzma/flwrap-LzmaLib.o -MD -MP -MF lzma/$(DEPDIR)/flwrap-LzmaLib.Tpo -c -o lzma/flwrap-LzmaLib.o `test -f 'lzma/LzmaLib.c' || echo '$(srcdir)/'`lzma/LzmaLib.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) lzma/$(DEPDIR)/flwrap-LzmaLib.Tpo lzma/$(DEPDIR)/flwrap-LzmaLib.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lzma/LzmaLib.c' object='lzma/flwrap-LzmaLib.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(flwrap_CPPFLAGS) $(CPPFLAGS) $(flwrap_CFLAGS) $(CFLAGS) -c -o lzma/flwrap-LzmaLib.o `test -f 'lzma/LzmaLib.c' || echo '$(srcdir)/'`lzma/LzmaLib.c lzma/flwrap-LzmaLib.obj: lzma/LzmaLib.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(flwrap_CPPFLAGS) $(CPPFLAGS) $(flwrap_CFLAGS) $(CFLAGS) -MT lzma/flwrap-LzmaLib.obj -MD -MP -MF lzma/$(DEPDIR)/flwrap-LzmaLib.Tpo -c -o lzma/flwrap-LzmaLib.obj `if test -f 'lzma/LzmaLib.c'; then $(CYGPATH_W) 'lzma/LzmaLib.c'; else $(CYGPATH_W) '$(srcdir)/lzma/LzmaLib.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) lzma/$(DEPDIR)/flwrap-LzmaLib.Tpo lzma/$(DEPDIR)/flwrap-LzmaLib.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lzma/LzmaLib.c' object='lzma/flwrap-LzmaLib.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(flwrap_CPPFLAGS) $(CPPFLAGS) $(flwrap_CFLAGS) $(CFLAGS) -c -o lzma/flwrap-LzmaLib.obj `if test -f 'lzma/LzmaLib.c'; then $(CYGPATH_W) 'lzma/LzmaLib.c'; else $(CYGPATH_W) '$(srcdir)/lzma/LzmaLib.c'; fi` .cxx.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cxx.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` flwrap-flwrap.o: flwrap.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(flwrap_CPPFLAGS) $(CPPFLAGS) $(flwrap_CXXFLAGS) $(CXXFLAGS) -MT flwrap-flwrap.o -MD -MP -MF $(DEPDIR)/flwrap-flwrap.Tpo -c -o flwrap-flwrap.o `test -f 'flwrap.cxx' || echo '$(srcdir)/'`flwrap.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/flwrap-flwrap.Tpo $(DEPDIR)/flwrap-flwrap.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='flwrap.cxx' object='flwrap-flwrap.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(flwrap_CPPFLAGS) $(CPPFLAGS) $(flwrap_CXXFLAGS) $(CXXFLAGS) -c -o flwrap-flwrap.o `test -f 'flwrap.cxx' || echo '$(srcdir)/'`flwrap.cxx flwrap-flwrap.obj: flwrap.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(flwrap_CPPFLAGS) $(CPPFLAGS) $(flwrap_CXXFLAGS) $(CXXFLAGS) -MT flwrap-flwrap.obj -MD -MP -MF $(DEPDIR)/flwrap-flwrap.Tpo -c -o flwrap-flwrap.obj `if test -f 'flwrap.cxx'; then $(CYGPATH_W) 'flwrap.cxx'; else $(CYGPATH_W) '$(srcdir)/flwrap.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/flwrap-flwrap.Tpo $(DEPDIR)/flwrap-flwrap.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='flwrap.cxx' object='flwrap-flwrap.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(flwrap_CPPFLAGS) $(CPPFLAGS) $(flwrap_CXXFLAGS) $(CXXFLAGS) -c -o flwrap-flwrap.obj `if test -f 'flwrap.cxx'; then $(CYGPATH_W) 'flwrap.cxx'; else $(CYGPATH_W) '$(srcdir)/flwrap.cxx'; fi` flwrap-wrapdialog.o: wrapdialog.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(flwrap_CPPFLAGS) $(CPPFLAGS) $(flwrap_CXXFLAGS) $(CXXFLAGS) -MT flwrap-wrapdialog.o -MD -MP -MF $(DEPDIR)/flwrap-wrapdialog.Tpo -c -o flwrap-wrapdialog.o `test -f 'wrapdialog.cxx' || echo '$(srcdir)/'`wrapdialog.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/flwrap-wrapdialog.Tpo $(DEPDIR)/flwrap-wrapdialog.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='wrapdialog.cxx' object='flwrap-wrapdialog.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(flwrap_CPPFLAGS) $(CPPFLAGS) $(flwrap_CXXFLAGS) $(CXXFLAGS) -c -o flwrap-wrapdialog.o `test -f 'wrapdialog.cxx' || echo '$(srcdir)/'`wrapdialog.cxx flwrap-wrapdialog.obj: wrapdialog.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(flwrap_CPPFLAGS) $(CPPFLAGS) $(flwrap_CXXFLAGS) $(CXXFLAGS) -MT flwrap-wrapdialog.obj -MD -MP -MF $(DEPDIR)/flwrap-wrapdialog.Tpo -c -o flwrap-wrapdialog.obj `if test -f 'wrapdialog.cxx'; then $(CYGPATH_W) 'wrapdialog.cxx'; else $(CYGPATH_W) '$(srcdir)/wrapdialog.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/flwrap-wrapdialog.Tpo $(DEPDIR)/flwrap-wrapdialog.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='wrapdialog.cxx' object='flwrap-wrapdialog.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(flwrap_CPPFLAGS) $(CPPFLAGS) $(flwrap_CXXFLAGS) $(CXXFLAGS) -c -o flwrap-wrapdialog.obj `if test -f 'wrapdialog.cxx'; then $(CYGPATH_W) 'wrapdialog.cxx'; else $(CYGPATH_W) '$(srcdir)/wrapdialog.cxx'; fi` flwrap-base64.o: base64.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(flwrap_CPPFLAGS) $(CPPFLAGS) $(flwrap_CXXFLAGS) $(CXXFLAGS) -MT flwrap-base64.o -MD -MP -MF $(DEPDIR)/flwrap-base64.Tpo -c -o flwrap-base64.o `test -f 'base64.cxx' || echo '$(srcdir)/'`base64.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/flwrap-base64.Tpo $(DEPDIR)/flwrap-base64.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='base64.cxx' object='flwrap-base64.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(flwrap_CPPFLAGS) $(CPPFLAGS) $(flwrap_CXXFLAGS) $(CXXFLAGS) -c -o flwrap-base64.o `test -f 'base64.cxx' || echo '$(srcdir)/'`base64.cxx flwrap-base64.obj: base64.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(flwrap_CPPFLAGS) $(CPPFLAGS) $(flwrap_CXXFLAGS) $(CXXFLAGS) -MT flwrap-base64.obj -MD -MP -MF $(DEPDIR)/flwrap-base64.Tpo -c -o flwrap-base64.obj `if test -f 'base64.cxx'; then $(CYGPATH_W) 'base64.cxx'; else $(CYGPATH_W) '$(srcdir)/base64.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/flwrap-base64.Tpo $(DEPDIR)/flwrap-base64.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='base64.cxx' object='flwrap-base64.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(flwrap_CPPFLAGS) $(CPPFLAGS) $(flwrap_CXXFLAGS) $(CXXFLAGS) -c -o flwrap-base64.obj `if test -f 'base64.cxx'; then $(CYGPATH_W) 'base64.cxx'; else $(CYGPATH_W) '$(srcdir)/base64.cxx'; fi` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-am all-am: Makefile $(PROGRAMS) config.h installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-am install-exec: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -rm -f lzma/$(DEPDIR)/$(am__dirstamp) -rm -f lzma/$(am__dirstamp) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-local mostlyclean-am distclean: distclean-am -rm -f ./$(DEPDIR)/flwrap-base64.Po -rm -f ./$(DEPDIR)/flwrap-flwrap.Po -rm -f ./$(DEPDIR)/flwrap-wrapdialog.Po -rm -f lzma/$(DEPDIR)/flwrap-Alloc.Po -rm -f lzma/$(DEPDIR)/flwrap-LzFind.Po -rm -f lzma/$(DEPDIR)/flwrap-LzmaDec.Po -rm -f lzma/$(DEPDIR)/flwrap-LzmaEnc.Po -rm -f lzma/$(DEPDIR)/flwrap-LzmaLib.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-data-local install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: installcheck-binPROGRAMS maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/flwrap-base64.Po -rm -f ./$(DEPDIR)/flwrap-flwrap.Po -rm -f ./$(DEPDIR)/flwrap-wrapdialog.Po -rm -f lzma/$(DEPDIR)/flwrap-Alloc.Po -rm -f lzma/$(DEPDIR)/flwrap-LzFind.Po -rm -f lzma/$(DEPDIR)/flwrap-LzmaDec.Po -rm -f lzma/$(DEPDIR)/flwrap-LzmaEnc.Po -rm -f lzma/$(DEPDIR)/flwrap-LzmaLib.Po -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-local .MAKE: all check install install-am install-exec install-strip .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ clean-binPROGRAMS clean-generic clean-local cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-hdr distclean-tags distdir dvi dvi-am html html-am \ info info-am install install-am install-binPROGRAMS \ install-data install-data-am install-data-local install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am \ installcheck-binPROGRAMS installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-binPROGRAMS uninstall-local .PRECIOUS: Makefile .EXPORT_ALL_VARIABLES: nsisinst appbundle @HAVE_WINDRES_TRUE@@MINGW32_TRUE@.rc.o: @HAVE_WINDRES_TRUE@@MINGW32_TRUE@ $(WINDRES) -I$(srcdir)/include -I$(srcdir)/../data/win32 $< -O coff $@ install-data-local: if test -f $(srcdir)/../data/flwrap.xpm; then \ $(mkinstalldirs) $(DESTDIR)/$(datadir)/pixmaps; \ $(INSTALL_DATA) $(srcdir)/../data/flwrap.xpm $(DESTDIR)/$(datadir)/pixmaps; \ fi if test -f $(srcdir)/../data/flwrap.desktop; then \ $(mkinstalldirs) $(DESTDIR)/$(datadir)/applications; \ $(INSTALL_DATA) $(srcdir)/../data/flwrap.desktop $(DESTDIR)/$(datadir)/applications; \ fi uninstall-local: rm -f $(DESTDIR)/$(datadir)/pixmaps/flwrap.xpm rm -f $(DESTDIR)/$(datadir)/applications/flwrap.desktop @HAVE_FLUID_TRUE@flgen: $(FL_SRC) @HAVE_FLUID_TRUE@ (cd $(srcdir)/include; \ @HAVE_FLUID_TRUE@ for f in $(FL_SRC); do \ @HAVE_FLUID_TRUE@ c=$${f%.fl}.cxx; \ @HAVE_FLUID_TRUE@ h=$${f%.fl}.h; \ @HAVE_FLUID_TRUE@ h=$${h##*/}; \ @HAVE_FLUID_TRUE@ $(FLUID) -c -o ../$$c -h $$h ../$$f; \ @HAVE_FLUID_TRUE@ done) @HAVE_NSIS_TRUE@nsisinst: $(bin_PROGRAMS) @HAVE_NSIS_TRUE@ sh $(srcdir)/../scripts/mknsisinst.sh "$(srcdir)/../data" . @DARWIN_TRUE@appbundle: $(bin_PROGRAMS) @DARWIN_TRUE@ sh $(srcdir)/../scripts/mkappbundle.sh "$(srcdir)/../data" . #if HAVE_ASCIIDOC #$(builddir)/../doc/guide.html: $(builddir)/../doc/guide.txt # $(MAKE) -C $(builddir)/../doc $(AM_MAKEFLAGS) guide.html #$(builddir)/dialogs/guide.cxx: $(builddir)/../doc/guide.html # mkdir -p $(builddir)/dialogs # sed 's/"/\\"/g; s/$$/\\n\\/g; 1 s/.*/const char* szBeginner = "&/; $$ s/.*/&n";/' $< > $@ #dialogs/htmlstrings.cxx: $(builddir)/dialogs/guide.cxx #distclean-local: # @if test "$(builddir)" != "$(srcdir)"; then \ # rm -f $(builddir)/dialogs/guide.cxx; \ # fi #endif clean-local: -rm -rf $(CLEAN_LOCAL) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flwrap-1.3.6/src/Makefile.am0000644000175000017500000000735414304245212012566 00000000000000# Copyright (c) 2008 Dave Freese, W1HKJ (w1hkj AT w1hkj DOT com) bin_PROGRAMS = flwrap flwrap_CPPFLAGS = @FLWRAP_BUILD_CPPFLAGS@ flwrap_CXXFLAGS = @FLWRAP_BUILD_CXXFLAGS@ flwrap_CFLAGS = $(flwrap_CXXFLAGS) flwrap_LDFLAGS = @FLWRAP_BUILD_LDFLAGS@ flwrap_LDADD = @FLWRAP_BUILD_LDADD@ MINGW32_SRC = flwrap-rc.rc include/wraprc.h # We distribute these but do not always compile them EXTRA_flwrap_SOURCES = $(FLWRAP_WIN32_RES_SRC) $(MINGW32_SRC) flwrap_SOURCES = if MINGW32 if HAVE_WINDRES flwrap_SOURCES += $(MINGW32_SRC) endif endif ######################################################################## flwrap_VERSION_MAJOR = @FLWRAP_VERSION_MAJOR@ flwrap_VERSION_MINOR = @FLWRAP_VERSION_MINOR@ flwrap_VERSION_PATCH = @FLWRAP_VERSION_PATCH@ flwrap_VERSION = @FLWRAP_VERSION@ .EXPORT_ALL_VARIABLES: nsisinst appbundle # Sources that are generated, BUILT_SOURCES = # not distributed, nodist_flwrap_SOURCES = $(BUILT_SOURCES) # and deleted by the clean targets CLEANFILES = $(BUILT_SOURCES) CLEAN_LOCAL = if MINGW32 if HAVE_WINDRES .rc.o: $(WINDRES) -I$(srcdir)/include -I$(srcdir)/../data/win32 $< -O coff $@ endif endif install-data-local: if test -f $(srcdir)/../data/flwrap.xpm; then \ $(mkinstalldirs) $(DESTDIR)/$(datadir)/pixmaps; \ $(INSTALL_DATA) $(srcdir)/../data/flwrap.xpm $(DESTDIR)/$(datadir)/pixmaps; \ fi if test -f $(srcdir)/../data/flwrap.desktop; then \ $(mkinstalldirs) $(DESTDIR)/$(datadir)/applications; \ $(INSTALL_DATA) $(srcdir)/../data/flwrap.desktop $(DESTDIR)/$(datadir)/applications; \ fi uninstall-local: rm -f $(DESTDIR)/$(datadir)/pixmaps/flwrap.xpm rm -f $(DESTDIR)/$(datadir)/applications/flwrap.desktop FL_SRC = wrapdialog.fl if HAVE_FLUID flgen: $(FL_SRC) (cd $(srcdir)/include; \ for f in $(FL_SRC); do \ c=$${f%.fl}.cxx; \ h=$${f%.fl}.h; \ h=$${h##*/}; \ $(FLUID) -c -o ../$$c -h $$h ../$$f; \ done) endif INSTALLER_FILE = flwrap-$(FLWRAP_VERSION)_setup.exe APPBUNDLE=flwrap-$(FLWRAP_VERSION) APPBUNDLE_NOLIBS=$(APPBUNDLE)-nolibs if HAVE_NSIS nsisinst: $(bin_PROGRAMS) sh $(srcdir)/../scripts/mknsisinst.sh "$(srcdir)/../data" . CLEANFILES += $(INSTALLER_FILE) endif if DARWIN appbundle: $(bin_PROGRAMS) sh $(srcdir)/../scripts/mkappbundle.sh "$(srcdir)/../data" . CLEAN_LOCAL += $(APPBUNDLE_NOLIBS) $(APPBUNDLE) $(APPBUNDLE)*.dmg endif #if HAVE_ASCIIDOC #$(builddir)/../doc/guide.html: $(builddir)/../doc/guide.txt # $(MAKE) -C $(builddir)/../doc $(AM_MAKEFLAGS) guide.html #$(builddir)/dialogs/guide.cxx: $(builddir)/../doc/guide.html # mkdir -p $(builddir)/dialogs # sed 's/"/\\"/g; s/$$/\\n\\/g; 1 s/.*/const char* szBeginner = "&/; $$ s/.*/&n";/' $< > $@ #dialogs/htmlstrings.cxx: $(builddir)/dialogs/guide.cxx #distclean-local: # @if test "$(builddir)" != "$(srcdir)"; then \ # rm -f $(builddir)/dialogs/guide.cxx; \ # fi #endif clean-local: -rm -rf $(CLEAN_LOCAL) # Sources that we build. It is OK to have headers here. flwrap_SOURCES += \ flwrap.cxx \ wrapdialog.cxx \ base64.cxx \ include/base64.h \ include/crc16.h \ include/flwrap.h \ include/wrapdialog.h \ lzma/Alloc.h \ lzma/Alloc.c \ lzma/LzFind.c \ lzma/LzFind.h \ lzma/LzHash.h \ lzma/LzmaDec.c \ lzma/LzmaDec.h \ lzma/LzmaEnc.c \ lzma/LzmaEnc.h \ lzma/LzmaLib.c \ lzma/LzmaLib.h \ lzma/Types.h # Additional non-source files that are distributed # Additional source files that support non-Linux cross compilation EXTRA_DIST = \ $(srcdir)/../data/flwrap.desktop \ $(srcdir)/../data/flwrap.xpm \ $(srcdir)/../data/win32/fl_app.nsi \ $(srcdir)/../data/win32/flwrap.ico \ $(srcdir)/../scripts/mknsisinst.sh \ $(srcdir)/../scripts/build4mingw.sh \ $(srcdir)/../data/mac/Info.plist.in \ $(srcdir)/../data/mac/flwrap.icns \ $(srcdir)/../scripts/mkappbundle.sh \ $(FLWRAP_WIN32_SRC) \ $(FLWRAP_FL_SRC) flwrap-1.3.6/src/flwrap.cxx0000644000175000017500000003446514364737317012576 00000000000000// WRAP - wrap.cxx // // Author: Dave Freese, W1HKJ // Stelios Bounanos, M0GLD // // wrap surrounds critical text with markers and adds a checksum to the // resulting file. It unwraps a file that has been previously wrapped. The // wrap/unwrap is automatic and the user only need to process the file with // wrap and it will determine whether a wrap or unwrap is needed. The wrapped // file can be transmitted via a noisy channel and then tested at the end site // for file integrity. It reports on the success or failure with a small // dialog box. // // wrap is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // WRAP is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with the program; if not, write to the // // Free Software Foundation, Inc. // 51 Franklin Street, Fifth Floor // Boston, MA 02110-1301 USA. // // $Id: main.c 141 2008-07-19 15:59:57Z jessekornblum $ #include #include #include #include #include #include #include #include #ifdef __WOE32__ # include #else # include #endif #include #include #include #include #include #include #ifdef __WOE32__ # include #endif #include #include "wrapdialog.h" #include "base64.h" #include "crc16.h" #include "lzma/LzmaLib.h" #ifdef __WOE32__ # include "wraprc.h" #endif int parse_args(int argc, char **argv, int& idx); using namespace std; const char *wrap_beg = "[WRAP:beg]"; const char *wrap_end = "[WRAP:end]"; const char *wrap_crlf = "[WRAP:crlf]"; const char *wrap_lf = "[WRAP:lf]"; const char *wrap_chksum = "[WRAP:chksum "; const char *b64_start = "[b64:start]"; const char *b64_end = "[b64:end]"; const char *wrap_fn = "[WRAP:fn "; Ccrc16 chksum; base64 b64(1); // insert lf for ease of viewing std::string inptext = ""; std::string check = ""; std::string outfilename = ""; std::string inpfilename = ""; std::string inpshortname = ""; std::string outshortname = ""; std::string foldername = ""; std::string errtext = ""; std::string infotext = ""; bool usecompression = false; void dress(std::string &str) { std::string s = ""; if (str.empty()) return; size_t p = 0; std::string rpl = ""; unsigned char ch; for (p = 0; p < str.length(); p++) { ch = str[p] & 0xFF; rpl = ch; if ( ch == '|') rpl = "||"; else if (ch >= 0x80 && ch < 0xC0) { rpl = "|-"; rpl += (ch - 0x60); } else if (ch >= 0xC0) { rpl = "|_"; rpl += (ch - 0xA0); } else if (ch < ' ') { if (ch != 0x09 && ch != 0x0A && ch != 0x0D) { rpl = "|+"; rpl += (ch + ' '); } } s.append(rpl); } str = s; } void strip(std::string &s) { if (s.empty()) return; size_t p = 0; std::string str = ""; while (p < s.length()) { if (s[p] != '|') str += s[p]; else { p++; if (s[p] == '|') str += s[p]; else if (s[p] == '+') { p++; str += (s[p] & 0xFF) - 0x20; } else if (s[p] == '-') { p++; str += (s[p] & 0xFF) + 0x60; } else if (s[p] == '_') { p++; str += (s[p] & 0xFF) + 0xA0; } else p++; } p++; } s = str; } bool isExtension(const char *s1, const char *s2) { #ifdef __WOE32__ char *sz1 = new char[strlen(s1) + 1]; char *sz2 = new char[strlen(s2) + 1]; char *p = 0; strcpy(sz1, s1); strcpy(sz2, s2); for (size_t i = 0; i < strlen(sz1); i++) sz1[i] = toupper(sz1[i]); for (size_t i = 0; i < strlen(sz2); i++) sz2[i] = toupper(sz2[i]); p = strstr(sz1, sz2); delete [] sz1; delete [] sz2; return (p != 0); #else const char *p = strcasestr(s1, s2); #endif return (p != 0); } void base64encode() { std::string outtext; outtext = b64.encode(inptext); inptext = b64_start; inptext.append(outtext); inptext.append(b64_end); } void convert2crlf(std::string &s) { if (s.find('\r') != std::string::npos) return; size_t p = s.find('\n'); while (p != std::string::npos) { s.replace(p, 1, "\r\n"); p = s.find('\n', p + 2); } } void convert2lf(std::string &s) { size_t p = s.find("\r\n"); while (p != std::string::npos) { s.replace(p, 2, "\n"); p = s.find("\r\n"); } } #define LZMA_STR "\1LZMA" bool compress_always(std::string &input) { // allocate 105% of the original size for the output buffer size_t outlen = (size_t)ceil(input.length() * 1.05); unsigned char* buf = new unsigned char[outlen]; size_t plen = LZMA_PROPS_SIZE; unsigned char outprops[LZMA_PROPS_SIZE]; uint32_t origlen = htonl(input.length()); size_t inlen = input.length(); int r; char msg[200]; if ((r = LzmaCompress(buf, &outlen, (const unsigned char*)input.data(), input.length(), outprops, &plen, 9, 0, -1, -1, -1, -1, -1)) != SZ_OK) { snprintf(msg, sizeof(msg), "File cannot be compressed.\nReprocess with compression disabled"); errtext = msg; return false; } // write LZMA_STR + original size (in network byte order) + props + data input.reserve(strlen(LZMA_STR) + sizeof(origlen) + sizeof(outprops) + outlen); input.assign(LZMA_STR); input.append((const char*)&origlen, sizeof(origlen)); input.append((const char*)&outprops, sizeof(outprops)); input.append((const char*)buf, outlen); snprintf(msg, sizeof(msg), "Compress: in = %ld, out = %ld", (long)inlen, (long)outlen); infotext = msg; delete [] buf; return true; } void decompress_maybe(std::string& input) { // input is LZMA_STR + original size (in network byte order) + props + data if (input.find(LZMA_STR)) { errtext.clear(); return; } const char* in = input.data(); size_t outlen = ntohl(*reinterpret_cast(in + strlen(LZMA_STR))); // if (outlen > 1 << 25) { // cerr << "W: refusing to decompress data (> 32MiB)\n"; // return; // } unsigned char* buf = new unsigned char[outlen]; unsigned char inprops[LZMA_PROPS_SIZE]; memcpy(inprops, in + strlen(LZMA_STR) + sizeof(uint32_t), LZMA_PROPS_SIZE); size_t inlen = input.length() - strlen(LZMA_STR) - sizeof(uint32_t) - LZMA_PROPS_SIZE; int r; char msg[200]; if ((r = LzmaUncompress(buf, &outlen, (const unsigned char*)in + input.length() - inlen, &inlen, inprops, LZMA_PROPS_SIZE)) != SZ_OK) { snprintf(msg, sizeof(msg), "Lzma Decompress failed with error code %d\n", r); errtext = msg; } else { input.reserve(outlen); input.assign((const char*)buf, outlen); } delete [] buf; } bool wrapfile(bool isbinary) { bool iscrlf = false; outfilename.append(".wrap"); outshortname = fl_filename_name(outfilename.c_str()); #ifdef ____WOE32____ int insize = inptext.length(); #else long insize = inptext.length(); #endif dress(inptext); if (isbinary) { if (!compress_always(inptext)) return false; base64encode(); } else { if (inptext.find("\r\n") != std::string::npos) { iscrlf = true; convert2lf(inptext); // checksum & data transfer always based on Unix end-of-line char } } std::string originalfilename = wrap_fn; originalfilename.append(inpshortname); originalfilename += ']'; inptext.insert(0, originalfilename); check = chksum.scrc16(inptext); ofstream wrapstream(outfilename.c_str(), ios::binary); if (wrapstream) { wrapstream << wrap_beg << (iscrlf ? wrap_crlf : wrap_lf) << inptext << wrap_chksum << check << ']' << wrap_end; wrapstream.close(); } else { errtext = "Cannot open output file"; return false; } char msg[200]; #ifdef ____WOE32____ int outsize = #else long outsize = #endif strlen(wrap_beg) + (iscrlf ? strlen(wrap_crlf) : strlen(wrap_lf)) + inptext.length() + strlen(wrap_chksum) + check.length() + 1 + strlen(wrap_end); #ifdef ____WOE32____ snprintf(msg, sizeof(msg), "In = %d bytes, Out = %d bytes", insize, outsize); #else snprintf(msg, sizeof(msg), "In = %ld bytes, Out = %ld bytes", insize, outsize); #endif infotext = msg; return true; } // all of this crlf checking is necessary because the original file may have had crlf pairs // or the OS save may have inserted them into the text (MSDOS) har! bool unwrapfile() { size_t p1, p2, p3, p4; std::string wtext; std::string testsum; std::string inpsum; bool iscrlf = false; p1 = inptext.find(wrap_beg); if (p1 == std::string::npos) { errtext = "Not a wrap file"; return false; } p1 = inptext.find(wrap_crlf); if (p1 != std::string::npos) { // original text had crlf pairs iscrlf = true; p1 += strlen(wrap_crlf); } else { p1 = inptext.find(wrap_lf); if (p1 == std::string::npos) { errtext = "Invalid file"; return false; } p1 += strlen(wrap_lf); } p2 = inptext.find(wrap_chksum, p1); if (p2 == std::string::npos) return false; wtext = inptext.substr(p1, p2-p1); // this is the original document p3 = p2 + strlen(wrap_chksum); p4 = inptext.find(']', p3); if (p4 == std::string::npos) { errtext = "Cannot find checksum in file"; return false; } inpsum = inptext.substr(p3, p4-p3); p4 = inptext.find(wrap_end, p4); if (p4 == std::string::npos) { errtext = "No end tag in file"; return false; } if (wtext.find("\r\n") != std::string::npos) convert2lf(wtext); testsum = chksum.scrc16(wtext); if (inpsum != testsum) { errtext = "Checksum failed\n"; errtext.append(inpsum); errtext.append(" in file\n"); errtext.append(testsum); errtext.append(" computed"); return false; } if (wtext.find(wrap_fn) == 0) { size_t p = wtext.find(']'); outshortname = wtext.substr(0, p); outshortname.erase(0, strlen(wrap_fn)); wtext.erase(0,p+1); // check for protocol abuse bool t1 = (outshortname.find('/') != std::string::npos); bool t2 = (outshortname.find('\\') != std::string::npos); bool t3 = (outshortname == "."); bool t4 = (outshortname == ".."); bool t5 = (outshortname.find(":") != std::string::npos); bool t6 = outshortname.empty(); if (t1 || t2 || t3 || t4 || t5 || t6) { errtext = "Filename corrupt, possible protocol abuse\n"; if (t1) errtext.append("Filename contains '/' character\n"); if (t2) errtext.append("Filename contains '\\' character\n"); if (t3) errtext.append("Filename contains leading '.' character\n"); if (t4) errtext.append("Filename contains leading '..' std::string\n"); if (t5) errtext.append("Filename contains MS directory specifier\n"); if (t6) errtext.append("Filename is empty\n"); return false; } outfilename = foldername; outfilename.append(outshortname); } else { p1 = outfilename.find(".wrap"); if (p1 != std::string::npos) outfilename.erase(p1); } if (iscrlf) convert2crlf(wtext); p1 = wtext.find(b64_start); if (p1 != std::string::npos) { p1 += strlen(b64_start); p2 = wtext.find(b64_end, p1); if (p2 == std::string::npos) { errtext = "Base 64 decode failed"; return false; } wtext = b64.decode(wtext.substr(p1, p2-p1)); decompress_maybe(wtext); } strip(wtext); ofstream tfile(outfilename.c_str(), ios::binary); if (tfile) { tfile << wtext; tfile.close(); } else { errtext = "Cannot open output file"; return false; } return true; } bool readfile(bool& isbinary) { char c; ifstream textfile; textfile.open(inpfilename.c_str(), ios::binary); if (!textfile) return false; inptext.clear(); textfile.seekg(0, ios::end); inptext.reserve(textfile.tellg()); textfile.seekg(0, ios::beg); isbinary = false; while (textfile.get(c)) inptext += c; return true; } void cb_close() { exit(0); } void wrap_unwrap() { char result[1000]; inpshortname = fl_filename_name(inpfilename.c_str()); foldername = inpfilename; foldername.erase(foldername.find(inpshortname)); txtResult->value(""); txtResult->redraw(); infotext = ""; bool isbinary = false; if (inpfilename.empty() || !readfile(isbinary)) { snprintf(result, sizeof(result), "Usage: flwrap [--usecomp] FILENAME or\n\ (1) Drag & Drop File onto desktop icon\n\ (2) Drag & Drop File into drop box ==>"); } else { if (usecompression) isbinary = true; if (inptext.find("[WRAP:") == std::string::npos) { if (!wrapfile(isbinary)) snprintf(result, sizeof(result), "%s\n", errtext.c_str()); else { snprintf(result, sizeof(result), "Success\ninput: %s\noutput: %s\nFolder: %s\n%s", inpshortname.c_str(), outshortname.c_str(), foldername.c_str(), infotext.c_str() ); } } else { if (!unwrapfile()) snprintf(result, sizeof(result), "%s", errtext.c_str()); else { outshortname = fl_filename_name(outfilename.c_str()); snprintf(result, sizeof(result), "Success\ninput: %s\noutput: %s\nFolder: %s\n%s", inpshortname.c_str(), outshortname.c_str(), foldername.c_str(), infotext.c_str() ); } } } inpDropBox->value(""); txtResult->value(result); } int main(int argc, char **argv) { Fl_Window *mainwin = make_window(); std::string Title = "Flwrap "; Title.append(VERSION); mainwin->label(Title.c_str()); std::string argvs = ""; for (int i = 0; i < argc; i++) argvs.append(argv[i]).append(" "); int arg_idx; argc = Fl::args(argc, argv, arg_idx, parse_args); wrap_unwrap(); #ifdef __WOE32__ mainwin->icon((char*)LoadIcon(fl_display, MAKEINTRESOURCE(IDI_ICON))); mainwin->show(1, argv); #else mainwin->show(argc, argv); #endif return Fl::run(); } int parse_args(int argc, char **argv, int& idx) { if (strcasecmp("--help", argv[idx]) == 0) { printf("\ --help this help text\n\ --version\n\ \n\ Usage: flwrap [--usecomp] FILENAME or\n\ Drag & Drop File onto desktop icon\n"); exit(0); } if (strcasecmp("--version", argv[idx]) == 0) { printf("Version: " VERSION "\n"); exit(0); } if (strcasecmp("--usecomp", argv[idx]) == 0) { usecompression = true; idx++; return 1; } // OS X passes process number as a command line argument if (strncasecmp("-psn", argv[idx], 4) == 0) { idx++; return 1; } inpfilename = outfilename = argv[idx]; idx++; return 1; } void inpDropBox_changed() { std::string fname; size_t n = std::string::npos; fname = inpDropBox->value(); if ((n = fname.find("file:///")) != std::string::npos) fname.erase(n, 7); while ((n = fname.find('\n')) != std::string::npos) fname.erase(n, 1); while ((n = fname.find('\r')) != std::string::npos) fname.erase(n, 1); inpDropBox->value(fname.c_str()); inpfilename = outfilename = fname; wrap_unwrap(); } flwrap-1.3.6/src/wrapdialog.cxx0000644000175000017500000000300414304245212013373 00000000000000// generated by Fast Light User Interface Designer (fluid) version 1.0110 #include "wrapdialog.h" Fl_Output *txtResult=(Fl_Output *)0; Fl_Input *inpDropBox=(Fl_Input *)0; static void cb_inpDropBox(Fl_Input*, void*) { inpDropBox_changed(); } Fl_Return_Button *btnClose=(Fl_Return_Button *)0; static void cb_btnClose(Fl_Return_Button*, void*) { cb_close(); } Fl_Light_Button *btn_compress=(Fl_Light_Button *)0; static void cb_btn_compress(Fl_Light_Button* o, void*) { usecompression = o->value(); } Fl_Double_Window* make_window() { Fl_Double_Window* w; { Fl_Double_Window* o = new Fl_Double_Window(492, 152, "Wrap"); w = o; { txtResult = new Fl_Output(5, 10, 360, 107); txtResult->type(12); txtResult->textfont(1); Fl_Group::current()->resizable(txtResult); } // Fl_Output* txtResult { inpDropBox = new Fl_Input(368, 10, 118, 107, "^Drop file here^"); inpDropBox->color((Fl_Color)FL_LIGHT3); inpDropBox->callback((Fl_Callback*)cb_inpDropBox); inpDropBox->align(FL_ALIGN_BOTTOM); inpDropBox->when(3); } // Fl_Input* inpDropBox { btnClose = new Fl_Return_Button(271, 122, 87, 25, "Close"); btnClose->callback((Fl_Callback*)cb_btnClose); } // Fl_Return_Button* btnClose { Fl_Light_Button* o = btn_compress = new Fl_Light_Button(7, 122, 100, 25, "Compress"); btn_compress->callback((Fl_Callback*)cb_btn_compress); o->value(usecompression); } // Fl_Light_Button* btn_compress o->end(); } // Fl_Double_Window* o return w; } flwrap-1.3.6/src/base64.cxx0000644000175000017500000000653514364736652012365 00000000000000//===================================================================== // // base64 encoding / decoding class // // To create a standalone base64 encode/coder: // g++ -DTEST b64.cxx -o base64 // // To use in a calling program: // // base64 b64; // default no CRLF's in output file // base 64 b64(true); // insert CRLF's in output file // pass c++ std::string into encoder / decoder // return value is encoded / decoded std::string // original std::string is left unchanged // // std::string instr, outstr; // outstr = b64.encoder(instr); // outstr = b64.decoder(instr); //===================================================================== #include "base64.h" void base64::init() { iolen = 0; iocp = 0; ateof = false; linelength = 0; // create the etable for encoding for (int i = 0; i < 9; i++) { etable[i] = 'A' + i; etable[i + 9] = 'J' + i; etable[26 + i] = 'a' + i; etable[26 + i + 9] = 'j' + i; } for (int i = 0; i < 8; i++) { etable[i + 18] = 'S' + i; etable[26 + i + 18] = 's' + i; } for (int i = 0; i < 10; i++) etable[52 + i] = '0' + i; etable[62] = '+'; etable[63] = '/'; // create the dtable for decoding for (int i= 0; i < 255; i++) dtable[i] = 0x80; for (int i = 'A'; i <= 'I'; i++) dtable[i] = 0 + (i - 'A'); for (int i = 'J'; i <= 'R'; i++) dtable[i] = 9 + (i - 'J'); for (int i = 'S'; i <= 'Z'; i++) dtable[i] = 18 + (i - 'S'); for (int i = 'a'; i <= 'i'; i++) dtable[i] = 26 + (i - 'a'); for (int i = 'j'; i <= 'r'; i++) dtable[i] = 35 + (i - 'j'); for (int i = 's'; i <= 'z'; i++) dtable[i] = 44 + (i - 's'); for (int i = '0'; i <= '9'; i++) dtable[i] = 52 + (i - '0'); dtable[(int)'+'] = 62; dtable[(int)'/'] = 63; dtable[(int)'='] = 0; } std::string base64::encode(std::string in) { int n; t_byte igroup[3], ogroup[4]; output = ""; iocp = 0; ateof = false; if (crlf) linelength = 0; iolen = in.length(); while (!ateof) { igroup[0] = igroup[1] = igroup[2] = 0; for (n = 0; n < 3; n++) { if (iocp == iolen) { ateof = true; break; } igroup[n] = (t_byte)in[iocp]; iocp++; } if (n > 0) { ogroup[0] = etable[igroup[0] >> 2]; ogroup[1] = etable[((igroup[0] & 3) << 4) | (igroup[1] >> 4)]; ogroup[2] = etable[((igroup[1] & 0xF) << 2) | (igroup[2] >> 6)]; ogroup[3] = etable[igroup[2] & 0x3F]; if (n < 3) ogroup[3] = '='; if (n < 2) ogroup[2] = '='; for (int i = 0; i < 4; i++) { if (crlf) if (linelength >= LINELEN) { output += '\n'; linelength = 0; } output += (t_byte)ogroup[i]; if (crlf) linelength++; } } } if (crlf) output += '\n'; return output; } std::string base64::decode(std::string in) { int i; output = ""; iocp = 0; iolen = in.length(); t_byte c; while (iocp < iolen) { t_byte a[4], b[4], o[3]; for (i = 0; i < 4; i++) { if (iocp == iolen) { output = "b64 file length error.\n"; return output; } c = in[iocp++]; while (c <= ' ') { if (iocp == iolen) { return output; } c = in[iocp++]; } if (dtable[c] & 0x80) { output = "Illegal character in b64 file.\n"; return output; } a[i] = c; b[i] = (t_byte)dtable[c]; } o[0] = (b[0] << 2) | (b[1] >> 4); o[1] = (b[1] << 4) | (b[2] >> 2); o[2] = (b[2] << 6) | b[3]; output += o[0]; if (a[2] != '=') { output += o[1]; if (a[3] != '=') output += o[2]; } } return output; } flwrap-1.3.6/src/lzma/0000775000175000017500000000000014364737360011566 500000000000000flwrap-1.3.6/src/lzma/Alloc.h0000644000175000017500000000110514304245211012663 00000000000000/* Alloc.h -- Memory allocation functions 2008-03-13 Igor Pavlov Public domain */ #ifndef __COMMON_ALLOC_H #define __COMMON_ALLOC_H #include void *MyAlloc(size_t size); void MyFree(void *address); #ifdef _WIN32 void SetLargePageSize(); void *MidAlloc(size_t size); void MidFree(void *address); void *BigAlloc(size_t size); void BigFree(void *address); #else #define MidAlloc(size) MyAlloc(size) #define MidFree(address) MyFree(address) #define BigAlloc(size) MyAlloc(size) #define BigFree(address) MyFree(address) #endif #endif flwrap-1.3.6/src/lzma/Alloc.c0000644000175000017500000000537314304245211012671 00000000000000/* Alloc.c -- Memory allocation functions 2008-09-24 Igor Pavlov Public domain */ #ifdef _WIN32 #include #endif #include #include "Alloc.h" /* #define _SZ_ALLOC_DEBUG */ /* use _SZ_ALLOC_DEBUG to debug alloc/free operations */ #ifdef _SZ_ALLOC_DEBUG #include int g_allocCount = 0; int g_allocCountMid = 0; int g_allocCountBig = 0; #endif void *MyAlloc(size_t size) { if (size == 0) return 0; #ifdef _SZ_ALLOC_DEBUG { void *p = malloc(size); fprintf(stderr, "\nAlloc %10d bytes, count = %10d, addr = %8X", size, g_allocCount++, (unsigned)p); return p; } #else return malloc(size); #endif } void MyFree(void *address) { #ifdef _SZ_ALLOC_DEBUG if (address != 0) fprintf(stderr, "\nFree; count = %10d, addr = %8X", --g_allocCount, (unsigned)address); #endif free(address); } #ifdef _WIN32 void *MidAlloc(size_t size) { if (size == 0) return 0; #ifdef _SZ_ALLOC_DEBUG fprintf(stderr, "\nAlloc_Mid %10d bytes; count = %10d", size, g_allocCountMid++); #endif return VirtualAlloc(0, size, MEM_COMMIT, PAGE_READWRITE); } void MidFree(void *address) { #ifdef _SZ_ALLOC_DEBUG if (address != 0) fprintf(stderr, "\nFree_Mid; count = %10d", --g_allocCountMid); #endif if (address == 0) return; VirtualFree(address, 0, MEM_RELEASE); } #ifndef MEM_LARGE_PAGES #undef _7ZIP_LARGE_PAGES #endif #ifdef _7ZIP_LARGE_PAGES SIZE_T g_LargePageSize = 0; typedef SIZE_T (WINAPI *GetLargePageMinimumP)(); #endif void SetLargePageSize() { #ifdef _7ZIP_LARGE_PAGES SIZE_T size = 0; GetLargePageMinimumP largePageMinimum = (GetLargePageMinimumP) GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")), "GetLargePageMinimum"); if (largePageMinimum == 0) return; size = largePageMinimum(); if (size == 0 || (size & (size - 1)) != 0) return; g_LargePageSize = size; #endif } void *BigAlloc(size_t size) { if (size == 0) return 0; #ifdef _SZ_ALLOC_DEBUG fprintf(stderr, "\nAlloc_Big %10d bytes; count = %10d", size, g_allocCountBig++); #endif #ifdef _7ZIP_LARGE_PAGES if (g_LargePageSize != 0 && g_LargePageSize <= (1 << 30) && size >= (1 << 18)) { void *res = VirtualAlloc(0, (size + g_LargePageSize - 1) & (~(g_LargePageSize - 1)), MEM_COMMIT | MEM_LARGE_PAGES, PAGE_READWRITE); if (res != 0) return res; } #endif return VirtualAlloc(0, size, MEM_COMMIT, PAGE_READWRITE); } void BigFree(void *address) { #ifdef _SZ_ALLOC_DEBUG if (address != 0) fprintf(stderr, "\nFree_Big; count = %10d", --g_allocCountBig); #endif if (address == 0) return; VirtualFree(address, 0, MEM_RELEASE); } #endif flwrap-1.3.6/src/lzma/LzFind.c0000644000175000017500000004742414304245211013030 00000000000000/* LzFind.c -- Match finder for LZ algorithms 2008-10-04 : Igor Pavlov : Public domain */ #include #include "LzFind.h" #include "LzHash.h" #define kEmptyHashValue 0 #define kMaxValForNormalize ((UInt32)0xFFFFFFFF) #define kNormalizeStepMin (1 << 10) /* it must be power of 2 */ #define kNormalizeMask (~(kNormalizeStepMin - 1)) #define kMaxHistorySize ((UInt32)3 << 30) #define kStartMaxLen 3 static void LzInWindow_Free(CMatchFinder *p, ISzAlloc *alloc) { if (!p->directInput) { alloc->Free(alloc, p->bufferBase); p->bufferBase = 0; } } /* keepSizeBefore + keepSizeAfter + keepSizeReserv must be < 4G) */ static int LzInWindow_Create(CMatchFinder *p, UInt32 keepSizeReserv, ISzAlloc *alloc) { UInt32 blockSize = p->keepSizeBefore + p->keepSizeAfter + keepSizeReserv; if (p->directInput) { p->blockSize = blockSize; return 1; } if (p->bufferBase == 0 || p->blockSize != blockSize) { LzInWindow_Free(p, alloc); p->blockSize = blockSize; p->bufferBase = (Byte *)alloc->Alloc(alloc, (size_t)blockSize); } return (p->bufferBase != 0); } Byte *MatchFinder_GetPointerToCurrentPos(CMatchFinder *p) { return p->buffer; } Byte MatchFinder_GetIndexByte(CMatchFinder *p, Int32 index) { return p->buffer[index]; } UInt32 MatchFinder_GetNumAvailableBytes(CMatchFinder *p) { return p->streamPos - p->pos; } void MatchFinder_ReduceOffsets(CMatchFinder *p, UInt32 subValue) { p->posLimit -= subValue; p->pos -= subValue; p->streamPos -= subValue; } static void MatchFinder_ReadBlock(CMatchFinder *p) { if (p->streamEndWasReached || p->result != SZ_OK) return; for (;;) { Byte *dest = p->buffer + (p->streamPos - p->pos); size_t size = (p->bufferBase + p->blockSize - dest); if (size == 0) return; p->result = p->stream->Read(p->stream, dest, &size); if (p->result != SZ_OK) return; if (size == 0) { p->streamEndWasReached = 1; return; } p->streamPos += (UInt32)size; if (p->streamPos - p->pos > p->keepSizeAfter) return; } } void MatchFinder_MoveBlock(CMatchFinder *p) { memmove(p->bufferBase, p->buffer - p->keepSizeBefore, (size_t)(p->streamPos - p->pos + p->keepSizeBefore)); p->buffer = p->bufferBase + p->keepSizeBefore; } int MatchFinder_NeedMove(CMatchFinder *p) { /* if (p->streamEndWasReached) return 0; */ return ((size_t)(p->bufferBase + p->blockSize - p->buffer) <= p->keepSizeAfter); } void MatchFinder_ReadIfRequired(CMatchFinder *p) { if (p->streamEndWasReached) return; if (p->keepSizeAfter >= p->streamPos - p->pos) MatchFinder_ReadBlock(p); } static void MatchFinder_CheckAndMoveAndRead(CMatchFinder *p) { if (MatchFinder_NeedMove(p)) MatchFinder_MoveBlock(p); MatchFinder_ReadBlock(p); } static void MatchFinder_SetDefaultSettings(CMatchFinder *p) { p->cutValue = 32; p->btMode = 1; p->numHashBytes = 4; /* p->skipModeBits = 0; */ p->directInput = 0; p->bigHash = 0; } #define kCrcPoly 0xEDB88320 void MatchFinder_Construct(CMatchFinder *p) { UInt32 i; p->bufferBase = 0; p->directInput = 0; p->hash = 0; MatchFinder_SetDefaultSettings(p); for (i = 0; i < 256; i++) { UInt32 r = i; int j; for (j = 0; j < 8; j++) r = (r >> 1) ^ (kCrcPoly & ~((r & 1) - 1)); p->crc[i] = r; } } static void MatchFinder_FreeThisClassMemory(CMatchFinder *p, ISzAlloc *alloc) { alloc->Free(alloc, p->hash); p->hash = 0; } void MatchFinder_Free(CMatchFinder *p, ISzAlloc *alloc) { MatchFinder_FreeThisClassMemory(p, alloc); LzInWindow_Free(p, alloc); } static CLzRef* AllocRefs(UInt32 num, ISzAlloc *alloc) { size_t sizeInBytes = (size_t)num * sizeof(CLzRef); if (sizeInBytes / sizeof(CLzRef) != num) return 0; return (CLzRef *)alloc->Alloc(alloc, sizeInBytes); } int MatchFinder_Create(CMatchFinder *p, UInt32 historySize, UInt32 keepAddBufferBefore, UInt32 matchMaxLen, UInt32 keepAddBufferAfter, ISzAlloc *alloc) { UInt32 sizeReserv; if (historySize > kMaxHistorySize) { MatchFinder_Free(p, alloc); return 0; } sizeReserv = historySize >> 1; if (historySize > ((UInt32)2 << 30)) sizeReserv = historySize >> 2; sizeReserv += (keepAddBufferBefore + matchMaxLen + keepAddBufferAfter) / 2 + (1 << 19); p->keepSizeBefore = historySize + keepAddBufferBefore + 1; p->keepSizeAfter = matchMaxLen + keepAddBufferAfter; /* we need one additional byte, since we use MoveBlock after pos++ and before dictionary using */ if (LzInWindow_Create(p, sizeReserv, alloc)) { UInt32 newCyclicBufferSize = (historySize /* >> p->skipModeBits */) + 1; UInt32 hs; p->matchMaxLen = matchMaxLen; { p->fixedHashSize = 0; if (p->numHashBytes == 2) hs = (1 << 16) - 1; else { hs = historySize - 1; hs |= (hs >> 1); hs |= (hs >> 2); hs |= (hs >> 4); hs |= (hs >> 8); hs >>= 1; /* hs >>= p->skipModeBits; */ hs |= 0xFFFF; /* don't change it! It's required for Deflate */ if (hs > (1 << 24)) { if (p->numHashBytes == 3) hs = (1 << 24) - 1; else hs >>= 1; } } p->hashMask = hs; hs++; if (p->numHashBytes > 2) p->fixedHashSize += kHash2Size; if (p->numHashBytes > 3) p->fixedHashSize += kHash3Size; if (p->numHashBytes > 4) p->fixedHashSize += kHash4Size; hs += p->fixedHashSize; } { UInt32 prevSize = p->hashSizeSum + p->numSons; UInt32 newSize; p->historySize = historySize; p->hashSizeSum = hs; p->cyclicBufferSize = newCyclicBufferSize; p->numSons = (p->btMode ? newCyclicBufferSize * 2 : newCyclicBufferSize); newSize = p->hashSizeSum + p->numSons; if (p->hash != 0 && prevSize == newSize) return 1; MatchFinder_FreeThisClassMemory(p, alloc); p->hash = AllocRefs(newSize, alloc); if (p->hash != 0) { p->son = p->hash + p->hashSizeSum; return 1; } } } MatchFinder_Free(p, alloc); return 0; } static void MatchFinder_SetLimits(CMatchFinder *p) { UInt32 limit = kMaxValForNormalize - p->pos; UInt32 limit2 = p->cyclicBufferSize - p->cyclicBufferPos; if (limit2 < limit) limit = limit2; limit2 = p->streamPos - p->pos; if (limit2 <= p->keepSizeAfter) { if (limit2 > 0) limit2 = 1; } else limit2 -= p->keepSizeAfter; if (limit2 < limit) limit = limit2; { UInt32 lenLimit = p->streamPos - p->pos; if (lenLimit > p->matchMaxLen) lenLimit = p->matchMaxLen; p->lenLimit = lenLimit; } p->posLimit = p->pos + limit; } void MatchFinder_Init(CMatchFinder *p) { UInt32 i; for (i = 0; i < p->hashSizeSum; i++) p->hash[i] = kEmptyHashValue; p->cyclicBufferPos = 0; p->buffer = p->bufferBase; p->pos = p->streamPos = p->cyclicBufferSize; p->result = SZ_OK; p->streamEndWasReached = 0; MatchFinder_ReadBlock(p); MatchFinder_SetLimits(p); } static UInt32 MatchFinder_GetSubValue(CMatchFinder *p) { return (p->pos - p->historySize - 1) & kNormalizeMask; } void MatchFinder_Normalize3(UInt32 subValue, CLzRef *items, UInt32 numItems) { UInt32 i; for (i = 0; i < numItems; i++) { UInt32 value = items[i]; if (value <= subValue) value = kEmptyHashValue; else value -= subValue; items[i] = value; } } static void MatchFinder_Normalize(CMatchFinder *p) { UInt32 subValue = MatchFinder_GetSubValue(p); MatchFinder_Normalize3(subValue, p->hash, p->hashSizeSum + p->numSons); MatchFinder_ReduceOffsets(p, subValue); } static void MatchFinder_CheckLimits(CMatchFinder *p) { if (p->pos == kMaxValForNormalize) MatchFinder_Normalize(p); if (!p->streamEndWasReached && p->keepSizeAfter == p->streamPos - p->pos) MatchFinder_CheckAndMoveAndRead(p); if (p->cyclicBufferPos == p->cyclicBufferSize) p->cyclicBufferPos = 0; MatchFinder_SetLimits(p); } static UInt32 * Hc_GetMatchesSpec(UInt32 lenLimit, UInt32 curMatch, UInt32 pos, const Byte *cur, CLzRef *son, UInt32 _cyclicBufferPos, UInt32 _cyclicBufferSize, UInt32 cutValue, UInt32 *distances, UInt32 maxLen) { son[_cyclicBufferPos] = curMatch; for (;;) { UInt32 delta = pos - curMatch; if (cutValue-- == 0 || delta >= _cyclicBufferSize) return distances; { const Byte *pb = cur - delta; curMatch = son[_cyclicBufferPos - delta + ((delta > _cyclicBufferPos) ? _cyclicBufferSize : 0)]; if (pb[maxLen] == cur[maxLen] && *pb == *cur) { UInt32 len = 0; while (++len != lenLimit) if (pb[len] != cur[len]) break; if (maxLen < len) { *distances++ = maxLen = len; *distances++ = delta - 1; if (len == lenLimit) return distances; } } } } } UInt32 * GetMatchesSpec1(UInt32 lenLimit, UInt32 curMatch, UInt32 pos, const Byte *cur, CLzRef *son, UInt32 _cyclicBufferPos, UInt32 _cyclicBufferSize, UInt32 cutValue, UInt32 *distances, UInt32 maxLen) { CLzRef *ptr0 = son + (_cyclicBufferPos << 1) + 1; CLzRef *ptr1 = son + (_cyclicBufferPos << 1); UInt32 len0 = 0, len1 = 0; for (;;) { UInt32 delta = pos - curMatch; if (cutValue-- == 0 || delta >= _cyclicBufferSize) { *ptr0 = *ptr1 = kEmptyHashValue; return distances; } { CLzRef *pair = son + ((_cyclicBufferPos - delta + ((delta > _cyclicBufferPos) ? _cyclicBufferSize : 0)) << 1); const Byte *pb = cur - delta; UInt32 len = (len0 < len1 ? len0 : len1); if (pb[len] == cur[len]) { if (++len != lenLimit && pb[len] == cur[len]) while (++len != lenLimit) if (pb[len] != cur[len]) break; if (maxLen < len) { *distances++ = maxLen = len; *distances++ = delta - 1; if (len == lenLimit) { *ptr1 = pair[0]; *ptr0 = pair[1]; return distances; } } } if (pb[len] < cur[len]) { *ptr1 = curMatch; ptr1 = pair + 1; curMatch = *ptr1; len1 = len; } else { *ptr0 = curMatch; ptr0 = pair; curMatch = *ptr0; len0 = len; } } } } static void SkipMatchesSpec(UInt32 lenLimit, UInt32 curMatch, UInt32 pos, const Byte *cur, CLzRef *son, UInt32 _cyclicBufferPos, UInt32 _cyclicBufferSize, UInt32 cutValue) { CLzRef *ptr0 = son + (_cyclicBufferPos << 1) + 1; CLzRef *ptr1 = son + (_cyclicBufferPos << 1); UInt32 len0 = 0, len1 = 0; for (;;) { UInt32 delta = pos - curMatch; if (cutValue-- == 0 || delta >= _cyclicBufferSize) { *ptr0 = *ptr1 = kEmptyHashValue; return; } { CLzRef *pair = son + ((_cyclicBufferPos - delta + ((delta > _cyclicBufferPos) ? _cyclicBufferSize : 0)) << 1); const Byte *pb = cur - delta; UInt32 len = (len0 < len1 ? len0 : len1); if (pb[len] == cur[len]) { while (++len != lenLimit) if (pb[len] != cur[len]) break; { if (len == lenLimit) { *ptr1 = pair[0]; *ptr0 = pair[1]; return; } } } if (pb[len] < cur[len]) { *ptr1 = curMatch; ptr1 = pair + 1; curMatch = *ptr1; len1 = len; } else { *ptr0 = curMatch; ptr0 = pair; curMatch = *ptr0; len0 = len; } } } } #define MOVE_POS \ ++p->cyclicBufferPos; \ p->buffer++; \ if (++p->pos == p->posLimit) MatchFinder_CheckLimits(p); #define MOVE_POS_RET MOVE_POS return offset; static void MatchFinder_MovePos(CMatchFinder *p) { MOVE_POS; } #define GET_MATCHES_HEADER2(minLen, ret_op) \ UInt32 lenLimit; UInt32 hashValue; const Byte *cur; UInt32 curMatch; \ lenLimit = p->lenLimit; { if (lenLimit < minLen) { MatchFinder_MovePos(p); ret_op; }} \ cur = p->buffer; #define GET_MATCHES_HEADER(minLen) GET_MATCHES_HEADER2(minLen, return 0) #define SKIP_HEADER(minLen) GET_MATCHES_HEADER2(minLen, continue) #define MF_PARAMS(p) p->pos, p->buffer, p->son, p->cyclicBufferPos, p->cyclicBufferSize, p->cutValue #define GET_MATCHES_FOOTER(offset, maxLen) \ offset = (UInt32)(GetMatchesSpec1(lenLimit, curMatch, MF_PARAMS(p), \ distances + offset, maxLen) - distances); MOVE_POS_RET; #define SKIP_FOOTER \ SkipMatchesSpec(lenLimit, curMatch, MF_PARAMS(p)); MOVE_POS; static UInt32 Bt2_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances) { UInt32 offset; GET_MATCHES_HEADER(2) HASH2_CALC; curMatch = p->hash[hashValue]; p->hash[hashValue] = p->pos; offset = 0; GET_MATCHES_FOOTER(offset, 1) } UInt32 Bt3Zip_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances) { UInt32 offset; GET_MATCHES_HEADER(3) HASH_ZIP_CALC; curMatch = p->hash[hashValue]; p->hash[hashValue] = p->pos; offset = 0; GET_MATCHES_FOOTER(offset, 2) } static UInt32 Bt3_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances) { UInt32 hash2Value, delta2, maxLen, offset; GET_MATCHES_HEADER(3) HASH3_CALC; delta2 = p->pos - p->hash[hash2Value]; curMatch = p->hash[kFix3HashSize + hashValue]; p->hash[hash2Value] = p->hash[kFix3HashSize + hashValue] = p->pos; maxLen = 2; offset = 0; if (delta2 < p->cyclicBufferSize && *(cur - delta2) == *cur) { for (; maxLen != lenLimit; maxLen++) if (cur[(ptrdiff_t)maxLen - delta2] != cur[maxLen]) break; distances[0] = maxLen; distances[1] = delta2 - 1; offset = 2; if (maxLen == lenLimit) { SkipMatchesSpec(lenLimit, curMatch, MF_PARAMS(p)); MOVE_POS_RET; } } GET_MATCHES_FOOTER(offset, maxLen) } static UInt32 Bt4_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances) { UInt32 hash2Value, hash3Value, delta2, delta3, maxLen, offset; GET_MATCHES_HEADER(4) HASH4_CALC; delta2 = p->pos - p->hash[ hash2Value]; delta3 = p->pos - p->hash[kFix3HashSize + hash3Value]; curMatch = p->hash[kFix4HashSize + hashValue]; p->hash[ hash2Value] = p->hash[kFix3HashSize + hash3Value] = p->hash[kFix4HashSize + hashValue] = p->pos; maxLen = 1; offset = 0; if (delta2 < p->cyclicBufferSize && *(cur - delta2) == *cur) { distances[0] = maxLen = 2; distances[1] = delta2 - 1; offset = 2; } if (delta2 != delta3 && delta3 < p->cyclicBufferSize && *(cur - delta3) == *cur) { maxLen = 3; distances[offset + 1] = delta3 - 1; offset += 2; delta2 = delta3; } if (offset != 0) { for (; maxLen != lenLimit; maxLen++) if (cur[(ptrdiff_t)maxLen - delta2] != cur[maxLen]) break; distances[offset - 2] = maxLen; if (maxLen == lenLimit) { SkipMatchesSpec(lenLimit, curMatch, MF_PARAMS(p)); MOVE_POS_RET; } } if (maxLen < 3) maxLen = 3; GET_MATCHES_FOOTER(offset, maxLen) } static UInt32 Hc4_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances) { UInt32 hash2Value, hash3Value, delta2, delta3, maxLen, offset; GET_MATCHES_HEADER(4) HASH4_CALC; delta2 = p->pos - p->hash[ hash2Value]; delta3 = p->pos - p->hash[kFix3HashSize + hash3Value]; curMatch = p->hash[kFix4HashSize + hashValue]; p->hash[ hash2Value] = p->hash[kFix3HashSize + hash3Value] = p->hash[kFix4HashSize + hashValue] = p->pos; maxLen = 1; offset = 0; if (delta2 < p->cyclicBufferSize && *(cur - delta2) == *cur) { distances[0] = maxLen = 2; distances[1] = delta2 - 1; offset = 2; } if (delta2 != delta3 && delta3 < p->cyclicBufferSize && *(cur - delta3) == *cur) { maxLen = 3; distances[offset + 1] = delta3 - 1; offset += 2; delta2 = delta3; } if (offset != 0) { for (; maxLen != lenLimit; maxLen++) if (cur[(ptrdiff_t)maxLen - delta2] != cur[maxLen]) break; distances[offset - 2] = maxLen; if (maxLen == lenLimit) { p->son[p->cyclicBufferPos] = curMatch; MOVE_POS_RET; } } if (maxLen < 3) maxLen = 3; offset = (UInt32)(Hc_GetMatchesSpec(lenLimit, curMatch, MF_PARAMS(p), distances + offset, maxLen) - (distances)); MOVE_POS_RET } UInt32 Hc3Zip_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances) { UInt32 offset; GET_MATCHES_HEADER(3) HASH_ZIP_CALC; curMatch = p->hash[hashValue]; p->hash[hashValue] = p->pos; offset = (UInt32)(Hc_GetMatchesSpec(lenLimit, curMatch, MF_PARAMS(p), distances, 2) - (distances)); MOVE_POS_RET } static void Bt2_MatchFinder_Skip(CMatchFinder *p, UInt32 num) { do { SKIP_HEADER(2) HASH2_CALC; curMatch = p->hash[hashValue]; p->hash[hashValue] = p->pos; SKIP_FOOTER } while (--num != 0); } void Bt3Zip_MatchFinder_Skip(CMatchFinder *p, UInt32 num) { do { SKIP_HEADER(3) HASH_ZIP_CALC; curMatch = p->hash[hashValue]; p->hash[hashValue] = p->pos; SKIP_FOOTER } while (--num != 0); } static void Bt3_MatchFinder_Skip(CMatchFinder *p, UInt32 num) { do { UInt32 hash2Value; SKIP_HEADER(3) HASH3_CALC; curMatch = p->hash[kFix3HashSize + hashValue]; p->hash[hash2Value] = p->hash[kFix3HashSize + hashValue] = p->pos; SKIP_FOOTER } while (--num != 0); } static void Bt4_MatchFinder_Skip(CMatchFinder *p, UInt32 num) { do { UInt32 hash2Value, hash3Value; SKIP_HEADER(4) HASH4_CALC; curMatch = p->hash[kFix4HashSize + hashValue]; p->hash[ hash2Value] = p->hash[kFix3HashSize + hash3Value] = p->pos; p->hash[kFix4HashSize + hashValue] = p->pos; SKIP_FOOTER } while (--num != 0); } static void Hc4_MatchFinder_Skip(CMatchFinder *p, UInt32 num) { do { UInt32 hash2Value, hash3Value; SKIP_HEADER(4) HASH4_CALC; curMatch = p->hash[kFix4HashSize + hashValue]; p->hash[ hash2Value] = p->hash[kFix3HashSize + hash3Value] = p->hash[kFix4HashSize + hashValue] = p->pos; p->son[p->cyclicBufferPos] = curMatch; MOVE_POS } while (--num != 0); } void Hc3Zip_MatchFinder_Skip(CMatchFinder *p, UInt32 num) { do { SKIP_HEADER(3) HASH_ZIP_CALC; curMatch = p->hash[hashValue]; p->hash[hashValue] = p->pos; p->son[p->cyclicBufferPos] = curMatch; MOVE_POS } while (--num != 0); } void MatchFinder_CreateVTable(CMatchFinder *p, IMatchFinder *vTable) { vTable->Init = (Mf_Init_Func)MatchFinder_Init; vTable->GetIndexByte = (Mf_GetIndexByte_Func)MatchFinder_GetIndexByte; vTable->GetNumAvailableBytes = (Mf_GetNumAvailableBytes_Func)MatchFinder_GetNumAvailableBytes; vTable->GetPointerToCurrentPos = (Mf_GetPointerToCurrentPos_Func)MatchFinder_GetPointerToCurrentPos; if (!p->btMode) { vTable->GetMatches = (Mf_GetMatches_Func)Hc4_MatchFinder_GetMatches; vTable->Skip = (Mf_Skip_Func)Hc4_MatchFinder_Skip; } else if (p->numHashBytes == 2) { vTable->GetMatches = (Mf_GetMatches_Func)Bt2_MatchFinder_GetMatches; vTable->Skip = (Mf_Skip_Func)Bt2_MatchFinder_Skip; } else if (p->numHashBytes == 3) { vTable->GetMatches = (Mf_GetMatches_Func)Bt3_MatchFinder_GetMatches; vTable->Skip = (Mf_Skip_Func)Bt3_MatchFinder_Skip; } else { vTable->GetMatches = (Mf_GetMatches_Func)Bt4_MatchFinder_GetMatches; vTable->Skip = (Mf_Skip_Func)Bt4_MatchFinder_Skip; } } flwrap-1.3.6/src/lzma/LzmaDec.h0000644000175000017500000001555114304245211013162 00000000000000/* LzmaDec.h -- LZMA Decoder 2008-10-04 : Igor Pavlov : Public domain */ #ifndef __LZMADEC_H #define __LZMADEC_H #include "Types.h" /* #define _LZMA_PROB32 */ /* _LZMA_PROB32 can increase the speed on some CPUs, but memory usage for CLzmaDec::probs will be doubled in that case */ #ifdef _LZMA_PROB32 #define CLzmaProb UInt32 #else #define CLzmaProb UInt16 #endif /* ---------- LZMA Properties ---------- */ #define LZMA_PROPS_SIZE 5 typedef struct _CLzmaProps { unsigned lc, lp, pb; UInt32 dicSize; } CLzmaProps; /* LzmaProps_Decode - decodes properties Returns: SZ_OK SZ_ERROR_UNSUPPORTED - Unsupported properties */ SRes LzmaProps_Decode(CLzmaProps *p, const Byte *data, unsigned size); /* ---------- LZMA Decoder state ---------- */ /* LZMA_REQUIRED_INPUT_MAX = number of required input bytes for worst case. Num bits = log2((2^11 / 31) ^ 22) + 26 < 134 + 26 = 160; */ #define LZMA_REQUIRED_INPUT_MAX 20 typedef struct { CLzmaProps prop; CLzmaProb *probs; Byte *dic; const Byte *buf; UInt32 range, code; SizeT dicPos; SizeT dicBufSize; UInt32 processedPos; UInt32 checkDicSize; unsigned state; UInt32 reps[4]; unsigned remainLen; int needFlush; int needInitState; UInt32 numProbs; unsigned tempBufSize; Byte tempBuf[LZMA_REQUIRED_INPUT_MAX]; } CLzmaDec; #define LzmaDec_Construct(p) { (p)->dic = 0; (p)->probs = 0; } void LzmaDec_Init(CLzmaDec *p); /* There are two types of LZMA streams: 0) Stream with end mark. That end mark adds about 6 bytes to compressed size. 1) Stream without end mark. You must know exact uncompressed size to decompress such stream. */ typedef enum { LZMA_FINISH_ANY, /* finish at any point */ LZMA_FINISH_END /* block must be finished at the end */ } ELzmaFinishMode; /* ELzmaFinishMode has meaning only if the decoding reaches output limit !!! You must use LZMA_FINISH_END, when you know that current output buffer covers last bytes of block. In other cases you must use LZMA_FINISH_ANY. If LZMA decoder sees end marker before reaching output limit, it returns SZ_OK, and output value of destLen will be less than output buffer size limit. You can check status result also. You can use multiple checks to test data integrity after full decompression: 1) Check Result and "status" variable. 2) Check that output(destLen) = uncompressedSize, if you know real uncompressedSize. 3) Check that output(srcLen) = compressedSize, if you know real compressedSize. You must use correct finish mode in that case. */ typedef enum { LZMA_STATUS_NOT_SPECIFIED, /* use main error code instead */ LZMA_STATUS_FINISHED_WITH_MARK, /* stream was finished with end mark. */ LZMA_STATUS_NOT_FINISHED, /* stream was not finished */ LZMA_STATUS_NEEDS_MORE_INPUT, /* you must provide more input bytes */ LZMA_STATUS_MAYBE_FINISHED_WITHOUT_MARK /* there is probability that stream was finished without end mark */ } ELzmaStatus; /* ELzmaStatus is used only as output value for function call */ /* ---------- Interfaces ---------- */ /* There are 3 levels of interfaces: 1) Dictionary Interface 2) Buffer Interface 3) One Call Interface You can select any of these interfaces, but don't mix functions from different groups for same object. */ /* There are two variants to allocate state for Dictionary Interface: 1) LzmaDec_Allocate / LzmaDec_Free 2) LzmaDec_AllocateProbs / LzmaDec_FreeProbs You can use variant 2, if you set dictionary buffer manually. For Buffer Interface you must always use variant 1. LzmaDec_Allocate* can return: SZ_OK SZ_ERROR_MEM - Memory allocation error SZ_ERROR_UNSUPPORTED - Unsupported properties */ SRes LzmaDec_AllocateProbs(CLzmaDec *p, const Byte *props, unsigned propsSize, ISzAlloc *alloc); void LzmaDec_FreeProbs(CLzmaDec *p, ISzAlloc *alloc); SRes LzmaDec_Allocate(CLzmaDec *state, const Byte *prop, unsigned propsSize, ISzAlloc *alloc); void LzmaDec_Free(CLzmaDec *state, ISzAlloc *alloc); /* ---------- Dictionary Interface ---------- */ /* You can use it, if you want to eliminate the overhead for data copying from dictionary to some other external buffer. You must work with CLzmaDec variables directly in this interface. STEPS: LzmaDec_Constr() LzmaDec_Allocate() for (each new stream) { LzmaDec_Init() while (it needs more decompression) { LzmaDec_DecodeToDic() use data from CLzmaDec::dic and update CLzmaDec::dicPos } } LzmaDec_Free() */ /* LzmaDec_DecodeToDic The decoding to internal dictionary buffer (CLzmaDec::dic). You must manually update CLzmaDec::dicPos, if it reaches CLzmaDec::dicBufSize !!! finishMode: It has meaning only if the decoding reaches output limit (dicLimit). LZMA_FINISH_ANY - Decode just dicLimit bytes. LZMA_FINISH_END - Stream must be finished after dicLimit. Returns: SZ_OK status: LZMA_STATUS_FINISHED_WITH_MARK LZMA_STATUS_NOT_FINISHED LZMA_STATUS_NEEDS_MORE_INPUT LZMA_STATUS_MAYBE_FINISHED_WITHOUT_MARK SZ_ERROR_DATA - Data error */ SRes LzmaDec_DecodeToDic(CLzmaDec *p, SizeT dicLimit, const Byte *src, SizeT *srcLen, ELzmaFinishMode finishMode, ELzmaStatus *status); /* ---------- Buffer Interface ---------- */ /* It's zlib-like interface. See LzmaDec_DecodeToDic description for information about STEPS and return results, but you must use LzmaDec_DecodeToBuf instead of LzmaDec_DecodeToDic and you don't need to work with CLzmaDec variables manually. finishMode: It has meaning only if the decoding reaches output limit (*destLen). LZMA_FINISH_ANY - Decode just destLen bytes. LZMA_FINISH_END - Stream must be finished after (*destLen). */ SRes LzmaDec_DecodeToBuf(CLzmaDec *p, Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen, ELzmaFinishMode finishMode, ELzmaStatus *status); /* ---------- One Call Interface ---------- */ /* LzmaDecode finishMode: It has meaning only if the decoding reaches output limit (*destLen). LZMA_FINISH_ANY - Decode just destLen bytes. LZMA_FINISH_END - Stream must be finished after (*destLen). Returns: SZ_OK status: LZMA_STATUS_FINISHED_WITH_MARK LZMA_STATUS_NOT_FINISHED LZMA_STATUS_MAYBE_FINISHED_WITHOUT_MARK SZ_ERROR_DATA - Data error SZ_ERROR_MEM - Memory allocation error SZ_ERROR_UNSUPPORTED - Unsupported properties SZ_ERROR_INPUT_EOF - It needs more bytes in input buffer (src). */ SRes LzmaDecode(Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen, const Byte *propData, unsigned propSize, ELzmaFinishMode finishMode, ELzmaStatus *status, ISzAlloc *alloc); #endif flwrap-1.3.6/src/lzma/LzmaLib.h0000644000175000017500000001063714304245211013175 00000000000000/* LzmaLib.h -- LZMA library interface 2008-08-05 Igor Pavlov Public domain */ #ifndef __LZMALIB_H #define __LZMALIB_H #include "Types.h" #ifdef __cplusplus #define MY_EXTERN_C extern "C" #else #define MY_EXTERN_C extern #endif #define MY_STDAPI MY_EXTERN_C int MY_STD_CALL #define LZMA_PROPS_SIZE 5 /* RAM requirements for LZMA: for compression: (dictSize * 11.5 + 6 MB) + state_size for decompression: dictSize + state_size state_size = (4 + (1.5 << (lc + lp))) KB by default (lc=3, lp=0), state_size = 16 KB. LZMA properties (5 bytes) format Offset Size Description 0 1 lc, lp and pb in encoded form. 1 4 dictSize (little endian). */ /* LzmaCompress ------------ outPropsSize - In: the pointer to the size of outProps buffer; *outPropsSize = LZMA_PROPS_SIZE = 5. Out: the pointer to the size of written properties in outProps buffer; *outPropsSize = LZMA_PROPS_SIZE = 5. LZMA Encoder will use defult values for any parameter, if it is -1 for any from: level, loc, lp, pb, fb, numThreads 0 for dictSize level - compression level: 0 <= level <= 9; level dictSize algo fb 0: 16 KB 0 32 1: 64 KB 0 32 2: 256 KB 0 32 3: 1 MB 0 32 4: 4 MB 0 32 5: 16 MB 1 32 6: 32 MB 1 32 7+: 64 MB 1 64 The default value for "level" is 5. algo = 0 means fast method algo = 1 means normal method dictSize - The dictionary size in bytes. The maximum value is 128 MB = (1 << 27) bytes for 32-bit version 1 GB = (1 << 30) bytes for 64-bit version The default value is 16 MB = (1 << 24) bytes. It's recommended to use the dictionary that is larger than 4 KB and that can be calculated as (1 << N) or (3 << N) sizes. lc - The number of literal context bits (high bits of previous literal). It can be in the range from 0 to 8. The default value is 3. Sometimes lc=4 gives the gain for big files. lp - The number of literal pos bits (low bits of current position for literals). It can be in the range from 0 to 4. The default value is 0. The lp switch is intended for periodical data when the period is equal to 2^lp. For example, for 32-bit (4 bytes) periodical data you can use lp=2. Often it's better to set lc=0, if you change lp switch. pb - The number of pos bits (low bits of current position). It can be in the range from 0 to 4. The default value is 2. The pb switch is intended for periodical data when the period is equal 2^pb. fb - Word size (the number of fast bytes). It can be in the range from 5 to 273. The default value is 32. Usually, a big number gives a little bit better compression ratio and slower compression process. numThreads - The number of thereads. 1 or 2. The default value is 2. Fast mode (algo = 0) can use only 1 thread. Out: destLen - processed output size Returns: SZ_OK - OK SZ_ERROR_MEM - Memory allocation error SZ_ERROR_PARAM - Incorrect paramater SZ_ERROR_OUTPUT_EOF - output buffer overflow SZ_ERROR_THREAD - errors in multithreading functions (only for Mt version) */ MY_STDAPI LzmaCompress(unsigned char *dest, size_t *destLen, const unsigned char *src, size_t srcLen, unsigned char *outProps, size_t *outPropsSize, /* *outPropsSize must be = 5 */ int level, /* 0 <= level <= 9, default = 5 */ unsigned dictSize, /* default = (1 << 24) */ int lc, /* 0 <= lc <= 8, default = 3 */ int lp, /* 0 <= lp <= 4, default = 0 */ int pb, /* 0 <= pb <= 4, default = 2 */ int fb, /* 5 <= fb <= 273, default = 32 */ int numThreads /* 1 or 2, default = 2 */ ); /* LzmaUncompress -------------- In: dest - output data destLen - output data size src - input data srcLen - input data size Out: destLen - processed output size srcLen - processed input size Returns: SZ_OK - OK SZ_ERROR_DATA - Data error SZ_ERROR_MEM - Memory allocation arror SZ_ERROR_UNSUPPORTED - Unsupported properties SZ_ERROR_INPUT_EOF - it needs more bytes in input buffer (src) */ MY_STDAPI LzmaUncompress(unsigned char *dest, size_t *destLen, const unsigned char *src, SizeT *srcLen, const unsigned char *props, size_t propsSize); #endif flwrap-1.3.6/src/lzma/LzHash.h0000644000175000017500000000374014304245211013031 00000000000000/* LzHash.h -- HASH functions for LZ algorithms 2008-10-04 : Igor Pavlov : Public domain */ #ifndef __LZHASH_H #define __LZHASH_H #define kHash2Size (1 << 10) #define kHash3Size (1 << 16) #define kHash4Size (1 << 20) #define kFix3HashSize (kHash2Size) #define kFix4HashSize (kHash2Size + kHash3Size) #define kFix5HashSize (kHash2Size + kHash3Size + kHash4Size) #define HASH2_CALC hashValue = cur[0] | ((UInt32)cur[1] << 8); #define HASH3_CALC { \ UInt32 temp = p->crc[cur[0]] ^ cur[1]; \ hash2Value = temp & (kHash2Size - 1); \ hashValue = (temp ^ ((UInt32)cur[2] << 8)) & p->hashMask; } #define HASH4_CALC { \ UInt32 temp = p->crc[cur[0]] ^ cur[1]; \ hash2Value = temp & (kHash2Size - 1); \ hash3Value = (temp ^ ((UInt32)cur[2] << 8)) & (kHash3Size - 1); \ hashValue = (temp ^ ((UInt32)cur[2] << 8) ^ (p->crc[cur[3]] << 5)) & p->hashMask; } #define HASH5_CALC { \ UInt32 temp = p->crc[cur[0]] ^ cur[1]; \ hash2Value = temp & (kHash2Size - 1); \ hash3Value = (temp ^ ((UInt32)cur[2] << 8)) & (kHash3Size - 1); \ hash4Value = (temp ^ ((UInt32)cur[2] << 8) ^ (p->crc[cur[3]] << 5)); \ hashValue = (hash4Value ^ (p->crc[cur[4]] << 3)) & p->hashMask; \ hash4Value &= (kHash4Size - 1); } /* #define HASH_ZIP_CALC hashValue = ((cur[0] | ((UInt32)cur[1] << 8)) ^ p->crc[cur[2]]) & 0xFFFF; */ #define HASH_ZIP_CALC hashValue = ((cur[2] | ((UInt32)cur[0] << 8)) ^ p->crc[cur[1]]) & 0xFFFF; #define MT_HASH2_CALC \ hash2Value = (p->crc[cur[0]] ^ cur[1]) & (kHash2Size - 1); #define MT_HASH3_CALC { \ UInt32 temp = p->crc[cur[0]] ^ cur[1]; \ hash2Value = temp & (kHash2Size - 1); \ hash3Value = (temp ^ ((UInt32)cur[2] << 8)) & (kHash3Size - 1); } #define MT_HASH4_CALC { \ UInt32 temp = p->crc[cur[0]] ^ cur[1]; \ hash2Value = temp & (kHash2Size - 1); \ hash3Value = (temp ^ ((UInt32)cur[2] << 8)) & (kHash3Size - 1); \ hash4Value = (temp ^ ((UInt32)cur[2] << 8) ^ (p->crc[cur[3]] << 5)) & (kHash4Size - 1); } #endif flwrap-1.3.6/src/lzma/LzmaLib.c0000644000175000017500000000276414304245211013172 00000000000000/* LzmaLib.c -- LZMA library wrapper 2008-08-05 Igor Pavlov Public domain */ #include "LzmaEnc.h" #include "LzmaDec.h" #include "Alloc.h" #include "LzmaLib.h" static void *SzAlloc(void *p, size_t size) { p = p; return MyAlloc(size); } static void SzFree(void *p, void *address) { p = p; MyFree(address); } static ISzAlloc g_Alloc = { SzAlloc, SzFree }; MY_STDAPI LzmaCompress(unsigned char *dest, size_t *destLen, const unsigned char *src, size_t srcLen, unsigned char *outProps, size_t *outPropsSize, int level, /* 0 <= level <= 9, default = 5 */ unsigned dictSize, /* use (1 << N) or (3 << N). 4 KB < dictSize <= 128 MB */ int lc, /* 0 <= lc <= 8, default = 3 */ int lp, /* 0 <= lp <= 4, default = 0 */ int pb, /* 0 <= pb <= 4, default = 2 */ int fb, /* 5 <= fb <= 273, default = 32 */ int numThreads /* 1 or 2, default = 2 */ ) { CLzmaEncProps props; LzmaEncProps_Init(&props); props.level = level; props.dictSize = dictSize; props.lc = lc; props.lp = lp; props.pb = pb; props.fb = fb; props.numThreads = numThreads; return LzmaEncode(dest, destLen, src, srcLen, &props, outProps, outPropsSize, 0, NULL, &g_Alloc, &g_Alloc); } MY_STDAPI LzmaUncompress(unsigned char *dest, size_t *destLen, const unsigned char *src, size_t *srcLen, const unsigned char *props, size_t propsSize) { ELzmaStatus status; return LzmaDecode(dest, destLen, src, srcLen, props, (unsigned)propsSize, LZMA_FINISH_ANY, &status, &g_Alloc); } flwrap-1.3.6/src/lzma/LzmaEnc.c0000644000175000017500000017716114304245211013175 00000000000000/* LzmaEnc.c -- LZMA Encoder 2009-02-02 : Igor Pavlov : Public domain */ #include /* #define SHOW_STAT */ /* #define SHOW_STAT2 */ #if defined(SHOW_STAT) || defined(SHOW_STAT2) #include #endif #include "LzmaEnc.h" #include "LzFind.h" #ifdef COMPRESS_MF_MT #include "LzFindMt.h" #endif #ifdef SHOW_STAT static int ttt = 0; #endif #define kBlockSizeMax ((1 << LZMA_NUM_BLOCK_SIZE_BITS) - 1) #define kBlockSize (9 << 10) #define kUnpackBlockSize (1 << 18) #define kMatchArraySize (1 << 21) #define kMatchRecordMaxSize ((LZMA_MATCH_LEN_MAX * 2 + 3) * LZMA_MATCH_LEN_MAX) #define kNumMaxDirectBits (31) #define kNumTopBits 24 #define kTopValue ((UInt32)1 << kNumTopBits) #define kNumBitModelTotalBits 11 #define kBitModelTotal (1 << kNumBitModelTotalBits) #define kNumMoveBits 5 #define kProbInitValue (kBitModelTotal >> 1) #define kNumMoveReducingBits 4 #define kNumBitPriceShiftBits 4 #define kBitPrice (1 << kNumBitPriceShiftBits) void LzmaEncProps_Init(CLzmaEncProps *p) { p->level = 5; p->dictSize = p->mc = 0; p->lc = p->lp = p->pb = p->algo = p->fb = p->btMode = p->numHashBytes = p->numThreads = -1; p->writeEndMark = 0; } void LzmaEncProps_Normalize(CLzmaEncProps *p) { int level = p->level; if (level < 0) level = 5; p->level = level; if (p->dictSize == 0) p->dictSize = (level <= 5 ? (1 << (level * 2 + 14)) : (level == 6 ? (1 << 25) : (1 << 26))); if (p->lc < 0) p->lc = 3; if (p->lp < 0) p->lp = 0; if (p->pb < 0) p->pb = 2; if (p->algo < 0) p->algo = (level < 5 ? 0 : 1); if (p->fb < 0) p->fb = (level < 7 ? 32 : 64); if (p->btMode < 0) p->btMode = (p->algo == 0 ? 0 : 1); if (p->numHashBytes < 0) p->numHashBytes = 4; if (p->mc == 0) p->mc = (16 + (p->fb >> 1)) >> (p->btMode ? 0 : 1); if (p->numThreads < 0) p->numThreads = #ifdef COMPRESS_MF_MT ((p->btMode && p->algo) ? 2 : 1); #else 1; #endif } UInt32 LzmaEncProps_GetDictSize(const CLzmaEncProps *props2) { CLzmaEncProps props = *props2; LzmaEncProps_Normalize(&props); return props.dictSize; } /* #define LZMA_LOG_BSR */ /* Define it for Intel's CPU */ #ifdef LZMA_LOG_BSR #define kDicLogSizeMaxCompress 30 #define BSR2_RET(pos, res) { unsigned long i; _BitScanReverse(&i, (pos)); res = (i + i) + ((pos >> (i - 1)) & 1); } UInt32 GetPosSlot1(UInt32 pos) { UInt32 res; BSR2_RET(pos, res); return res; } #define GetPosSlot2(pos, res) { BSR2_RET(pos, res); } #define GetPosSlot(pos, res) { if (pos < 2) res = pos; else BSR2_RET(pos, res); } #else #define kNumLogBits (9 + (int)sizeof(size_t) / 2) #define kDicLogSizeMaxCompress ((kNumLogBits - 1) * 2 + 7) void LzmaEnc_FastPosInit(Byte *g_FastPos) { int c = 2, slotFast; g_FastPos[0] = 0; g_FastPos[1] = 1; for (slotFast = 2; slotFast < kNumLogBits * 2; slotFast++) { UInt32 k = (1 << ((slotFast >> 1) - 1)); UInt32 j; for (j = 0; j < k; j++, c++) g_FastPos[c] = (Byte)slotFast; } } #define BSR2_RET(pos, res) { UInt32 i = 6 + ((kNumLogBits - 1) & \ (0 - (((((UInt32)1 << (kNumLogBits + 6)) - 1) - pos) >> 31))); \ res = p->g_FastPos[pos >> i] + (i * 2); } /* #define BSR2_RET(pos, res) { res = (pos < (1 << (kNumLogBits + 6))) ? \ p->g_FastPos[pos >> 6] + 12 : \ p->g_FastPos[pos >> (6 + kNumLogBits - 1)] + (6 + (kNumLogBits - 1)) * 2; } */ #define GetPosSlot1(pos) p->g_FastPos[pos] #define GetPosSlot2(pos, res) { BSR2_RET(pos, res); } #define GetPosSlot(pos, res) { if (pos < kNumFullDistances) res = p->g_FastPos[pos]; else BSR2_RET(pos, res); } #endif #define LZMA_NUM_REPS 4 typedef unsigned CState; typedef struct _COptimal { UInt32 price; CState state; int prev1IsChar; int prev2; UInt32 posPrev2; UInt32 backPrev2; UInt32 posPrev; UInt32 backPrev; UInt32 backs[LZMA_NUM_REPS]; } COptimal; #define kNumOpts (1 << 12) #define kNumLenToPosStates 4 #define kNumPosSlotBits 6 #define kDicLogSizeMin 0 #define kDicLogSizeMax 32 #define kDistTableSizeMax (kDicLogSizeMax * 2) #define kNumAlignBits 4 #define kAlignTableSize (1 << kNumAlignBits) #define kAlignMask (kAlignTableSize - 1) #define kStartPosModelIndex 4 #define kEndPosModelIndex 14 #define kNumPosModels (kEndPosModelIndex - kStartPosModelIndex) #define kNumFullDistances (1 << (kEndPosModelIndex / 2)) #ifdef _LZMA_PROB32 #define CLzmaProb UInt32 #else #define CLzmaProb UInt16 #endif #define LZMA_PB_MAX 4 #define LZMA_LC_MAX 8 #define LZMA_LP_MAX 4 #define LZMA_NUM_PB_STATES_MAX (1 << LZMA_PB_MAX) #define kLenNumLowBits 3 #define kLenNumLowSymbols (1 << kLenNumLowBits) #define kLenNumMidBits 3 #define kLenNumMidSymbols (1 << kLenNumMidBits) #define kLenNumHighBits 8 #define kLenNumHighSymbols (1 << kLenNumHighBits) #define kLenNumSymbolsTotal (kLenNumLowSymbols + kLenNumMidSymbols + kLenNumHighSymbols) #define LZMA_MATCH_LEN_MIN 2 #define LZMA_MATCH_LEN_MAX (LZMA_MATCH_LEN_MIN + kLenNumSymbolsTotal - 1) #define kNumStates 12 typedef struct { CLzmaProb choice; CLzmaProb choice2; CLzmaProb low[LZMA_NUM_PB_STATES_MAX << kLenNumLowBits]; CLzmaProb mid[LZMA_NUM_PB_STATES_MAX << kLenNumMidBits]; CLzmaProb high[kLenNumHighSymbols]; } CLenEnc; typedef struct { CLenEnc p; UInt32 prices[LZMA_NUM_PB_STATES_MAX][kLenNumSymbolsTotal]; UInt32 tableSize; UInt32 counters[LZMA_NUM_PB_STATES_MAX]; } CLenPriceEnc; typedef struct _CRangeEnc { UInt32 range; Byte cache; UInt64 low; UInt64 cacheSize; Byte *buf; Byte *bufLim; Byte *bufBase; ISeqOutStream *outStream; UInt64 processed; SRes res; } CRangeEnc; typedef struct _CSeqInStreamBuf { ISeqInStream funcTable; const Byte *data; SizeT rem; } CSeqInStreamBuf; static SRes MyRead(void *pp, void *data, size_t *size) { size_t curSize = *size; CSeqInStreamBuf *p = (CSeqInStreamBuf *)pp; if (p->rem < curSize) curSize = p->rem; memcpy(data, p->data, curSize); p->rem -= curSize; p->data += curSize; *size = curSize; return SZ_OK; } typedef struct { CLzmaProb *litProbs; CLzmaProb isMatch[kNumStates][LZMA_NUM_PB_STATES_MAX]; CLzmaProb isRep[kNumStates]; CLzmaProb isRepG0[kNumStates]; CLzmaProb isRepG1[kNumStates]; CLzmaProb isRepG2[kNumStates]; CLzmaProb isRep0Long[kNumStates][LZMA_NUM_PB_STATES_MAX]; CLzmaProb posSlotEncoder[kNumLenToPosStates][1 << kNumPosSlotBits]; CLzmaProb posEncoders[kNumFullDistances - kEndPosModelIndex]; CLzmaProb posAlignEncoder[1 << kNumAlignBits]; CLenPriceEnc lenEnc; CLenPriceEnc repLenEnc; UInt32 reps[LZMA_NUM_REPS]; UInt32 state; } CSaveState; typedef struct _CLzmaEnc { IMatchFinder matchFinder; void *matchFinderObj; #ifdef COMPRESS_MF_MT int mtMode; CMatchFinderMt matchFinderMt; #endif CMatchFinder matchFinderBase; #ifdef COMPRESS_MF_MT Byte pad[128]; #endif UInt32 optimumEndIndex; UInt32 optimumCurrentIndex; UInt32 longestMatchLength; UInt32 numPairs; UInt32 numAvail; COptimal opt[kNumOpts]; #ifndef LZMA_LOG_BSR Byte g_FastPos[1 << kNumLogBits]; #endif UInt32 ProbPrices[kBitModelTotal >> kNumMoveReducingBits]; UInt32 matches[LZMA_MATCH_LEN_MAX * 2 + 2 + 1]; UInt32 numFastBytes; UInt32 additionalOffset; UInt32 reps[LZMA_NUM_REPS]; UInt32 state; UInt32 posSlotPrices[kNumLenToPosStates][kDistTableSizeMax]; UInt32 distancesPrices[kNumLenToPosStates][kNumFullDistances]; UInt32 alignPrices[kAlignTableSize]; UInt32 alignPriceCount; UInt32 distTableSize; unsigned lc, lp, pb; unsigned lpMask, pbMask; CLzmaProb *litProbs; CLzmaProb isMatch[kNumStates][LZMA_NUM_PB_STATES_MAX]; CLzmaProb isRep[kNumStates]; CLzmaProb isRepG0[kNumStates]; CLzmaProb isRepG1[kNumStates]; CLzmaProb isRepG2[kNumStates]; CLzmaProb isRep0Long[kNumStates][LZMA_NUM_PB_STATES_MAX]; CLzmaProb posSlotEncoder[kNumLenToPosStates][1 << kNumPosSlotBits]; CLzmaProb posEncoders[kNumFullDistances - kEndPosModelIndex]; CLzmaProb posAlignEncoder[1 << kNumAlignBits]; CLenPriceEnc lenEnc; CLenPriceEnc repLenEnc; unsigned lclp; int fastMode; CRangeEnc rc; int writeEndMark; UInt64 nowPos64; UInt32 matchPriceCount; int finished; int multiThread; SRes result; UInt32 dictSize; UInt32 matchFinderCycles; ISeqInStream *inStream; CSeqInStreamBuf seqBufInStream; CSaveState saveState; } CLzmaEnc; void LzmaEnc_SaveState(CLzmaEncHandle pp) { CLzmaEnc *p = (CLzmaEnc *)pp; CSaveState *dest = &p->saveState; int i; dest->lenEnc = p->lenEnc; dest->repLenEnc = p->repLenEnc; dest->state = p->state; for (i = 0; i < kNumStates; i++) { memcpy(dest->isMatch[i], p->isMatch[i], sizeof(p->isMatch[i])); memcpy(dest->isRep0Long[i], p->isRep0Long[i], sizeof(p->isRep0Long[i])); } for (i = 0; i < kNumLenToPosStates; i++) memcpy(dest->posSlotEncoder[i], p->posSlotEncoder[i], sizeof(p->posSlotEncoder[i])); memcpy(dest->isRep, p->isRep, sizeof(p->isRep)); memcpy(dest->isRepG0, p->isRepG0, sizeof(p->isRepG0)); memcpy(dest->isRepG1, p->isRepG1, sizeof(p->isRepG1)); memcpy(dest->isRepG2, p->isRepG2, sizeof(p->isRepG2)); memcpy(dest->posEncoders, p->posEncoders, sizeof(p->posEncoders)); memcpy(dest->posAlignEncoder, p->posAlignEncoder, sizeof(p->posAlignEncoder)); memcpy(dest->reps, p->reps, sizeof(p->reps)); memcpy(dest->litProbs, p->litProbs, (0x300 << p->lclp) * sizeof(CLzmaProb)); } void LzmaEnc_RestoreState(CLzmaEncHandle pp) { CLzmaEnc *dest = (CLzmaEnc *)pp; const CSaveState *p = &dest->saveState; int i; dest->lenEnc = p->lenEnc; dest->repLenEnc = p->repLenEnc; dest->state = p->state; for (i = 0; i < kNumStates; i++) { memcpy(dest->isMatch[i], p->isMatch[i], sizeof(p->isMatch[i])); memcpy(dest->isRep0Long[i], p->isRep0Long[i], sizeof(p->isRep0Long[i])); } for (i = 0; i < kNumLenToPosStates; i++) memcpy(dest->posSlotEncoder[i], p->posSlotEncoder[i], sizeof(p->posSlotEncoder[i])); memcpy(dest->isRep, p->isRep, sizeof(p->isRep)); memcpy(dest->isRepG0, p->isRepG0, sizeof(p->isRepG0)); memcpy(dest->isRepG1, p->isRepG1, sizeof(p->isRepG1)); memcpy(dest->isRepG2, p->isRepG2, sizeof(p->isRepG2)); memcpy(dest->posEncoders, p->posEncoders, sizeof(p->posEncoders)); memcpy(dest->posAlignEncoder, p->posAlignEncoder, sizeof(p->posAlignEncoder)); memcpy(dest->reps, p->reps, sizeof(p->reps)); memcpy(dest->litProbs, p->litProbs, (0x300 << dest->lclp) * sizeof(CLzmaProb)); } SRes LzmaEnc_SetProps(CLzmaEncHandle pp, const CLzmaEncProps *props2) { CLzmaEnc *p = (CLzmaEnc *)pp; CLzmaEncProps props = *props2; LzmaEncProps_Normalize(&props); if (props.lc > LZMA_LC_MAX || props.lp > LZMA_LP_MAX || props.pb > LZMA_PB_MAX || props.dictSize > (1 << kDicLogSizeMaxCompress) || props.dictSize > (1 << 30)) return SZ_ERROR_PARAM; p->dictSize = props.dictSize; p->matchFinderCycles = props.mc; { unsigned fb = props.fb; if (fb < 5) fb = 5; if (fb > LZMA_MATCH_LEN_MAX) fb = LZMA_MATCH_LEN_MAX; p->numFastBytes = fb; } p->lc = props.lc; p->lp = props.lp; p->pb = props.pb; p->fastMode = (props.algo == 0); p->matchFinderBase.btMode = props.btMode; { UInt32 numHashBytes = 4; if (props.btMode) { if (props.numHashBytes < 2) numHashBytes = 2; else if (props.numHashBytes < 4) numHashBytes = props.numHashBytes; } p->matchFinderBase.numHashBytes = numHashBytes; } p->matchFinderBase.cutValue = props.mc; p->writeEndMark = props.writeEndMark; #ifdef COMPRESS_MF_MT /* if (newMultiThread != _multiThread) { ReleaseMatchFinder(); _multiThread = newMultiThread; } */ p->multiThread = (props.numThreads > 1); #endif return SZ_OK; } static const int kLiteralNextStates[kNumStates] = {0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 4, 5}; static const int kMatchNextStates[kNumStates] = {7, 7, 7, 7, 7, 7, 7, 10, 10, 10, 10, 10}; static const int kRepNextStates[kNumStates] = {8, 8, 8, 8, 8, 8, 8, 11, 11, 11, 11, 11}; static const int kShortRepNextStates[kNumStates]= {9, 9, 9, 9, 9, 9, 9, 11, 11, 11, 11, 11}; #define IsCharState(s) ((s) < 7) #define GetLenToPosState(len) (((len) < kNumLenToPosStates + 1) ? (len) - 2 : kNumLenToPosStates - 1) #define kInfinityPrice (1 << 30) static void RangeEnc_Construct(CRangeEnc *p) { p->outStream = 0; p->bufBase = 0; } #define RangeEnc_GetProcessed(p) ((p)->processed + ((p)->buf - (p)->bufBase) + (p)->cacheSize) #define RC_BUF_SIZE (1 << 16) static int RangeEnc_Alloc(CRangeEnc *p, ISzAlloc *alloc) { if (p->bufBase == 0) { p->bufBase = (Byte *)alloc->Alloc(alloc, RC_BUF_SIZE); if (p->bufBase == 0) return 0; p->bufLim = p->bufBase + RC_BUF_SIZE; } return 1; } static void RangeEnc_Free(CRangeEnc *p, ISzAlloc *alloc) { alloc->Free(alloc, p->bufBase); p->bufBase = 0; } static void RangeEnc_Init(CRangeEnc *p) { /* Stream.Init(); */ p->low = 0; p->range = 0xFFFFFFFF; p->cacheSize = 1; p->cache = 0; p->buf = p->bufBase; p->processed = 0; p->res = SZ_OK; } static void RangeEnc_FlushStream(CRangeEnc *p) { size_t num; if (p->res != SZ_OK) return; num = p->buf - p->bufBase; if (num != p->outStream->Write(p->outStream, p->bufBase, num)) p->res = SZ_ERROR_WRITE; p->processed += num; p->buf = p->bufBase; } static void MY_FAST_CALL RangeEnc_ShiftLow(CRangeEnc *p) { if ((UInt32)p->low < (UInt32)0xFF000000 || (int)(p->low >> 32) != 0) { Byte temp = p->cache; do { Byte *buf = p->buf; *buf++ = (Byte)(temp + (Byte)(p->low >> 32)); p->buf = buf; if (buf == p->bufLim) RangeEnc_FlushStream(p); temp = 0xFF; } while (--p->cacheSize != 0); p->cache = (Byte)((UInt32)p->low >> 24); } p->cacheSize++; p->low = (UInt32)p->low << 8; } static void RangeEnc_FlushData(CRangeEnc *p) { int i; for (i = 0; i < 5; i++) RangeEnc_ShiftLow(p); } static void RangeEnc_EncodeDirectBits(CRangeEnc *p, UInt32 value, int numBits) { do { p->range >>= 1; p->low += p->range & (0 - ((value >> --numBits) & 1)); if (p->range < kTopValue) { p->range <<= 8; RangeEnc_ShiftLow(p); } } while (numBits != 0); } static void RangeEnc_EncodeBit(CRangeEnc *p, CLzmaProb *prob, UInt32 symbol) { UInt32 ttt = *prob; UInt32 newBound = (p->range >> kNumBitModelTotalBits) * ttt; if (symbol == 0) { p->range = newBound; ttt += (kBitModelTotal - ttt) >> kNumMoveBits; } else { p->low += newBound; p->range -= newBound; ttt -= ttt >> kNumMoveBits; } *prob = (CLzmaProb)ttt; if (p->range < kTopValue) { p->range <<= 8; RangeEnc_ShiftLow(p); } } static void LitEnc_Encode(CRangeEnc *p, CLzmaProb *probs, UInt32 symbol) { symbol |= 0x100; do { RangeEnc_EncodeBit(p, probs + (symbol >> 8), (symbol >> 7) & 1); symbol <<= 1; } while (symbol < 0x10000); } static void LitEnc_EncodeMatched(CRangeEnc *p, CLzmaProb *probs, UInt32 symbol, UInt32 matchByte) { UInt32 offs = 0x100; symbol |= 0x100; do { matchByte <<= 1; RangeEnc_EncodeBit(p, probs + (offs + (matchByte & offs) + (symbol >> 8)), (symbol >> 7) & 1); symbol <<= 1; offs &= ~(matchByte ^ symbol); } while (symbol < 0x10000); } void LzmaEnc_InitPriceTables(UInt32 *ProbPrices) { UInt32 i; for (i = (1 << kNumMoveReducingBits) / 2; i < kBitModelTotal; i += (1 << kNumMoveReducingBits)) { const int kCyclesBits = kNumBitPriceShiftBits; UInt32 w = i; UInt32 bitCount = 0; int j; for (j = 0; j < kCyclesBits; j++) { w = w * w; bitCount <<= 1; while (w >= ((UInt32)1 << 16)) { w >>= 1; bitCount++; } } ProbPrices[i >> kNumMoveReducingBits] = ((kNumBitModelTotalBits << kCyclesBits) - 15 - bitCount); } } #define GET_PRICE(prob, symbol) \ p->ProbPrices[((prob) ^ (((-(int)(symbol))) & (kBitModelTotal - 1))) >> kNumMoveReducingBits]; #define GET_PRICEa(prob, symbol) \ ProbPrices[((prob) ^ ((-((int)(symbol))) & (kBitModelTotal - 1))) >> kNumMoveReducingBits]; #define GET_PRICE_0(prob) p->ProbPrices[(prob) >> kNumMoveReducingBits] #define GET_PRICE_1(prob) p->ProbPrices[((prob) ^ (kBitModelTotal - 1)) >> kNumMoveReducingBits] #define GET_PRICE_0a(prob) ProbPrices[(prob) >> kNumMoveReducingBits] #define GET_PRICE_1a(prob) ProbPrices[((prob) ^ (kBitModelTotal - 1)) >> kNumMoveReducingBits] static UInt32 LitEnc_GetPrice(const CLzmaProb *probs, UInt32 symbol, UInt32 *ProbPrices) { UInt32 price = 0; symbol |= 0x100; do { price += GET_PRICEa(probs[symbol >> 8], (symbol >> 7) & 1); symbol <<= 1; } while (symbol < 0x10000); return price; } static UInt32 LitEnc_GetPriceMatched(const CLzmaProb *probs, UInt32 symbol, UInt32 matchByte, UInt32 *ProbPrices) { UInt32 price = 0; UInt32 offs = 0x100; symbol |= 0x100; do { matchByte <<= 1; price += GET_PRICEa(probs[offs + (matchByte & offs) + (symbol >> 8)], (symbol >> 7) & 1); symbol <<= 1; offs &= ~(matchByte ^ symbol); } while (symbol < 0x10000); return price; } static void RcTree_Encode(CRangeEnc *rc, CLzmaProb *probs, int numBitLevels, UInt32 symbol) { UInt32 m = 1; int i; for (i = numBitLevels; i != 0;) { UInt32 bit; i--; bit = (symbol >> i) & 1; RangeEnc_EncodeBit(rc, probs + m, bit); m = (m << 1) | bit; } } static void RcTree_ReverseEncode(CRangeEnc *rc, CLzmaProb *probs, int numBitLevels, UInt32 symbol) { UInt32 m = 1; int i; for (i = 0; i < numBitLevels; i++) { UInt32 bit = symbol & 1; RangeEnc_EncodeBit(rc, probs + m, bit); m = (m << 1) | bit; symbol >>= 1; } } static UInt32 RcTree_GetPrice(const CLzmaProb *probs, int numBitLevels, UInt32 symbol, UInt32 *ProbPrices) { UInt32 price = 0; symbol |= (1 << numBitLevels); while (symbol != 1) { price += GET_PRICEa(probs[symbol >> 1], symbol & 1); symbol >>= 1; } return price; } static UInt32 RcTree_ReverseGetPrice(const CLzmaProb *probs, int numBitLevels, UInt32 symbol, UInt32 *ProbPrices) { UInt32 price = 0; UInt32 m = 1; int i; for (i = numBitLevels; i != 0; i--) { UInt32 bit = symbol & 1; symbol >>= 1; price += GET_PRICEa(probs[m], bit); m = (m << 1) | bit; } return price; } static void LenEnc_Init(CLenEnc *p) { unsigned i; p->choice = p->choice2 = kProbInitValue; for (i = 0; i < (LZMA_NUM_PB_STATES_MAX << kLenNumLowBits); i++) p->low[i] = kProbInitValue; for (i = 0; i < (LZMA_NUM_PB_STATES_MAX << kLenNumMidBits); i++) p->mid[i] = kProbInitValue; for (i = 0; i < kLenNumHighSymbols; i++) p->high[i] = kProbInitValue; } static void LenEnc_Encode(CLenEnc *p, CRangeEnc *rc, UInt32 symbol, UInt32 posState) { if (symbol < kLenNumLowSymbols) { RangeEnc_EncodeBit(rc, &p->choice, 0); RcTree_Encode(rc, p->low + (posState << kLenNumLowBits), kLenNumLowBits, symbol); } else { RangeEnc_EncodeBit(rc, &p->choice, 1); if (symbol < kLenNumLowSymbols + kLenNumMidSymbols) { RangeEnc_EncodeBit(rc, &p->choice2, 0); RcTree_Encode(rc, p->mid + (posState << kLenNumMidBits), kLenNumMidBits, symbol - kLenNumLowSymbols); } else { RangeEnc_EncodeBit(rc, &p->choice2, 1); RcTree_Encode(rc, p->high, kLenNumHighBits, symbol - kLenNumLowSymbols - kLenNumMidSymbols); } } } static void LenEnc_SetPrices(CLenEnc *p, UInt32 posState, UInt32 numSymbols, UInt32 *prices, UInt32 *ProbPrices) { UInt32 a0 = GET_PRICE_0a(p->choice); UInt32 a1 = GET_PRICE_1a(p->choice); UInt32 b0 = a1 + GET_PRICE_0a(p->choice2); UInt32 b1 = a1 + GET_PRICE_1a(p->choice2); UInt32 i = 0; for (i = 0; i < kLenNumLowSymbols; i++) { if (i >= numSymbols) return; prices[i] = a0 + RcTree_GetPrice(p->low + (posState << kLenNumLowBits), kLenNumLowBits, i, ProbPrices); } for (; i < kLenNumLowSymbols + kLenNumMidSymbols; i++) { if (i >= numSymbols) return; prices[i] = b0 + RcTree_GetPrice(p->mid + (posState << kLenNumMidBits), kLenNumMidBits, i - kLenNumLowSymbols, ProbPrices); } for (; i < numSymbols; i++) prices[i] = b1 + RcTree_GetPrice(p->high, kLenNumHighBits, i - kLenNumLowSymbols - kLenNumMidSymbols, ProbPrices); } static void MY_FAST_CALL LenPriceEnc_UpdateTable(CLenPriceEnc *p, UInt32 posState, UInt32 *ProbPrices) { LenEnc_SetPrices(&p->p, posState, p->tableSize, p->prices[posState], ProbPrices); p->counters[posState] = p->tableSize; } static void LenPriceEnc_UpdateTables(CLenPriceEnc *p, UInt32 numPosStates, UInt32 *ProbPrices) { UInt32 posState; for (posState = 0; posState < numPosStates; posState++) LenPriceEnc_UpdateTable(p, posState, ProbPrices); } static void LenEnc_Encode2(CLenPriceEnc *p, CRangeEnc *rc, UInt32 symbol, UInt32 posState, int updatePrice, UInt32 *ProbPrices) { LenEnc_Encode(&p->p, rc, symbol, posState); if (updatePrice) if (--p->counters[posState] == 0) LenPriceEnc_UpdateTable(p, posState, ProbPrices); } static void MovePos(CLzmaEnc *p, UInt32 num) { #ifdef SHOW_STAT ttt += num; printf("\n MovePos %d", num); #endif if (num != 0) { p->additionalOffset += num; p->matchFinder.Skip(p->matchFinderObj, num); } } static UInt32 ReadMatchDistances(CLzmaEnc *p, UInt32 *numDistancePairsRes) { UInt32 lenRes = 0, numPairs; p->numAvail = p->matchFinder.GetNumAvailableBytes(p->matchFinderObj); numPairs = p->matchFinder.GetMatches(p->matchFinderObj, p->matches); #ifdef SHOW_STAT printf("\n i = %d numPairs = %d ", ttt, numPairs / 2); ttt++; { UInt32 i; for (i = 0; i < numPairs; i += 2) printf("%2d %6d | ", p->matches[i], p->matches[i + 1]); } #endif if (numPairs > 0) { lenRes = p->matches[numPairs - 2]; if (lenRes == p->numFastBytes) { const Byte *pby = p->matchFinder.GetPointerToCurrentPos(p->matchFinderObj) - 1; UInt32 distance = p->matches[numPairs - 1] + 1; UInt32 numAvail = p->numAvail; if (numAvail > LZMA_MATCH_LEN_MAX) numAvail = LZMA_MATCH_LEN_MAX; { const Byte *pby2 = pby - distance; for (; lenRes < numAvail && pby[lenRes] == pby2[lenRes]; lenRes++); } } } p->additionalOffset++; *numDistancePairsRes = numPairs; return lenRes; } #define MakeAsChar(p) (p)->backPrev = (UInt32)(-1); (p)->prev1IsChar = False; #define MakeAsShortRep(p) (p)->backPrev = 0; (p)->prev1IsChar = False; #define IsShortRep(p) ((p)->backPrev == 0) static UInt32 GetRepLen1Price(CLzmaEnc *p, UInt32 state, UInt32 posState) { return GET_PRICE_0(p->isRepG0[state]) + GET_PRICE_0(p->isRep0Long[state][posState]); } static UInt32 GetPureRepPrice(CLzmaEnc *p, UInt32 repIndex, UInt32 state, UInt32 posState) { UInt32 price; if (repIndex == 0) { price = GET_PRICE_0(p->isRepG0[state]); price += GET_PRICE_1(p->isRep0Long[state][posState]); } else { price = GET_PRICE_1(p->isRepG0[state]); if (repIndex == 1) price += GET_PRICE_0(p->isRepG1[state]); else { price += GET_PRICE_1(p->isRepG1[state]); price += GET_PRICE(p->isRepG2[state], repIndex - 2); } } return price; } static UInt32 GetRepPrice(CLzmaEnc *p, UInt32 repIndex, UInt32 len, UInt32 state, UInt32 posState) { return p->repLenEnc.prices[posState][len - LZMA_MATCH_LEN_MIN] + GetPureRepPrice(p, repIndex, state, posState); } static UInt32 Backward(CLzmaEnc *p, UInt32 *backRes, UInt32 cur) { UInt32 posMem = p->opt[cur].posPrev; UInt32 backMem = p->opt[cur].backPrev; p->optimumEndIndex = cur; do { if (p->opt[cur].prev1IsChar) { MakeAsChar(&p->opt[posMem]) p->opt[posMem].posPrev = posMem - 1; if (p->opt[cur].prev2) { p->opt[posMem - 1].prev1IsChar = False; p->opt[posMem - 1].posPrev = p->opt[cur].posPrev2; p->opt[posMem - 1].backPrev = p->opt[cur].backPrev2; } } { UInt32 posPrev = posMem; UInt32 backCur = backMem; backMem = p->opt[posPrev].backPrev; posMem = p->opt[posPrev].posPrev; p->opt[posPrev].backPrev = backCur; p->opt[posPrev].posPrev = cur; cur = posPrev; } } while (cur != 0); *backRes = p->opt[0].backPrev; p->optimumCurrentIndex = p->opt[0].posPrev; return p->optimumCurrentIndex; } #define LIT_PROBS(pos, prevByte) (p->litProbs + ((((pos) & p->lpMask) << p->lc) + ((prevByte) >> (8 - p->lc))) * 0x300) static UInt32 GetOptimum(CLzmaEnc *p, UInt32 position, UInt32 *backRes) { UInt32 numAvail, mainLen, numPairs, repMaxIndex, i, posState, lenEnd, len, cur; UInt32 matchPrice, repMatchPrice, normalMatchPrice; UInt32 reps[LZMA_NUM_REPS], repLens[LZMA_NUM_REPS]; UInt32 *matches; const Byte *data; Byte curByte, matchByte; if (p->optimumEndIndex != p->optimumCurrentIndex) { const COptimal *opt = &p->opt[p->optimumCurrentIndex]; UInt32 lenRes = opt->posPrev - p->optimumCurrentIndex; *backRes = opt->backPrev; p->optimumCurrentIndex = opt->posPrev; return lenRes; } p->optimumCurrentIndex = p->optimumEndIndex = 0; if (p->additionalOffset == 0) mainLen = ReadMatchDistances(p, &numPairs); else { mainLen = p->longestMatchLength; numPairs = p->numPairs; } numAvail = p->numAvail; if (numAvail < 2) { *backRes = (UInt32)(-1); return 1; } if (numAvail > LZMA_MATCH_LEN_MAX) numAvail = LZMA_MATCH_LEN_MAX; data = p->matchFinder.GetPointerToCurrentPos(p->matchFinderObj) - 1; repMaxIndex = 0; for (i = 0; i < LZMA_NUM_REPS; i++) { UInt32 lenTest; const Byte *data2; reps[i] = p->reps[i]; data2 = data - (reps[i] + 1); if (data[0] != data2[0] || data[1] != data2[1]) { repLens[i] = 0; continue; } for (lenTest = 2; lenTest < numAvail && data[lenTest] == data2[lenTest]; lenTest++); repLens[i] = lenTest; if (lenTest > repLens[repMaxIndex]) repMaxIndex = i; } if (repLens[repMaxIndex] >= p->numFastBytes) { UInt32 lenRes; *backRes = repMaxIndex; lenRes = repLens[repMaxIndex]; MovePos(p, lenRes - 1); return lenRes; } matches = p->matches; if (mainLen >= p->numFastBytes) { *backRes = matches[numPairs - 1] + LZMA_NUM_REPS; MovePos(p, mainLen - 1); return mainLen; } curByte = *data; matchByte = *(data - (reps[0] + 1)); if (mainLen < 2 && curByte != matchByte && repLens[repMaxIndex] < 2) { *backRes = (UInt32)-1; return 1; } p->opt[0].state = (CState)p->state; posState = (position & p->pbMask); { const CLzmaProb *probs = LIT_PROBS(position, *(data - 1)); p->opt[1].price = GET_PRICE_0(p->isMatch[p->state][posState]) + (!IsCharState(p->state) ? LitEnc_GetPriceMatched(probs, curByte, matchByte, p->ProbPrices) : LitEnc_GetPrice(probs, curByte, p->ProbPrices)); } MakeAsChar(&p->opt[1]); matchPrice = GET_PRICE_1(p->isMatch[p->state][posState]); repMatchPrice = matchPrice + GET_PRICE_1(p->isRep[p->state]); if (matchByte == curByte) { UInt32 shortRepPrice = repMatchPrice + GetRepLen1Price(p, p->state, posState); if (shortRepPrice < p->opt[1].price) { p->opt[1].price = shortRepPrice; MakeAsShortRep(&p->opt[1]); } } lenEnd = ((mainLen >= repLens[repMaxIndex]) ? mainLen : repLens[repMaxIndex]); if (lenEnd < 2) { *backRes = p->opt[1].backPrev; return 1; } p->opt[1].posPrev = 0; for (i = 0; i < LZMA_NUM_REPS; i++) p->opt[0].backs[i] = reps[i]; len = lenEnd; do p->opt[len--].price = kInfinityPrice; while (len >= 2); for (i = 0; i < LZMA_NUM_REPS; i++) { UInt32 repLen = repLens[i]; UInt32 price; if (repLen < 2) continue; price = repMatchPrice + GetPureRepPrice(p, i, p->state, posState); do { UInt32 curAndLenPrice = price + p->repLenEnc.prices[posState][repLen - 2]; COptimal *opt = &p->opt[repLen]; if (curAndLenPrice < opt->price) { opt->price = curAndLenPrice; opt->posPrev = 0; opt->backPrev = i; opt->prev1IsChar = False; } } while (--repLen >= 2); } normalMatchPrice = matchPrice + GET_PRICE_0(p->isRep[p->state]); len = ((repLens[0] >= 2) ? repLens[0] + 1 : 2); if (len <= mainLen) { UInt32 offs = 0; while (len > matches[offs]) offs += 2; for (; ; len++) { COptimal *opt; UInt32 distance = matches[offs + 1]; UInt32 curAndLenPrice = normalMatchPrice + p->lenEnc.prices[posState][len - LZMA_MATCH_LEN_MIN]; UInt32 lenToPosState = GetLenToPosState(len); if (distance < kNumFullDistances) curAndLenPrice += p->distancesPrices[lenToPosState][distance]; else { UInt32 slot; GetPosSlot2(distance, slot); curAndLenPrice += p->alignPrices[distance & kAlignMask] + p->posSlotPrices[lenToPosState][slot]; } opt = &p->opt[len]; if (curAndLenPrice < opt->price) { opt->price = curAndLenPrice; opt->posPrev = 0; opt->backPrev = distance + LZMA_NUM_REPS; opt->prev1IsChar = False; } if (len == matches[offs]) { offs += 2; if (offs == numPairs) break; } } } cur = 0; #ifdef SHOW_STAT2 if (position >= 0) { unsigned i; printf("\n pos = %4X", position); for (i = cur; i <= lenEnd; i++) printf("\nprice[%4X] = %d", position - cur + i, p->opt[i].price); } #endif for (;;) { UInt32 numAvailFull, newLen, numPairs, posPrev, state, posState, startLen; UInt32 curPrice, curAnd1Price, matchPrice, repMatchPrice; int nextIsChar; Byte curByte, matchByte; const Byte *data; COptimal *curOpt; COptimal *nextOpt; cur++; if (cur == lenEnd) return Backward(p, backRes, cur); newLen = ReadMatchDistances(p, &numPairs); if (newLen >= p->numFastBytes) { p->numPairs = numPairs; p->longestMatchLength = newLen; return Backward(p, backRes, cur); } position++; curOpt = &p->opt[cur]; posPrev = curOpt->posPrev; if (curOpt->prev1IsChar) { posPrev--; if (curOpt->prev2) { state = p->opt[curOpt->posPrev2].state; if (curOpt->backPrev2 < LZMA_NUM_REPS) state = kRepNextStates[state]; else state = kMatchNextStates[state]; } else state = p->opt[posPrev].state; state = kLiteralNextStates[state]; } else state = p->opt[posPrev].state; if (posPrev == cur - 1) { if (IsShortRep(curOpt)) state = kShortRepNextStates[state]; else state = kLiteralNextStates[state]; } else { UInt32 pos; const COptimal *prevOpt; if (curOpt->prev1IsChar && curOpt->prev2) { posPrev = curOpt->posPrev2; pos = curOpt->backPrev2; state = kRepNextStates[state]; } else { pos = curOpt->backPrev; if (pos < LZMA_NUM_REPS) state = kRepNextStates[state]; else state = kMatchNextStates[state]; } prevOpt = &p->opt[posPrev]; if (pos < LZMA_NUM_REPS) { UInt32 i; reps[0] = prevOpt->backs[pos]; for (i = 1; i <= pos; i++) reps[i] = prevOpt->backs[i - 1]; for (; i < LZMA_NUM_REPS; i++) reps[i] = prevOpt->backs[i]; } else { UInt32 i; reps[0] = (pos - LZMA_NUM_REPS); for (i = 1; i < LZMA_NUM_REPS; i++) reps[i] = prevOpt->backs[i - 1]; } } curOpt->state = (CState)state; curOpt->backs[0] = reps[0]; curOpt->backs[1] = reps[1]; curOpt->backs[2] = reps[2]; curOpt->backs[3] = reps[3]; curPrice = curOpt->price; nextIsChar = False; data = p->matchFinder.GetPointerToCurrentPos(p->matchFinderObj) - 1; curByte = *data; matchByte = *(data - (reps[0] + 1)); posState = (position & p->pbMask); curAnd1Price = curPrice + GET_PRICE_0(p->isMatch[state][posState]); { const CLzmaProb *probs = LIT_PROBS(position, *(data - 1)); curAnd1Price += (!IsCharState(state) ? LitEnc_GetPriceMatched(probs, curByte, matchByte, p->ProbPrices) : LitEnc_GetPrice(probs, curByte, p->ProbPrices)); } nextOpt = &p->opt[cur + 1]; if (curAnd1Price < nextOpt->price) { nextOpt->price = curAnd1Price; nextOpt->posPrev = cur; MakeAsChar(nextOpt); nextIsChar = True; } matchPrice = curPrice + GET_PRICE_1(p->isMatch[state][posState]); repMatchPrice = matchPrice + GET_PRICE_1(p->isRep[state]); if (matchByte == curByte && !(nextOpt->posPrev < cur && nextOpt->backPrev == 0)) { UInt32 shortRepPrice = repMatchPrice + GetRepLen1Price(p, state, posState); if (shortRepPrice <= nextOpt->price) { nextOpt->price = shortRepPrice; nextOpt->posPrev = cur; MakeAsShortRep(nextOpt); nextIsChar = True; } } numAvailFull = p->numAvail; { UInt32 temp = kNumOpts - 1 - cur; if (temp < numAvailFull) numAvailFull = temp; } if (numAvailFull < 2) continue; numAvail = (numAvailFull <= p->numFastBytes ? numAvailFull : p->numFastBytes); if (!nextIsChar && matchByte != curByte) /* speed optimization */ { /* try Literal + rep0 */ UInt32 temp; UInt32 lenTest2; const Byte *data2 = data - (reps[0] + 1); UInt32 limit = p->numFastBytes + 1; if (limit > numAvailFull) limit = numAvailFull; for (temp = 1; temp < limit && data[temp] == data2[temp]; temp++); lenTest2 = temp - 1; if (lenTest2 >= 2) { UInt32 state2 = kLiteralNextStates[state]; UInt32 posStateNext = (position + 1) & p->pbMask; UInt32 nextRepMatchPrice = curAnd1Price + GET_PRICE_1(p->isMatch[state2][posStateNext]) + GET_PRICE_1(p->isRep[state2]); /* for (; lenTest2 >= 2; lenTest2--) */ { UInt32 curAndLenPrice; COptimal *opt; UInt32 offset = cur + 1 + lenTest2; while (lenEnd < offset) p->opt[++lenEnd].price = kInfinityPrice; curAndLenPrice = nextRepMatchPrice + GetRepPrice(p, 0, lenTest2, state2, posStateNext); opt = &p->opt[offset]; if (curAndLenPrice < opt->price) { opt->price = curAndLenPrice; opt->posPrev = cur + 1; opt->backPrev = 0; opt->prev1IsChar = True; opt->prev2 = False; } } } } startLen = 2; /* speed optimization */ { UInt32 repIndex; for (repIndex = 0; repIndex < LZMA_NUM_REPS; repIndex++) { UInt32 lenTest; UInt32 lenTestTemp; UInt32 price; const Byte *data2 = data - (reps[repIndex] + 1); if (data[0] != data2[0] || data[1] != data2[1]) continue; for (lenTest = 2; lenTest < numAvail && data[lenTest] == data2[lenTest]; lenTest++); while (lenEnd < cur + lenTest) p->opt[++lenEnd].price = kInfinityPrice; lenTestTemp = lenTest; price = repMatchPrice + GetPureRepPrice(p, repIndex, state, posState); do { UInt32 curAndLenPrice = price + p->repLenEnc.prices[posState][lenTest - 2]; COptimal *opt = &p->opt[cur + lenTest]; if (curAndLenPrice < opt->price) { opt->price = curAndLenPrice; opt->posPrev = cur; opt->backPrev = repIndex; opt->prev1IsChar = False; } } while (--lenTest >= 2); lenTest = lenTestTemp; if (repIndex == 0) startLen = lenTest + 1; /* if (_maxMode) */ { UInt32 lenTest2 = lenTest + 1; UInt32 limit = lenTest2 + p->numFastBytes; UInt32 nextRepMatchPrice; if (limit > numAvailFull) limit = numAvailFull; for (; lenTest2 < limit && data[lenTest2] == data2[lenTest2]; lenTest2++); lenTest2 -= lenTest + 1; if (lenTest2 >= 2) { UInt32 state2 = kRepNextStates[state]; UInt32 posStateNext = (position + lenTest) & p->pbMask; UInt32 curAndLenCharPrice = price + p->repLenEnc.prices[posState][lenTest - 2] + GET_PRICE_0(p->isMatch[state2][posStateNext]) + LitEnc_GetPriceMatched(LIT_PROBS(position + lenTest, data[lenTest - 1]), data[lenTest], data2[lenTest], p->ProbPrices); state2 = kLiteralNextStates[state2]; posStateNext = (position + lenTest + 1) & p->pbMask; nextRepMatchPrice = curAndLenCharPrice + GET_PRICE_1(p->isMatch[state2][posStateNext]) + GET_PRICE_1(p->isRep[state2]); /* for (; lenTest2 >= 2; lenTest2--) */ { UInt32 curAndLenPrice; COptimal *opt; UInt32 offset = cur + lenTest + 1 + lenTest2; while (lenEnd < offset) p->opt[++lenEnd].price = kInfinityPrice; curAndLenPrice = nextRepMatchPrice + GetRepPrice(p, 0, lenTest2, state2, posStateNext); opt = &p->opt[offset]; if (curAndLenPrice < opt->price) { opt->price = curAndLenPrice; opt->posPrev = cur + lenTest + 1; opt->backPrev = 0; opt->prev1IsChar = True; opt->prev2 = True; opt->posPrev2 = cur; opt->backPrev2 = repIndex; } } } } } } /* for (UInt32 lenTest = 2; lenTest <= newLen; lenTest++) */ if (newLen > numAvail) { newLen = numAvail; for (numPairs = 0; newLen > matches[numPairs]; numPairs += 2); matches[numPairs] = newLen; numPairs += 2; } if (newLen >= startLen) { UInt32 normalMatchPrice = matchPrice + GET_PRICE_0(p->isRep[state]); UInt32 offs, curBack, posSlot; UInt32 lenTest; while (lenEnd < cur + newLen) p->opt[++lenEnd].price = kInfinityPrice; offs = 0; while (startLen > matches[offs]) offs += 2; curBack = matches[offs + 1]; GetPosSlot2(curBack, posSlot); for (lenTest = /*2*/ startLen; ; lenTest++) { UInt32 curAndLenPrice = normalMatchPrice + p->lenEnc.prices[posState][lenTest - LZMA_MATCH_LEN_MIN]; UInt32 lenToPosState = GetLenToPosState(lenTest); COptimal *opt; if (curBack < kNumFullDistances) curAndLenPrice += p->distancesPrices[lenToPosState][curBack]; else curAndLenPrice += p->posSlotPrices[lenToPosState][posSlot] + p->alignPrices[curBack & kAlignMask]; opt = &p->opt[cur + lenTest]; if (curAndLenPrice < opt->price) { opt->price = curAndLenPrice; opt->posPrev = cur; opt->backPrev = curBack + LZMA_NUM_REPS; opt->prev1IsChar = False; } if (/*_maxMode && */lenTest == matches[offs]) { /* Try Match + Literal + Rep0 */ const Byte *data2 = data - (curBack + 1); UInt32 lenTest2 = lenTest + 1; UInt32 limit = lenTest2 + p->numFastBytes; UInt32 nextRepMatchPrice; if (limit > numAvailFull) limit = numAvailFull; for (; lenTest2 < limit && data[lenTest2] == data2[lenTest2]; lenTest2++); lenTest2 -= lenTest + 1; if (lenTest2 >= 2) { UInt32 state2 = kMatchNextStates[state]; UInt32 posStateNext = (position + lenTest) & p->pbMask; UInt32 curAndLenCharPrice = curAndLenPrice + GET_PRICE_0(p->isMatch[state2][posStateNext]) + LitEnc_GetPriceMatched(LIT_PROBS(position + lenTest, data[lenTest - 1]), data[lenTest], data2[lenTest], p->ProbPrices); state2 = kLiteralNextStates[state2]; posStateNext = (posStateNext + 1) & p->pbMask; nextRepMatchPrice = curAndLenCharPrice + GET_PRICE_1(p->isMatch[state2][posStateNext]) + GET_PRICE_1(p->isRep[state2]); /* for (; lenTest2 >= 2; lenTest2--) */ { UInt32 offset = cur + lenTest + 1 + lenTest2; UInt32 curAndLenPrice; COptimal *opt; while (lenEnd < offset) p->opt[++lenEnd].price = kInfinityPrice; curAndLenPrice = nextRepMatchPrice + GetRepPrice(p, 0, lenTest2, state2, posStateNext); opt = &p->opt[offset]; if (curAndLenPrice < opt->price) { opt->price = curAndLenPrice; opt->posPrev = cur + lenTest + 1; opt->backPrev = 0; opt->prev1IsChar = True; opt->prev2 = True; opt->posPrev2 = cur; opt->backPrev2 = curBack + LZMA_NUM_REPS; } } } offs += 2; if (offs == numPairs) break; curBack = matches[offs + 1]; if (curBack >= kNumFullDistances) GetPosSlot2(curBack, posSlot); } } } } } #define ChangePair(smallDist, bigDist) (((bigDist) >> 7) > (smallDist)) static UInt32 GetOptimumFast(CLzmaEnc *p, UInt32 *backRes) { UInt32 numAvail, mainLen, mainDist, numPairs, repIndex, repLen, i; const Byte *data; const UInt32 *matches; if (p->additionalOffset == 0) mainLen = ReadMatchDistances(p, &numPairs); else { mainLen = p->longestMatchLength; numPairs = p->numPairs; } numAvail = p->numAvail; *backRes = (UInt32)-1; if (numAvail < 2) return 1; if (numAvail > LZMA_MATCH_LEN_MAX) numAvail = LZMA_MATCH_LEN_MAX; data = p->matchFinder.GetPointerToCurrentPos(p->matchFinderObj) - 1; repLen = repIndex = 0; for (i = 0; i < LZMA_NUM_REPS; i++) { UInt32 len; const Byte *data2 = data - (p->reps[i] + 1); if (data[0] != data2[0] || data[1] != data2[1]) continue; for (len = 2; len < numAvail && data[len] == data2[len]; len++); if (len >= p->numFastBytes) { *backRes = i; MovePos(p, len - 1); return len; } if (len > repLen) { repIndex = i; repLen = len; } } matches = p->matches; if (mainLen >= p->numFastBytes) { *backRes = matches[numPairs - 1] + LZMA_NUM_REPS; MovePos(p, mainLen - 1); return mainLen; } mainDist = 0; /* for GCC */ if (mainLen >= 2) { mainDist = matches[numPairs - 1]; while (numPairs > 2 && mainLen == matches[numPairs - 4] + 1) { if (!ChangePair(matches[numPairs - 3], mainDist)) break; numPairs -= 2; mainLen = matches[numPairs - 2]; mainDist = matches[numPairs - 1]; } if (mainLen == 2 && mainDist >= 0x80) mainLen = 1; } if (repLen >= 2 && ( (repLen + 1 >= mainLen) || (repLen + 2 >= mainLen && mainDist >= (1 << 9)) || (repLen + 3 >= mainLen && mainDist >= (1 << 15)))) { *backRes = repIndex; MovePos(p, repLen - 1); return repLen; } if (mainLen < 2 || numAvail <= 2) return 1; p->longestMatchLength = ReadMatchDistances(p, &p->numPairs); if (p->longestMatchLength >= 2) { UInt32 newDistance = matches[p->numPairs - 1]; if ((p->longestMatchLength >= mainLen && newDistance < mainDist) || (p->longestMatchLength == mainLen + 1 && !ChangePair(mainDist, newDistance)) || (p->longestMatchLength > mainLen + 1) || (p->longestMatchLength + 1 >= mainLen && mainLen >= 3 && ChangePair(newDistance, mainDist))) return 1; } data = p->matchFinder.GetPointerToCurrentPos(p->matchFinderObj) - 1; for (i = 0; i < LZMA_NUM_REPS; i++) { UInt32 len, limit; const Byte *data2 = data - (p->reps[i] + 1); if (data[0] != data2[0] || data[1] != data2[1]) continue; limit = mainLen - 1; for (len = 2; len < limit && data[len] == data2[len]; len++); if (len >= limit) return 1; } *backRes = mainDist + LZMA_NUM_REPS; MovePos(p, mainLen - 2); return mainLen; } static void WriteEndMarker(CLzmaEnc *p, UInt32 posState) { UInt32 len; RangeEnc_EncodeBit(&p->rc, &p->isMatch[p->state][posState], 1); RangeEnc_EncodeBit(&p->rc, &p->isRep[p->state], 0); p->state = kMatchNextStates[p->state]; len = LZMA_MATCH_LEN_MIN; LenEnc_Encode2(&p->lenEnc, &p->rc, len - LZMA_MATCH_LEN_MIN, posState, !p->fastMode, p->ProbPrices); RcTree_Encode(&p->rc, p->posSlotEncoder[GetLenToPosState(len)], kNumPosSlotBits, (1 << kNumPosSlotBits) - 1); RangeEnc_EncodeDirectBits(&p->rc, (((UInt32)1 << 30) - 1) >> kNumAlignBits, 30 - kNumAlignBits); RcTree_ReverseEncode(&p->rc, p->posAlignEncoder, kNumAlignBits, kAlignMask); } static SRes CheckErrors(CLzmaEnc *p) { if (p->result != SZ_OK) return p->result; if (p->rc.res != SZ_OK) p->result = SZ_ERROR_WRITE; if (p->matchFinderBase.result != SZ_OK) p->result = SZ_ERROR_READ; if (p->result != SZ_OK) p->finished = True; return p->result; } static SRes Flush(CLzmaEnc *p, UInt32 nowPos) { /* ReleaseMFStream(); */ p->finished = True; if (p->writeEndMark) WriteEndMarker(p, nowPos & p->pbMask); RangeEnc_FlushData(&p->rc); RangeEnc_FlushStream(&p->rc); return CheckErrors(p); } static void FillAlignPrices(CLzmaEnc *p) { UInt32 i; for (i = 0; i < kAlignTableSize; i++) p->alignPrices[i] = RcTree_ReverseGetPrice(p->posAlignEncoder, kNumAlignBits, i, p->ProbPrices); p->alignPriceCount = 0; } static void FillDistancesPrices(CLzmaEnc *p) { UInt32 tempPrices[kNumFullDistances]; UInt32 i, lenToPosState; for (i = kStartPosModelIndex; i < kNumFullDistances; i++) { UInt32 posSlot = GetPosSlot1(i); UInt32 footerBits = ((posSlot >> 1) - 1); UInt32 base = ((2 | (posSlot & 1)) << footerBits); tempPrices[i] = RcTree_ReverseGetPrice(p->posEncoders + base - posSlot - 1, footerBits, i - base, p->ProbPrices); } for (lenToPosState = 0; lenToPosState < kNumLenToPosStates; lenToPosState++) { UInt32 posSlot; const CLzmaProb *encoder = p->posSlotEncoder[lenToPosState]; UInt32 *posSlotPrices = p->posSlotPrices[lenToPosState]; for (posSlot = 0; posSlot < p->distTableSize; posSlot++) posSlotPrices[posSlot] = RcTree_GetPrice(encoder, kNumPosSlotBits, posSlot, p->ProbPrices); for (posSlot = kEndPosModelIndex; posSlot < p->distTableSize; posSlot++) posSlotPrices[posSlot] += ((((posSlot >> 1) - 1) - kNumAlignBits) << kNumBitPriceShiftBits); { UInt32 *distancesPrices = p->distancesPrices[lenToPosState]; UInt32 i; for (i = 0; i < kStartPosModelIndex; i++) distancesPrices[i] = posSlotPrices[i]; for (; i < kNumFullDistances; i++) distancesPrices[i] = posSlotPrices[GetPosSlot1(i)] + tempPrices[i]; } } p->matchPriceCount = 0; } void LzmaEnc_Construct(CLzmaEnc *p) { RangeEnc_Construct(&p->rc); MatchFinder_Construct(&p->matchFinderBase); #ifdef COMPRESS_MF_MT MatchFinderMt_Construct(&p->matchFinderMt); p->matchFinderMt.MatchFinder = &p->matchFinderBase; #endif { CLzmaEncProps props; LzmaEncProps_Init(&props); LzmaEnc_SetProps(p, &props); } #ifndef LZMA_LOG_BSR LzmaEnc_FastPosInit(p->g_FastPos); #endif LzmaEnc_InitPriceTables(p->ProbPrices); p->litProbs = 0; p->saveState.litProbs = 0; } CLzmaEncHandle LzmaEnc_Create(ISzAlloc *alloc) { void *p; p = alloc->Alloc(alloc, sizeof(CLzmaEnc)); if (p != 0) LzmaEnc_Construct((CLzmaEnc *)p); return p; } void LzmaEnc_FreeLits(CLzmaEnc *p, ISzAlloc *alloc) { alloc->Free(alloc, p->litProbs); alloc->Free(alloc, p->saveState.litProbs); p->litProbs = 0; p->saveState.litProbs = 0; } void LzmaEnc_Destruct(CLzmaEnc *p, ISzAlloc *alloc, ISzAlloc *allocBig) { #ifdef COMPRESS_MF_MT MatchFinderMt_Destruct(&p->matchFinderMt, allocBig); #endif MatchFinder_Free(&p->matchFinderBase, allocBig); LzmaEnc_FreeLits(p, alloc); RangeEnc_Free(&p->rc, alloc); } void LzmaEnc_Destroy(CLzmaEncHandle p, ISzAlloc *alloc, ISzAlloc *allocBig) { LzmaEnc_Destruct((CLzmaEnc *)p, alloc, allocBig); alloc->Free(alloc, p); } static SRes LzmaEnc_CodeOneBlock(CLzmaEnc *p, int useLimits, UInt32 maxPackSize, UInt32 maxUnpackSize) { UInt32 nowPos32, startPos32; if (p->inStream != 0) { p->matchFinderBase.stream = p->inStream; p->matchFinder.Init(p->matchFinderObj); p->inStream = 0; } if (p->finished) return p->result; RINOK(CheckErrors(p)); nowPos32 = (UInt32)p->nowPos64; startPos32 = nowPos32; if (p->nowPos64 == 0) { UInt32 numPairs; Byte curByte; if (p->matchFinder.GetNumAvailableBytes(p->matchFinderObj) == 0) return Flush(p, nowPos32); ReadMatchDistances(p, &numPairs); RangeEnc_EncodeBit(&p->rc, &p->isMatch[p->state][0], 0); p->state = kLiteralNextStates[p->state]; curByte = p->matchFinder.GetIndexByte(p->matchFinderObj, 0 - p->additionalOffset); LitEnc_Encode(&p->rc, p->litProbs, curByte); p->additionalOffset--; nowPos32++; } if (p->matchFinder.GetNumAvailableBytes(p->matchFinderObj) != 0) for (;;) { UInt32 pos, len, posState; if (p->fastMode) len = GetOptimumFast(p, &pos); else len = GetOptimum(p, nowPos32, &pos); #ifdef SHOW_STAT2 printf("\n pos = %4X, len = %d pos = %d", nowPos32, len, pos); #endif posState = nowPos32 & p->pbMask; if (len == 1 && pos == (UInt32)-1) { Byte curByte; CLzmaProb *probs; const Byte *data; RangeEnc_EncodeBit(&p->rc, &p->isMatch[p->state][posState], 0); data = p->matchFinder.GetPointerToCurrentPos(p->matchFinderObj) - p->additionalOffset; curByte = *data; probs = LIT_PROBS(nowPos32, *(data - 1)); if (IsCharState(p->state)) LitEnc_Encode(&p->rc, probs, curByte); else LitEnc_EncodeMatched(&p->rc, probs, curByte, *(data - p->reps[0] - 1)); p->state = kLiteralNextStates[p->state]; } else { RangeEnc_EncodeBit(&p->rc, &p->isMatch[p->state][posState], 1); if (pos < LZMA_NUM_REPS) { RangeEnc_EncodeBit(&p->rc, &p->isRep[p->state], 1); if (pos == 0) { RangeEnc_EncodeBit(&p->rc, &p->isRepG0[p->state], 0); RangeEnc_EncodeBit(&p->rc, &p->isRep0Long[p->state][posState], ((len == 1) ? 0 : 1)); } else { UInt32 distance = p->reps[pos]; RangeEnc_EncodeBit(&p->rc, &p->isRepG0[p->state], 1); if (pos == 1) RangeEnc_EncodeBit(&p->rc, &p->isRepG1[p->state], 0); else { RangeEnc_EncodeBit(&p->rc, &p->isRepG1[p->state], 1); RangeEnc_EncodeBit(&p->rc, &p->isRepG2[p->state], pos - 2); if (pos == 3) p->reps[3] = p->reps[2]; p->reps[2] = p->reps[1]; } p->reps[1] = p->reps[0]; p->reps[0] = distance; } if (len == 1) p->state = kShortRepNextStates[p->state]; else { LenEnc_Encode2(&p->repLenEnc, &p->rc, len - LZMA_MATCH_LEN_MIN, posState, !p->fastMode, p->ProbPrices); p->state = kRepNextStates[p->state]; } } else { UInt32 posSlot; RangeEnc_EncodeBit(&p->rc, &p->isRep[p->state], 0); p->state = kMatchNextStates[p->state]; LenEnc_Encode2(&p->lenEnc, &p->rc, len - LZMA_MATCH_LEN_MIN, posState, !p->fastMode, p->ProbPrices); pos -= LZMA_NUM_REPS; GetPosSlot(pos, posSlot); RcTree_Encode(&p->rc, p->posSlotEncoder[GetLenToPosState(len)], kNumPosSlotBits, posSlot); if (posSlot >= kStartPosModelIndex) { UInt32 footerBits = ((posSlot >> 1) - 1); UInt32 base = ((2 | (posSlot & 1)) << footerBits); UInt32 posReduced = pos - base; if (posSlot < kEndPosModelIndex) RcTree_ReverseEncode(&p->rc, p->posEncoders + base - posSlot - 1, footerBits, posReduced); else { RangeEnc_EncodeDirectBits(&p->rc, posReduced >> kNumAlignBits, footerBits - kNumAlignBits); RcTree_ReverseEncode(&p->rc, p->posAlignEncoder, kNumAlignBits, posReduced & kAlignMask); p->alignPriceCount++; } } p->reps[3] = p->reps[2]; p->reps[2] = p->reps[1]; p->reps[1] = p->reps[0]; p->reps[0] = pos; p->matchPriceCount++; } } p->additionalOffset -= len; nowPos32 += len; if (p->additionalOffset == 0) { UInt32 processed; if (!p->fastMode) { if (p->matchPriceCount >= (1 << 7)) FillDistancesPrices(p); if (p->alignPriceCount >= kAlignTableSize) FillAlignPrices(p); } if (p->matchFinder.GetNumAvailableBytes(p->matchFinderObj) == 0) break; processed = nowPos32 - startPos32; if (useLimits) { if (processed + kNumOpts + 300 >= maxUnpackSize || RangeEnc_GetProcessed(&p->rc) + kNumOpts * 2 >= maxPackSize) break; } else if (processed >= (1 << 15)) { p->nowPos64 += nowPos32 - startPos32; return CheckErrors(p); } } } p->nowPos64 += nowPos32 - startPos32; return Flush(p, nowPos32); } #define kBigHashDicLimit ((UInt32)1 << 24) static SRes LzmaEnc_Alloc(CLzmaEnc *p, UInt32 keepWindowSize, ISzAlloc *alloc, ISzAlloc *allocBig) { UInt32 beforeSize = kNumOpts; if (!RangeEnc_Alloc(&p->rc, alloc)) return SZ_ERROR_MEM; #ifdef COMPRESS_MF_MT int btMode; btMode = (p->matchFinderBase.btMode != 0); p->mtMode = (p->multiThread && !p->fastMode && btMode); #endif { unsigned lclp = p->lc + p->lp; if (p->litProbs == 0 || p->saveState.litProbs == 0 || p->lclp != lclp) { LzmaEnc_FreeLits(p, alloc); p->litProbs = (CLzmaProb *)alloc->Alloc(alloc, (0x300 << lclp) * sizeof(CLzmaProb)); p->saveState.litProbs = (CLzmaProb *)alloc->Alloc(alloc, (0x300 << lclp) * sizeof(CLzmaProb)); if (p->litProbs == 0 || p->saveState.litProbs == 0) { LzmaEnc_FreeLits(p, alloc); return SZ_ERROR_MEM; } p->lclp = lclp; } } p->matchFinderBase.bigHash = (p->dictSize > kBigHashDicLimit); if (beforeSize + p->dictSize < keepWindowSize) beforeSize = keepWindowSize - p->dictSize; #ifdef COMPRESS_MF_MT if (p->mtMode) { RINOK(MatchFinderMt_Create(&p->matchFinderMt, p->dictSize, beforeSize, p->numFastBytes, LZMA_MATCH_LEN_MAX, allocBig)); p->matchFinderObj = &p->matchFinderMt; MatchFinderMt_CreateVTable(&p->matchFinderMt, &p->matchFinder); } else #endif { if (!MatchFinder_Create(&p->matchFinderBase, p->dictSize, beforeSize, p->numFastBytes, LZMA_MATCH_LEN_MAX, allocBig)) return SZ_ERROR_MEM; p->matchFinderObj = &p->matchFinderBase; MatchFinder_CreateVTable(&p->matchFinderBase, &p->matchFinder); } return SZ_OK; } void LzmaEnc_Init(CLzmaEnc *p) { UInt32 i; p->state = 0; for (i = 0 ; i < LZMA_NUM_REPS; i++) p->reps[i] = 0; RangeEnc_Init(&p->rc); for (i = 0; i < kNumStates; i++) { UInt32 j; for (j = 0; j < LZMA_NUM_PB_STATES_MAX; j++) { p->isMatch[i][j] = kProbInitValue; p->isRep0Long[i][j] = kProbInitValue; } p->isRep[i] = kProbInitValue; p->isRepG0[i] = kProbInitValue; p->isRepG1[i] = kProbInitValue; p->isRepG2[i] = kProbInitValue; } { UInt32 num = 0x300 << (p->lp + p->lc); for (i = 0; i < num; i++) p->litProbs[i] = kProbInitValue; } { for (i = 0; i < kNumLenToPosStates; i++) { CLzmaProb *probs = p->posSlotEncoder[i]; UInt32 j; for (j = 0; j < (1 << kNumPosSlotBits); j++) probs[j] = kProbInitValue; } } { for (i = 0; i < kNumFullDistances - kEndPosModelIndex; i++) p->posEncoders[i] = kProbInitValue; } LenEnc_Init(&p->lenEnc.p); LenEnc_Init(&p->repLenEnc.p); for (i = 0; i < (1 << kNumAlignBits); i++) p->posAlignEncoder[i] = kProbInitValue; p->optimumEndIndex = 0; p->optimumCurrentIndex = 0; p->additionalOffset = 0; p->pbMask = (1 << p->pb) - 1; p->lpMask = (1 << p->lp) - 1; } void LzmaEnc_InitPrices(CLzmaEnc *p) { if (!p->fastMode) { FillDistancesPrices(p); FillAlignPrices(p); } p->lenEnc.tableSize = p->repLenEnc.tableSize = p->numFastBytes + 1 - LZMA_MATCH_LEN_MIN; LenPriceEnc_UpdateTables(&p->lenEnc, 1 << p->pb, p->ProbPrices); LenPriceEnc_UpdateTables(&p->repLenEnc, 1 << p->pb, p->ProbPrices); } static SRes LzmaEnc_AllocAndInit(CLzmaEnc *p, UInt32 keepWindowSize, ISzAlloc *alloc, ISzAlloc *allocBig) { UInt32 i; for (i = 0; i < (UInt32)kDicLogSizeMaxCompress; i++) if (p->dictSize <= ((UInt32)1 << i)) break; p->distTableSize = i * 2; p->finished = False; p->result = SZ_OK; RINOK(LzmaEnc_Alloc(p, keepWindowSize, alloc, allocBig)); LzmaEnc_Init(p); LzmaEnc_InitPrices(p); p->nowPos64 = 0; return SZ_OK; } static SRes LzmaEnc_Prepare(CLzmaEncHandle pp, ISeqInStream *inStream, ISeqOutStream *outStream, ISzAlloc *alloc, ISzAlloc *allocBig) { CLzmaEnc *p = (CLzmaEnc *)pp; p->inStream = inStream; p->rc.outStream = outStream; return LzmaEnc_AllocAndInit(p, 0, alloc, allocBig); } SRes LzmaEnc_PrepareForLzma2(CLzmaEncHandle pp, ISeqInStream *inStream, UInt32 keepWindowSize, ISzAlloc *alloc, ISzAlloc *allocBig) { CLzmaEnc *p = (CLzmaEnc *)pp; p->inStream = inStream; return LzmaEnc_AllocAndInit(p, keepWindowSize, alloc, allocBig); } static void LzmaEnc_SetInputBuf(CLzmaEnc *p, const Byte *src, SizeT srcLen) { p->seqBufInStream.funcTable.Read = MyRead; p->seqBufInStream.data = src; p->seqBufInStream.rem = srcLen; } SRes LzmaEnc_MemPrepare(CLzmaEncHandle pp, const Byte *src, SizeT srcLen, UInt32 keepWindowSize, ISzAlloc *alloc, ISzAlloc *allocBig) { CLzmaEnc *p = (CLzmaEnc *)pp; LzmaEnc_SetInputBuf(p, src, srcLen); p->inStream = &p->seqBufInStream.funcTable; return LzmaEnc_AllocAndInit(p, keepWindowSize, alloc, allocBig); } void LzmaEnc_Finish(CLzmaEncHandle pp) { #ifdef COMPRESS_MF_MT CLzmaEnc *p = (CLzmaEnc *)pp; if (p->mtMode) MatchFinderMt_ReleaseStream(&p->matchFinderMt); #else pp = pp; #endif } typedef struct _CSeqOutStreamBuf { ISeqOutStream funcTable; Byte *data; SizeT rem; int overflow; } CSeqOutStreamBuf; static size_t MyWrite(void *pp, const void *data, size_t size) { CSeqOutStreamBuf *p = (CSeqOutStreamBuf *)pp; if (p->rem < size) { size = p->rem; p->overflow = True; } memcpy(p->data, data, size); p->rem -= size; p->data += size; return size; } UInt32 LzmaEnc_GetNumAvailableBytes(CLzmaEncHandle pp) { const CLzmaEnc *p = (CLzmaEnc *)pp; return p->matchFinder.GetNumAvailableBytes(p->matchFinderObj); } const Byte *LzmaEnc_GetCurBuf(CLzmaEncHandle pp) { const CLzmaEnc *p = (CLzmaEnc *)pp; return p->matchFinder.GetPointerToCurrentPos(p->matchFinderObj) - p->additionalOffset; } SRes LzmaEnc_CodeOneMemBlock(CLzmaEncHandle pp, int reInit, Byte *dest, size_t *destLen, UInt32 desiredPackSize, UInt32 *unpackSize) { CLzmaEnc *p = (CLzmaEnc *)pp; UInt64 nowPos64; SRes res; CSeqOutStreamBuf outStream; outStream.funcTable.Write = MyWrite; outStream.data = dest; outStream.rem = *destLen; outStream.overflow = False; p->writeEndMark = False; p->finished = False; p->result = SZ_OK; if (reInit) LzmaEnc_Init(p); LzmaEnc_InitPrices(p); nowPos64 = p->nowPos64; RangeEnc_Init(&p->rc); p->rc.outStream = &outStream.funcTable; res = LzmaEnc_CodeOneBlock(p, True, desiredPackSize, *unpackSize); *unpackSize = (UInt32)(p->nowPos64 - nowPos64); *destLen -= outStream.rem; if (outStream.overflow) return SZ_ERROR_OUTPUT_EOF; return res; } SRes LzmaEnc_Encode(CLzmaEncHandle pp, ISeqOutStream *outStream, ISeqInStream *inStream, ICompressProgress *progress, ISzAlloc *alloc, ISzAlloc *allocBig) { CLzmaEnc *p = (CLzmaEnc *)pp; SRes res = SZ_OK; #ifdef COMPRESS_MF_MT Byte allocaDummy[0x300]; int i = 0; for (i = 0; i < 16; i++) allocaDummy[i] = (Byte)i; #endif RINOK(LzmaEnc_Prepare(pp, inStream, outStream, alloc, allocBig)); for (;;) { res = LzmaEnc_CodeOneBlock(p, False, 0, 0); if (res != SZ_OK || p->finished != 0) break; if (progress != 0) { res = progress->Progress(progress, p->nowPos64, RangeEnc_GetProcessed(&p->rc)); if (res != SZ_OK) { res = SZ_ERROR_PROGRESS; break; } } } LzmaEnc_Finish(pp); return res; } SRes LzmaEnc_WriteProperties(CLzmaEncHandle pp, Byte *props, SizeT *size) { CLzmaEnc *p = (CLzmaEnc *)pp; int i; UInt32 dictSize = p->dictSize; if (*size < LZMA_PROPS_SIZE) return SZ_ERROR_PARAM; *size = LZMA_PROPS_SIZE; props[0] = (Byte)((p->pb * 5 + p->lp) * 9 + p->lc); for (i = 11; i <= 30; i++) { if (dictSize <= ((UInt32)2 << i)) { dictSize = (2 << i); break; } if (dictSize <= ((UInt32)3 << i)) { dictSize = (3 << i); break; } } for (i = 0; i < 4; i++) props[1 + i] = (Byte)(dictSize >> (8 * i)); return SZ_OK; } SRes LzmaEnc_MemEncode(CLzmaEncHandle pp, Byte *dest, SizeT *destLen, const Byte *src, SizeT srcLen, int writeEndMark, ICompressProgress *progress, ISzAlloc *alloc, ISzAlloc *allocBig) { SRes res; CLzmaEnc *p = (CLzmaEnc *)pp; CSeqOutStreamBuf outStream; LzmaEnc_SetInputBuf(p, src, srcLen); outStream.funcTable.Write = MyWrite; outStream.data = dest; outStream.rem = *destLen; outStream.overflow = False; p->writeEndMark = writeEndMark; res = LzmaEnc_Encode(pp, &outStream.funcTable, &p->seqBufInStream.funcTable, progress, alloc, allocBig); *destLen -= outStream.rem; if (outStream.overflow) return SZ_ERROR_OUTPUT_EOF; return res; } SRes LzmaEncode(Byte *dest, SizeT *destLen, const Byte *src, SizeT srcLen, const CLzmaEncProps *props, Byte *propsEncoded, SizeT *propsSize, int writeEndMark, ICompressProgress *progress, ISzAlloc *alloc, ISzAlloc *allocBig) { CLzmaEnc *p = (CLzmaEnc *)LzmaEnc_Create(alloc); SRes res; if (p == 0) return SZ_ERROR_MEM; res = LzmaEnc_SetProps(p, props); if (res == SZ_OK) { res = LzmaEnc_WriteProperties(p, propsEncoded, propsSize); if (res == SZ_OK) res = LzmaEnc_MemEncode(p, dest, destLen, src, srcLen, writeEndMark, progress, alloc, allocBig); } LzmaEnc_Destroy(p, alloc, allocBig); return res; } flwrap-1.3.6/src/lzma/Types.h0000644000175000017500000001144714304245211012747 00000000000000/* Types.h -- Basic types 2008-11-23 : Igor Pavlov : Public domain */ #ifndef __7Z_TYPES_H #define __7Z_TYPES_H #include #ifdef _WIN32 #include #endif #define SZ_OK 0 #define SZ_ERROR_DATA 1 #define SZ_ERROR_MEM 2 #define SZ_ERROR_CRC 3 #define SZ_ERROR_UNSUPPORTED 4 #define SZ_ERROR_PARAM 5 #define SZ_ERROR_INPUT_EOF 6 #define SZ_ERROR_OUTPUT_EOF 7 #define SZ_ERROR_READ 8 #define SZ_ERROR_WRITE 9 #define SZ_ERROR_PROGRESS 10 #define SZ_ERROR_FAIL 11 #define SZ_ERROR_THREAD 12 #define SZ_ERROR_ARCHIVE 16 #define SZ_ERROR_NO_ARCHIVE 17 typedef int SRes; #ifdef _WIN32 typedef DWORD WRes; #else typedef int WRes; #endif #ifndef RINOK #define RINOK(x) { int __result__ = (x); if (__result__ != 0) return __result__; } #endif typedef unsigned char Byte; typedef short Int16; typedef unsigned short UInt16; #ifdef _LZMA_UINT32_IS_ULONG typedef long Int32; typedef unsigned long UInt32; #else typedef int Int32; typedef unsigned int UInt32; #endif #ifdef _SZ_NO_INT_64 /* define _SZ_NO_INT_64, if your compiler doesn't support 64-bit integers. NOTES: Some code will work incorrectly in that case! */ typedef long Int64; typedef unsigned long UInt64; #else #if defined(_MSC_VER) || defined(__BORLANDC__) typedef __int64 Int64; typedef unsigned __int64 UInt64; #else typedef long long int Int64; typedef unsigned long long int UInt64; #endif #endif #ifdef _LZMA_NO_SYSTEM_SIZE_T typedef UInt32 SizeT; #else typedef size_t SizeT; #endif #if !defined(Bool) typedef int Bool; #endif #define True 1 #define False 0 #ifdef _MSC_VER #if _MSC_VER >= 1300 #define MY_NO_INLINE __declspec(noinline) #else #define MY_NO_INLINE #endif #define MY_CDECL __cdecl #define MY_STD_CALL __stdcall #define MY_FAST_CALL MY_NO_INLINE __fastcall #else #define MY_CDECL #define MY_STD_CALL #define MY_FAST_CALL #endif /* The following interfaces use first parameter as pointer to structure */ typedef struct { SRes (*Read)(void *p, void *buf, size_t *size); /* if (input(*size) != 0 && output(*size) == 0) means end_of_stream. (output(*size) < input(*size)) is allowed */ } ISeqInStream; /* it can return SZ_ERROR_INPUT_EOF */ SRes SeqInStream_Read(ISeqInStream *stream, void *buf, size_t size); SRes SeqInStream_Read2(ISeqInStream *stream, void *buf, size_t size, SRes errorType); SRes SeqInStream_ReadByte(ISeqInStream *stream, Byte *buf); typedef struct { size_t (*Write)(void *p, const void *buf, size_t size); /* Returns: result - the number of actually written bytes. (result < size) means error */ } ISeqOutStream; typedef enum { SZ_SEEK_SET = 0, SZ_SEEK_CUR = 1, SZ_SEEK_END = 2 } ESzSeek; typedef struct { SRes (*Read)(void *p, void *buf, size_t *size); /* same as ISeqInStream::Read */ SRes (*Seek)(void *p, Int64 *pos, ESzSeek origin); } ISeekInStream; typedef struct { SRes (*Look)(void *p, void **buf, size_t *size); /* if (input(*size) != 0 && output(*size) == 0) means end_of_stream. (output(*size) > input(*size)) is not allowed (output(*size) < input(*size)) is allowed */ SRes (*Skip)(void *p, size_t offset); /* offset must be <= output(*size) of Look */ SRes (*Read)(void *p, void *buf, size_t *size); /* reads directly (without buffer). It's same as ISeqInStream::Read */ SRes (*Seek)(void *p, Int64 *pos, ESzSeek origin); } ILookInStream; SRes LookInStream_LookRead(ILookInStream *stream, void *buf, size_t *size); SRes LookInStream_SeekTo(ILookInStream *stream, UInt64 offset); /* reads via ILookInStream::Read */ SRes LookInStream_Read2(ILookInStream *stream, void *buf, size_t size, SRes errorType); SRes LookInStream_Read(ILookInStream *stream, void *buf, size_t size); #define LookToRead_BUF_SIZE (1 << 14) typedef struct { ILookInStream s; ISeekInStream *realStream; size_t pos; size_t size; Byte buf[LookToRead_BUF_SIZE]; } CLookToRead; void LookToRead_CreateVTable(CLookToRead *p, int lookahead); void LookToRead_Init(CLookToRead *p); typedef struct { ISeqInStream s; ILookInStream *realStream; } CSecToLook; void SecToLook_CreateVTable(CSecToLook *p); typedef struct { ISeqInStream s; ILookInStream *realStream; } CSecToRead; void SecToRead_CreateVTable(CSecToRead *p); typedef struct { SRes (*Progress)(void *p, UInt64 inSize, UInt64 outSize); /* Returns: result. (result != SZ_OK) means break. Value (UInt64)(Int64)-1 for size means unknown value. */ } ICompressProgress; typedef struct { void *(*Alloc)(void *p, size_t size); void (*Free)(void *p, void *address); /* address can be 0 */ } ISzAlloc; #define IAlloc_Alloc(p, size) (p)->Alloc((p), size) #define IAlloc_Free(p, a) (p)->Free((p), a) #endif flwrap-1.3.6/src/lzma/LzFind.h0000644000175000017500000000637714304245211013037 00000000000000/* LzFind.h -- Match finder for LZ algorithms 2008-10-04 : Igor Pavlov : Public domain */ #ifndef __LZFIND_H #define __LZFIND_H #include "Types.h" typedef UInt32 CLzRef; typedef struct _CMatchFinder { Byte *buffer; UInt32 pos; UInt32 posLimit; UInt32 streamPos; UInt32 lenLimit; UInt32 cyclicBufferPos; UInt32 cyclicBufferSize; /* it must be = (historySize + 1) */ UInt32 matchMaxLen; CLzRef *hash; CLzRef *son; UInt32 hashMask; UInt32 cutValue; Byte *bufferBase; ISeqInStream *stream; int streamEndWasReached; UInt32 blockSize; UInt32 keepSizeBefore; UInt32 keepSizeAfter; UInt32 numHashBytes; int directInput; int btMode; /* int skipModeBits; */ int bigHash; UInt32 historySize; UInt32 fixedHashSize; UInt32 hashSizeSum; UInt32 numSons; SRes result; UInt32 crc[256]; } CMatchFinder; #define Inline_MatchFinder_GetPointerToCurrentPos(p) ((p)->buffer) #define Inline_MatchFinder_GetIndexByte(p, index) ((p)->buffer[(Int32)(index)]) #define Inline_MatchFinder_GetNumAvailableBytes(p) ((p)->streamPos - (p)->pos) int MatchFinder_NeedMove(CMatchFinder *p); Byte *MatchFinder_GetPointerToCurrentPos(CMatchFinder *p); void MatchFinder_MoveBlock(CMatchFinder *p); void MatchFinder_ReadIfRequired(CMatchFinder *p); void MatchFinder_Construct(CMatchFinder *p); /* Conditions: historySize <= 3 GB keepAddBufferBefore + matchMaxLen + keepAddBufferAfter < 511MB */ int MatchFinder_Create(CMatchFinder *p, UInt32 historySize, UInt32 keepAddBufferBefore, UInt32 matchMaxLen, UInt32 keepAddBufferAfter, ISzAlloc *alloc); void MatchFinder_Free(CMatchFinder *p, ISzAlloc *alloc); void MatchFinder_Normalize3(UInt32 subValue, CLzRef *items, UInt32 numItems); void MatchFinder_ReduceOffsets(CMatchFinder *p, UInt32 subValue); UInt32 * GetMatchesSpec1(UInt32 lenLimit, UInt32 curMatch, UInt32 pos, const Byte *buffer, CLzRef *son, UInt32 _cyclicBufferPos, UInt32 _cyclicBufferSize, UInt32 _cutValue, UInt32 *distances, UInt32 maxLen); /* Conditions: Mf_GetNumAvailableBytes_Func must be called before each Mf_GetMatchLen_Func. Mf_GetPointerToCurrentPos_Func's result must be used only before any other function */ typedef void (*Mf_Init_Func)(void *object); typedef Byte (*Mf_GetIndexByte_Func)(void *object, Int32 index); typedef UInt32 (*Mf_GetNumAvailableBytes_Func)(void *object); typedef const Byte * (*Mf_GetPointerToCurrentPos_Func)(void *object); typedef UInt32 (*Mf_GetMatches_Func)(void *object, UInt32 *distances); typedef void (*Mf_Skip_Func)(void *object, UInt32); typedef struct _IMatchFinder { Mf_Init_Func Init; Mf_GetIndexByte_Func GetIndexByte; Mf_GetNumAvailableBytes_Func GetNumAvailableBytes; Mf_GetPointerToCurrentPos_Func GetPointerToCurrentPos; Mf_GetMatches_Func GetMatches; Mf_Skip_Func Skip; } IMatchFinder; void MatchFinder_CreateVTable(CMatchFinder *p, IMatchFinder *vTable); void MatchFinder_Init(CMatchFinder *p); UInt32 Bt3Zip_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances); UInt32 Hc3Zip_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances); void Bt3Zip_MatchFinder_Skip(CMatchFinder *p, UInt32 num); void Hc3Zip_MatchFinder_Skip(CMatchFinder *p, UInt32 num); #endif flwrap-1.3.6/src/lzma/LzmaEnc.h0000644000175000017500000000553214304245211013172 00000000000000/* LzmaEnc.h -- LZMA Encoder 2008-10-04 : Igor Pavlov : Public domain */ #ifndef __LZMAENC_H #define __LZMAENC_H #include "Types.h" #define LZMA_PROPS_SIZE 5 typedef struct _CLzmaEncProps { int level; /* 0 <= level <= 9 */ UInt32 dictSize; /* (1 << 12) <= dictSize <= (1 << 27) for 32-bit version (1 << 12) <= dictSize <= (1 << 30) for 64-bit version default = (1 << 24) */ int lc; /* 0 <= lc <= 8, default = 3 */ int lp; /* 0 <= lp <= 4, default = 0 */ int pb; /* 0 <= pb <= 4, default = 2 */ int algo; /* 0 - fast, 1 - normal, default = 1 */ int fb; /* 5 <= fb <= 273, default = 32 */ int btMode; /* 0 - hashChain Mode, 1 - binTree mode - normal, default = 1 */ int numHashBytes; /* 2, 3 or 4, default = 4 */ UInt32 mc; /* 1 <= mc <= (1 << 30), default = 32 */ unsigned writeEndMark; /* 0 - do not write EOPM, 1 - write EOPM, default = 0 */ int numThreads; /* 1 or 2, default = 2 */ } CLzmaEncProps; void LzmaEncProps_Init(CLzmaEncProps *p); void LzmaEncProps_Normalize(CLzmaEncProps *p); UInt32 LzmaEncProps_GetDictSize(const CLzmaEncProps *props2); /* ---------- CLzmaEncHandle Interface ---------- */ /* LzmaEnc_* functions can return the following exit codes: Returns: SZ_OK - OK SZ_ERROR_MEM - Memory allocation error SZ_ERROR_PARAM - Incorrect paramater in props SZ_ERROR_WRITE - Write callback error. SZ_ERROR_PROGRESS - some break from progress callback SZ_ERROR_THREAD - errors in multithreading functions (only for Mt version) */ typedef void * CLzmaEncHandle; CLzmaEncHandle LzmaEnc_Create(ISzAlloc *alloc); void LzmaEnc_Destroy(CLzmaEncHandle p, ISzAlloc *alloc, ISzAlloc *allocBig); SRes LzmaEnc_SetProps(CLzmaEncHandle p, const CLzmaEncProps *props); SRes LzmaEnc_WriteProperties(CLzmaEncHandle p, Byte *properties, SizeT *size); SRes LzmaEnc_Encode(CLzmaEncHandle p, ISeqOutStream *outStream, ISeqInStream *inStream, ICompressProgress *progress, ISzAlloc *alloc, ISzAlloc *allocBig); SRes LzmaEnc_MemEncode(CLzmaEncHandle p, Byte *dest, SizeT *destLen, const Byte *src, SizeT srcLen, int writeEndMark, ICompressProgress *progress, ISzAlloc *alloc, ISzAlloc *allocBig); /* ---------- One Call Interface ---------- */ /* LzmaEncode Return code: SZ_OK - OK SZ_ERROR_MEM - Memory allocation error SZ_ERROR_PARAM - Incorrect paramater SZ_ERROR_OUTPUT_EOF - output buffer overflow SZ_ERROR_THREAD - errors in multithreading functions (only for Mt version) */ SRes LzmaEncode(Byte *dest, SizeT *destLen, const Byte *src, SizeT srcLen, const CLzmaEncProps *props, Byte *propsEncoded, SizeT *propsSize, int writeEndMark, ICompressProgress *progress, ISzAlloc *alloc, ISzAlloc *allocBig); #endif flwrap-1.3.6/src/lzma/LzmaDec.c0000644000175000017500000006737614304245211013171 00000000000000/* LzmaDec.c -- LZMA Decoder 2008-11-06 : Igor Pavlov : Public domain */ #include "LzmaDec.h" #include #define kNumTopBits 24 #define kTopValue ((UInt32)1 << kNumTopBits) #define kNumBitModelTotalBits 11 #define kBitModelTotal (1 << kNumBitModelTotalBits) #define kNumMoveBits 5 #define RC_INIT_SIZE 5 #define NORMALIZE if (range < kTopValue) { range <<= 8; code = (code << 8) | (*buf++); } #define IF_BIT_0(p) ttt = *(p); NORMALIZE; bound = (range >> kNumBitModelTotalBits) * ttt; if (code < bound) #define UPDATE_0(p) range = bound; *(p) = (CLzmaProb)(ttt + ((kBitModelTotal - ttt) >> kNumMoveBits)); #define UPDATE_1(p) range -= bound; code -= bound; *(p) = (CLzmaProb)(ttt - (ttt >> kNumMoveBits)); #define GET_BIT2(p, i, A0, A1) IF_BIT_0(p) \ { UPDATE_0(p); i = (i + i); A0; } else \ { UPDATE_1(p); i = (i + i) + 1; A1; } #define GET_BIT(p, i) GET_BIT2(p, i, ; , ;) #define TREE_GET_BIT(probs, i) { GET_BIT((probs + i), i); } #define TREE_DECODE(probs, limit, i) \ { i = 1; do { TREE_GET_BIT(probs, i); } while (i < limit); i -= limit; } /* #define _LZMA_SIZE_OPT */ #ifdef _LZMA_SIZE_OPT #define TREE_6_DECODE(probs, i) TREE_DECODE(probs, (1 << 6), i) #else #define TREE_6_DECODE(probs, i) \ { i = 1; \ TREE_GET_BIT(probs, i); \ TREE_GET_BIT(probs, i); \ TREE_GET_BIT(probs, i); \ TREE_GET_BIT(probs, i); \ TREE_GET_BIT(probs, i); \ TREE_GET_BIT(probs, i); \ i -= 0x40; } #endif #define NORMALIZE_CHECK if (range < kTopValue) { if (buf >= bufLimit) return DUMMY_ERROR; range <<= 8; code = (code << 8) | (*buf++); } #define IF_BIT_0_CHECK(p) ttt = *(p); NORMALIZE_CHECK; bound = (range >> kNumBitModelTotalBits) * ttt; if (code < bound) #define UPDATE_0_CHECK range = bound; #define UPDATE_1_CHECK range -= bound; code -= bound; #define GET_BIT2_CHECK(p, i, A0, A1) IF_BIT_0_CHECK(p) \ { UPDATE_0_CHECK; i = (i + i); A0; } else \ { UPDATE_1_CHECK; i = (i + i) + 1; A1; } #define GET_BIT_CHECK(p, i) GET_BIT2_CHECK(p, i, ; , ;) #define TREE_DECODE_CHECK(probs, limit, i) \ { i = 1; do { GET_BIT_CHECK(probs + i, i) } while (i < limit); i -= limit; } #define kNumPosBitsMax 4 #define kNumPosStatesMax (1 << kNumPosBitsMax) #define kLenNumLowBits 3 #define kLenNumLowSymbols (1 << kLenNumLowBits) #define kLenNumMidBits 3 #define kLenNumMidSymbols (1 << kLenNumMidBits) #define kLenNumHighBits 8 #define kLenNumHighSymbols (1 << kLenNumHighBits) #define LenChoice 0 #define LenChoice2 (LenChoice + 1) #define LenLow (LenChoice2 + 1) #define LenMid (LenLow + (kNumPosStatesMax << kLenNumLowBits)) #define LenHigh (LenMid + (kNumPosStatesMax << kLenNumMidBits)) #define kNumLenProbs (LenHigh + kLenNumHighSymbols) #define kNumStates 12 #define kNumLitStates 7 #define kStartPosModelIndex 4 #define kEndPosModelIndex 14 #define kNumFullDistances (1 << (kEndPosModelIndex >> 1)) #define kNumPosSlotBits 6 #define kNumLenToPosStates 4 #define kNumAlignBits 4 #define kAlignTableSize (1 << kNumAlignBits) #define kMatchMinLen 2 #define kMatchSpecLenStart (kMatchMinLen + kLenNumLowSymbols + kLenNumMidSymbols + kLenNumHighSymbols) #define IsMatch 0 #define IsRep (IsMatch + (kNumStates << kNumPosBitsMax)) #define IsRepG0 (IsRep + kNumStates) #define IsRepG1 (IsRepG0 + kNumStates) #define IsRepG2 (IsRepG1 + kNumStates) #define IsRep0Long (IsRepG2 + kNumStates) #define PosSlot (IsRep0Long + (kNumStates << kNumPosBitsMax)) #define SpecPos (PosSlot + (kNumLenToPosStates << kNumPosSlotBits)) #define Align (SpecPos + kNumFullDistances - kEndPosModelIndex) #define LenCoder (Align + kAlignTableSize) #define RepLenCoder (LenCoder + kNumLenProbs) #define Literal (RepLenCoder + kNumLenProbs) #define LZMA_BASE_SIZE 1846 #define LZMA_LIT_SIZE 768 #define LzmaProps_GetNumProbs(p) ((UInt32)LZMA_BASE_SIZE + (LZMA_LIT_SIZE << ((p)->lc + (p)->lp))) #if Literal != LZMA_BASE_SIZE StopCompilingDueBUG #endif static const Byte kLiteralNextStates[kNumStates * 2] = { 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 4, 5, 7, 7, 7, 7, 7, 7, 7, 10, 10, 10, 10, 10 }; #define LZMA_DIC_MIN (1 << 12) /* First LZMA-symbol is always decoded. And it decodes new LZMA-symbols while (buf < bufLimit), but "buf" is without last normalization Out: Result: SZ_OK - OK SZ_ERROR_DATA - Error p->remainLen: < kMatchSpecLenStart : normal remain = kMatchSpecLenStart : finished = kMatchSpecLenStart + 1 : Flush marker = kMatchSpecLenStart + 2 : State Init Marker */ static int MY_FAST_CALL LzmaDec_DecodeReal(CLzmaDec *p, SizeT limit, const Byte *bufLimit) { CLzmaProb *probs = p->probs; unsigned state = p->state; UInt32 rep0 = p->reps[0], rep1 = p->reps[1], rep2 = p->reps[2], rep3 = p->reps[3]; unsigned pbMask = ((unsigned)1 << (p->prop.pb)) - 1; unsigned lpMask = ((unsigned)1 << (p->prop.lp)) - 1; unsigned lc = p->prop.lc; Byte *dic = p->dic; SizeT dicBufSize = p->dicBufSize; SizeT dicPos = p->dicPos; UInt32 processedPos = p->processedPos; UInt32 checkDicSize = p->checkDicSize; unsigned len = 0; const Byte *buf = p->buf; UInt32 range = p->range; UInt32 code = p->code; do { CLzmaProb *prob; UInt32 bound; unsigned ttt; unsigned posState = processedPos & pbMask; prob = probs + IsMatch + (state << kNumPosBitsMax) + posState; IF_BIT_0(prob) { unsigned symbol; UPDATE_0(prob); prob = probs + Literal; if (checkDicSize != 0 || processedPos != 0) prob += (LZMA_LIT_SIZE * (((processedPos & lpMask) << lc) + (dic[(dicPos == 0 ? dicBufSize : dicPos) - 1] >> (8 - lc)))); if (state < kNumLitStates) { symbol = 1; do { GET_BIT(prob + symbol, symbol) } while (symbol < 0x100); } else { unsigned matchByte = p->dic[(dicPos - rep0) + ((dicPos < rep0) ? dicBufSize : 0)]; unsigned offs = 0x100; symbol = 1; do { unsigned bit; CLzmaProb *probLit; matchByte <<= 1; bit = (matchByte & offs); probLit = prob + offs + bit + symbol; GET_BIT2(probLit, symbol, offs &= ~bit, offs &= bit) } while (symbol < 0x100); } dic[dicPos++] = (Byte)symbol; processedPos++; state = kLiteralNextStates[state]; /* if (state < 4) state = 0; else if (state < 10) state -= 3; else state -= 6; */ continue; } else { UPDATE_1(prob); prob = probs + IsRep + state; IF_BIT_0(prob) { UPDATE_0(prob); state += kNumStates; prob = probs + LenCoder; } else { UPDATE_1(prob); if (checkDicSize == 0 && processedPos == 0) return SZ_ERROR_DATA; prob = probs + IsRepG0 + state; IF_BIT_0(prob) { UPDATE_0(prob); prob = probs + IsRep0Long + (state << kNumPosBitsMax) + posState; IF_BIT_0(prob) { UPDATE_0(prob); dic[dicPos] = dic[(dicPos - rep0) + ((dicPos < rep0) ? dicBufSize : 0)]; dicPos++; processedPos++; state = state < kNumLitStates ? 9 : 11; continue; } UPDATE_1(prob); } else { UInt32 distance; UPDATE_1(prob); prob = probs + IsRepG1 + state; IF_BIT_0(prob) { UPDATE_0(prob); distance = rep1; } else { UPDATE_1(prob); prob = probs + IsRepG2 + state; IF_BIT_0(prob) { UPDATE_0(prob); distance = rep2; } else { UPDATE_1(prob); distance = rep3; rep3 = rep2; } rep2 = rep1; } rep1 = rep0; rep0 = distance; } state = state < kNumLitStates ? 8 : 11; prob = probs + RepLenCoder; } { unsigned limit, offset; CLzmaProb *probLen = prob + LenChoice; IF_BIT_0(probLen) { UPDATE_0(probLen); probLen = prob + LenLow + (posState << kLenNumLowBits); offset = 0; limit = (1 << kLenNumLowBits); } else { UPDATE_1(probLen); probLen = prob + LenChoice2; IF_BIT_0(probLen) { UPDATE_0(probLen); probLen = prob + LenMid + (posState << kLenNumMidBits); offset = kLenNumLowSymbols; limit = (1 << kLenNumMidBits); } else { UPDATE_1(probLen); probLen = prob + LenHigh; offset = kLenNumLowSymbols + kLenNumMidSymbols; limit = (1 << kLenNumHighBits); } } TREE_DECODE(probLen, limit, len); len += offset; } if (state >= kNumStates) { UInt32 distance; prob = probs + PosSlot + ((len < kNumLenToPosStates ? len : kNumLenToPosStates - 1) << kNumPosSlotBits); TREE_6_DECODE(prob, distance); if (distance >= kStartPosModelIndex) { unsigned posSlot = (unsigned)distance; int numDirectBits = (int)(((distance >> 1) - 1)); distance = (2 | (distance & 1)); if (posSlot < kEndPosModelIndex) { distance <<= numDirectBits; prob = probs + SpecPos + distance - posSlot - 1; { UInt32 mask = 1; unsigned i = 1; do { GET_BIT2(prob + i, i, ; , distance |= mask); mask <<= 1; } while (--numDirectBits != 0); } } else { numDirectBits -= kNumAlignBits; do { NORMALIZE range >>= 1; { UInt32 t; code -= range; t = (0 - ((UInt32)code >> 31)); /* (UInt32)((Int32)code >> 31) */ distance = (distance << 1) + (t + 1); code += range & t; } /* distance <<= 1; if (code >= range) { code -= range; distance |= 1; } */ } while (--numDirectBits != 0); prob = probs + Align; distance <<= kNumAlignBits; { unsigned i = 1; GET_BIT2(prob + i, i, ; , distance |= 1); GET_BIT2(prob + i, i, ; , distance |= 2); GET_BIT2(prob + i, i, ; , distance |= 4); GET_BIT2(prob + i, i, ; , distance |= 8); } if (distance == (UInt32)0xFFFFFFFF) { len += kMatchSpecLenStart; state -= kNumStates; break; } } } rep3 = rep2; rep2 = rep1; rep1 = rep0; rep0 = distance + 1; if (checkDicSize == 0) { if (distance >= processedPos) return SZ_ERROR_DATA; } else if (distance >= checkDicSize) return SZ_ERROR_DATA; state = (state < kNumStates + kNumLitStates) ? kNumLitStates : kNumLitStates + 3; /* state = kLiteralNextStates[state]; */ } len += kMatchMinLen; if (limit == dicPos) return SZ_ERROR_DATA; { SizeT rem = limit - dicPos; unsigned curLen = ((rem < len) ? (unsigned)rem : len); SizeT pos = (dicPos - rep0) + ((dicPos < rep0) ? dicBufSize : 0); processedPos += curLen; len -= curLen; if (pos + curLen <= dicBufSize) { Byte *dest = dic + dicPos; ptrdiff_t src = (ptrdiff_t)pos - (ptrdiff_t)dicPos; const Byte *lim = dest + curLen; dicPos += curLen; do *(dest) = (Byte)*(dest + src); while (++dest != lim); } else { do { dic[dicPos++] = dic[pos]; if (++pos == dicBufSize) pos = 0; } while (--curLen != 0); } } } } while (dicPos < limit && buf < bufLimit); NORMALIZE; p->buf = buf; p->range = range; p->code = code; p->remainLen = len; p->dicPos = dicPos; p->processedPos = processedPos; p->reps[0] = rep0; p->reps[1] = rep1; p->reps[2] = rep2; p->reps[3] = rep3; p->state = state; return SZ_OK; } static void MY_FAST_CALL LzmaDec_WriteRem(CLzmaDec *p, SizeT limit) { if (p->remainLen != 0 && p->remainLen < kMatchSpecLenStart) { Byte *dic = p->dic; SizeT dicPos = p->dicPos; SizeT dicBufSize = p->dicBufSize; unsigned len = p->remainLen; UInt32 rep0 = p->reps[0]; if (limit - dicPos < len) len = (unsigned)(limit - dicPos); if (p->checkDicSize == 0 && p->prop.dicSize - p->processedPos <= len) p->checkDicSize = p->prop.dicSize; p->processedPos += len; p->remainLen -= len; while (len-- != 0) { dic[dicPos] = dic[(dicPos - rep0) + ((dicPos < rep0) ? dicBufSize : 0)]; dicPos++; } p->dicPos = dicPos; } } static int MY_FAST_CALL LzmaDec_DecodeReal2(CLzmaDec *p, SizeT limit, const Byte *bufLimit) { do { SizeT limit2 = limit; if (p->checkDicSize == 0) { UInt32 rem = p->prop.dicSize - p->processedPos; if (limit - p->dicPos > rem) limit2 = p->dicPos + rem; } RINOK(LzmaDec_DecodeReal(p, limit2, bufLimit)); if (p->processedPos >= p->prop.dicSize) p->checkDicSize = p->prop.dicSize; LzmaDec_WriteRem(p, limit); } while (p->dicPos < limit && p->buf < bufLimit && p->remainLen < kMatchSpecLenStart); if (p->remainLen > kMatchSpecLenStart) { p->remainLen = kMatchSpecLenStart; } return 0; } typedef enum { DUMMY_ERROR, /* unexpected end of input stream */ DUMMY_LIT, DUMMY_MATCH, DUMMY_REP } ELzmaDummy; static ELzmaDummy LzmaDec_TryDummy(const CLzmaDec *p, const Byte *buf, SizeT inSize) { UInt32 range = p->range; UInt32 code = p->code; const Byte *bufLimit = buf + inSize; CLzmaProb *probs = p->probs; unsigned state = p->state; ELzmaDummy res; { CLzmaProb *prob; UInt32 bound; unsigned ttt; unsigned posState = (p->processedPos) & ((1 << p->prop.pb) - 1); prob = probs + IsMatch + (state << kNumPosBitsMax) + posState; IF_BIT_0_CHECK(prob) { UPDATE_0_CHECK /* if (bufLimit - buf >= 7) return DUMMY_LIT; */ prob = probs + Literal; if (p->checkDicSize != 0 || p->processedPos != 0) prob += (LZMA_LIT_SIZE * ((((p->processedPos) & ((1 << (p->prop.lp)) - 1)) << p->prop.lc) + (p->dic[(p->dicPos == 0 ? p->dicBufSize : p->dicPos) - 1] >> (8 - p->prop.lc)))); if (state < kNumLitStates) { unsigned symbol = 1; do { GET_BIT_CHECK(prob + symbol, symbol) } while (symbol < 0x100); } else { unsigned matchByte = p->dic[p->dicPos - p->reps[0] + ((p->dicPos < p->reps[0]) ? p->dicBufSize : 0)]; unsigned offs = 0x100; unsigned symbol = 1; do { unsigned bit; CLzmaProb *probLit; matchByte <<= 1; bit = (matchByte & offs); probLit = prob + offs + bit + symbol; GET_BIT2_CHECK(probLit, symbol, offs &= ~bit, offs &= bit) } while (symbol < 0x100); } res = DUMMY_LIT; } else { unsigned len; UPDATE_1_CHECK; prob = probs + IsRep + state; IF_BIT_0_CHECK(prob) { UPDATE_0_CHECK; state = 0; prob = probs + LenCoder; res = DUMMY_MATCH; } else { UPDATE_1_CHECK; res = DUMMY_REP; prob = probs + IsRepG0 + state; IF_BIT_0_CHECK(prob) { UPDATE_0_CHECK; prob = probs + IsRep0Long + (state << kNumPosBitsMax) + posState; IF_BIT_0_CHECK(prob) { UPDATE_0_CHECK; NORMALIZE_CHECK; return DUMMY_REP; } else { UPDATE_1_CHECK; } } else { UPDATE_1_CHECK; prob = probs + IsRepG1 + state; IF_BIT_0_CHECK(prob) { UPDATE_0_CHECK; } else { UPDATE_1_CHECK; prob = probs + IsRepG2 + state; IF_BIT_0_CHECK(prob) { UPDATE_0_CHECK; } else { UPDATE_1_CHECK; } } } state = kNumStates; prob = probs + RepLenCoder; } { unsigned limit, offset; CLzmaProb *probLen = prob + LenChoice; IF_BIT_0_CHECK(probLen) { UPDATE_0_CHECK; probLen = prob + LenLow + (posState << kLenNumLowBits); offset = 0; limit = 1 << kLenNumLowBits; } else { UPDATE_1_CHECK; probLen = prob + LenChoice2; IF_BIT_0_CHECK(probLen) { UPDATE_0_CHECK; probLen = prob + LenMid + (posState << kLenNumMidBits); offset = kLenNumLowSymbols; limit = 1 << kLenNumMidBits; } else { UPDATE_1_CHECK; probLen = prob + LenHigh; offset = kLenNumLowSymbols + kLenNumMidSymbols; limit = 1 << kLenNumHighBits; } } TREE_DECODE_CHECK(probLen, limit, len); len += offset; } if (state < 4) { unsigned posSlot; prob = probs + PosSlot + ((len < kNumLenToPosStates ? len : kNumLenToPosStates - 1) << kNumPosSlotBits); TREE_DECODE_CHECK(prob, 1 << kNumPosSlotBits, posSlot); if (posSlot >= kStartPosModelIndex) { int numDirectBits = ((posSlot >> 1) - 1); /* if (bufLimit - buf >= 8) return DUMMY_MATCH; */ if (posSlot < kEndPosModelIndex) { prob = probs + SpecPos + ((2 | (posSlot & 1)) << numDirectBits) - posSlot - 1; } else { numDirectBits -= kNumAlignBits; do { NORMALIZE_CHECK range >>= 1; code -= range & (((code - range) >> 31) - 1); /* if (code >= range) code -= range; */ } while (--numDirectBits != 0); prob = probs + Align; numDirectBits = kNumAlignBits; } { unsigned i = 1; do { GET_BIT_CHECK(prob + i, i); } while (--numDirectBits != 0); } } } } } NORMALIZE_CHECK; return res; } static void LzmaDec_InitRc(CLzmaDec *p, const Byte *data) { p->code = ((UInt32)data[1] << 24) | ((UInt32)data[2] << 16) | ((UInt32)data[3] << 8) | ((UInt32)data[4]); p->range = 0xFFFFFFFF; p->needFlush = 0; } void LzmaDec_InitDicAndState(CLzmaDec *p, int initDic, int initState) { p->needFlush = 1; p->remainLen = 0; p->tempBufSize = 0; if (initDic) { p->processedPos = 0; p->checkDicSize = 0; p->needInitState = 1; } if (initState) p->needInitState = 1; } void LzmaDec_Init(CLzmaDec *p) { p->dicPos = 0; LzmaDec_InitDicAndState(p, True, True); } static void LzmaDec_InitStateReal(CLzmaDec *p) { UInt32 numProbs = Literal + ((UInt32)LZMA_LIT_SIZE << (p->prop.lc + p->prop.lp)); UInt32 i; CLzmaProb *probs = p->probs; for (i = 0; i < numProbs; i++) probs[i] = kBitModelTotal >> 1; p->reps[0] = p->reps[1] = p->reps[2] = p->reps[3] = 1; p->state = 0; p->needInitState = 0; } SRes LzmaDec_DecodeToDic(CLzmaDec *p, SizeT dicLimit, const Byte *src, SizeT *srcLen, ELzmaFinishMode finishMode, ELzmaStatus *status) { SizeT inSize = *srcLen; (*srcLen) = 0; LzmaDec_WriteRem(p, dicLimit); *status = LZMA_STATUS_NOT_SPECIFIED; while (p->remainLen != kMatchSpecLenStart) { int checkEndMarkNow; if (p->needFlush != 0) { for (; inSize > 0 && p->tempBufSize < RC_INIT_SIZE; (*srcLen)++, inSize--) p->tempBuf[p->tempBufSize++] = *src++; if (p->tempBufSize < RC_INIT_SIZE) { *status = LZMA_STATUS_NEEDS_MORE_INPUT; return SZ_OK; } if (p->tempBuf[0] != 0) return SZ_ERROR_DATA; LzmaDec_InitRc(p, p->tempBuf); p->tempBufSize = 0; } checkEndMarkNow = 0; if (p->dicPos >= dicLimit) { if (p->remainLen == 0 && p->code == 0) { *status = LZMA_STATUS_MAYBE_FINISHED_WITHOUT_MARK; return SZ_OK; } if (finishMode == LZMA_FINISH_ANY) { *status = LZMA_STATUS_NOT_FINISHED; return SZ_OK; } if (p->remainLen != 0) { *status = LZMA_STATUS_NOT_FINISHED; return SZ_ERROR_DATA; } checkEndMarkNow = 1; } if (p->needInitState) LzmaDec_InitStateReal(p); if (p->tempBufSize == 0) { SizeT processed; const Byte *bufLimit; if (inSize < LZMA_REQUIRED_INPUT_MAX || checkEndMarkNow) { int dummyRes = LzmaDec_TryDummy(p, src, inSize); if (dummyRes == DUMMY_ERROR) { memcpy(p->tempBuf, src, inSize); p->tempBufSize = (unsigned)inSize; (*srcLen) += inSize; *status = LZMA_STATUS_NEEDS_MORE_INPUT; return SZ_OK; } if (checkEndMarkNow && dummyRes != DUMMY_MATCH) { *status = LZMA_STATUS_NOT_FINISHED; return SZ_ERROR_DATA; } bufLimit = src; } else bufLimit = src + inSize - LZMA_REQUIRED_INPUT_MAX; p->buf = src; if (LzmaDec_DecodeReal2(p, dicLimit, bufLimit) != 0) return SZ_ERROR_DATA; processed = (SizeT)(p->buf - src); (*srcLen) += processed; src += processed; inSize -= processed; } else { unsigned rem = p->tempBufSize, lookAhead = 0; while (rem < LZMA_REQUIRED_INPUT_MAX && lookAhead < inSize) p->tempBuf[rem++] = src[lookAhead++]; p->tempBufSize = rem; if (rem < LZMA_REQUIRED_INPUT_MAX || checkEndMarkNow) { int dummyRes = LzmaDec_TryDummy(p, p->tempBuf, rem); if (dummyRes == DUMMY_ERROR) { (*srcLen) += lookAhead; *status = LZMA_STATUS_NEEDS_MORE_INPUT; return SZ_OK; } if (checkEndMarkNow && dummyRes != DUMMY_MATCH) { *status = LZMA_STATUS_NOT_FINISHED; return SZ_ERROR_DATA; } } p->buf = p->tempBuf; if (LzmaDec_DecodeReal2(p, dicLimit, p->buf) != 0) return SZ_ERROR_DATA; lookAhead -= (rem - (unsigned)(p->buf - p->tempBuf)); (*srcLen) += lookAhead; src += lookAhead; inSize -= lookAhead; p->tempBufSize = 0; } } if (p->code == 0) *status = LZMA_STATUS_FINISHED_WITH_MARK; return (p->code == 0) ? SZ_OK : SZ_ERROR_DATA; } SRes LzmaDec_DecodeToBuf(CLzmaDec *p, Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen, ELzmaFinishMode finishMode, ELzmaStatus *status) { SizeT outSize = *destLen; SizeT inSize = *srcLen; *srcLen = *destLen = 0; for (;;) { SizeT inSizeCur = inSize, outSizeCur, dicPos; ELzmaFinishMode curFinishMode; SRes res; if (p->dicPos == p->dicBufSize) p->dicPos = 0; dicPos = p->dicPos; if (outSize > p->dicBufSize - dicPos) { outSizeCur = p->dicBufSize; curFinishMode = LZMA_FINISH_ANY; } else { outSizeCur = dicPos + outSize; curFinishMode = finishMode; } res = LzmaDec_DecodeToDic(p, outSizeCur, src, &inSizeCur, curFinishMode, status); src += inSizeCur; inSize -= inSizeCur; *srcLen += inSizeCur; outSizeCur = p->dicPos - dicPos; memcpy(dest, p->dic + dicPos, outSizeCur); dest += outSizeCur; outSize -= outSizeCur; *destLen += outSizeCur; if (res != 0) return res; if (outSizeCur == 0 || outSize == 0) return SZ_OK; } } void LzmaDec_FreeProbs(CLzmaDec *p, ISzAlloc *alloc) { alloc->Free(alloc, p->probs); p->probs = 0; } static void LzmaDec_FreeDict(CLzmaDec *p, ISzAlloc *alloc) { alloc->Free(alloc, p->dic); p->dic = 0; } void LzmaDec_Free(CLzmaDec *p, ISzAlloc *alloc) { LzmaDec_FreeProbs(p, alloc); LzmaDec_FreeDict(p, alloc); } SRes LzmaProps_Decode(CLzmaProps *p, const Byte *data, unsigned size) { UInt32 dicSize; Byte d; if (size < LZMA_PROPS_SIZE) return SZ_ERROR_UNSUPPORTED; else dicSize = data[1] | ((UInt32)data[2] << 8) | ((UInt32)data[3] << 16) | ((UInt32)data[4] << 24); if (dicSize < LZMA_DIC_MIN) dicSize = LZMA_DIC_MIN; p->dicSize = dicSize; d = data[0]; if (d >= (9 * 5 * 5)) return SZ_ERROR_UNSUPPORTED; p->lc = d % 9; d /= 9; p->pb = d / 5; p->lp = d % 5; return SZ_OK; } static SRes LzmaDec_AllocateProbs2(CLzmaDec *p, const CLzmaProps *propNew, ISzAlloc *alloc) { UInt32 numProbs = LzmaProps_GetNumProbs(propNew); if (p->probs == 0 || numProbs != p->numProbs) { LzmaDec_FreeProbs(p, alloc); p->probs = (CLzmaProb *)alloc->Alloc(alloc, numProbs * sizeof(CLzmaProb)); p->numProbs = numProbs; if (p->probs == 0) return SZ_ERROR_MEM; } return SZ_OK; } SRes LzmaDec_AllocateProbs(CLzmaDec *p, const Byte *props, unsigned propsSize, ISzAlloc *alloc) { CLzmaProps propNew; RINOK(LzmaProps_Decode(&propNew, props, propsSize)); RINOK(LzmaDec_AllocateProbs2(p, &propNew, alloc)); p->prop = propNew; return SZ_OK; } SRes LzmaDec_Allocate(CLzmaDec *p, const Byte *props, unsigned propsSize, ISzAlloc *alloc) { CLzmaProps propNew; SizeT dicBufSize; RINOK(LzmaProps_Decode(&propNew, props, propsSize)); RINOK(LzmaDec_AllocateProbs2(p, &propNew, alloc)); dicBufSize = propNew.dicSize; if (p->dic == 0 || dicBufSize != p->dicBufSize) { LzmaDec_FreeDict(p, alloc); p->dic = (Byte *)alloc->Alloc(alloc, dicBufSize); if (p->dic == 0) { LzmaDec_FreeProbs(p, alloc); return SZ_ERROR_MEM; } } p->dicBufSize = dicBufSize; p->prop = propNew; return SZ_OK; } SRes LzmaDecode(Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen, const Byte *propData, unsigned propSize, ELzmaFinishMode finishMode, ELzmaStatus *status, ISzAlloc *alloc) { CLzmaDec p; SRes res; SizeT inSize = *srcLen; SizeT outSize = *destLen; *srcLen = *destLen = 0; if (inSize < RC_INIT_SIZE) return SZ_ERROR_INPUT_EOF; LzmaDec_Construct(&p); res = LzmaDec_AllocateProbs(&p, propData, propSize, alloc); if (res != 0) return res; p.dic = dest; p.dicBufSize = outSize; LzmaDec_Init(&p); *srcLen = inSize; res = LzmaDec_DecodeToDic(&p, outSize, src, srcLen, finishMode, status); if (res == SZ_OK && *status == LZMA_STATUS_NEEDS_MORE_INPUT) res = SZ_ERROR_INPUT_EOF; (*destLen) = p.dicPos; LzmaDec_FreeProbs(&p, alloc); return res; } flwrap-1.3.6/Makefile.in0000664000175000017500000006310714364737333012030 00000000000000# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/build.m4 \ $(top_srcdir)/m4/debug.m4 $(top_srcdir)/m4/fltk.m4 \ $(top_srcdir)/m4/macosx.m4 $(top_srcdir)/m4/opt.m4 \ $(top_srcdir)/m4/static.m4 $(top_srcdir)/m4/win32.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ $(am__configure_deps) $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope distdir distdir-am dist dist-all distcheck am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/build-aux/compile \ $(top_srcdir)/build-aux/config.guess \ $(top_srcdir)/build-aux/config.sub \ $(top_srcdir)/build-aux/install-sh \ $(top_srcdir)/build-aux/missing AUTHORS COPYING ChangeLog \ INSTALL README build-aux/compile build-aux/config.guess \ build-aux/config.sub build-aux/depcomp build-aux/install-sh \ build-aux/missing DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best DIST_TARGETS = dist-gzip # Exists only to be overridden by the user if desired. AM_DISTCHECK_DVI_TARGET = dvi distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AC_CONFIG_ARGS = @AC_CONFIG_ARGS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BFD_CFLAGS = @BFD_CFLAGS@ BFD_LIBS = @BFD_LIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FLTK_CFLAGS = @FLTK_CFLAGS@ FLTK_CONFIG = @FLTK_CONFIG@ FLTK_LIBS = @FLTK_LIBS@ FLUID = @FLUID@ FLWRAP_BUILD_CPPFLAGS = @FLWRAP_BUILD_CPPFLAGS@ FLWRAP_BUILD_CXXFLAGS = @FLWRAP_BUILD_CXXFLAGS@ FLWRAP_BUILD_LDADD = @FLWRAP_BUILD_LDADD@ FLWRAP_BUILD_LDFLAGS = @FLWRAP_BUILD_LDFLAGS@ FLWRAP_VERSION = @FLWRAP_VERSION@ FLWRAP_VERSION_MAJOR = @FLWRAP_VERSION_MAJOR@ FLWRAP_VERSION_MINOR = @FLWRAP_VERSION_MINOR@ FLWRAP_VERSION_PATCH = @FLWRAP_VERSION_PATCH@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAC_UNIVERSAL_CFLAGS = @MAC_UNIVERSAL_CFLAGS@ MAC_UNIVERSAL_LDFLAGS = @MAC_UNIVERSAL_LDFLAGS@ MAKEINFO = @MAKEINFO@ MAKENSIS = @MAKENSIS@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ OPT_CFLAGS = @OPT_CFLAGS@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PTW32_CFLAGS = @PTW32_CFLAGS@ PTW32_LIBS = @PTW32_LIBS@ RDYNAMIC = @RDYNAMIC@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WINDRES = @WINDRES@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -I m4 SUBDIRS = src all: all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-zstd: distdir tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst $(am__post_remove_distdir) dist-tarZ: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ *.tar.zst*) \ zstd -dc $(distdir).tar.zst | $(am__untar) ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build/sub \ && ../../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--refresh check check-am clean clean-cscope clean-generic \ cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \ dist-zstd distcheck distclean distclean-generic distclean-tags \ distcleancheck distdir distuninstallcheck dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags tags-am uninstall uninstall-am .PRECIOUS: Makefile @HAVE_FLUID_TRUE@flgen: @HAVE_FLUID_TRUE@ (cd src && $(MAKE) $(AM_MAKEFLAGS) $@) @DARWIN_TRUE@appbundle: @DARWIN_TRUE@ (cd src && $(MAKE) $(AM_MAKEFLAGS) $@) @HAVE_NSIS_TRUE@nsisinst: @HAVE_NSIS_TRUE@ (cd src && $(MAKE) $(AM_MAKEFLAGS) $@) #EXTRA_DIST = build-aux/config.rpath # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flwrap-1.3.6/configure.ac0000664000175000017500000000603414364737324012245 00000000000000# -*- Autoconf -*- # Process this file with autoconf to produce a configure script. # Generic support for FLTK applications AC_COPYRIGHT([Copyright (C) 2009 Dave Freese, W1HKJ (w1hkj AT w1hkj DOT com)]) AC_PREREQ([2.63]) dnl major and minor must be integers; patch may dnl contain other characters or be empty m4_define(FLWRAP_MAJOR, [1]) m4_define(FLWRAP_MINOR, [3]) m4_define(FLWRAP_PATCH, [.6]) AC_INIT([flwrap], FLWRAP_MAJOR.FLWRAP_MINOR[]FLWRAP_PATCH, [w1hkj AT w1hkj DOT com]) AC_SUBST([FLWRAP_VERSION_MAJOR], [FLWRAP_MAJOR]) AC_SUBST([FLWRAP_VERSION_MINOR], [FLWRAP_MINOR]) AC_SUBST([FLWRAP_VERSION_PATCH], [FLWRAP_PATCH]) AC_SUBST([FLWRAP_VERSION], [FLWRAP_MAJOR.FLWRAP_MINOR[]FLWRAP_PATCH]) AC_DEFINE([FLWRAP_VERSION_MAJOR], [FLWRAP_MAJOR], [major version number]) AC_DEFINE([FLWRAP_VERSION_MINOR], [FLWRAP_MINOR], [minor version number]) AC_DEFINE([FLWRAP_VERSION_PATCH], ["FLWRAP_PATCH"], [patch/alpha version string]) AC_DEFINE([FLWRAP_VERSION], ["FLWRAP_MAJOR.FLWRAP_MINOR[]FLWRAP_PATCH"], [version string]) AC_SUBST([AC_CONFIG_ARGS], [$ac_configure_args]) AC_CONFIG_AUX_DIR([build-aux]) # define build, build_cpu, build_vendor, build_os AC_CANONICAL_BUILD # define host, host_cpu, host_vendor, host_os AC_CANONICAL_HOST # define target, target_cpu, target_vendor, target_os AC_CANONICAL_TARGET AM_INIT_AUTOMAKE([-Wall foreign std-options subdir-objects 1.9.6]) #change the next config item for the specific application src's AC_CONFIG_SRCDIR([src/base64.cxx]) AC_CONFIG_HEADERS([src/config.h]) AC_CONFIG_MACRO_DIR([m4]) # Checks for programs. AC_PROG_CXX AC_PROG_CC AC_USE_SYSTEM_EXTENSIONS # Checks for libraries. # Checks for header files. AC_CHECK_HEADERS([stdlib.h string.h]) # Checks for typedefs, structures, and compiler characteristics. AC_HEADER_STDBOOL AC_TYPE_SIZE_T # Checks for library functions. AC_CHECK_FUNCS([strstr]) ### static flag # Set ac_cv_static to yes/no # Substitute RTLIB in Makefile AC_FL_STATIC ### optimizations # Set ac_cv_opt to arg # Substitute OPT_FLAGS in Makefile AC_FL_OPT ### debug flag # Set ac_cv_debug to yes/no # Override CXXFLAGS # Set ENABLE_DEBUG Makefile conditional # Substitute RDYNAMIC in Makefile AC_FL_DEBUG ###### OS support ### OSX # Set ac_cv_mac_universal to yes/no # Set DARWIN Makefile conditional # Substitute MAC_UNIVERSAL_CFLAGS and MAC_UNIVERSAL_LDFLAGS in Makefile AC_FL_MACOSX ### win32 # Set WIN32 Makefile conditional # Set HAVE_WINDRES Makefile conditional # Substitute WINDRES in Makefile AC_FL_WIN32 ### FLTK # Substitute FLTK_CFLAGS and FLTK_LIBS in Makefile # Set FLUID variable # Set HAVE_FLUID Makefile conditional AC_CHECK_FLTK ### build info # Define various build variables in config.h AC_FLWRAP_BUILD_INFO AC_CONFIG_FILES([Makefile src/Makefile]) AC_OUTPUT ### summary AC_MSG_RESULT([ Configuration summary: Version ..................... $VERSION Target OS ................... $target_os Static linking .............. $ac_cv_static CPU optimizations ........... $ac_cv_opt Debugging ................... $ac_cv_debug ]) flwrap-1.3.6/ChangeLog0000664000175000017500000000327414364737324011534 000000000000002023-01-27 dave-w1hkj 60e102e: Version 1.3.6 7cda585: gcc 11.1.1. update 2020-02-10 David Freese f25f0ad: mkappbundle 16a63c7: documentation update 4a87499: Version 1.3.5 8abeee7: Build script 2d88f25: OS X build script d6d43b9: win mingw 18f16df: buildmxe 2016-07-04 Robert Cunnings ca5d9de: build fixes 2015-06-11 Kamal Mostafa 97dac93: BUILD_{DATE,USER,HOST} 2014-06-09 David Freese 6d16b72: doxygen doc files 9db37fe: Version 1.3.4 dadc83a: Corrupt correction 4bc0b34: Version 1.3.3 15eacc5: Corrupt filenames 56bdbdf: Bool conditional compile 52868d4: FLTK version 1b35ff0: Version 1.3.2 433f4ec: FLTK-1.3 mods 7a41101: Escape sequences 255b1db: Version 1.3.1 cb3f248: LZMA failure b8c5ec1: Version 1.3.0 c22a5b8: Control-High bit Codes b4af542: Version 1.2.0 7070593: Paradigm change 99eb52b: Version 1.1.11 6b55888: OS X command line parsing 1d659b2: Drag-n-Drop report 18f7b19: Version 1.1.1 5dfcaf8: Version 1.1.0b4 b74c86d: Use Compress fix b2715e2: Version 1.1.0b3 8982d91: Parse Args Correction e6f19e9: Version 1.1.0b2 f57eb14: Parse Args ab46d0c: Version 1.1.0b1 c241148: Version 1.0.4 8b7fe83: Compress Always Command Line Switch 20198d9: Compress Always-Never 6cf5fff: Version 1.0.3 3d461cf: Noise Suppression 4f08b10: Version 1.0.2 74d36a1: NSIS script mod 42ff9fb: Build fixes 96a0349: Binary File Test 2009-08-03 Stelios Bounanos b17034d: Add LZMA compression ab20dcf: Add OS X app bundling d97bbb1: Fix flags a43bc47: Remove generated files 2009-07-28 David Freese d53ae13: Version 1.0.0 flwrap-1.3.6/AUTHORS0000644000175000017500000000021514304245213011001 00000000000000AUTHOR: Dave Freese CALLSIGN: W1HKJ EMAIL: w1hkj@w1hkj.com Author can be contacted on the linuxham yahoo group EMAIL: linuxham@yahoo.com flwrap-1.3.6/scripts/0000775000175000017500000000000014364737360011523 500000000000000flwrap-1.3.6/scripts/mkappbundle.sh0000755000175000017500000000601314304245212014262 00000000000000#!/bin/sh ### Script to create the .app structure for osx ### 20180201 David Freese W1HKJ if [ $# -ne 2 ]; then echo "Syntax: $0 data-dir build-dir" >&2 exit 1 fi upcase1() { sed 'h; s/\(^.\).*/\1/; y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/; G; s/\n.//' } function copy_libs() { list="$1" while test "x$list" != "x"; do change="$list" list="" for obj in $change; do for lib in `otool -L $obj | \ sed -n 's!^.*[[:space:]]\([^[:space:]]*\.dylib\).*$!\1!p' | \ grep -Ev '^/(usr/lib|System)'`; do libfn="`basename $lib`" if ! test -f "Frameworks/$libfn"; then cp "$lib" "Frameworks/$libfn" install_name_tool -id "@executable_path/../Frameworks/$libfn" "Frameworks/$libfn" list="$list Frameworks/$libfn" fi install_name_tool -change "$lib" "@executable_path/../Frameworks/$libfn" "$obj" done done done } function bundle() { appname="${binary}-${appversion}.app" cd "$build" echo "creating ${build}/$bundle_dir/$appname" $mkinstalldirs "$bundle_dir/$appname/Contents/MacOS" "$bundle_dir/$appname/Contents/Resources" cd "$bundle_dir" $INSTALL_PROGRAM "${build}/$binary" "$appname/Contents/MacOS" test "x$NOSTRIP" = "x" && ${STRIP:-strip} -S "$appname/Contents/MacOS/$binary" $INSTALL_DATA "$icon" "$appname/Contents/Resources" echo "APPL${signature}" > "$appname/Contents/PkgInfo" sed -e "s!%%IDENTIFIER%%!${identifier}!g; s!%%NAME%%!${name}!g;\ s!%%SIGNATURE%%!${signature}!g; s!%%BINARY%%!${binary}!g;\ s!%%VERSION%%!${version}!g; s!%%ICON%%!${icon##*/}!g;" < "$plist" > "$appname/Contents/Info.plist" if grep '%%[A-Z]*%%' "$appname/Contents/Info.plist"; then echo "E: unsubstituted variables in $appname/Contents/Info.plist" >&2 exit 1 fi $mkinstalldirs "$appname/Contents/Frameworks" cd "$appname/Contents" copy_libs "MacOS/$binary" } #======================================================================= if [ -z "$PACKAGE_TARNAME" ]; then echo "E: \$PACKAGE_TARNAME undefined" exit 1 fi PWD=`pwd` data="${PWD}/$1" build="${PWD}/$2" bundle_dir="$APPBUNDLE" # more sanity checks for d in "$data" "$build"; do test -d "$d" && continue echo "E: ${d}: not a directory" >&2 exit 1 done if ! test -w "$build"; then echo "E: ${build} is not writeable" >&2 exit 1 fi plist="${data}/mac/Info.plist.in" flwrap_icon="${data}/mac/flwrap.icns" for f in "$plist" "$flwrap_icon"; do test -r "$f" && continue echo "E: ${f}: not readable" >&2 exit 1 done set -e identifier="com.w1hkj.$PACKAGE_TARNAME" name=$(echo "$PACKAGE_TARNAME" | upcase1) # we'll use the first four consonants as the signature signature="$(echo $PACKAGE_TARNAME | sed 's/[aeiouAEIOU]//g; s/\(^....\).*/\1/')" signature="$PACKAGE_TARNAME" binary="$PACKAGE_TARNAME" icon="$flwrap_icon" version="${flwrap_VERSION_MAJOR}.${flwrap_VERSION_MINOR}.${flwrap_VERSION_PATCH}" appversion="$flwrap_VERSION" bundle cd "$build" echo "creating disk image" echo " source: " $bundle_dir echo " target: " ${APPBUNDLE}.dmg hdiutil create -ov -srcfolder "$bundle_dir" -format UDZO -tgtimagekey zlib-level=9 "${APPBUNDLE}.dmg" flwrap-1.3.6/scripts/mknsisinst.sh0000755000175000017500000000163714304245212014171 00000000000000#!/bin/sh ### Script to create a win32 installer file ### 20090510 Stelios Bounanos M0GLD, Dave Freese W1HKJ ### change for the target application FLWRAP_name=flwrap FLWRAP_bin=flwrap.exe if [ $# -ne 2 ]; then echo "Syntax: $0 data-dir build-dir" >&2 exit 1 fi if [ -z "$PACKAGE_TARNAME" ]; then echo "E: \$PACKAGE_TARNAME undefined" exit 1 fi PWD=`pwd` data="${PWD}/$1" build="${PWD}/$2" # more sanity checks for d in "$data" "$build"; do test -d "$d" && continue echo "E: ${d}: not a directory" >&2 exit 1 done if ! test -w "$build"; then echo "E: ${build} is not writeable" >&2 exit 1 fi set -e def="$def -DFLWRAP_NAME=$FLWRAP_name -DFLWRAP_BINARY=$FLWRAP_bin -DFLWRAP_VERSION=$PACKAGE_VERSION" $MAKENSIS -V2 -NOCD -D"INSTALLER_FILE=$INSTALLER_FILE" -D"LICENSE_FILE=$data/../COPYING" \ -D"SUPPORT_URL=$PACKAGE_HOME" -D"UPDATES_URL=$PACKAGE_DL" $def "$data/win32/fl_app.nsi" flwrap-1.3.6/scripts/build4mingw.sh0000755000175000017500000000061714304245212014211 00000000000000#!/bin/sh ### Script to build a win32 installation ./configure \ $PKGCFG \ --host=i686-w64-mingw32.static \ --with-ptw32=$PREFIX/i686-w64-mingw32.static \ --enable-static \ PTW32_LIBS="-lpthread -lpcreposix -lpcre" \ FLTK_CONFIG=$PREFIX/bin/i686-w64-mingw32.static-fltk-config make clean make -j 4 $PREFIX/bin/i686-pc-mingw32-strip src/flwrap.exe make nsisinst mv src/*setup*exe . flwrap-1.3.6/data/0000775000175000017500000000000014364737360010745 500000000000000flwrap-1.3.6/data/flwrap.xpm0000644000175000017500000005506714304245211012700 00000000000000/* XPM */ static char * flwrap_xpm[] = { "48 48 1140 2", " c None", ". c #967148", "+ c #896842", "@ c #6F5436", "# c #8F6942", "$ c #BD8C58", "% c #BB8C58", "& c #BD8E5A", "* c #C1935E", "= c #BD905B", "- c #BB8E5A", "; c #B28655", "> c #A47D4F", ", c #987349", "' c #8A6840", ") c #644C30", "! c #8B6942", "~ c #BF905B", "{ c #BB8A57", "] c #AF8050", "^ c #AF7F4E", "/ c #AE7E4D", "( c #AE7E4E", "_ c #B18353", ": c #B48858", "< c #B68958", "[ c #B88A58", "} c #BA8C58", "| c #BC8E5B", "1 c #C0915C", "2 c #BD8F5B", "3 c #B68A57", "4 c #AF8453", "5 c #A47B4D", "6 c #8A6842", "7 c #6D5133", "8 c #775939", "9 c #846440", "0 c #6A5033", "a c #7D5E3C", "b c #B88B58", "c c #B58957", "d c #B88C59", "e c #BA8E5A", "f c #BB8D5A", "g c #B58856", "h c #B58858", "i c #B48857", "j c #B48756", "k c #B38555", "l c #B08252", "m c #AF8251", "n c #AE8151", "o c #B08352", "p c #A97E51", "q c #A87C4D", "r c #B88A57", "s c #BE905C", "t c #BF925D", "u c #BF915D", "v c #AB8152", "w c #A27A4D", "x c #8E6B45", "y c #725636", "z c #735635", "A c #9E774C", "B c #B68A58", "C c #A67D4F", "D c #A17A4E", "E c #9E784D", "F c #9C764B", "G c #9A754B", "H c #A57E51", "I c #B38756", "J c #B78B58", "K c #BC8F5B", "L c #BA8D5A", "M c #B58A58", "N c #AD8152", "O c #997249", "P c #A47A4D", "Q c #B48554", "R c #B08150", "S c #AE7D4D", "T c #B08151", "U c #B48755", "V c #BC8E5A", "W c #BF915C", "X c #B78A58", "Y c #A77F50", "Z c #977248", "` c #8D6A43", " . c #6C5233", ".. c #966D45", "+. c #B98A57", "@. c #B48856", "#. c #B78C59", "$. c #AE8453", "%. c #A67E50", "&. c #9F784C", "*. c #957046", "=. c #906D46", "-. c #8A6943", ";. c #8F6D46", ">. c #967249", ",. c #A07A4E", "'. c #AB8354", "). c #99734A", "!. c #906C45", "~. c #B08554", "{. c #BD8F5C", "]. c #B98D5A", "^. c #B98B59", "/. c #B78957", "(. c #B48655", "_. c #B38554", ":. c #B58757", "<. c #B48656", "[. c #B28554", "}. c #B18352", "|. c #B58855", "1. c #B98C58", "2. c #BA8D59", "3. c #C3935D", "4. c #B78A57", "5. c #654D30", "6. c #957147", "7. c #BE8F5B", "8. c #AF804F", "9. c #AE7D4C", "0. c #B08251", "a. c #B58958", "b. c #B58857", "c. c #B78B59", "d. c #B28756", "e. c #AA8051", "f. c #A0794D", "g. c #916E46", "h. c #7E5E3C", "i. c #795B3A", "j. c #906C44", "k. c #8E6B44", "l. c #8A6843", "m. c #947047", "n. c #9F794D", "o. c #AC8253", "p. c #B18656", "q. c #BA8E5B", "r. c #B98C59", "s. c #B38655", "t. c #B28452", "u. c #B18252", "v. c #B28354", "w. c #B78858", "x. c #9F764B", "y. c #876641", "z. c #4E3B26", "A. c #9A774C", "B. c #C3955E", "C. c #BF915B", "D. c #B38856", "E. c #B48957", "F. c #B58756", "G. c #B28453", "H. c #B08353", "I. c #B18555", "J. c #AE8353", "K. c #A37A4D", "L. c #A97F50", "M. c #B98C5A", "N. c #BB8F5B", "O. c #B98D59", "P. c #AF8454", "Q. c #A97F51", "R. c #A1794D", "S. c #9D774C", "T. c #9C764C", "U. c #9D764B", "V. c #A27A4F", "W. c #AD8455", "X. c #AE8555", "Y. c #B28757", "Z. c #B68B59", "`. c #B88D5A", " + c #9E754A", ".+ c #81603D", "++ c #9B764C", "@+ c #E8AE71", "#+ c #D8A56C", "$+ c #D8AA6E", "%+ c #D2A56B", "&+ c #CCA168", "*+ c #C49761", "=+ c #BE925D", "-+ c #B18453", ";+ c #AE8152", ">+ c #A47A4E", ",+ c #AE8153", "'+ c #B58655", ")+ c #B28454", "!+ c #AE8354", "~+ c #A67D50", "{+ c #A17A4D", "]+ c #A37C4F", "^+ c #A57D50", "/+ c #B28857", "(+ c #977047", "_+ c #886742", ":+ c #CD794A", "<+ c #C57549", "[+ c #C67448", "}+ c #CF8A58", "|+ c #D08B57", "1+ c #DAA168", "2+ c #DFAE71", "3+ c #DCAA6F", "4+ c #D8A76C", "5+ c #D2A369", "6+ c #C89A63", "7+ c #C1955F", "8+ c #B28656", "9+ c #A27C4F", "0+ c #B38656", "a+ c #B58959", "b+ c #B68A59", "c+ c #B18655", "d+ c #957048", "e+ c #8F6D45", "f+ c #8B6A44", "g+ c #876742", "h+ c #CE7D4D", "i+ c #C16C42", "j+ c #C37145", "k+ c #C6794B", "l+ c #C1653C", "m+ c #CA7F4F", "n+ c #D8A96F", "o+ c #D7A46A", "p+ c #D9A66C", "q+ c #DDA96E", "r+ c #DFAC6F", "s+ c #E1AF72", "t+ c #DFAC70", "u+ c #DBAA6E", "v+ c #D3A369", "w+ c #CC9D65", "x+ c #B18857", "y+ c #C89761", "z+ c #C99861", "A+ c #BE905A", "B+ c #B38857", "C+ c #B68957", "D+ c #B68959", "E+ c #B28252", "F+ c #AD7C4C", "G+ c #AE7F4E", "H+ c #BA8C59", "I+ c #AD8252", "J+ c #80613D", "K+ c #856541", "L+ c #926F46", "M+ c #CE8554", "N+ c #C16E43", "O+ c #C47548", "P+ c #BE663E", "Q+ c #C77B4C", "R+ c #D5A66D", "S+ c #D5A56C", "T+ c #D6A36A", "U+ c #D8A56B", "V+ c #D8A66C", "W+ c #DAA76D", "X+ c #DBA76D", "Y+ c #DFAB6F", "Z+ c #E8B274", "`+ c #B68C5B", " @ c #C89863", ".@ c #CB9B64", "+@ c #D6A268", "@@ c #DDA96D", "#@ c #D3A066", "$@ c #CD9C64", "%@ c #C89860", "&@ c #C2945E", "*@ c #B58A57", "=@ c #B78C5A", "-@ c #B28353", ";@ c #B78655", ">@ c #A67A4E", ",@ c #7D5F3C", "'@ c #84643F", ")@ c #8B6943", "!@ c #876741", "~@ c #856440", "{@ c #CF8756", "]@ c #C47246", "^@ c #C47044", "/@ c #C98050", "(@ c #C36E43", "_@ c #C98252", ":@ c #D09963", "<@ c #D4A36A", "[@ c #D5A269", "}@ c #D7A46B", "|@ c #DAA76C", "1@ c #DBA86E", "2@ c #E1AD71", "3@ c #B68D5B", "4@ c #9F794E", "5@ c #A17A50", "6@ c #BB8F5C", "7@ c #DBA86D", "8@ c #DDA76B", "9@ c #D8A267", "0@ c #DCAB6F", "a@ c #D8A96E", "b@ c #CFA168", "c@ c #C89B63", "d@ c #C1935D", "e@ c #B68C5A", "f@ c #9D764A", "g@ c #856441", "h@ c #866641", "i@ c #BD905D", "j@ c #AB8355", "k@ c #B68454", "l@ c #C58D5B", "m@ c #C57C4E", "n@ c #C7784B", "o@ c #CF8D5A", "p@ c #D7A76D", "q@ c #D5A36A", "r@ c #D6A46B", "s@ c #D7A56B", "t@ c #B58B5A", "u@ c #B78955", "v@ c #BD8B53", "w@ c #BB8A54", "x@ c #C6965F", "y@ c #D7A76C", "z@ c #D1935F", "A@ c #CE8050", "B@ c #CE8656", "C@ c #D28957", "D@ c #DB9660", "E@ c #DE9F66", "F@ c #E2AB6E", "G@ c #DEAA6E", "H@ c #D6A76C", "I@ c #C1915E", "J@ c #9A7248", "K@ c #896843", "L@ c #886540", "M@ c #866540", "N@ c #866541", "O@ c #745737", "P@ c #82623E", "Q@ c #8C6A44", "R@ c #7E5F3D", "S@ c #AA8254", "T@ c #A37E51", "U@ c #A07B4F", "V@ c #A68154", "W@ c #AF8858", "X@ c #B68A5A", "Y@ c #BC8F5D", "Z@ c #CB9B66", "`@ c #D5A46B", " # c #D7A56C", ".# c #B08656", "+# c #C89964", "@# c #EDDDC9", "## c #EAD4BB", "$# c #DDBC97", "%# c #D7AA77", "&# c #D2A066", "*# c #D3A169", "=# c #D6A66C", "-# c #D9A86D", ";# c #CD9A64", "># c #BF8A58", ",# c #C08352", "'# c #C1794C", ")# c #C78051", "!# c #CD8252", "~# c #D58E5B", "{# c #D9935E", "]# c #E8AA70", "^# c #C39661", "/# c #876640", "(# c #8D6B44", "_# c #87643F", ":# c #7C5E3B", "<# c #7F5F3D", "[# c #7E5F3C", "}# c #8A6942", "|# c #7A5C3B", "1# c #C2935F", "2# c #CD9C65", "3# c #C79862", "4# c #BC8F5C", "5# c #CB9B65", "6# c #C0925F", "7# c #C79863", "8# c #D4A36B", "9# c #D3A26A", "0# c #D3A269", "a# c #D5A26A", "b# c #DEAA6F", "c# c #B08655", "d# c #C99C6A", "e# c #D9D5CE", "f# c #C4C4BF", "g# c #E9EDEF", "h# c #EFDEC9", "i# c #CF9A5D", "j# c #D9A86E", "k# c #D4A66C", "l# c #D0A169", "m# c #CB9A64", "n# c #C8935F", "o# c #C28757", "p# c #D89D66", "q# c #BE925F", "r# c #896741", "s# c #8C6A43", "t# c #624A2F", "u# c #B78B5A", "v# c #CA9A64", "w# c #C79861", "x# c #CA9963", "y# c #CC9C65", "z# c #D09E67", "A# c #CE9E67", "B# c #D19F68", "C# c #D2A169", "D# c #D1A16A", "E# c #D2A068", "F# c #D3A168", "G# c #D4A26A", "H# c #DDA86E", "I# c #AE8455", "J# c #CB9F6D", "K# c #CDCBC5", "L# c #A3A19A", "M# c #CFCFCD", "N# c #EAD8C2", "O# c #D2A168", "P# c #D4A268", "Q# c #D3A16A", "R# c #D6A36B", "S# c #DCA86E", "T# c #DDAA70", "U# c #DAAA70", "V# c #E1AE72", "W# c #BA8D5B", "X# c #886741", "Y# c #896742", "Z# c #795C3A", "`# c #82623F", " $ c #80613E", ".$ c #80603E", "+$ c #5A442B", "@$ c #C39560", "#$ c #C59661", "$$ c #C79762", "%$ c #C99A64", "&$ c #CA9B65", "*$ c #CC9B65", "=$ c #CE9D68", "-$ c #D09F6A", ";$ c #D09F68", ">$ c #CF9B62", ",$ c #D19E65", "'$ c #DAA66C", ")$ c #AD8454", "!$ c #C79A66", "~$ c #CFBCA4", "{$ c #B0A89C", "]$ c #AAAAA6", "^$ c #D2C1AB", "/$ c #D19D61", "($ c #D1A069", "_$ c #D9A66D", ":$ c #E2AE72", "<$ c #B88D5B", "[$ c #81623F", "}$ c #8A6944", "|$ c #57412A", "1$ c #9F784D", "2$ c #BE915D", "3$ c #C49560", "4$ c #C39460", "5$ c #C59762", "6$ c #C99964", "7$ c #CD9D67", "8$ c #CC9B64", "9$ c #D6AF82", "0$ c #D5A874", "a$ c #D6A166", "b$ c #D7A265", "c$ c #B08758", "d$ c #BE8E58", "e$ c #CD9D69", "f$ c #D3AB7E", "g$ c #D3AB7D", "h$ c #CE9B64", "i$ c #CF9E66", "j$ c #D0A068", "k$ c #D4A269", "l$ c #DAA76E", "m$ c #E0AC70", "n$ c #B68B5A", "o$ c #7B5D3B", "p$ c #765838", "q$ c #795C3B", "r$ c #846540", "s$ c #826340", "t$ c #695033", "u$ c #644B2F", "v$ c #926F47", "w$ c #A77F52", "x$ c #BB8E5C", "y$ c #C1935F", "z$ c #C69762", "A$ c #C89963", "B$ c #CB9C65", "C$ c #D09E64", "D$ c #D3CBBE", "E$ c #989996", "F$ c #B1A493", "G$ c #DAB890", "H$ c #B18758", "I$ c #B08556", "J$ c #A57B4C", "K$ c #AF8352", "L$ c #CA9A65", "M$ c #CF9E67", "N$ c #D0A069", "O$ c #D2A069", "P$ c #D6A46C", "Q$ c #D8A66D", "R$ c #E0AC71", "S$ c #AF8656", "T$ c #7A5D3C", "U$ c #81623E", "V$ c #81613E", "W$ c #634A2F", "X$ c #755938", "Y$ c #8D6C46", "Z$ c #B58A59", "`$ c #B98C5B", " % c #BD915F", ".% c #BE915E", "+% c #C19360", "@% c #C39561", "#% c #CB9A63", "$% c #D0A573", "%% c #C6A988", "&% c #B7AEA1", "*% c #D8C7B1", "=% c #B08451", "-% c #AE8557", ";% c #B98D5C", ">% c #B38959", ",% c #BB8F5D", "'% c #D4A26B", ")% c #DDA96F", "!% c #AC8355", "~% c #7C5D3B", "{% c #80603D", "]% c #81613F", "^% c #6B5034", "/% c #684E32", "(% c #795838", "_% c #916D45", ":% c #694F32", "<% c #AB8153", "[% c #CE9C65", "}% c #C09561", "|% c #BB9360", "1% c #BB935F", "2% c #BA8D5C", "3% c #BF915E", "4% c #C39461", "5% c #C69863", "6% c #B48551", "7% c #D2A16B", "8% c #AE8556", "9% c #C59662", "0% c #C69862", "a% c #C99A63", "b% c #CC9C66", "c% c #D09F69", "d% c #D1A169", "e% c #DCA86F", "f% c #AD8557", "g% c #7C5C3A", "h% c #6C5133", "i% c #664D31", "j% c #664C31", "k% c #7D5D3B", "l% c #8F6B45", "m% c #674E32", "n% c #996C45", "o% c #D17B4C", "p% c #CB7B4C", "q% c #D08957", "r% c #D0915D", "s% c #CE9761", "t% c #C79963", "u% c #C29561", "v% c #B98E5C", "w% c #C19460", "x% c #BA8E5C", "y% c #B08858", "z% c #A98053", "A% c #AE8456", "B% c #A88054", "C% c #C59663", "D% c #CC9D66", "E% c #CD9D66", "F% c #CF9F68", "G% c #DAA86E", "H% c #A47D51", "I% c #7B5D3A", "J% c #513E28", "K% c #755838", "L% c #886743", "M% c #8B6944", "N% c #896440", "O% c #CE784A", "P% c #C16C41", "Q% c #C57648", "R% c #C57447", "S% c #C3633B", "T% c #D79C64", "U% c #DAA66B", "V% c #CB9C64", "W% c #C09360", "X% c #BB905D", "Y% c #BA8E5D", "Z% c #AC8456", "`% c #B88C5B", " & c #A88053", ".& c #B58A5A", "+& c #C89A64", "@& c #C99A65", "#& c #CA9B64", "$& c #CD9E67", "%& c #D2A26A", "&& c #DBAA70", "*& c #A57F52", "=& c #674E31", "-& c #60482E", ";& c #906E46", ">& c #5E472E", ",& c #7B5B3B", "'& c #CF7C4D", ")& c #C27145", "!& c #C16D42", "~& c #C16A40", "{& c #CE8C59", "]& c #D7A86E", "^& c #D6A46A", "/& c #D8A56A", "(& c #D9A56C", "_& c #9C774E", ":& c #95724A", "<& c #AA8457", "[& c #A88254", "}& c #B38A59", "|& c #B78C5B", "1& c #BC915E", "2& c #CA9B66", "3& c #CE9E68", "4& c #9D764D", "5& c #96724A", "6& c #B88D5C", "7& c #7A5C39", "8& c #654C31", "9& c #725637", "0& c #83633F", "a& c #554129", "b& c #644C32", "c& c #D48856", "d& c #C57346", "e& c #C8774A", "f& c #C87A4C", "g& c #C57347", "h& c #CE915C", "i& c #D9A76C", "j& c #B88F5D", "k& c #B88555", "l& c #D1915D", "m& c #C9925E", "n& c #BF925F", "o& c #B48D5B", "p& c #AD8A5B", "q& c #A98456", "r& c #B48959", "s& c #BD915E", "t& c #AB8254", "u& c #99744B", "v& c #A67E52", "w& c #7F603D", "x& c #644B30", "y& c #785938", "z& c #8E6C45", "A& c #4D3A25", "B& c #B98F5D", "C& c #AA8154", "D& c #B78656", "E& c #C58958", "F& c #C57A4C", "G& c #C8784B", "H& c #D5A068", "I& c #DEAB6F", "J& c #B9915F", "K& c #AD774B", "L& c #C66E42", "M& c #C46F44", "N& c #D18856", "O& c #CF8251", "P& c #D19862", "Q& c #CB9E67", "R& c #B28859", "S& c #AA8355", "T& c #A88154", "U& c #B28959", "V& c #BA8F5E", "W& c #C49561", "X& c #654C30", "Y& c #8C6943", "Z& c #80623E", "`& c #765837", " * c #926E47", ".* c #3F3120", "+* c #B08757", "@* c #A17C50", "#* c #AB8657", "$* c #B18858", "%* c #C29460", "&* c #D7A56A", "** c #BA905D", "=* c #AE7A4E", "-* c #C67246", ";* c #C57649", ">* c #C2683E", ",* c #CC8252", "'* c #DCAC70", ")* c #DDA86D", "!* c #CB9C66", "~* c #B38A5A", "{* c #AF8859", "]* c #BF9460", "^* c #7F5E3B", "/* c #916D46", "(* c #785B39", "_* c #D09F67", ":* c #C69560", "<* c #BC8E5C", "[* c #BE915F", "}* c #D5A369", "|* c #AD7C50", "1* c #C66F44", "2* c #C37347", "3* c #C27045", "4* c #C0683E", "5* c #CA8252", "6* c #D7AC70", "7* c #DFAB70", "8* c #E1AD70", "9* c #E3AE71", "0* c #876743", "a* c #664D32", "b* c #C99963", "c* c #C69761", "d* c #D1A06A", "e* c #AB7D51", "f* c #C78555", "g* c #C47749", "h* c #C97A4C", "i* c #C36B41", "j* c #C87D4E", "k* c #D19B64", "l* c #DCA96E", "m* c #DFAA70", "n* c #E9B274", "o* c #AA8152", "p* c #896942", "q* c #83633E", "r* c #85643F", "s* c #C3945F", "t* c #D09D64", "u* c #D09C62", "v* c #A37C50", "w* c #A17D51", "x* c #A98355", "y* c #B08455", "z* c #C18D5B", "A* c #C38252", "B* c #C77B4D", "C* c #D0935E", "D* c #D7A76E", "E* c #D6A56B", "F* c #E3B073", "G* c #493824", "H* c #A77E51", "I* c #C09260", "J* c #D1A776", "K* c #D7AF80", "L* c #D9A365", "M* c #B78A5A", "N* c #A87F52", "O* c #A27C50", "P* c #A78254", "Q* c #AB8556", "R* c #CD9C66", "S* c #A27B4F", "T* c #654D31", "U* c #554029", "V* c #8C6944", "W* c #A88052", "X* c #B28758", "Y* c #C29560", "Z* c #C59763", "`* c #C6945B", " = c #D9BA96", ".= c #A8ACAC", "+= c #A29A8D", "@= c #D0B494", "#= c #D09E66", "$= c #C99962", "%= c #D5A36B", "&= c #DFAA6F", "*= c #9D764C", "== c #6F5334", "-= c #856540", ";= c #634B30", ">= c #785B3A", ",= c #282216", "'= c #2A2317", ")= c #93794D", "!= c #6B5537", "~= c #644C31", "{= c #705436", "]= c #957149", "^= c #A17B4F", "/= c #AC8354", "(= c #C0935F", "_= c #C5A076", ":= c #B5A28A", "<= c #C7BEB2", "[= c #BC9366", "}= c #A37A4E", "|= c #C99862", "1= c #C99863", "2= c #D1A068", "3= c #D2A16A", "4= c #D2A26B", "5= c #DEAB70", "6= c #795B39", "7= c #765939", "8= c #382F1E", "9= c #52442B", "0= c #3F3421", "a= c #978250", "b= c #C7A96B", "c= c #B99E66", "d= c #9B8658", "e= c #7E6945", "f= c #6A5537", "g= c #664E32", "h= c #715537", "i= c #846340", "j= c #97734A", "k= c #B48958", "l= c #AA7F4F", "m= c #A57A4B", "n= c #C59561", "o= c #C0925E", "p= c #D19F66", "q= c #664C30", "r= c #3F3321", "s= c #352D1E", "t= c #32291A", "u= c #B29560", "v= c #F0CA85", "w= c #A78F5D", "x= c #C5A96F", "y= c #C9AF74", "z= c #B9A46D", "A= c #9F885A", "B= c #806C48", "C= c #6A5538", "D= c #654E33", "E= c #725638", "F= c #8E6C46", "G= c #A67D51", "H= c #A78053", "I= c #936F48", "J= c #9A754C", "K= c #BB8E5B", "L= c #C99B64", "M= c #CC9D67", "N= c #D4A876", "O= c #D9A871", "P= c #D6A064", "Q= c #D3A064", "R= c #947048", "S= c #3C3120", "T= c #3E3623", "U= c #51442C", "V= c #0A0805", "W= c #2E2617", "X= c #B1945F", "Y= c #E4BF7E", "Z= c #705D3C", "`= c #423622", " - c #31281A", ".- c #635537", "+- c #9A8456", "@- c #BFA66D", "#- c #C8B074", "$- c #BDA36A", "%- c #9F8859", "&- c #806B46", "*- c #6D583A", "=- c #6A5236", "-- c #654C32", ";- c #98734B", ">- c #A77F51", ",- c #C79964", "'- c #CC995F", ")- c #D8CCBC", "!- c #A09E98", "~- c #B7A389", "{- c #D3AE83", "]- c #7F603C", "^- c #8E6D46", "/- c #51412B", "(- c #413623", "_- c #070604", ":- c #8C754A", "<- c #AB8E5A", "[- c #D3B071", "}- c #605034", "|- c #2C2418", "1- c #251E14", "2- c #241E14", "3- c #4C412A", "4- c #756440", "5- c #A08959", "6- c #BEA56B", "7- c #CBAF71", "8- c #BAA26B", "9- c #978155", "0- c #7A6742", "a- c #675235", "b- c #604930", "c- c #6A5034", "d- c #7B5D3C", "e- c #9D774D", "f- c #B08657", "g- c #C4955F", "h- c #CBA477", "i- c #BCA58B", "j- c #ABA69B", "k- c #C6C5C0", "l- c #D8A872", "m- c #916D44", "n- c #54422B", "o- c #2C2519", "p- c #54462E", "q- c #1E1910", "r- c #221C12", "s- c #483C27", "t- c #6D5D3D", "u- c #8B764D", "v- c #8C774F", "w- c #7A6845", "x- c #605136", "y- c #473B28", "z- c #352C1D", "A- c #292316", "B- c #332A1B", "C- c #423722", "D- c #A98F5B", "E- c #FED88B", "F- c #CEB373", "G- c #C9AC6D", "H- c #BAA368", "I- c #9F8654", "J- c #7F6A44", "K- c #685336", "L- c #604A30", "M- c #6C5134", "N- c #7C5D3C", "O- c #A17A4F", "P- c #B78C5C", "Q- c #B98B57", "R- c #B08250", "S- c #B58A5B", "T- c #CBA275", "U- c #886640", "V- c #685236", "W- c #332C1E", "X- c #4D402A", "Y- c #18140D", "Z- c #322A1C", "`- c #5B4E34", " ; c #83704A", ".; c #947E53", "+; c #907B52", "@; c #7B6744", "#; c #5C4C32", "$; c #403623", "%; c #776340", "&; c #FDD489", "*; c #947C51", "=; c #675638", "-; c #5E5033", ";; c #8E784A", ">; c #BDA469", ",; c #C9B576", "'; c #C1AA71", "); c #A38F60", "!; c #816F4A", "~; c #685538", "{; c #614A30", "]; c #6C5135", "^; c #97724A", "/; c #B78A56", "(; c #6F5637", "_; c #262016", ":; c #4B3F2A", "<; c #372E1E", "[; c #635336", "}; c #87724A", "|; c #937C51", "1; c #7A6844", "2; c #957D51", "3; c #ECC37D", "4; c #8A734B", "5; c #241E13", "6; c #15110A", "7; c #1E180E", "8; c #2C2416", "9; c #493C27", "0; c #74633F", "a; c #A28D5D", "b; c #C1AE75", "c; c #CFB77B", "d; c #C2AD75", "e; c #A18D5F", "f; c #645136", "g; c #624D32", "h; c #6C5236", "i; c #866542", "j; c #846742", "k; c #463A27", "l; c #322A1B", "m; c #3D3422", "n; c #615336", "o; c #90794E", "p; c #867149", "q; c #6F5D3B", "r; c #675637", "s; c #4F4129", "t; c #3C3220", "u; c #302819", "v; c #292216", "w; c #2B2316", "x; c #372D1D", "y; c #51452D", "z; c #776744", "A; c #9B885A", "B; c #C7AC73", "C; c #DDBE7F", "D; c #BEA56F", "E; c #A48D5E", "F; c #89744D", "G; c #866C47", "H; c #2B2417", "I; c #3E3422", "J; c #50432B", "K; c #090705", "L; c #413521", "M; c #6C5A39", "N; c #897147", "O; c #947C4F", "P; c #8A754C", "Q; c #726141", "R; c #574931", "S; c #403524", "T; c #31291B", "U; c #292217", "V; c #1F1911", "W; c #F9D288", "X; c #DAB978", "Y; c #AD9461", "Z; c #C2AA70", "`; c #493E29", " > c #332919", ".> c #423621", "+> c #020201", "@> c #4B3F28", "#> c #796744", "$> c #927E54", "%> c #998357", "&> c #88744E", "*> c #69593C", "=> c #413724", "-> c #50422B", ";> c #EEC57E", ">> c #CCAB6F", ",> c #5C4C31", "'> c #201A10", ")> c #382E1E", "!> c #5C4C30", "~> c #1C170E", "{> c #262015", "]> c #52452D", "^> c #786644", "/> c #8B764F", "(> c #8F7950", "_> c #D6B272", ":> c #B89962", "<> c #31291C", "[> c #2D2619", "}> c #463A26", "|> c #120F0A", "1> c #292317", "2> c #473C28", "3> c #715F40", "4> c #8A754D", "5> c #967E53", "6> c #3C3321", "7> c #2A2216", " . + @ ", " # $ % & * = - ; > , ' ) ", " ! ~ { ] ^ / ( _ : < [ } | 1 2 3 4 5 6 7 8 9 0 ", " a b | c d e - f d g h i j k l m n o j p q r 1 s t u 3 v w x y z ", " A B C D E F G D H v I J - K K L M < N O P Q R S ( ( T U b L V W = V X Y Z ` . ", " ..{ +.@.#.#.c ; $.%.&.*.=.-.+ ;.>.,.'.).!.~.{.K ].^./.(._._.:.h <.[._ }.[.|.1.2.3.4.5.", " 6.7.+.8./ 9.S 0.j a.b.g X c.X d.e.f.g.h.i.j.k.l.k.m.n.o.p.d q.].r.X B a.@.s.t.u.v.w.x.y.z.", " A.B.C.D.; E.c 3 c F.i h <.<.G.l l H.I.J.K.L.M.N.O.B P.Q.R.S.T.U.V.%.W.X.Y.Z.M.L d `.L +.+-. ", "++@+#+$+%+&+*+=+d i s.I D.c < c <.-+;+>+x.,+'+l u.)+s.b.c B J 4.c d.!+e.~+{+]+^+^+/+L (+_+y._+ ", " :+<+[+}+|+1+2+3+4+5+6+7+q.c 8+p.X.9+C @.3 @.(._.G._ k j 0+a+0+s.j b.3 b+B g c+I K.d+e+f+g+_+ ", " h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+x+y+z+A+4.@.I B+E.Z.M C+< D+i E+S F+S G+] [.H+I+J+K+L+f+g+_+ ", " M+N+O+P+Q+R+S+T+T+U+V+W+X+q+Y+Z+`+ @.@+@@@#@$@%@&@2.B E.i d.*@Z.=@c.j -@-@;@>@9 ,@'@L+)@!@~@ ", " {@]@^@/@(@_@:@<@[@}@}@T+p+|@1@2@3@a+E 4@5@6@q+7@8@9@0@a@b@c@d@e B i B+e@V f@g@h@a ~@=.'@l.J+ ", " i@j@k@l@m@n@o@p@q@q@r@r@s@#+#+2@t@{.u@v@w@x@r@y@z@A@B@C@D@E@F@G@o+H@b@I@J@K@L@M@a N@O@P@Q@R@ ", " b.S@T@U@V@W@X@Y@Z@`@q@r@s@s@ #Y+.#+#@###$#%#&#*#=#-#;#>#,#'#)#!#~#{#]#^#/#(#_#y.:#<#[#}#(#|# ", " 1#2#3#1#4#a+5#6#7#8#9#0#a#q@T+b#c#d#e#f#g#h#i#9#`@a#V+j#=#k#l#m#n#o#p#q#r#s#r#y.i.~@J+J++ t# ", " u#v#w#x#y#z#A#B#C#D#9#C#E#F#G#H#I#J#K#L#M#N#i#C#O#*#P#Q#R#p+X+S#T#U#V#W#X#` Y#y.Z#`# $)@.$+$ ", " I#x#@$#$$$%$&$*$=$-$;$;$>$,$*#'$)$!$~${$]$^$/$($E#E#q@G#a#r@s@#+_$W+:$<$-.6 r#y.Z#[$~@Q@}$|$ ", " 1$2$3$4$5$3#6$%$5#7$7$8$9$0$a$b$c$a.d$e$f$g$h$i$j$($C#9#k$q@r@ # #l$m$n$o$p$)@y.q$r$[#s$t$u$ ", " v$w$x$2$y$z$A$%$%$v#B$C$D$E$F$G$D.c$H$I$J$K$L$2#M$N$j$O$Q#G#G#8#P$Q$R$S$7 ! r#_+T$U$V$W$i.X$ ", " Y$<$: Z$`$ %.%+%@%A$%$#%$%%%&%*%=%-%;%Y.>%q.,%%$8$y#M$;$($'%9#Q#`@P$)%!%~%{%6 ]%^%h@/%(%_%:% ", " <%[%}%|%1%3@u#2%3%4%5%&$x@6%/.7%H$j@u#8%>%&$9%0%v#a%b%A#M$c%d%9#9#G#e%f%g%.+(#h%i%j%k%l%)@m% ", " n%o%p%q%r%s%t%u%Y@v%,%w%6#x%a+$@y%H z%A%B%x%C%0%%$a%y#D%E%A#F%C#Q#C#G%H%I%+ -.:#J%K%>.L%M%:% ", " N%O%P%Q%R%S%T%0@U%k$V%W%X%Y%,%9%Z%!%,%`%Z% &.&i@+&7#@&#&5#$&A#5#%&G#&&*&~%N@}$=&-&M@;&K@s#>& ", " ,&'&)&!&~&{&]&q@^&/&(&7@V+*#+#5$_&:&<&[&}&|&1&q#B$ @6$7#%$2&3&4&5&6&%&H%7&|#8&i.9&0&;&X#(#a& ", " b&c&d&e&f&g&h&k$[@o+}@T+}@s@i&m$j&k&l&m&n&o&p&q&j@r&s&z$y#5#7$t&u&v&5%4@w&x&y&(#0 Y#}#/#z&A& ", " B&C&D&E&F&G&H&s@a#q@q@q@o+}@I&J&K&L&M&p%N&O&P&Q&q#R&S&T&U&V&5$#$W&%&n.X&~%Y&h@t$Z&`&l. *.* ", " 1#+*H @*#*$*Y@%*<@k$T+r@&*o+I&**=*-*!&;*;*>*,*'*)*Y+q+&*!*q#~*{*-%]*q$^*/*N@h@m%(*0&l.(# ", " _*v##%:*<*+%&$[*C#9#*#G#}*r@q+1&|*1*2*3*4*5*6*^&^&^&V+|@7*8*9*7*}@$&++e+}$0*h@a*9 o$K@O@ ", " b*W&c*b*2#M$A#*#d*9#9#E#O#*#7@X%e*f*g*h*5*i*j*k*`@}* ##+s@p+W+l*m*n*o*p*)@!@h@i%q*r*(#0& ", " s*@$y$@$z$6$v#b%F%d*;$t*u*E#'$x$v*w*x*y*z*A*B*C*D*R#r@E*r@s@p+p+1@F*H ! ! y.N@) ~@9 5&G* ", " H*z%4#i@I*@%9%7#&$b%#%J*K*+@L*<$H*1#M*N*O*P*Q*|&Y%R*r@q@ ##+V+p+W+m$S*y.P@+ N@T*M@M@U* ", " V*x S*W*X*v%s&Y*@$Z*`* =.=+=@=V&N*#=v#*$$=y$6#M$w%@&%=<@k$`@r@#+Q$&=*===-=-.h@;=Y&>=,='= ", " )=!=~={=0&]=^=/=r&,%(=9%_=:=<=[=}=|=3$$$1=y#F%A#2=3=4=9#9#*#*#q@s@5=k.6=r#-.7=a*~@8=9=0= ", " a=b=c=d=e=f=g=h=i=j=C&k=l=m=.%R&E n=o=y$W&z$6$L$Z@3&D#O$2=t*p=0#`@|@>.i.U$K+q=~=r=s=t= ", " u=v=w=x=y=z=A=B=C=D=E=]%F=G=H=I=J=k=K=n&W%W&z$t%L=M=7$8$N=O=P=Q=U+R=a )@_+[$S=T=U=V= ", " W=X=Y=Z=`= -.-+-@-#-$-%-&-*-=---/%h@;->-t&X@,%n&u%@$5$,-'-)-!-~-{-q@;&]-l.^-/-s=(-_- ", " :-<-[-}-|-'=1-2- -3-4-5-6-7-8-9-0-a-b-c-d-=.e-w$f-n$i@W%g-h-i-j-k-l-m-7&Q@n-o-p-q- ", " r-s-t-u-v-w-x-y-z-'=A-B-C-D-E-F-G-H-I-J-K-L-M-N-=.O-8%P-Q-R-S-T-A#s#U-V-W-X-Y- ", " Z-`- ;.;+;@;#;$;q-%;&;*;=;-;;;>;,;';);!;~;{;];.$;.^;T./;3#. (;_;:;8= ", " <;[;};|;1;2;3;4;5;6;7;8;9;0;a;b;c;d;e;B=f;g;h;i;Z.j;s=k;l; ", " m;n;o;p;q;r;s;t;u;v;w;x;y;z;A;B;C;D;E;F;G;H;I;J;K; ", " L;M;N;O;P;Q;R;S;T;U;V;X-W;X;Y;Z;`; >.>+> ", " @>#>$>%>&>*>=>->;>>>,>'>)>!>~> ", " {>]>^>/>(>_>:><>[>}>|> ", " 1>2>3>4>5>6> ", " 7> ", " "}; flwrap-1.3.6/data/flwrap.desktop0000644000175000017500000000030314304245210013523 00000000000000[Desktop Entry] Name=Flwrap GenericName=Amateur Radio Data Encapsulation Comment=Amateur Radio Communications Exec=flwrap Icon=flwrap Terminal=false Type=Application Categories=Network;HamRadio; flwrap-1.3.6/data/mac/0000775000175000017500000000000014364737360011505 500000000000000flwrap-1.3.6/data/mac/Info.plist.in0000644000175000017500000000200714304245211013756 00000000000000 CFBundleInfoDictionaryVersion 6.0 CFBundleIdentifier %%IDENTIFIER%% CFBundleName %%NAME%% CFBundlePackageType APPL CFBundleSignature %%SIGNATURE%% CFBundleDevelopmentRegion English CFBundleExecutable %%BINARY%% CFBundleVersion %%VERSION%% CFBundleShortVersionString %%VERSION%% CFBundleLongVersionString %%VERSION%% CFBundleIconFile %%ICON%% NSAppleScriptEnabled No NSHumanReadableCopyright Copyright (c) 2009 Dave Freese W1HKJ flwrap-1.3.6/data/mac/flwrap.icns0000644000175000017500000002643014304245211013560 00000000000000icns-ih32$  iP<&Í–qHĉhB oT6{mR4XB2 5_G,3'$ [E1ÐiBÿ½ŒXÿ»ŒXÿ½ŽZÿÁ“^ÿ½[ÿ»ŽZÿ²†Uî¤}OؘsI¸Šh@—dL0pfL1OO;%.$I6" PF4 Ç‹iBÿ¿[ÿ»ŠWÿ¯€Pÿ¯Nÿ®~Mÿ®~Nÿ±ƒSÿ´ˆXÿ¶‰Xÿ¸ŠXÿºŒXÿ¼Ž[ÿÀ‘\ÿ½[ÿ¶ŠWý¯„Sè¤{MЊhBªmQ3²wY9±„d@ŠjP3fV@(DaI.'% @0;+»}^<ÿ¸‹Xÿ¼Ž[ÿµ‰Wÿ¸ŒYÿºŽZÿ»ŽZÿ»Zÿ¸ŒYÿµˆVÿµˆXÿ´ˆWÿ´‡Vÿ³…Uÿ°‚Rÿ¯‚Qÿ®Qÿ°ƒRÿ´‡Vÿ©~Qÿ¨|Mÿ¸ŠWÿÀ‘\ÿ¾\ÿ¿’]ÿ¿‘]ÿ¶ŠWø«Rã¢zMÆŽkE¨rV6ƒsV5`F5"ÿÇ{LÿÕ¦mÿÕ¥lÿÖ£jÿÖ£jÿØ¥kÿئlÿÚ§mÿÛ§mÿÝ©nÿß«oÿè²tÿ¶Œ[ÿȘcÿË›dÿÖ¢hÿÝ©mÿÓ fÿÍœdÿȘ`ÿ”^ÿºYÿ¶ŠXÿ´‰Wÿ´ˆWÿ²‡VÿµŠWÿ¶‹Yÿ·ŒZÿ·‹Yÿ´‡Vÿ²ƒSÿ²ƒSÿ·†Uÿ¦zNÿ„d@ÿ}_<ÿ„d?ÿ’oFÿ‹iCÿ‡gAÿ…d@6.$Q6,ÿχVÿÄrFÿÄpDÿÉ€PÿÃnCÿÉ‚RÿЙcÿÔ£jÿÕ¢iÿפkÿפkÿÖ£jÿÙ¦lÿÚ§lÿÛ¨nÿá­qÿ¶[ÿµ‰YÿžxMÿŸyNÿ¡zPÿ»\ÿÝ©nÿÛ¨mÿݧkÿØ¢gÿÜ«oÿØ©nÿÏ¡hÿÈ›cÿÁ“]ÿºŽZÿ¶ŠXÿ´ˆWÿ³ˆWÿ¶ŒZÿ¼ŽZÿvJÿ…dAÿ†fAÿ}^<ÿ…d@ÿmFÿ„d?ÿŠhCû€a=.I7#>(ÿ½]ÿ«ƒUÿ¶„TÿÅ[ÿÅ|NÿÇxKÿÏZÿ×§mÿÕ£jÿÕ£jÿÖ¤kÿÖ¤kÿ×¥kÿØ¥lÿØ¥lÿá­qÿµ‹Zÿ½\ÿ·‰Uÿ½‹Sÿ»ŠTÿÆ–_ÿÖ¤kÿ×§lÿÑ“_ÿ΀PÿΆVÿÒ‰WÿÛ–`ÿÞŸfÿâ«nÿÞªnÿפjÿÖ§lÿÏ¡hÿÁ‘^ÿšrHÿ‰hCÿˆe@ÿ†e@ÿ}^<ÿ†eAÿtW7ÿ‚b>ÿŒjDô~_=%/$2dI/þµˆWÿª‚Tÿ£~Qÿ {Oÿ¦Tÿ¯ˆXÿ¶ŠZÿ¼]ÿË›fÿÕ¤kÿÕ£jÿÖ¤kÿ×¥kÿ×¥kÿ×¥lÿß«oÿ°†VÿÈ™dÿíÝÉÿêÔ»ÿݼ—ÿתwÿÒ fÿÓ¡iÿÖ¦lÿÙ¨mÿÍšdÿ¿ŠXÿÀƒRÿÁyLÿÇ€QÿÍ‚RÿÕŽ[ÿÙ“^ÿèªpÿÖaÿ‡f@ÿkDÿ‡d?ÿ‡fAÿ|^;ÿ_=ÿ~_<ÿŠiBÿkDìz\;#*]D+øÂ“_ÿÍœeÿǘbÿ“_ÿ¼\ÿµ‰YÿË›eÿÀ’_ÿǘcÿÔ£kÿÓ¢jÿÓ¢iÿÕ¢jÿÕ£jÿÖ£jÿÞªoÿ°†UÿÉœjÿÙÕÎÿÄÄ¿ÿéíïÿïÞÉÿÏš]ÿÓ¢jÿÕ¤kÿÕ¢jÿئlÿÙ¨nÿÖ¦lÿÔ¦lÿСiÿËšdÿÈ“_ÿ‡WÿØfÿ¾’_ÿ‰gAÿŒjCÿ‰gAÿ‡fAÿy[:ÿ…d@ÿ€a=ÿ€a=ÿ‰hBæbJ/ ;,ð·‹ZÿÊšdÿǘaÿÊ™cÿÌœeÿОgÿΞgÿÑŸhÿÒ¡iÿÑ¡jÿÓ¢jÿÒ¡iÿÒ hÿÓ¡hÿÔ¢jÿݨnÿ®„UÿËŸmÿÍËÅÿ£¡šÿÏÏÍÿêØÂÿÏš]ÿÒ¡iÿÒ¡hÿÓ¡iÿÔ¢hÿÓ¡jÿÖ£kÿÙ¦lÿÛ§mÿܨnÿݪpÿÚªpÿá®rÿº[ÿˆgAÿjCÿ‰gBÿ‡fAÿy\:ÿ‚b?ÿ€a>ÿ‹iCÿ€`>ÛZD+-"鮄UÿÊ™cÿÕ`ÿÅ–aÿÇ—bÿÉšdÿÊ›eÿÌ›eÿÎhÿПjÿПhÿПhÿÏ›bÿÑžeÿÓ¡iÿÚ¦lÿ­„TÿÇšfÿϼ¤ÿ°¨œÿªª¦ÿÒÁ«ÿÑaÿÑ iÿÒ hÿÒ hÿÕ£jÿÔ¢jÿÕ¢jÿÖ¤kÿ×¥kÿØ¥lÿÙ¦mÿÚ§mÿâ®rÿ¸[ÿŠiCÿŠhBÿ‰gAÿ‡fAÿy\:ÿb?ÿ…d@ÿŒjDÿŠiDßWA*  ãŸxMÿ¾‘]ÿÄ•`ÿÔ`ÿÅ—bÿǘbÿÉ™dÿÉšdÿË›eÿÍgÿÍgÿÌ›dÿÖ¯‚ÿÕ¨tÿÖ¡fÿ×¢eÿ°‡Xÿµ‰Xÿ¾ŽXÿÍiÿÓ«~ÿÓ«}ÿΛdÿÏžfÿРhÿÑ iÿÒ¡iÿÓ¢jÿÔ¢iÿÕ£jÿÖ¤kÿ×¥lÿ×¥lÿÚ§nÿà¬pÿ¶‹Zÿ{];ÿvX8ÿ‹iCÿ‡fAÿy\;ÿ„e@ÿ~_<ÿ‚c@ÿiP3ídK/* ×’oGÿ§Rÿ»Ž\ÿ¾‘]ÿÁ“_ÿÆ—bÿÈ™cÿÉšdÿÉšdÿÊšdÿËœeÿОdÿÓ˾ÿ˜™–ÿ±¤“ÿÚ¸ÿ³ˆVÿ°‡Xÿ±‡Xÿ°…Vÿ¥{Lÿ¯ƒRÿÊšeÿÍœeÿÏžgÿРiÿРhÿÒ iÿÓ¡jÿÔ¢jÿÔ¢jÿÔ£kÿÖ¤lÿئmÿà¬qÿ¯†VÿmQ3ÿ‹iBÿ‰gAÿˆgBÿz]<ÿb>ÿa>ÿcJ/ÿy[:äuY8 ÆlFÿ¸[ÿ´ˆXÿµŠYÿ¹Œ[ÿ½‘_ÿ¾‘^ÿÁ“`ÿÕaÿÈ™cÿÉšdÿËšcÿÐ¥sÿÆ©ˆÿ·®¡ÿØÇ±ÿ°„Qÿ®…Wÿ¹\ÿ²‡Wÿ³‰YÿºŽ[ÿ»]ÿÉšdÿÌ›dÿÌœeÿÏžgÿПhÿÑ iÿÔ¢kÿÓ¢jÿÓ¡jÿÕ¤kÿÖ¤lÿÝ©oÿ¬ƒUÿ|];ÿ€`=ÿŠhBÿa?ÿkP4ÿ†fAÿhN2ÿyX8ÿ‘mEÚiO2À«SÿΜeÿÀ•aÿ»“`ÿ»“_ÿ¶[ÿ·‹Zÿº\ÿ¿‘^ÿÔaÿƘcÿÊ›eÿÆ–_ÿ´…Qÿ·‰WÿÒ¡kÿ±‡Xÿ«ƒUÿ·‹Zÿ®…Vÿ³‰YÿÊ›eÿÅ–bÿƘbÿÊšdÿÉšcÿÌœfÿΞgÿÏžgÿПiÿÑ¡iÿÓ¢jÿÓ¢jÿÔ¢jÿܨoÿ­…Wÿ|\:ÿ`=ÿkDÿlQ3ÿfM1ÿfL1ÿ}];ÿkEÿ‹iCÊgN2´™lEÿÑ{LÿË{LÿЉWÿБ]ÿΗaÿÇ™cÿ•aÿ¼]ÿ¹Ž\ÿ»]ÿÁ”`ÿÀ’_ÿºŽ\ÿµ‰YÿÍœdÿ°ˆXÿ¥~Qÿ©€Sÿ®„Vÿ¨€TÿºŽ\ÿÅ–cÿƘbÿÉšdÿÉšcÿÌœeÿÌfÿÍfÿΞgÿÏŸhÿÒ¡iÿÓ¡jÿÒ¡iÿÚ¨nÿ¤}Qÿ{]:ÿ‰hBÿŠiCÿ|^;ÿQ>(ÿuX8ÿ–rIÿˆgCÿ‹iD¿iO2¦‰d@ÿÎxJÿÁlAÿÅvHÿÅtGÿÃc;ÿלdÿÜ«oÿÚ¦kÿÔ¢iÿËœdÿÀ“`ÿ»]ÿºŽ]ÿ»]ÿÅ–bÿ¬„Vÿ¬ƒUÿ»]ÿ¸Œ[ÿ¬„Vÿ¨€SÿµŠZÿ½]ÿÈšdÿǘcÿÉšeÿÊ›dÿË›eÿÍžgÿΞgÿË›eÿÒ¢jÿÔ¢jÿÛªpÿ¥Rÿ|];ÿ†eAÿŠiDÿgN1ÿ`H.ÿ†e@ÿnFÿ‰hCÿŒjC²^G.š{[;ÿÏ|MÿÂqEÿÁmBÿÁj@ÿÎŒYÿרnÿÕ£jÿÖ¤jÿØ¥jÿÙ¥lÿÛ¨mÿئlÿÓ¡iÿÈ™dÿÅ—bÿœwNÿ•rJÿª„Wÿ¨‚Tÿ³ŠYÿ·Œ[ÿ¼‘^ÿ¾’_ÿËœeÿȘcÿÉ™dÿǘcÿÉšdÿÊ›fÿΞhÿvMÿ–rJÿ¸\ÿÒ¢jÿ¤}Qÿz\9ÿz\;ÿeL1ÿy[:ÿrV7ÿƒc?ÿnFÿˆgAÿkD¤UA)ŽdL2ÿÔˆVÿÅsFÿÈwJÿÈzLÿÅsGÿΑ\ÿÔ¢iÿÕ¢iÿפjÿפkÿÖ£jÿפkÿ×¥kÿÙ§lÿà¬pÿ¸]ÿ¸…UÿÑ‘]ÿÉ’^ÿ¿’_ÿ´[ÿ­Š[ÿ©„Vÿ«ƒUÿ´‰Yÿ½‘^ÿÆ—bÿÌœeÿË›eÿÍgÿ«‚Tÿ™tKÿ¦~RÿƘcÿŸyNÿ`=ÿdK0ÿxY8ÿkDÿjP3ÿ‰gBÿŠiBÿ‡f@ÿŽlE™M:%zT@*ÿ¹]ÿªTÿ·†VÿʼnXÿÅzLÿÈxKÿÕ hÿ×¥kÿÕ¢jÿÕ£jÿÕ£jÿÕ£jÿפjÿפkÿÞ«oÿ¹‘_ÿ­wKÿÆnBÿÄoDÿË{LÿшVÿÏ‚QÿјbÿËžgÿ¾’_ÿ²ˆYÿªƒUÿ¨Tÿ²‰Yÿº^ÿÅ—bÿÅ–aÿÄ•aÿÒ¢jÿŸyMÿeL0ÿ|];ÿŒiCÿ†fAÿiP3ÿ€b>ÿvX7ÿŠhCÿ’nG‹?1 jqT6ÿ“_ÿ°‡Wÿ¥~Qÿ¡|Pÿ«†Wÿ±ˆXÿ¼]ÿ”`ÿÔ£jÿÔ¢iÿÖ£jÿÖ¤kÿ×¥jÿפjÿÞ«oÿº]ÿ®zNÿÆrFÿÁmBÿÅvIÿÅvIÿÂh>ÿÌ‚Rÿܬpÿݨmÿß«oÿÝ©nÿ×¥jÿËœfÿ¾’_ÿ³ŠZÿ¯ˆYÿ®…Wÿ¿”`ÿy\;ÿ^;ÿ‘mFÿ†eAÿ†fAÿgN2ÿx[9ÿƒc?ÿŠhCÿkDw6)`rV7ÿПgÿÊšdÿËšcÿÆ•`ÿ¼Ž\ÿÁ“`ÿÊ›eÿ¾‘_ÿÒ¡iÿÓ¢jÿÓ¡iÿÔ¢jÿÕ£iÿÖ¤kÿÝ©nÿ¼‘^ÿ­|PÿÆoDÿÃsGÿÂpEÿÀh>ÿÊ‚Rÿ׬pÿÖ¤jÿÖ¤jÿÖ¤jÿئlÿÚ§lÿß«pÿá­pÿã®qÿß«pÿפkÿÍžgÿ›vLÿmEÿŠiDÿ‡gCÿ†fAÿfM2ÿ„d@ÿ{];ÿ‰hCÿtW7kO;&RS>(ÿÉ™cÿÄ•aÿÆ—aÿÉ™cÿÍœeÿÏžgÿΞgÿÓ¡iÿÑ jÿÓ¢jÿÓ¢jÿÒ hÿÒ¡hÿÓ¡iÿÛ¨mÿ»]ÿ«}QÿÇ…UÿÄwIÿÉzLÿÊ‚RÿÃkAÿÈ}NÿÑ›dÿÕ¤kÿÕ£iÿ×¥lÿØ¥lÿ×¥kÿÙ¦lÿÚ§mÿÜ©nÿߪpÿé²tÿªRÿ‰iBÿ‹iCÿ‡gAÿ†fAÿfM1ÿƒc>ÿ…d?ÿkDÿƒc?N/$DD3!ÿÔ_ÿÕ`ÿÁ“_ÿÕ`ÿÆ—bÿÉ™dÿÊšdÿÌœfÿÏŸhÿÑ jÿПhÿÐdÿМbÿÒ hÿÚ¦lÿ»Ž\ÿ£|Pÿ¡}Qÿ©ƒUÿ°„UÿÁ[ÿÂRÿÇ{MÿГ^ÿ×§nÿÖ£kÿÖ¤kÿÖ¥kÿÖ¤kÿ×¥kÿÙ¦lÿÙ¦lÿÛ¨nÿã°sÿ¥~Qÿ‹iBÿ‹iBÿ‡fAÿ†eAÿdL0ÿ…d@ÿ„d@ÿ–rJ”I8$:,"ÿ§~Qÿ©€Sÿ¼\ÿ½]ÿÀ’`ÿÕaÿÅ–bÿǘcÿÊ›eÿÌœfÿËšcÿѧvÿׯ€ÿÖ¢hÿÙ£eÿ¸[ÿ§~Qÿ“_ÿ·ŠZÿ¨Rÿ¢|Pÿ§‚Tÿ«…Vÿ·Œ[ÿºŽ]ÿÍœfÿÖ¤kÿÕ£jÿ×¥lÿØ¥lÿئlÿÙ¦lÿÚ§mÿà¬pÿ¢{Oÿ‡fAÿ‚b>ÿ‰hBÿ†eAÿeM1ÿ†e@ÿ†e@§U@)" ùŒiDÿŽkEÿ¢{Oÿ¨€Rÿ²‡Xÿ¹Ž\ÿ½‘^ÿ•`ÿÕ`ÿÅ—cÿÆ”[ÿÙº–ÿ¨¬¬ÿ¢šÿд”ÿº^ÿ¨RÿОfÿÊšdÿÌ›eÿÉ™bÿÁ“_ÿÀ’_ÿÏžgÿÁ”`ÿÉšeÿÕ£kÿÔ£jÿÔ¢iÿÕ¤kÿÖ¤kÿØ¥lÿئmÿߪoÿvLÿoS4ÿ…e@ÿŠiCÿ†fAÿcK0ÿŒiCÿx[:Ï("*#ZG<$ÿ“yMÿkU7ÿdL1ÿpT6ÿƒc?ÿ•qIÿ¡{Oÿ¬ƒTÿ´‰Yÿ»]ÿÀ“_ÿÅ–bÿÅ vÿµ¢ŠÿǾ²ÿ¼“fÿ£zNÿɘbÿÄ•`ÿÇ—bÿɘcÿÌœeÿÏŸhÿΞgÿÑ hÿÒ¡jÿÒ¢kÿÓ¢jÿÓ¢jÿÓ¡iÿÓ¡iÿÕ£jÿ×¥kÿÞ«pÿŽkDÿy[9ÿ‰gAÿŠiCÿvY9ÿfM2ý…d@ü8/ÿRD+ç?4!9 TD8!¨—‚PòÇ©kÿ¹žfÿ›†Xÿ~iEÿjU7ÿfN2ÿqU7ÿ„c@ÿ—sJÿªTÿ´‰XÿªOÿ¥zKÿ¾‘^ÿ²ˆYÿžxMÿÅ•aÿÀ’^ÿÁ“_ÿÄ•aÿÆ—bÿÉ™dÿÊšeÿË›fÿΞhÿÑ¡jÿÒ iÿÑ hÿÐdÿÑŸfÿÓ¢iÿÕ¤kÿÚ§lÿ–rIÿy[:ÿb>ÿ…eAÿfL0ÿdL1ÿ?3!þ5-ç2)o0 ²•`ÿðÊ…ÿ§]ÿÅ©oÿɯtÿ¹¤mÿŸˆZÿ€lHÿjU8ÿeN3ÿrV8ÿa?ÿŽlFÿ¦}Qÿ§€Sÿ“oHÿšuLÿ´‰Xÿ»Ž[ÿ¿’_ÿÀ“`ÿÄ•aÿÆ—bÿÇ™cÿÉ›dÿÌgÿÍgÿÌ›dÿÔ¨vÿÙ¨qÿÖ dÿÓ dÿØ¥kÿ”pHÿ}^<ÿ‹iCÿˆgBþb?ú<1 þ>6#ûQD,ˆ 6&  “.&û±”_ÿä¿~ÿp]<üB6"ù1(ûcU7þš„Vÿ¿¦mÿȰtÿ½£jÿŸˆYÿ€kFÿmX:ÿjR6ÿeL2ÿhN2ÿ†fAÿ˜sKÿ§Qÿ«‚Tÿ¶ŠZÿ»]ÿ¿’_ÿ•aÿÕ`ÿÅ—bÿÇ™dÿÌ™_ÿØÌ¼ÿ ž˜ÿ·£‰ÿÓ®ƒÿÕ£jÿnFÿ`<ÿŠhCÿŽmFÿQA+ÿ5-üA6#”</l3*ÿŒuJÿ«ŽZÿÓ°qÿ`P4ÿ,$ü*#ù%ö$÷1(øLA*ûud@þ ‰Yÿ¾¥kÿ˯qÿº¢kÿ—UÿzgBÿgR5ÿ`I0ÿjP4ÿ{]<ÿmFÿwMÿ§Rÿ°†Wÿ¶‹Zÿ½]ÿÀ“`ÿÄ•_ÿˤwÿ¼¥‹ÿ«¦›ÿÆÅÀÿبrÿ‘mDÿz\9ÿŒjDûTB+ú,%ÿTF.¹B0!N Š"ÃH<'ìm]=ÿ‹vMÿŒwOÿzhEÿ`Q6ÿG;(û5,ø*#ö)#ö3*øB7"ü©[ÿþØ‹ÿγsÿɬmÿº£hÿŸ†TÿjDÿhS6ÿ`J0ÿlQ4ÿ|]<ÿmFÿ¡zOÿ®…Vÿ·Œ\ÿ¹‹Wÿ°‚PÿµŠ[ÿË¢uÿΞgÿŒjCÿˆf@ÿhR6ÿ3,ÿM@*¾ J1# *X ’2*É[N4ðƒpJÿ”~Sÿ{Rÿ{gDÿ\L2þ@6#úûwc@ÿýÔ‰ÿ”|QþgV8ü^P3þŽxJÿ½¤iÿɵvÿÁªqÿ£`ÿoJÿhU8ÿaJ0ÿlQ5ÿ€`>ÿmFÿ—rJÿœvLÿ·ŠVÿǘbÿ–qHüoV7ù& ÿK?*Û8/Y/$  ._ ›7.ÏcS6ö‡rJÿ“|QÿzhDÿ•}QÿìÃ}ÿŠsKþ$ù ø÷,$øI<'ütc?þ¢]ÿÁ®uÿÏ·{ÿ­uÿ¡_ÿ€lHÿdQ6ÿbM2ÿlR6ÿ†eBÿ¶‹Yÿ„gBÿ5-ÿF:'â2*`3&6l ¦=4"×aS6ûyNÿ†qIÿo];ÿgV7ÿOA)þ<2 û0(ø)"ö+#ö7-øQE-ûwgDþ›ˆZÿǬsÿݾÿ¾¥oÿ¤^ÿ‰tMþ†lGø+$ý>4"öPC+€ 4)Bv ­A5!ÞlZ9ý‰qGÿ”|OÿŠuLÿraAÿWI1ý@5$ú1)ø)"ö÷M@*þùÒˆÿÚ¹xÿ­”aÿªpÿI>)ÿ3)úB6!†7* E{´K?(åygDÿ’~Tÿ™ƒWÿˆtNÿiY<ÿA7$ýPB+ÿîÅ~ÿÌ«oþ\L1ø ú8.ÿ\L0­=* !L…& ¿RE-éxfDÿ‹vOÿyPÿÖ²rÿ¸™bÿ1)þ-&ÿF:&° E)  )W ‘)#ÇG<(íq_@ÿŠuMÿ–~SÕ<3!D 0^ …*"9h8mk  iÍÄ {X5[ÐÿÿÿÿÿÿÿîØ¸—pO.PÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýèЪ²±ŠfD' »ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøãƨƒ`<# eØÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòßÀŸ|8aÒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ”^ÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿAËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿpÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿbyÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWjÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿF^ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ6Qÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿû.>ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿô%2þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿì*øÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæ ðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÛéÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßãÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿí×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿäÆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÚÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÊ´ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¦ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ²šÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¤Žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ™zÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‹jÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿkRÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿNDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ”:ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§"ùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏZÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýüÿç9 T¨òÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþço0 Âÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþúþûˆ6& “ûÿÿüùûþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü”Iÿ)3ÿ!6Bú†7* 6 l"4=¦6Sa×NyûIq†ÿ;]oÿ7Vgÿ)AOÿ 2<þ(0û")ø#+ö-7ö-EQøDgwûZˆ›þs¬Çÿ¾Ýÿo¥¾ÿ^¤ÿMt‰ÿGl†þ$+ø"4>ý+CPö €4) . _.7›6ScÏJr‡öQ|“ÿDhzÿQ}•ÿ}ÃìÿKsŠÿ$þ ùø$,÷'`€ÿFmÿJr—ÿLvœÿVŠ·ÿb˜ÇÿHq–ÿ7Voü &ù*?Kÿ/8ÛY/$  N"Š'þ,DQû ˆ6& !8DTP‚—¨k©Çòfž¹ÿX†›ÿEi~ÿ7Ujÿ2Nfÿ7Uqÿ@c„ÿJs—ÿTªÿX‰´ÿOªÿKz¥ÿ^‘¾ÿYˆ²ÿMxžÿa•Åÿ^’Àÿ_“Áÿa•Äÿb—Æÿd™ÉÿešÊÿf›ËÿhžÎÿj¡Ñÿi Òÿh ÑÿdÐÿfŸÑÿi¢Óÿk¤Õÿl§ÚÿIr–ÿ:[yÿ>bÿAe…ÿ0Lfÿ1Ldÿ!3?ÿ-5þ)2ço0 $b‚ÿBh‰ÿAe†ÿ1Meÿ@e†ÿ@e†ÿ)@U§!3DD_”Ãÿ`•Ãÿ_“Áÿ`•Ãÿb—Æÿd™ÉÿdšÊÿfœÌÿhŸÏÿj ÑÿhŸÐÿdÐÿbœÐÿh Òÿl¦Úÿ\Ž»ÿP|£ÿQ}¡ÿUƒ©ÿU„°ÿ[ÁÿR‚ÃÿM{Çÿ^“Ðÿn§×ÿk£Öÿk¤Öÿk¥Öÿk¤Öÿk¥×ÿl¦Ùÿl¦Ùÿn¨Ûÿs°ãÿQ~¥ÿBi‹ÿBi‹ÿAf‡ÿAe†ÿ0Ldÿ@d…ÿ@d„ÿJr–ÿ$8I”(>SRc™Éÿa•Äÿa—Æÿc™ÉÿeœÍÿgžÏÿgžÎÿi¡Óÿj Ñÿj¢Óÿj¢Óÿh Òÿh¡Òÿi¡Óÿm¨Ûÿ]»ÿQ}«ÿU…ÇÿIwÄÿLzÉÿR‚ÊÿAkÃÿN}Èÿd›Ñÿk¤Õÿi£Õÿl¥×ÿl¥Øÿk¥×ÿl¦Ùÿm§Úÿn©Üÿpªßÿt²éÿRªÿBi‰ÿCi‹ÿAg‡ÿAf†ÿ1Mfÿ>cƒÿ?d…ÿDkÿ?cƒÿ$/N7Vr`gŸÐÿdšÊÿcšËÿ`•Æÿ\޼ÿ`“Áÿe›Êÿ_‘¾ÿi¡Òÿj¢Óÿi¡Óÿj¢Ôÿi£Õÿk¤Öÿn©Ýÿ^‘¼ÿP|­ÿDoÆÿGsÃÿEpÂÿ>hÀÿR‚Êÿp¬×ÿj¤Öÿj¤Öÿj¤Öÿl¦Øÿl§Úÿp«ßÿp­áÿq®ãÿp«ßÿk¤×ÿgžÍÿLv›ÿEmÿDiŠÿCg‡ÿAf†ÿ2Mfÿ@d„ÿ;]{ÿCh‰ÿ7Wtÿ&;Ok6Tqj_“ÂÿW‡°ÿQ~¥ÿP|¡ÿW†«ÿXˆ±ÿ]¼ÿ`”Âÿj£Ôÿi¢Ôÿj£Öÿk¤Öÿj¥×ÿj¤×ÿo«Þÿ]ºÿNz®ÿFrÆÿBmÁÿIvÅÿIvÅÿ>hÂÿR‚Ìÿp¬Üÿm¨Ýÿo«ßÿn©Ýÿj¥×ÿfœËÿ_’¾ÿZгÿYˆ¯ÿW…®ÿ`”¿ÿ;\yÿ;^ÿFm‘ÿAe†ÿAf†ÿ2Ngÿ9[xÿ?cƒÿChŠÿDkÿ)6w*@Tz]¹ÿTªÿV†·ÿX‰ÅÿLzÅÿKxÈÿh Õÿk¥×ÿj¢Õÿj£Õÿj£Õÿj£Õÿj¤×ÿk¤×ÿo«Þÿ_‘¹ÿKw­ÿBnÆÿDoÄÿL{ËÿVˆÑÿQ‚Ïÿb˜ÑÿgžËÿ_’¾ÿYˆ²ÿUƒªÿT¨ÿY‰²ÿ^ºÿb—Åÿa–Åÿa•Äÿj¢ÒÿMyŸÿ0Leÿ;]|ÿCiŒÿAf†ÿ3Piÿ>b€ÿ7XvÿChŠÿGn’ÿ 1?‹2LdŽVˆÔÿFsÅÿJwÈÿLzÈÿGsÅÿ\‘Îÿi¢Ôÿi¢Õÿj¤×ÿk¤×ÿj£Öÿk¤×ÿk¥×ÿl§Ùÿp¬àÿ]¸ÿU…¸ÿ]‘Ñÿ^’Éÿ_’¿ÿ[´ÿ[Š­ÿV„©ÿUƒ«ÿY‰´ÿ^‘½ÿb—ÆÿeœÌÿe›ËÿgÍÿT‚«ÿKt™ÿR~¦ÿc˜ÆÿNyŸÿ=`ÿ0Kdÿ8YxÿDkÿ3PjÿBg‰ÿBiŠÿ@f‡ÿElŽÿ%:M™;[{šM|ÏÿEqÂÿBmÁÿ@jÁÿYŒÎÿn¨×ÿj£Õÿj¤Öÿj¥Øÿl¥Ùÿm¨Ûÿl¦Øÿi¡Óÿd™Èÿb—ÅÿNwœÿJr•ÿW„ªÿT‚¨ÿYгÿ[Œ·ÿ^‘¼ÿ_’¾ÿeœËÿc˜Èÿd™Éÿc˜ÇÿdšÉÿf›ÊÿhžÎÿMvÿJr–ÿ\¸ÿj¢ÒÿQ}¤ÿ9\zÿ;\zÿ1Leÿ:[yÿ7Vrÿ?cƒÿFnÿAgˆÿDkÿ)AU¤@d‰¦JxÎÿAlÁÿHvÅÿGtÅÿ;cÃÿdœ×ÿo«Üÿk¦Úÿi¢ÔÿdœËÿ`“Àÿ]»ÿ]Žºÿ]»ÿb–ÅÿV„¬ÿUƒ¬ÿ]»ÿ[Œ¸ÿV„¬ÿS€¨ÿZеÿ]½ÿdšÈÿc˜ÇÿešÉÿd›Êÿe›ËÿgžÍÿgžÎÿe›Ëÿj¢Òÿj¢ÔÿpªÛÿR¥ÿ;]|ÿAe†ÿDiŠÿ1Ngÿ.H`ÿ@e†ÿFnÿCh‰ÿCjŒÿ.G^²El™´L{ÑÿL{ËÿW‰Ðÿ]‘Ðÿa—Îÿc™Çÿa•Âÿ]¼ÿ\޹ÿ]»ÿ`”Áÿ_’Àÿ\ŽºÿY‰µÿdœÍÿXˆ°ÿQ~¥ÿS€©ÿV„®ÿT€¨ÿ\Žºÿc–Åÿb˜ÆÿdšÉÿcšÉÿeœÌÿfÌÿfÍÿgžÎÿhŸÏÿi¡Òÿj¡Óÿi¡Òÿn¨ÚÿQ}¤ÿ:]{ÿBh‰ÿCiŠÿ;^|ÿ(>Qÿ8XuÿIr–ÿCgˆÿDi‹ÿ2Oi¿S«ÀeœÎÿa•Àÿ`“»ÿ_“»ÿ[¶ÿZ‹·ÿ\ºÿ^‘¿ÿa”Ãÿc˜Æÿe›Êÿ_–ÆÿQ…´ÿW‰·ÿk¡ÒÿX‡±ÿUƒ«ÿZ‹·ÿV…®ÿY‰³ÿe›Êÿb–Åÿb˜ÆÿdšÊÿcšÉÿfœÌÿgžÎÿgžÏÿiŸÐÿi¡Ñÿj¢Óÿj¢Óÿj¢Ôÿo¨ÜÿW…­ÿ:\|ÿ=`ÿDkÿ3Qlÿ1Mfÿ1Lfÿ;]}ÿEkÿCi‹ÿ2NgÊFlÆ[¸ÿXˆ´ÿYеÿ[Œ¹ÿ_‘½ÿ^‘¾ÿ`“Áÿa•Ãÿc™ÈÿdšÉÿcšËÿs¥Ðÿˆ©Æÿ¡®·ÿ±ÇØÿQ„°ÿW…®ÿ\¹ÿW‡²ÿY‰³ÿ[Žºÿ]»ÿdšÉÿd›ÌÿeœÌÿgžÏÿhŸÐÿi Ñÿk¢Ôÿj¢Óÿj¡Óÿk¤Õÿl¤Öÿo©ÝÿUƒ¬ÿ;]|ÿ=`€ÿBhŠÿ?aÿ4PkÿAf†ÿ2Nhÿ8XyÿEm‘ÿ2OiÚGo’×R§ÿ\Ž»ÿ]‘¾ÿ_“Áÿb—Æÿc™ÈÿdšÉÿdšÉÿdšÊÿeœËÿdžÐÿ¾ËÓÿ–™˜ÿ“¤±ÿ¸ÚÿVˆ³ÿX‡°ÿX‡±ÿV…°ÿL{¥ÿRƒ¯ÿešÊÿeœÍÿgžÏÿi Ðÿh Ðÿi Òÿj¡Óÿj¢Ôÿj¢Ôÿk£Ôÿl¤Öÿm¦Øÿq¬àÿV†¯ÿ3QmÿBi‹ÿAg‰ÿBgˆÿ<]zÿ>bÿ>aÿ/Jcÿ:[yÿ8Yuä  MxŸã]‘¾ÿ`•Äÿ`”Ãÿb—Åÿb˜Çÿd™ÉÿdšÉÿe›ËÿgÍÿgÍÿd›Ìÿ‚¯Öÿt¨Õÿf¡Öÿe¢×ÿX‡°ÿX‰µÿX޾ÿiÍÿ~«Óÿ}«Óÿd›ÎÿfžÏÿh Ðÿi Ñÿi¡Òÿj¢Óÿi¢Ôÿj£Õÿk¤Öÿl¥×ÿl¥×ÿn§Úÿp¬àÿZ‹¶ÿ;]{ÿ8XvÿCi‹ÿAf‡ÿ;\yÿ@e„ÿ<_~ÿ@c‚ÿ3Piÿ/Kdí *"-U„®éc™Êÿ`•Ãÿa–Åÿb—ÇÿdšÉÿe›Êÿe›ÌÿhÎÿjŸÐÿhŸÐÿhŸÐÿb›ÏÿežÑÿi¡Óÿl¦ÚÿT„­ÿfšÇÿ¤¼Ïÿœ¨°ÿ¦ªªÿ«ÁÒÿaÑÿi Ñÿh Òÿh Òÿj£Õÿj¢Ôÿj¢Õÿk¤Öÿk¥×ÿl¥Øÿm¦Ùÿm§Úÿr®âÿ[¸ÿCiŠÿBhŠÿAg‰ÿAf‡ÿ:\yÿ?bÿ@d…ÿDjŒÿDiŠÿ*AWß ,; Z‹·ðdšÊÿa˜Çÿc™ÊÿeœÌÿgžÐÿgžÎÿhŸÑÿi¡Òÿj¡Ñÿj¢Óÿi¡Òÿh Òÿh¡Óÿj¢Ôÿn¨ÝÿU„®ÿmŸËÿÅËÍÿš¡£ÿÍÏÏÿÂØêÿ]šÏÿi¡Òÿh¡Òÿi¡Óÿh¢Ôÿj¡Óÿk£Öÿl¦Ùÿm§Ûÿn¨ÜÿpªÝÿpªÚÿr®áÿ[ºÿAgˆÿCjÿBg‰ÿAf‡ÿ:\yÿ?b‚ÿ>a€ÿCi‹ÿ>`€ÿ+DZÛ+D]*_“ÂøeœÍÿb˜Çÿ_“Âÿ\¼ÿY‰µÿe›Ëÿ_’Àÿc˜Çÿk£Ôÿj¢Óÿi¢Óÿj¢Õÿj£Õÿj£ÖÿoªÞÿU†°ÿjœÉÿÎÕÙÿ¿ÄÄÿïíéÿÉÞïÿ]šÏÿj¢Óÿk¤Õÿj¢Õÿl¦Øÿn¨Ùÿl¦Öÿl¦Ôÿi¡ÐÿdšËÿ_“ÈÿW‡ÂÿfØÿ_’¾ÿAg‰ÿCjŒÿAg‰ÿAf‡ÿ:[yÿ@d…ÿ=a€ÿ=a€ÿBh‰ÿ/Jbæ/Id2WˆµþT‚ªÿQ~£ÿO{ ÿT¦ÿXˆ¯ÿZжÿ]¼ÿf›Ëÿk¤Õÿj£Õÿk¤Öÿk¥×ÿk¥×ÿl¥×ÿo«ßÿV†°ÿd™ÈÿÉÝíÿ»Ôêÿ—¼Ýÿwª×ÿf Òÿi¡Óÿl¦Öÿm¨ÙÿdšÍÿXŠ¿ÿRƒÀÿLyÁÿQ€ÇÿR‚Íÿ[ŽÕÿ^“Ùÿpªèÿa–Ãÿ@f‡ÿDkÿ?d‡ÿAf‡ÿ;^|ÿ=_ÿ<_~ÿBiŠÿDkÿ;\zì#(>]½ÿUƒ«ÿT„¶ÿ[ÅÿN|ÅÿKxÇÿZÏÿm§×ÿj£Õÿj£Õÿk¤Öÿk¤Öÿk¥×ÿl¥Øÿl¥Øÿq­áÿZ‹µÿ\½ÿU‰·ÿS‹½ÿTŠ»ÿ_–Æÿk¤Öÿl§×ÿ_“ÑÿP€ÎÿV†ÎÿW‰Òÿ`–ÛÿfŸÞÿn«âÿnªÞÿj¤×ÿl§Öÿh¡Ïÿ^‘ÁÿHršÿCh‰ÿ@eˆÿ@e†ÿ<^}ÿAe†ÿ7Wtÿ>b‚ÿDjŒÿ=_~ô$/%,6QV‡ÏÿFrÄÿDpÄÿP€ÉÿCnÃÿR‚Éÿc™Ðÿj£Ôÿi¢Õÿk¤×ÿk¤×ÿj£Öÿl¦Ùÿl§Úÿn¨Ûÿq­áÿ[¶ÿY‰µÿMxžÿNyŸÿPz¡ÿ\»ÿn©Ýÿm¨Ûÿk§Ýÿg¢Øÿo«Üÿn©Øÿh¡Ïÿc›Èÿ]“ÁÿZŽºÿXжÿWˆ´ÿWˆ³ÿZŒ¶ÿZ޼ÿJvÿAd…ÿAf†ÿ<^}ÿ@d…ÿFmÿ?d„ÿChŠÿ=a€û#7I.)@S^T…ÎÿCnÁÿHuÄÿ>f¾ÿL{Çÿm¦Õÿl¥Õÿj£Öÿj£Öÿk¥Øÿl¦Øÿm§Úÿm§Ûÿn©Ýÿo«ßÿt²èÿ[Œ¶ÿc˜Èÿd›Ëÿh¢Öÿm©Ýÿf ÓÿdœÍÿ`˜Èÿ^”ÂÿYºÿXжÿW‰´ÿWˆ´ÿV‡²ÿWеÿY‹¶ÿZŒ·ÿY‹·ÿV‡´ÿSƒ²ÿSƒ²ÿU†·ÿNz¦ÿ@d„ÿ<_}ÿ?d„ÿFo’ÿCi‹ÿAg‡ÿ@d…ÿ$.62MbjM}ÎÿBlÁÿEqÃÿKyÆÿ