znc-1.8.2/0000755000175000017500000000000013725535374012556 5ustar somebodysomebodyznc-1.8.2/Makefile.in0000644000175000017500000002333013725535374014624 0ustar somebodysomebodySHELL := @SHELL@ # Support out-of-tree builds srcdir := @srcdir@ VPATH := @srcdir@ prefix := @prefix@ exec_prefix := @exec_prefix@ datarootdir := @datarootdir@ bindir := @bindir@ datadir := @datadir@ sysconfdir := @sysconfdir@ libdir := @libdir@ includedir := @includedir@ sbindir := @sbindir@ localstatedir := @localstatedir@ systemdsystemunitdir := @systemdsystemunitdir@ CXX := @CXX@ CXXFLAGS := -I$(srcdir)/include -Iinclude @CPPFLAGS@ @CXXFLAGS@ LDFLAGS := @LDFLAGS@ LIBS := @LIBS@ LIBZNC := @LIBZNC@ LIBZNCDIR:= @LIBZNCDIR@ MODDIR := @MODDIR@ DATADIR := @DATADIR@ PKGCONFIGDIR := $(libdir)/pkgconfig INSTALL := @INSTALL@ INSTALL_PROGRAM := @INSTALL_PROGRAM@ INSTALL_SCRIPT := @INSTALL_SCRIPT@ INSTALL_DATA := @INSTALL_DATA@ GIT := @GIT@ SED := @SED@ GTEST_DIR := @GTEST_DIR@ GMOCK_DIR := @GMOCK_DIR@ ifeq "$(GTEST_DIR)" "" GTEST_DIR := $(srcdir)/third_party/googletest/googletest endif ifeq "$(GMOCK_DIR)" "" GMOCK_DIR := $(srcdir)/third_party/googletest/googlemock endif qt_CFLAGS := @qt_CFLAGS@ -fPIC -std=c++11 -pthread qt_LIBS := @qt_LIBS@ -pthread # Force the simple internal regex engine to get consistent behavior on all platforms. # See https://code.google.com/p/chromium/issues/detail?id=317224 for more details. GTEST_FLAGS := -DGTEST_HAS_POSIX_RE=0 -I$(GMOCK_DIR)/include -I$(GTEST_DIR)/include # Silence warnings about overload virtual Csock::Write(), and missing field # initializers in both gtest and gmock GTEST_FLAGS += -Wno-overloaded-virtual -Wno-missing-field-initializers LIB_SRCS := ZNCString.cpp Csocket.cpp znc.cpp IRCNetwork.cpp User.cpp IRCSock.cpp \ Client.cpp Chan.cpp Nick.cpp Server.cpp Modules.cpp MD5.cpp Buffer.cpp Utils.cpp \ FileUtils.cpp HTTPSock.cpp Template.cpp ClientCommand.cpp Socket.cpp SHA256.cpp \ WebModules.cpp Listener.cpp Config.cpp ZNCDebug.cpp Threads.cpp version.cpp Query.cpp \ SSLVerifyHost.cpp Message.cpp Translation.cpp LIB_SRCS := $(addprefix src/,$(LIB_SRCS)) BIN_SRCS := src/main.cpp LIB_OBJS := $(patsubst %cpp,%o,$(LIB_SRCS)) BIN_OBJS := $(patsubst %cpp,%o,$(BIN_SRCS)) TESTS := StringTest ConfigTest UtilsTest ThreadTest NickTest ClientTest NetworkTest \ MessageTest ModulesTest IRCSockTest QueryTest BufferTest UserTest TESTS := $(addprefix test/,$(addsuffix .o,$(TESTS))) CLEAN := znc src/*.o test/*.o core core.* .version_extra .depend modules/.depend \ unittest $(LIBZNC) DISTCLEAN := Makefile config.log config.status znc-buildmod include/znc/zncconfig.h \ modules/Makefile man/Makefile znc.pc znc-uninstalled.pc test/Makefile CXXFLAGS += -D_MODDIR_=\"$(MODDIR)\" -D_DATADIR_=\"$(DATADIR)\" ifneq "$(V)" "" VERBOSE=1 endif ifeq "$(VERBOSE)" "" Q=@ E=@echo C=-s else Q= E=@\# C= endif .PHONY: all man modules clean distclean install version_extra_recompile test .SECONDARY: all: znc man modules $(LIBZNC) @echo "" @echo " ZNC was successfully compiled." @echo " Use '$(MAKE) install' to install ZNC to '$(prefix)'." ifeq "$(LIBZNC)" "" OBJS := $(BIN_OBJS) $(LIB_OBJS) znc: $(OBJS) $(E) Linking znc... $(Q)$(CXX) $(LDFLAGS) -o $@ $(OBJS) $(LIBS) else znc: $(BIN_OBJS) $(LIBZNC) $(E) Linking znc... $(Q)$(CXX) $(LDFLAGS) -o $@ $(BIN_OBJS) -L. -lznc -Wl,-rpath,$(LIBZNCDIR) $(LIBS) $(LIBZNC): $(LIB_OBJS) $(E) Linking $(LIBZNC)... $(Q)$(CXX) $(LDFLAGS) -shared -o $@ $(LIB_OBJS) $(LIBS) -Wl,--out-implib=libznc.dll.a endif unittest: $(LIB_OBJS) test/gtest-all.o test/gmock-all.o test/gmock-main.o $(TESTS) $(E) Linking unit test... $(Q)$(CXX) $(LDFLAGS) -o $@ $(LIB_OBJS) test/gtest-all.o test/gmock-all.o test/gmock-main.o $(TESTS) $(LIBS) inttest: test/Integration.o test/Int-gtest-all.o test/Int-gmock-all.o $(E) Linking integration test... $(Q)g++ -std=c++11 -o $@ test/Integration.o test/Int-gtest-all.o test/Int-gmock-all.o $(LIBS) $(qt_LIBS) man: @$(MAKE) -C man $(C) modules: $(LIBZNC) include/znc/Csocket.h @$(MAKE) -C modules $(C) clean: rm -rf $(CLEAN) @$(MAKE) -C modules clean; @$(MAKE) -C man clean distclean: clean rm -rf $(DISTCLEAN) src/%.o: src/%.cpp Makefile include/znc/Csocket.h @mkdir -p .depend src $(E) Building core object $*... $(Q)$(CXX) $(CXXFLAGS) -c -o $@ $< -MD -MF .depend/$*.dep -MT $@ test/%.o: test/%.cpp Makefile include/znc/Csocket.h @mkdir -p .depend test $(E) Building test object $*... $(Q)$(CXX) $(CXXFLAGS) $(GTEST_FLAGS) -c -o $@ $< -MD -MF .depend/$*.test.dep -MT $@ test/gtest-all.o: $(GTEST_DIR)/src/gtest-all.cc Makefile @mkdir -p .depend test $(E) Building test object gtest-all... $(Q)$(CXX) $(CXXFLAGS) $(GTEST_FLAGS) -I$(GTEST_DIR) -c -o $@ $< -MD -MF .depend/gtest-all.dep -MT $@ test/gmock-all.o: $(GMOCK_DIR)/src/gmock-all.cc Makefile @mkdir -p .depend test $(E) Building test object gmock-all... $(Q)$(CXX) $(CXXFLAGS) $(GTEST_FLAGS) -I$(GMOCK_DIR) -c -o $@ $< -MD -MF .depend/gmock-all.dep -MT $@ test/gmock-main.o: $(GMOCK_DIR)/src/gmock_main.cc Makefile @mkdir -p .depend test $(E) Building test object gmock-main... $(Q)$(CXX) $(CXXFLAGS) $(GTEST_FLAGS) -c -o $@ $< -MD -MF .depend/gmock-main.dep -MT $@ # Qt fails under TSAN, so CXXFLAGS/LDFLAGS can't be used. test/Integration.o: test/integration/autoconf-all.cpp Makefile @mkdir -p .depend test $(E) Building test object Integration... $(Q)g++ $(qt_CFLAGS) $(GTEST_FLAGS) -I$(srcdir)/test/integration/framework -c -o $@ $< -MD -MF .depend/Integration.test.dep -MT $@ '-DZNC_BIN_DIR="$(bindir)"' '-DZNC_SRC_DIR="$(realpath $(srcdir))"' test/Int-gtest-all.o: $(GTEST_DIR)/src/gtest-all.cc Makefile @mkdir -p .depend test $(E) Building test object Int-gtest-all... $(Q)g++ $(qt_CFLAGS) $(GTEST_FLAGS) -I$(GTEST_DIR) -c -o $@ $< -MD -MF .depend/Int-gtest-all.dep -MT $@ test/Int-gmock-all.o: $(GMOCK_DIR)/src/gmock-all.cc Makefile @mkdir -p .depend test $(E) Building test object Int-gmock-all... $(Q)g++ $(qt_CFLAGS) $(GTEST_FLAGS) -I$(GMOCK_DIR) -c -o $@ $< -MD -MF .depend/Int-gmock-all.dep -MT $@ test/Int-gmock-main.o: $(GMOCK_DIR)/src/gmock_main.cc Makefile @mkdir -p .depend test $(E) Building test object Int-gmock-main... $(Q)g++ $(qt_CFLAGS) $(GTEST_FLAGS) -c -o $@ $< -MD -MF .depend/Int-gmock-main.dep -MT $@ ifneq "" "" # If git commit was changed since previous build, add a phony target to dependencies, forcing version.o to be recompiled # Nightlies have pregenerated version.cpp src/version.cpp: Makefile version.sh $(shell if [ x`cat .version_extra 2> /dev/null` != x`$(srcdir)/version.sh "$(GIT)" 3>&2 2> /dev/null` ]; then echo version_extra_recompile; fi) @mkdir -p .depend src $(E) Building source file version.cpp... $(Q)WRITE_OUTPUT=yes $(srcdir)/version.sh "$(GIT)" > .version_extra 2> /dev/null CLEAN += src/version.cpp endif CLEAN += src/Csocket.cpp include/znc/Csocket.h src/Csocket.cpp: third_party/Csocket/Csocket.cc @rm -f $@ @mkdir -p src @sed -e 's:#include "Csocket.h":#include :' $^ > $@ include/znc/Csocket.h: third_party/Csocket/Csocket.h @rm -f $@ @mkdir -p include/znc @sed -e 's:#include "defines.h":#include :' $^ > $@ third_party/Csocket/Csocket.h third_party/Csocket/Csocket.cc: @echo It looks like git submodules are not initialized. Run: git submodule update --init --recursive @exit 1 znc.service: znc.service.in @sed -e "s:\@CMAKE_INSTALL_FULL_BINDIR\@:$(bindir):" $^ > $@ CLEAN += znc.service install: znc znc.service $(LIBZNC) test -d $(DESTDIR)$(bindir) || $(INSTALL) -d $(DESTDIR)$(bindir) test -d $(DESTDIR)$(includedir)/znc || $(INSTALL) -d $(DESTDIR)$(includedir)/znc test -d $(DESTDIR)$(PKGCONFIGDIR) || $(INSTALL) -d $(DESTDIR)$(PKGCONFIGDIR) test -d $(DESTDIR)$(MODDIR) || $(INSTALL) -d $(DESTDIR)$(MODDIR) test -d $(DESTDIR)$(DATADIR) || $(INSTALL) -d $(DESTDIR)$(DATADIR) cp -R $(srcdir)/webskins $(DESTDIR)$(DATADIR) find $(DESTDIR)$(DATADIR)/webskins -type d -exec chmod 0755 '{}' \; find $(DESTDIR)$(DATADIR)/webskins -type f -exec chmod 0644 '{}' \; $(INSTALL_PROGRAM) znc $(DESTDIR)$(bindir) $(INSTALL_SCRIPT) znc-buildmod $(DESTDIR)$(bindir) $(INSTALL_DATA) $(srcdir)/include/znc/*.h $(DESTDIR)$(includedir)/znc $(INSTALL_DATA) include/znc/*.h $(DESTDIR)$(includedir)/znc $(INSTALL_DATA) znc.pc $(DESTDIR)$(PKGCONFIGDIR) @$(MAKE) -C modules install DESTDIR=$(DESTDIR); if test -n "$(LIBZNC)"; then \ test -d $(DESTDIR)$(LIBZNCDIR) || $(INSTALL) -d $(DESTDIR)$(LIBZNCDIR) || exit 1 ; \ $(INSTALL_PROGRAM) $(LIBZNC) $(DESTDIR)$(LIBZNCDIR) || exit 1 ; \ $(INSTALL_PROGRAM) libznc.dll.a $(DESTDIR)$(libdir) || exit 1 ; \ fi @$(MAKE) -C man install DESTDIR=$(DESTDIR) @HAVE_SYSTEMD_TRUE@test -d $(DESTDIR)$(systemdsystemunitdir) || $(INSTALL) -d $(DESTDIR)$(systemdsystemunitdir) @HAVE_SYSTEMD_TRUE@$(INSTALL_DATA) $(srcdir)/znc.service $(DESTDIR)$(systemdsystemunitdir) @echo "" @echo "******************************************************************" @echo " ZNC was successfully installed." @echo " You can use '$(bindir)/znc --makeconf'" @echo " to generate a config file." @echo "" @echo " If you need help with using ZNC, please visit our wiki at:" @echo " https://znc.in" uninstall: rm $(DESTDIR)$(bindir)/znc rm $(DESTDIR)$(bindir)/znc-buildmod rm $(DESTDIR)$(includedir)/znc/*.h rm $(DESTDIR)$(PKGCONFIGDIR)/znc.pc rm -rf $(DESTDIR)$(DATADIR)/webskins if test -n "$(LIBZNC)"; then \ rm $(DESTDIR)$(LIBZNCDIR)/$(LIBZNC) || exit 1 ; \ rmdir $(DESTDIR)$(LIBZNCDIR) || exit 1 ; \ fi @$(MAKE) -C man uninstall DESTDIR=$(DESTDIR) @if test -n "modules"; then \ $(MAKE) -C modules uninstall DESTDIR=$(DESTDIR); \ fi rmdir $(DESTDIR)$(bindir) rmdir $(DESTDIR)$(includedir)/znc rmdir $(DESTDIR)$(PKGCONFIGDIR) @echo "Successfully uninstalled, but empty directories were left behind" test: unittest $(Q)./unittest # This test uses files at /lib/znc, which is less than ideal, especially from build scripts of distros. # That's why it's a separate make target. test2: inttest $(Q)./inttest -include $(wildcard .depend/*.dep) znc-1.8.2/install-sh0000755000175000017500000003601013725535374014562 0ustar somebodysomebody#!/bin/sh # install - install a program, script, or datafile scriptversion=2018-03-11.20; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. tab=' ' nl=' ' IFS=" $tab$nl" # Set DOITPROG to "echo" to test this script. doit=${DOITPROG-} doit_exec=${doit:-exec} # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false is_target_a_directory=possibly usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) is_target_a_directory=always dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) is_target_a_directory=never;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done # We allow the use of options -d and -T together, by making -d # take the precedence; this is for compatibility with GNU install. if test -n "$dir_arg"; then if test -n "$dst_arg"; then echo "$0: target directory not allowed when installing a directory." >&2 exit 1 fi fi if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then if test $# -gt 1 || test "$is_target_a_directory" = always; then if test ! -d "$dst_arg"; then echo "$0: $dst_arg: Is not a directory." >&2 exit 1 fi fi fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename. if test -d "$dst"; then if test "$is_target_a_directory" = never; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dstbase=`basename "$src"` case $dst in */) dst=$dst$dstbase;; *) dst=$dst/$dstbase;; esac dstdir_status=0 else dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi fi case $dstdir in */) dstdirslash=$dstdir;; *) dstdirslash=$dstdir/;; esac obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) # Note that $RANDOM variable is not portable (e.g. dash); Use it # here however when possible just to lower collision chance. tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 # Because "mkdir -p" follows existing symlinks and we likely work # directly in world-writeable /tmp, make sure that the '$tmpdir' # directory is successfully created first before we actually test # 'mkdir -p' feature. if (umask $mkdir_umask && $mkdirprog $mkdir_mode "$tmpdir" && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. test_tmpdir="$tmpdir/a" ls_ld_tmpdir=`ls -ld "$test_tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac oIFS=$IFS IFS=/ set -f set fnord $dstdir shift set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=${dstdirslash}_inst.$$_ rmtmp=${dstdirslash}_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: znc-1.8.2/config.sub0000755000175000017500000007626313725535374014557 0ustar somebodysomebody#! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2020 Free Software Foundation, Inc. timestamp='2020-06-20' # This file 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. # # This program 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 this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS Canonicalize a configuration name. Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright 1992-2020 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; *local*) # First pass through any local machine types. echo "$1" exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Split fields of configuration type # shellcheck disable=SC2162 IFS="-" read field1 field2 field3 field4 <&2 exit 1 ;; *-*-*-*) basic_machine=$field1-$field2 os=$field3-$field4 ;; *-*-*) # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two # parts maybe_os=$field2-$field3 case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc \ | linux-newlib* | linux-musl* | linux-uclibc* | uclinux-uclibc* \ | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ | storm-chaos* | os2-emx* | rtmk-nova*) basic_machine=$field1 os=$maybe_os ;; android-linux) basic_machine=$field1-unknown os=linux-android ;; *) basic_machine=$field1-$field2 os=$field3 ;; esac ;; *-*) # A lone config we happen to match not fitting any pattern case $field1-$field2 in decstation-3100) basic_machine=mips-dec os= ;; *-*) # Second component is usually, but not always the OS case $field2 in # Prevent following clause from handling this valid os sun*os*) basic_machine=$field1 os=$field2 ;; # Manufacturers dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ | unicom* | ibm* | next | hp | isi* | apollo | altos* \ | convergent* | ncr* | news | 32* | 3600* | 3100* \ | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ | ultra | tti* | harris | dolphin | highlevel | gould \ | cbm | ns | masscomp | apple | axis | knuth | cray \ | microblaze* | sim | cisco \ | oki | wec | wrs | winbond) basic_machine=$field1-$field2 os= ;; *) basic_machine=$field1 os=$field2 ;; esac ;; esac ;; *) # Convert single-component short-hands not valid as part of # multi-component configurations. case $field1 in 386bsd) basic_machine=i386-pc os=bsd ;; a29khif) basic_machine=a29k-amd os=udi ;; adobe68k) basic_machine=m68010-adobe os=scout ;; alliant) basic_machine=fx80-alliant os= ;; altos | altos3068) basic_machine=m68k-altos os= ;; am29k) basic_machine=a29k-none os=bsd ;; amdahl) basic_machine=580-amdahl os=sysv ;; amiga) basic_machine=m68k-unknown os= ;; amigaos | amigados) basic_machine=m68k-unknown os=amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=sysv4 ;; apollo68) basic_machine=m68k-apollo os=sysv ;; apollo68bsd) basic_machine=m68k-apollo os=bsd ;; aros) basic_machine=i386-pc os=aros ;; aux) basic_machine=m68k-apple os=aux ;; balance) basic_machine=ns32k-sequent os=dynix ;; blackfin) basic_machine=bfin-unknown os=linux ;; cegcc) basic_machine=arm-unknown os=cegcc ;; convex-c1) basic_machine=c1-convex os=bsd ;; convex-c2) basic_machine=c2-convex os=bsd ;; convex-c32) basic_machine=c32-convex os=bsd ;; convex-c34) basic_machine=c34-convex os=bsd ;; convex-c38) basic_machine=c38-convex os=bsd ;; cray) basic_machine=j90-cray os=unicos ;; crds | unos) basic_machine=m68k-crds os= ;; da30) basic_machine=m68k-da30 os= ;; decstation | pmax | pmin | dec3100 | decstatn) basic_machine=mips-dec os= ;; delta88) basic_machine=m88k-motorola os=sysv3 ;; dicos) basic_machine=i686-pc os=dicos ;; djgpp) basic_machine=i586-pc os=msdosdjgpp ;; ebmon29k) basic_machine=a29k-amd os=ebmon ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=ose ;; gmicro) basic_machine=tron-gmicro os=sysv ;; go32) basic_machine=i386-pc os=go32 ;; h8300hms) basic_machine=h8300-hitachi os=hms ;; h8300xray) basic_machine=h8300-hitachi os=xray ;; h8500hms) basic_machine=h8500-hitachi os=hms ;; harris) basic_machine=m88k-harris os=sysv3 ;; hp300 | hp300hpux) basic_machine=m68k-hp os=hpux ;; hp300bsd) basic_machine=m68k-hp os=bsd ;; hppaosf) basic_machine=hppa1.1-hp os=osf ;; hppro) basic_machine=hppa1.1-hp os=proelf ;; i386mach) basic_machine=i386-mach os=mach ;; isi68 | isi) basic_machine=m68k-isi os=sysv ;; m68knommu) basic_machine=m68k-unknown os=linux ;; magnum | m3230) basic_machine=mips-mips os=sysv ;; merlin) basic_machine=ns32k-utek os=sysv ;; mingw64) basic_machine=x86_64-pc os=mingw64 ;; mingw32) basic_machine=i686-pc os=mingw32 ;; mingw32ce) basic_machine=arm-unknown os=mingw32ce ;; monitor) basic_machine=m68k-rom68k os=coff ;; morphos) basic_machine=powerpc-unknown os=morphos ;; moxiebox) basic_machine=moxie-unknown os=moxiebox ;; msdos) basic_machine=i386-pc os=msdos ;; msys) basic_machine=i686-pc os=msys ;; mvs) basic_machine=i370-ibm os=mvs ;; nacl) basic_machine=le32-unknown os=nacl ;; ncr3000) basic_machine=i486-ncr os=sysv4 ;; netbsd386) basic_machine=i386-pc os=netbsd ;; netwinder) basic_machine=armv4l-rebel os=linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=newsos ;; news1000) basic_machine=m68030-sony os=newsos ;; necv70) basic_machine=v70-nec os=sysv ;; nh3000) basic_machine=m68k-harris os=cxux ;; nh[45]000) basic_machine=m88k-harris os=cxux ;; nindy960) basic_machine=i960-intel os=nindy ;; mon960) basic_machine=i960-intel os=mon960 ;; nonstopux) basic_machine=mips-compaq os=nonstopux ;; os400) basic_machine=powerpc-ibm os=os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=ose ;; os68k) basic_machine=m68k-none os=os68k ;; paragon) basic_machine=i860-intel os=osf ;; parisc) basic_machine=hppa-unknown os=linux ;; psp) basic_machine=mipsallegrexel-sony os=psp ;; pw32) basic_machine=i586-unknown os=pw32 ;; rdos | rdos64) basic_machine=x86_64-pc os=rdos ;; rdos32) basic_machine=i386-pc os=rdos ;; rom68k) basic_machine=m68k-rom68k os=coff ;; sa29200) basic_machine=a29k-amd os=udi ;; sei) basic_machine=mips-sei os=seiux ;; sequent) basic_machine=i386-sequent os= ;; sps7) basic_machine=m68k-bull os=sysv2 ;; st2000) basic_machine=m68k-tandem os= ;; stratus) basic_machine=i860-stratus os=sysv4 ;; sun2) basic_machine=m68000-sun os= ;; sun2os3) basic_machine=m68000-sun os=sunos3 ;; sun2os4) basic_machine=m68000-sun os=sunos4 ;; sun3) basic_machine=m68k-sun os= ;; sun3os3) basic_machine=m68k-sun os=sunos3 ;; sun3os4) basic_machine=m68k-sun os=sunos4 ;; sun4) basic_machine=sparc-sun os= ;; sun4os3) basic_machine=sparc-sun os=sunos3 ;; sun4os4) basic_machine=sparc-sun os=sunos4 ;; sun4sol2) basic_machine=sparc-sun os=solaris2 ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun os= ;; sv1) basic_machine=sv1-cray os=unicos ;; symmetry) basic_machine=i386-sequent os=dynix ;; t3e) basic_machine=alphaev5-cray os=unicos ;; t90) basic_machine=t90-cray os=unicos ;; toad1) basic_machine=pdp10-xkl os=tops20 ;; tpf) basic_machine=s390x-ibm os=tpf ;; udi29k) basic_machine=a29k-amd os=udi ;; ultra3) basic_machine=a29k-nyu os=sym1 ;; v810 | necv810) basic_machine=v810-nec os=none ;; vaxv) basic_machine=vax-dec os=sysv ;; vms) basic_machine=vax-dec os=vms ;; vsta) basic_machine=i386-pc os=vsta ;; vxworks960) basic_machine=i960-wrs os=vxworks ;; vxworks68) basic_machine=m68k-wrs os=vxworks ;; vxworks29k) basic_machine=a29k-wrs os=vxworks ;; xbox) basic_machine=i686-pc os=mingw32 ;; ymp) basic_machine=ymp-cray os=unicos ;; *) basic_machine=$1 os= ;; esac ;; esac # Decode 1-component or ad-hoc basic machines case $basic_machine in # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) cpu=hppa1.1 vendor=winbond ;; op50n) cpu=hppa1.1 vendor=oki ;; op60c) cpu=hppa1.1 vendor=oki ;; ibm*) cpu=i370 vendor=ibm ;; orion105) cpu=clipper vendor=highlevel ;; mac | mpw | mac-mpw) cpu=m68k vendor=apple ;; pmac | pmac-mpw) cpu=powerpc vendor=apple ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) cpu=m68000 vendor=att ;; 3b*) cpu=we32k vendor=att ;; bluegene*) cpu=powerpc vendor=ibm os=cnk ;; decsystem10* | dec10*) cpu=pdp10 vendor=dec os=tops10 ;; decsystem20* | dec20*) cpu=pdp10 vendor=dec os=tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) cpu=m68k vendor=motorola ;; dpx2*) cpu=m68k vendor=bull os=sysv3 ;; encore | umax | mmax) cpu=ns32k vendor=encore ;; elxsi) cpu=elxsi vendor=elxsi os=${os:-bsd} ;; fx2800) cpu=i860 vendor=alliant ;; genix) cpu=ns32k vendor=ns ;; h3050r* | hiux*) cpu=hppa1.1 vendor=hitachi os=hiuxwe2 ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) cpu=m68000 vendor=hp ;; hp9k3[2-9][0-9]) cpu=m68k vendor=hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) cpu=hppa1.1 vendor=hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp cpu=hppa1.1 vendor=hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp cpu=hppa1.1 vendor=hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) cpu=hppa1.1 vendor=hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; i*86v32) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc os=sysv32 ;; i*86v4*) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc os=sysv4 ;; i*86v) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc os=sysv ;; i*86sol2) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc os=solaris2 ;; j90 | j90-cray) cpu=j90 vendor=cray os=${os:-unicos} ;; iris | iris4d) cpu=mips vendor=sgi case $os in irix*) ;; *) os=irix4 ;; esac ;; miniframe) cpu=m68000 vendor=convergent ;; *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) cpu=m68k vendor=atari os=mint ;; mipsEE* | ee) cpu=mips64r5900el vendor=scei case $os in linux*) ;; *) os=elf ;; esac ;; iop) cpu=mipsel vendor=scei os=irx ;; dvp) cpu=dvp vendor=scei os=elf ;; news-3600 | risc-news) cpu=mips vendor=sony os=newsos ;; next | m*-next) cpu=m68k vendor=next case $os in openstep*) ;; nextstep*) ;; ns2*) os=nextstep2 ;; *) os=nextstep3 ;; esac ;; np1) cpu=np1 vendor=gould ;; op50n-* | op60c-*) cpu=hppa1.1 vendor=oki os=proelf ;; pa-hitachi) cpu=hppa1.1 vendor=hitachi os=hiuxwe2 ;; pbd) cpu=sparc vendor=tti ;; pbb) cpu=m68k vendor=tti ;; pc532) cpu=ns32k vendor=pc532 ;; pn) cpu=pn vendor=gould ;; power) cpu=power vendor=ibm ;; ps2) cpu=i386 vendor=ibm ;; rm[46]00) cpu=mips vendor=siemens ;; rtpc | rtpc-*) cpu=romp vendor=ibm ;; sde) cpu=mipsisa32 vendor=sde os=${os:-elf} ;; simso-wrs) cpu=sparclite vendor=wrs os=vxworks ;; tower | tower-32) cpu=m68k vendor=ncr ;; vpp*|vx|vx-*) cpu=f301 vendor=fujitsu ;; w65) cpu=w65 vendor=wdc ;; w89k-*) cpu=hppa1.1 vendor=winbond os=proelf ;; none) cpu=none vendor=none ;; leon|leon[3-9]) cpu=sparc vendor=$basic_machine ;; leon-*|leon[3-9]-*) cpu=sparc vendor=`echo "$basic_machine" | sed 's/-.*//'` ;; *-*) # shellcheck disable=SC2162 IFS="-" read cpu vendor <&2 exit 1 ;; esac ;; esac # Here we canonicalize certain aliases for manufacturers. case $vendor in digital*) vendor=dec ;; commodore*) vendor=cbm ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x$os != x ] then case $os in # First match some system type aliases that might get confused # with valid system types. # solaris* is a basic system type, with this one exception. auroraux) os=auroraux ;; bluegene*) os=cnk ;; solaris1 | solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; solaris) os=solaris2 ;; unixware*) os=sysv4.2uw ;; gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # es1800 is here to avoid being matched by es* (a different OS) es1800*) os=ose ;; # Some version numbers need modification chorusos*) os=chorusos ;; isc) os=isc2.2 ;; sco6) os=sco5v6 ;; sco5) os=sco3.2v5 ;; sco4) os=sco3.2v4 ;; sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` ;; sco3.2v[4-9]* | sco5v6*) # Don't forget version if it is 3.2v4 or newer. ;; scout) # Don't match below ;; sco*) os=sco3.2v2 ;; psos*) os=psos ;; # Now accept the basic system types. # The portable systems comes first. # Each alternative MUST end in a * to match a version number. # sysv* is not here because it comes later, after sysvr4. gnu* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ | *vms* | esix* | aix* | cnk* | sunos | sunos[34]*\ | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ | sym* | kopensolaris* | plan9* \ | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ | aos* | aros* | cloudabi* | sortix* | twizzler* \ | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ | knetbsd* | mirbsd* | netbsd* \ | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \ | ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \ | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ | udi* | eabi* | lites* | ieee* | go32* | aux* | hcos* \ | chorusrdb* | cegcc* | glidix* \ | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ | midipix* | mingw32* | mingw64* | linux-gnu* | linux-android* \ | linux-newlib* | linux-musl* | linux-uclibc* \ | uxpv* | beos* | mpeix* | udk* | moxiebox* \ | interix* | uwin* | mks* | rhapsody* | darwin* \ | openstep* | oskit* | conix* | pw32* | nonstopux* \ | storm-chaos* | tops10* | tenex* | tops20* | its* | irx* \ | os2* | vos* | palmos* | uclinux* | nucleus* \ | morphos* | superux* | rtmk* | windiss* \ | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ | skyos* | haiku* | rdos* | toppers* | drops* | es* \ | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ | nsk* | powerunix* | genode*) # Remember, each alternative MUST END IN *, to match a version number. ;; qnx*) case $cpu in x86 | i*86) ;; *) os=nto-$os ;; esac ;; hiux*) os=hiuxwe2 ;; nto-qnx*) ;; nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; sim | xray | os68k* | v88r* \ | windows* | osx | abug | netware* | os9* \ | macos* | mpw* | magic* | mmixware* | mon960* | lnews*) ;; linux-dietlibc) os=linux-dietlibc ;; linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; lynx*178) os=lynxos178 ;; lynx*5) os=lynxos5 ;; lynx*) os=lynxos ;; mac*) os=`echo "$os" | sed -e 's|mac|macos|'` ;; opened*) os=openedition ;; os400*) os=os400 ;; sunos5*) os=`echo "$os" | sed -e 's|sunos5|solaris2|'` ;; sunos6*) os=`echo "$os" | sed -e 's|sunos6|solaris3|'` ;; wince*) os=wince ;; utek*) os=bsd ;; dynix*) os=bsd ;; acis*) os=aos ;; atheos*) os=atheos ;; syllable*) os=syllable ;; 386bsd) os=bsd ;; ctix* | uts*) os=sysv ;; nova*) os=rtmk-nova ;; ns2) os=nextstep2 ;; # Preserve the version number of sinix5. sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; sinix*) os=sysv4 ;; tpf*) os=tpf ;; triton*) os=sysv3 ;; oss*) os=sysv3 ;; svr4*) os=sysv4 ;; svr3) os=sysv3 ;; sysvr4) os=sysv4 ;; # This must come after sysvr4. sysv*) ;; ose*) os=ose ;; *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) os=mint ;; zvmoe) os=zvmoe ;; dicos*) os=dicos ;; pikeos*) # Until real need of OS specific support for # particular features comes up, bare metal # configurations are quite functional. case $cpu in arm*) os=eabi ;; *) os=elf ;; esac ;; nacl*) ;; ios) ;; psp) ;; none) ;; *-eabi) ;; *) echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $cpu-$vendor in score-*) os=elf ;; spu-*) os=elf ;; *-acorn) os=riscix1.2 ;; arm*-rebel) os=linux ;; arm*-semi) os=aout ;; c4x-* | tic4x-*) os=coff ;; c8051-*) os=elf ;; clipper-intergraph) os=clix ;; hexagon-*) os=elf ;; tic54x-*) os=coff ;; tic55x-*) os=coff ;; tic6x-*) os=coff ;; # This must come before the *-dec entry. pdp10-*) os=tops20 ;; pdp11-*) os=none ;; *-dec | vax-*) os=ultrix4.2 ;; m68*-apollo) os=domain ;; i386-sun) os=sunos4.0.2 ;; m68000-sun) os=sunos3 ;; m68*-cisco) os=aout ;; mep-*) os=elf ;; mips*-cisco) os=elf ;; mips*-*) os=elf ;; or32-*) os=coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=sysv3 ;; sparc-* | *-sun) os=sunos4.1.1 ;; pru-*) os=elf ;; *-be) os=beos ;; *-ibm) os=aix ;; *-knuth) os=mmixware ;; *-wec) os=proelf ;; *-winbond) os=proelf ;; *-oki) os=proelf ;; *-hp) os=hpux ;; *-hitachi) os=hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=sysv ;; *-cbm) os=amigaos ;; *-dg) os=dgux ;; *-dolphin) os=sysv3 ;; m68k-ccur) os=rtu ;; m88k-omron*) os=luna ;; *-next) os=nextstep ;; *-sequent) os=ptx ;; *-crds) os=unos ;; *-ns) os=genix ;; i370-*) os=mvs ;; *-gould) os=sysv ;; *-highlevel) os=bsd ;; *-encore) os=bsd ;; *-sgi) os=irix ;; *-siemens) os=sysv4 ;; *-masscomp) os=rtu ;; f30[01]-fujitsu | f700-fujitsu) os=uxpv ;; *-rom68k) os=coff ;; *-*bug) os=coff ;; *-apple) os=macos ;; *-atari*) os=mint ;; *-wrs) os=vxworks ;; *) os=none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. case $vendor in unknown) case $os in riscix*) vendor=acorn ;; sunos*) vendor=sun ;; cnk*|-aix*) vendor=ibm ;; beos*) vendor=be ;; hpux*) vendor=hp ;; mpeix*) vendor=hp ;; hiux*) vendor=hitachi ;; unos*) vendor=crds ;; dgux*) vendor=dg ;; luna*) vendor=omron ;; genix*) vendor=ns ;; clix*) vendor=intergraph ;; mvs* | opened*) vendor=ibm ;; os400*) vendor=ibm ;; ptx*) vendor=sequent ;; tpf*) vendor=ibm ;; vxsim* | vxworks* | windiss*) vendor=wrs ;; aux*) vendor=apple ;; hms*) vendor=hitachi ;; mpw* | macos*) vendor=apple ;; *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) vendor=atari ;; vos*) vendor=stratus ;; esac ;; esac echo "$cpu-$vendor-$os" exit # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: znc-1.8.2/config.guess0000755000175000017500000013733213725535374015107 0ustar somebodysomebody#! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2020 Free Software Foundation, Inc. timestamp='2020-04-26' # This file 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. # # This program 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 this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: # https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess # # Please send patches to . me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2020 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. tmp= # shellcheck disable=SC2172 trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15 set_cc_for_build() { # prevent multiple calls if $tmp is already set test "$tmp" && return 0 : "${TMPDIR=/tmp}" # shellcheck disable=SC2039 { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } dummy=$tmp/dummy case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in ,,) echo "int x;" > "$dummy.c" for driver in cc gcc c89 c99 ; do if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then CC_FOR_BUILD="$driver" break fi done if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac } # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if test -f /.attbin/uname ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case "$UNAME_SYSTEM" in Linux|GNU|GNU/*) # If the system lacks a compiler, then just pick glibc. # We could probably try harder. LIBC=gnu set_cc_for_build cat <<-EOF > "$dummy.c" #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #else LIBC=gnu #endif EOF eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`" # If ldd exists, use it to detect musl libc. if command -v ldd >/dev/null && \ ldd --version 2>&1 | grep -q ^musl then LIBC=musl fi ;; esac # Note: order is significant - the case branches are not exclusive. case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ "/sbin/$sysctl" 2>/dev/null || \ "/usr/sbin/$sysctl" 2>/dev/null || \ echo unknown)` case "$UNAME_MACHINE_ARCH" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; earmv*) arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` machine="${arch}${endian}"-unknown ;; *) machine="$UNAME_MACHINE_ARCH"-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently (or will in the future) and ABI. case "$UNAME_MACHINE_ARCH" in earm*) os=netbsdelf ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # Determine ABI tags. case "$UNAME_MACHINE_ARCH" in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "$UNAME_VERSION" in Debian*) release='-gnu' ;; *) release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "$machine-${os}${release}${abi-}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE" exit ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE" exit ;; *:MidnightBSD:*:*) echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE" exit ;; *:ekkoBSD:*:*) echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE" exit ;; *:SolidBSD:*:*) echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE" exit ;; *:OS108:*:*) echo "$UNAME_MACHINE"-unknown-os108_"$UNAME_RELEASE" exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd"$UNAME_RELEASE" exit ;; *:MirBSD:*:*) echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE" exit ;; *:Sortix:*:*) echo "$UNAME_MACHINE"-unknown-sortix exit ;; *:Twizzler:*:*) echo "$UNAME_MACHINE"-unknown-twizzler exit ;; *:Redox:*:*) echo "$UNAME_MACHINE"-unknown-redox exit ;; mips:OSF1:*.*) echo mips-dec-osf1 exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE=alpha ;; "EV4.5 (21064)") UNAME_MACHINE=alpha ;; "LCA4 (21066/21068)") UNAME_MACHINE=alpha ;; "EV5 (21164)") UNAME_MACHINE=alphaev5 ;; "EV5.6 (21164A)") UNAME_MACHINE=alphaev56 ;; "EV5.6 (21164PC)") UNAME_MACHINE=alphapca56 ;; "EV5.7 (21164PC)") UNAME_MACHINE=alphapca57 ;; "EV6 (21264)") UNAME_MACHINE=alphaev6 ;; "EV6.7 (21264A)") UNAME_MACHINE=alphaev67 ;; "EV6.8CB (21264C)") UNAME_MACHINE=alphaev68 ;; "EV6.8AL (21264B)") UNAME_MACHINE=alphaev68 ;; "EV6.8CX (21264D)") UNAME_MACHINE=alphaev68 ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE=alphaev69 ;; "EV7 (21364)") UNAME_MACHINE=alphaev7 ;; "EV7.9 (21364A)") UNAME_MACHINE=alphaev79 ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`" # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo "$UNAME_MACHINE"-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo "$UNAME_MACHINE"-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix"$UNAME_RELEASE" exit ;; arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux"$UNAME_RELEASE" exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) set_cc_for_build SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH=x86_64 fi fi echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`" exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos"$UNAME_RELEASE" exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos"$UNAME_RELEASE" ;; sun4) echo sparc-sun-sunos"$UNAME_RELEASE" ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos"$UNAME_RELEASE" exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint"$UNAME_RELEASE" exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint"$UNAME_RELEASE" exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint"$UNAME_RELEASE" exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint"$UNAME_RELEASE" exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint"$UNAME_RELEASE" exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint"$UNAME_RELEASE" exit ;; m68k:machten:*:*) echo m68k-apple-machten"$UNAME_RELEASE" exit ;; powerpc:machten:*:*) echo powerpc-apple-machten"$UNAME_RELEASE" exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix"$UNAME_RELEASE" exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix"$UNAME_RELEASE" exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix"$UNAME_RELEASE" exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`"$dummy" "$dummyarg"` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos"$UNAME_RELEASE" exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ] then if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \ [ "$TARGET_BINARY_INTERFACE"x = x ] then echo m88k-dg-dgux"$UNAME_RELEASE" else echo m88k-dg-dguxbcs"$UNAME_RELEASE" fi else echo i586-dg-dgux"$UNAME_RELEASE" fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`" exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" fi echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV" exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/lslpp ] ; then IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" fi echo "$IBM_ARCH"-ibm-aix"$IBM_REV" exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` case "$UNAME_MACHINE" in 9000/31?) HP_ARCH=m68000 ;; 9000/[34]??) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "$sc_cpu_version" in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "$sc_kernel_bits" in 32) HP_ARCH=hppa2.0n ;; 64) HP_ARCH=hppa2.0w ;; '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi if [ "$HP_ARCH" = "" ]; then set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ "$HP_ARCH" = hppa2.0w ] then set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH=hppa2.0w else HP_ARCH=hppa64 fi fi echo "$HP_ARCH"-hp-hpux"$HPUX_REV" exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux"$HPUX_REV" exit ;; 3050*:HI-UX:*:*) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo "$UNAME_MACHINE"-unknown-osf1mk else echo "$UNAME_MACHINE"-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE" exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi"$UNAME_RELEASE" exit ;; *:BSD/OS:*:*) echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE" exit ;; arm:FreeBSD:*:*) UNAME_PROCESSOR=`uname -p` set_cc_for_build if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi else echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf fi exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case "$UNAME_PROCESSOR" in amd64) UNAME_PROCESSOR=x86_64 ;; i386) UNAME_PROCESSOR=i586 ;; esac echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" exit ;; i*:CYGWIN*:*) echo "$UNAME_MACHINE"-pc-cygwin exit ;; *:MINGW64*:*) echo "$UNAME_MACHINE"-pc-mingw64 exit ;; *:MINGW*:*) echo "$UNAME_MACHINE"-pc-mingw32 exit ;; *:MSYS*:*) echo "$UNAME_MACHINE"-pc-msys exit ;; i*:PW*:*) echo "$UNAME_MACHINE"-pc-pw32 exit ;; *:Interix*:*) case "$UNAME_MACHINE" in x86) echo i586-pc-interix"$UNAME_RELEASE" exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix"$UNAME_RELEASE" exit ;; IA64) echo ia64-unknown-interix"$UNAME_RELEASE" exit ;; esac ;; i*:UWIN*:*) echo "$UNAME_MACHINE"-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-pc-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" exit ;; *:GNU:*:*) # the GNU system echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`" exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC" exit ;; *:Minix:*:*) echo "$UNAME_MACHINE"-unknown-minix exit ;; aarch64:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; arc:Linux:*:* | arceb:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; arm*:Linux:*:*) set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi else echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf fi fi exit ;; avr32*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; cris:Linux:*:*) echo "$UNAME_MACHINE"-axis-linux-"$LIBC" exit ;; crisv32:Linux:*:*) echo "$UNAME_MACHINE"-axis-linux-"$LIBC" exit ;; e2k:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; frv:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; hexagon:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; i*86:Linux:*:*) echo "$UNAME_MACHINE"-pc-linux-"$LIBC" exit ;; ia64:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; k1om:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; m32r*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; m68*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; mips:Linux:*:* | mips64:Linux:*:*) set_cc_for_build IS_GLIBC=0 test x"${LIBC}" = xgnu && IS_GLIBC=1 sed 's/^ //' << EOF > "$dummy.c" #undef CPU #undef mips #undef mipsel #undef mips64 #undef mips64el #if ${IS_GLIBC} && defined(_ABI64) LIBCABI=gnuabi64 #else #if ${IS_GLIBC} && defined(_ABIN32) LIBCABI=gnuabin32 #else LIBCABI=${LIBC} #endif #endif #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 CPU=mipsisa64r6 #else #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 CPU=mipsisa32r6 #else #if defined(__mips64) CPU=mips64 #else CPU=mips #endif #endif #endif #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) MIPS_ENDIAN=el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) MIPS_ENDIAN= #else MIPS_ENDIAN= #endif #endif EOF eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`" test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } ;; mips64el:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; openrisc*:Linux:*:*) echo or1k-unknown-linux-"$LIBC" exit ;; or32:Linux:*:* | or1k*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; padre:Linux:*:*) echo sparc-unknown-linux-"$LIBC" exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-"$LIBC" exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;; PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;; *) echo hppa-unknown-linux-"$LIBC" ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-"$LIBC" exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-"$LIBC" exit ;; ppc64le:Linux:*:*) echo powerpc64le-unknown-linux-"$LIBC" exit ;; ppcle:Linux:*:*) echo powerpcle-unknown-linux-"$LIBC" exit ;; riscv32:Linux:*:* | riscv64:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo "$UNAME_MACHINE"-ibm-linux-"$LIBC" exit ;; sh64*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; sh*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; tile*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; vax:Linux:*:*) echo "$UNAME_MACHINE"-dec-linux-"$LIBC" exit ;; x86_64:Linux:*:*) set_cc_for_build LIBCABI=$LIBC if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_X32 >/dev/null then LIBCABI="$LIBC"x32 fi fi echo "$UNAME_MACHINE"-pc-linux-"$LIBCABI" exit ;; xtensa*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION" exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo "$UNAME_MACHINE"-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo "$UNAME_MACHINE"-unknown-stop exit ;; i*86:atheos:*:*) echo "$UNAME_MACHINE"-unknown-atheos exit ;; i*86:syllable:*:*) echo "$UNAME_MACHINE"-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos"$UNAME_RELEASE" exit ;; i*86:*DOS:*:*) echo "$UNAME_MACHINE"-pc-msdosdjgpp exit ;; i*86:*:4.*:*) UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL" else echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL" fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}" exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL" else echo "$UNAME_MACHINE"-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos"$UNAME_RELEASE" exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos"$UNAME_RELEASE" exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos"$UNAME_RELEASE" exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos"$UNAME_RELEASE" exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv"$UNAME_RELEASE" exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo "$UNAME_MACHINE"-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo "$UNAME_MACHINE"-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux"$UNAME_RELEASE" exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv"$UNAME_RELEASE" else echo mips-unknown-sysv"$UNAME_RELEASE" fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; x86_64:Haiku:*:*) echo x86_64-unknown-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux"$UNAME_RELEASE" exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux"$UNAME_RELEASE" exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux"$UNAME_RELEASE" exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux"$UNAME_RELEASE" exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux"$UNAME_RELEASE" exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux"$UNAME_RELEASE" exit ;; SX-ACE:SUPER-UX:*:*) echo sxace-nec-superux"$UNAME_RELEASE" exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody"$UNAME_RELEASE" exit ;; *:Rhapsody:*:*) echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE" exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` case $UNAME_PROCESSOR in unknown) UNAME_PROCESSOR=powerpc ;; esac if command -v xcode-select > /dev/null 2> /dev/null && \ ! xcode-select --print-path > /dev/null 2> /dev/null ; then # Avoid executing cc if there is no toolchain installed as # cc will be a stub that puts up a graphical alert # prompting the user to install developer tools. CC_FOR_BUILD=no_compiler_found else set_cc_for_build fi if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_PPC >/dev/null then UNAME_PROCESSOR=powerpc fi elif test "$UNAME_PROCESSOR" = i386 ; then # uname -m returns i386 or x86_64 UNAME_PROCESSOR=$UNAME_MACHINE fi echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE" exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE" exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-*:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk"$UNAME_RELEASE" exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk"$UNAME_RELEASE" exit ;; NSR-*:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk"$UNAME_RELEASE" exit ;; NSV-*:NONSTOP_KERNEL:*:*) echo nsv-tandem-nsk"$UNAME_RELEASE" exit ;; NSX-*:NONSTOP_KERNEL:*:*) echo nsx-tandem-nsk"$UNAME_RELEASE" exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE" exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. # shellcheck disable=SC2154 if test "$cputype" = 386; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo "$UNAME_MACHINE"-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux"$UNAME_RELEASE" exit ;; *:DragonFly:*:*) echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "$UNAME_MACHINE" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`" exit ;; i*86:rdos:*:*) echo "$UNAME_MACHINE"-pc-rdos exit ;; i*86:AROS:*:*) echo "$UNAME_MACHINE"-pc-aros exit ;; x86_64:VMkernel:*:*) echo "$UNAME_MACHINE"-unknown-esx exit ;; amd64:Isilon\ OneFS:*:*) echo x86_64-unknown-onefs exit ;; *:Unleashed:*:*) echo "$UNAME_MACHINE"-unknown-unleashed"$UNAME_RELEASE" exit ;; esac # No uname command or uname output not recognized. set_cc_for_build cat > "$dummy.c" < #include #endif #if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) #if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) #include #if defined(_SIZE_T_) || defined(SIGLOST) #include #endif #endif #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) #if !defined (ultrix) #include #if defined (BSD) #if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); #else #if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); #else printf ("vax-dec-bsd\n"); exit (0); #endif #endif #else printf ("vax-dec-bsd\n"); exit (0); #endif #else #if defined(_SIZE_T_) || defined(SIGLOST) struct utsname un; uname (&un); printf ("vax-dec-ultrix%s\n", un.release); exit (0); #else printf ("vax-dec-ultrix\n"); exit (0); #endif #endif #endif #if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) #if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) #if defined(_SIZE_T_) || defined(SIGLOST) struct utsname *un; uname (&un); printf ("mips-dec-ultrix%s\n", un.release); exit (0); #else printf ("mips-dec-ultrix\n"); exit (0); #endif #endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } echo "$0: unable to guess system type" >&2 case "$UNAME_MACHINE:$UNAME_SYSTEM" in mips:Linux | mips64:Linux) # If we got here on MIPS GNU/Linux, output extra information. cat >&2 <&2 <&2 </dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = "$UNAME_MACHINE" UNAME_RELEASE = "$UNAME_RELEASE" UNAME_SYSTEM = "$UNAME_SYSTEM" UNAME_VERSION = "$UNAME_VERSION" EOF fi exit 1 # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: znc-1.8.2/configure0000755000175000017500000064142513725535373014500 0ustar somebodysomebody#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for znc 1.8.2. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='znc' PACKAGE_TARNAME='znc' PACKAGE_VERSION='1.8.2' PACKAGE_STRING='znc 1.8.2' PACKAGE_BUGREPORT='' PACKAGE_URL='' ac_unique_file="src/znc.cpp" ac_subst_vars='LTLIBOBJS LIBOBJS PYTHON PERL DATADIR MODDIR CYRUS TCL_FLAGS NOSSL MODLINK ISCYGWIN LIBZNCDIR LIBZNC MODFLAGS python_LIBS python_CFLAGS PERL_BINARY SWIG_LIB SWIG qt_LIBS qt_CFLAGS icu_LIBS icu_CFLAGS openssl_LIBS openssl_CFLAGS PTHREAD_CFLAGS PTHREAD_LIBS PTHREAD_CC ax_pthread_config BREW HAVE_SYSTEMD_FALSE HAVE_SYSTEMD_TRUE systemdsystemunitdir GMOCK_DIR GTEST_DIR PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG GIT HAVE_VISIBILITY CFLAG_VISIBILITY host_os host_vendor host_cpu host build_os build_vendor build_cpu build SED GREP INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM HAVE_CXX11 OBJEXT EXEEXT ac_ct_CXX CPPFLAGS LDFLAGS CXXFLAGS CXX target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_largefile enable_debug enable_ipv6 enable_openssl enable_zlib enable_perl enable_python enable_swig enable_cyrus enable_optimization enable_tdns enable_run_from_source enable_poll with_gtest with_gmock with_systemdsystemunitdir enable_charset with_module_prefix with_module_data_prefix enable_tcl with_tcl_flags with_tcl ' ac_precious_vars='build_alias host_alias target_alias CXX CXXFLAGS LDFLAGS LIBS CPPFLAGS CCC PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR openssl_CFLAGS openssl_LIBS icu_CFLAGS icu_LIBS qt_CFLAGS qt_LIBS python_CFLAGS python_LIBS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures znc 1.8.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/znc] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of znc 1.8.2:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-largefile omit support for large files --enable-debug enable debugging --disable-ipv6 disable ipv6 support --disable-openssl disable openssl --disable-zlib disable zlib --enable-perl enable perl --enable-python[=python3] enable python. By default python3.pc of pkg-config is used, but you can use another name, for example python-3.1 --enable-swig Enable automatic generation of source files needed for modperl/modpython. This value is ignored if perl and python are disabled. Usually no need to enable it. --enable-cyrus enable cyrus --disable-optimization Disable some compiler optimizations to decrease memory usage while compiling --disable-tdns disable threads usage for DNS resolving --enable-run-from-source ZNC will be runnable without installation --disable-poll use select() instead of poll() --disable-charset disable ICU support --enable-tcl enable modtcl Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-gtest=DIR Path to directory with src/gtest-all.cc file. If not specified, git submodule will be used. If it is not available either, "make test" will fail. --with-gmock=DIR Path to directory with src/gmock-all.cc and src/gmock_main.cc files. If not specified, git submodule will be used. If it is not available either, "make test" will fail. --with-systemdsystemunitdir=DIR Directory for systemd service files --with-module-prefix module object code [LIBDIR/znc] --with-module-data-prefix=DIR static module data (webadmin skins) [DATADIR/znc] --with-tcl-flags=FLAGS The flags needed for compiling and linking modtcl --with-tcl=DIR directory containing tclConfig.sh Some influential environment variables: CXX C++ compiler command CXXFLAGS C++ compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path PKG_CONFIG_LIBDIR path overriding pkg-config's built-in search path openssl_CFLAGS C compiler flags for openssl, overriding pkg-config openssl_LIBS linker flags for openssl, overriding pkg-config icu_CFLAGS C compiler flags for icu, overriding pkg-config icu_LIBS linker flags for icu, overriding pkg-config qt_CFLAGS C compiler flags for qt, overriding pkg-config qt_LIBS linker flags for qt, overriding pkg-config python_CFLAGS C compiler flags for python, overriding pkg-config python_LIBS linker flags for python, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF znc configure 1.8.2 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile # ac_fn_cxx_try_link LINENO # ------------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_link # ac_fn_cxx_check_func LINENO FUNC VAR # ------------------------------------ # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_cxx_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_cxx_check_func cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by znc $as_me 1.8.2, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu LIBZNC_VERSION=1.8.2 ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_config_headers="$ac_config_headers include/znc/zncconfig.h" # AC_PROG_CXX sets CXXFLAGS to "-O2 -g" if it is unset which we don't want CXXFLAGS="$CXXFLAGS " ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5 $as_echo_n "checking whether the C++ compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C++ compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5 $as_echo_n "checking for C++ compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C++ compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if ${ac_cv_cxx_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if ${ac_cv_prog_cxx_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu # "Optional" because we want custom error message ax_cxx_compile_cxx11_required=false ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_success=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features by default" >&5 $as_echo_n "checking whether $CXX supports C++11 features by default... " >&6; } if ${ax_cv_cxx_compile_cxx11+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include template struct check { static_assert(sizeof(int) <= sizeof(T), "not big enough"); }; struct Base { virtual void f() {} }; struct Child : public Base { virtual void f() override {} }; typedef check> right_angle_brackets; int a; decltype(a) b; typedef check check_type; check_type c; check_type&& cr = static_cast(c); auto d = a; auto l = [](){}; // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function because of this namespace test_template_alias_sfinae { struct foo {}; template using member = typename T::member_type; template void func(...) {} template void func(member*) {} void test(); void test() { func(0); } } void test_map() { std::map m; m.emplace(2, 4); } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ax_cv_cxx_compile_cxx11=yes else ax_cv_cxx_compile_cxx11=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cxx_compile_cxx11" >&5 $as_echo "$ax_cv_cxx_compile_cxx11" >&6; } if test x$ax_cv_cxx_compile_cxx11 = xyes; then ac_success=yes fi if test x$ac_success = xno; then for switch in -std=c++11 -std=c++0x; do cachevar=`$as_echo "ax_cv_cxx_compile_cxx11_$switch" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features with $switch" >&5 $as_echo_n "checking whether $CXX supports C++11 features with $switch... " >&6; } if eval \${$cachevar+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS $switch" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include template struct check { static_assert(sizeof(int) <= sizeof(T), "not big enough"); }; struct Base { virtual void f() {} }; struct Child : public Base { virtual void f() override {} }; typedef check> right_angle_brackets; int a; decltype(a) b; typedef check check_type; check_type c; check_type&& cr = static_cast(c); auto d = a; auto l = [](){}; // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function because of this namespace test_template_alias_sfinae { struct foo {}; template using member = typename T::member_type; template void func(...) {} template void func(member*) {} void test(); void test() { func(0); } } void test_map() { std::map m; m.emplace(2, 4); } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : eval $cachevar=yes else eval $cachevar=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXXFLAGS="$ac_save_CXXFLAGS" fi eval ac_res=\$$cachevar { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test x\$$cachevar = xyes; then CXXFLAGS="$CXXFLAGS $switch" ac_success=yes break fi done fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test x$ax_cxx_compile_cxx11_required = xtrue; then if test x$ac_success = xno; then as_fn_error $? "*** A compiler with support for C++11 language features is required." "$LINENO" 5 fi else if test x$ac_success = xno; then HAVE_CXX11=0 { $as_echo "$as_me:${as_lineno-$LINENO}: No compiler with C++11 support was found" >&5 $as_echo "$as_me: No compiler with C++11 support was found" >&6;} else HAVE_CXX11=1 $as_echo "#define HAVE_CXX11 1" >>confdefs.h fi fi if test x"$HAVE_CXX11" != x1; then as_fn_error $? "Upgrade your compiler. GCC 4.8+ and Clang 3.2+ are known to work." "$LINENO" 5 fi appendLib () { if test "$LIBS" != ""; then LIBS="$LIBS $*" else LIBS=$* fi } appendCXX () { if test "$CXXFLAGS" != ""; then CXXFLAGS="$CXXFLAGS $*" else CXXFLAGS=$* fi } appendMod () { if test "$MODFLAGS" != ""; then MODFLAGS="$MODFLAGS $*" else MODFLAGS=$* fi } appendLD () { if test "$LDFLAGS" != ""; then LDFLAGS="$LDFLAGS $*" else LDFLAGS=$* fi } ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if ${ac_cv_path_SED+:} false; then : $as_echo_n "(cached) " >&6 else ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 $as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac # Check whether --enable-largefile was given. if test "${enable_largefile+set}" = set; then : enableval=$enable_largefile; fi if test "$enable_largefile" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 $as_echo_n "checking for special C compiler options needed for large files... " >&6; } if ${ac_cv_sys_largefile_CC+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_sys_largefile_CC=no if test "$GCC" != yes; then ac_save_CC=$CC while :; do # IRIX 6.2 and later do not support large files by default, # so use the C compiler's -n32 option if that helps. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : break fi rm -f core conftest.err conftest.$ac_objext CC="$CC -n32" if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_sys_largefile_CC=' -n32'; break fi rm -f core conftest.err conftest.$ac_objext break done CC=$ac_save_CC rm -f conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 $as_echo "$ac_cv_sys_largefile_CC" >&6; } if test "$ac_cv_sys_largefile_CC" != no; then CC=$CC$ac_cv_sys_largefile_CC fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 $as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } if ${ac_cv_sys_file_offset_bits+:} false; then : $as_echo_n "(cached) " >&6 else while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_sys_file_offset_bits=no; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _FILE_OFFSET_BITS 64 #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_sys_file_offset_bits=64; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_sys_file_offset_bits=unknown break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 $as_echo "$ac_cv_sys_file_offset_bits" >&6; } case $ac_cv_sys_file_offset_bits in #( no | unknown) ;; *) cat >>confdefs.h <<_ACEOF #define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits _ACEOF ;; esac rm -rf conftest* if test $ac_cv_sys_file_offset_bits = unknown; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 $as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } if ${ac_cv_sys_large_files+:} false; then : $as_echo_n "(cached) " >&6 else while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_sys_large_files=no; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _LARGE_FILES 1 #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_sys_large_files=1; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_sys_large_files=unknown break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 $as_echo "$ac_cv_sys_large_files" >&6; } case $ac_cv_sys_large_files in #( no | unknown) ;; *) cat >>confdefs.h <<_ACEOF #define _LARGE_FILES $ac_cv_sys_large_files _ACEOF ;; esac rm -rf conftest* fi fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu CFLAG_VISIBILITY= HAVE_VISIBILITY=0 if test -n "$GXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the -Werror option is usable" >&5 $as_echo_n "checking whether the -Werror option is usable... " >&6; } if ${znc_cv_cc_vis_werror+:} false; then : $as_echo_n "(cached) " >&6 else znc_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : znc_cv_cc_vis_werror=yes else znc_cv_cc_vis_werror=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXXFLAGS="$znc_save_CXXFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $znc_cv_cc_vis_werror" >&5 $as_echo "$znc_cv_cc_vis_werror" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for simple visibility declarations" >&5 $as_echo_n "checking for simple visibility declarations... " >&6; } if ${znc_cv_cc_visibility+:} false; then : $as_echo_n "(cached) " >&6 else znc_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fvisibility=hidden" if test $znc_cv_cc_vis_werror = yes; then CXXFLAGS="$CXXFLAGS -Werror" fi cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ extern __attribute__((__visibility__("hidden"))) int hiddenvar; extern __attribute__((__visibility__("default"))) int exportedvar; extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void); extern __attribute__((__visibility__("default"))) int exportedfunc (void); void dummyfunc (void); void dummyfunc (void) {} int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : znc_cv_cc_visibility=yes else znc_cv_cc_visibility=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXXFLAGS="$znc_save_CXXFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $znc_cv_cc_visibility" >&5 $as_echo "$znc_cv_cc_visibility" >&6; } if test $znc_cv_cc_visibility = yes; then CFLAG_VISIBILITY="-fvisibility=hidden" HAVE_VISIBILITY=1 fi fi cat >>confdefs.h <<_ACEOF #define HAVE_VISIBILITY $HAVE_VISIBILITY _ACEOF ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu # Extract the first word of "git", so it can be a program name with args. set dummy git; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GIT+:} false; then : $as_echo_n "(cached) " >&6 else case $GIT in [\\/]* | ?:[\\/]*) ac_cv_path_GIT="$GIT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GIT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi GIT=$ac_cv_path_GIT if test -n "$GIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GIT" >&5 $as_echo "$GIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 $as_echo "$ac_pt_PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 $as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } PKG_CONFIG="" fi fi # Check whether --enable-debug was given. if test "${enable_debug+set}" = set; then : enableval=$enable_debug; DEBUG="$enableval" else DEBUG="no" fi # Check whether --enable-ipv6 was given. if test "${enable_ipv6+set}" = set; then : enableval=$enable_ipv6; IPV6="$enableval" else IPV6="yes" fi # Check whether --enable-openssl was given. if test "${enable_openssl+set}" = set; then : enableval=$enable_openssl; SSL="$enableval" else SSL="auto" fi # Check whether --enable-zlib was given. if test "${enable_zlib+set}" = set; then : enableval=$enable_zlib; ZLIB="$enableval" else ZLIB="auto" fi # Check whether --enable-perl was given. if test "${enable_perl+set}" = set; then : enableval=$enable_perl; PERL="$enableval" else PERL="no" fi # Check whether --enable-python was given. if test "${enable_python+set}" = set; then : enableval=$enable_python; PYTHON="$enableval" else PYTHON="no" fi # Check whether --enable-swig was given. if test "${enable_swig+set}" = set; then : enableval=$enable_swig; USESWIG="$enableval" else USESWIG="auto" fi # Check whether --enable-cyrus was given. if test "${enable_cyrus+set}" = set; then : enableval=$enable_cyrus; if test "$enableval" = "yes" ; then CYRUS=1; fi fi # Check whether --enable-optimization was given. if test "${enable_optimization+set}" = set; then : enableval=$enable_optimization; OPTIMIZE="$enableval" else OPTIMIZE="yes" fi # Check whether --enable-tdns was given. if test "${enable_tdns+set}" = set; then : enableval=$enable_tdns; TDNS="$enableval" else TDNS="auto" fi # Check whether --enable-run-from-source was given. if test "${enable_run_from_source+set}" = set; then : enableval=$enable_run_from_source; if test "x$enableval" = "xyes" ; then $as_echo "#define RUN_FROM_SOURCE 1" >>confdefs.h fi RUNFROMSOURCE="$enableval" else RUNFROMSOURCE="no" fi # Check whether --enable-poll was given. if test "${enable_poll+set}" = set; then : enableval=$enable_poll; POLL="$enableval" else POLL="yes" fi # Check whether --with-gtest was given. if test "${with_gtest+set}" = set; then : withval=$with_gtest; fi if test "x$with_gtest" != xno; then GTEST_DIR=$with_gtest fi # Check whether --with-gmock was given. if test "${with_gmock+set}" = set; then : withval=$with_gmock; fi if test "x$with_gmock" != xno; then GMOCK_DIR=$with_gmock fi # Check whether --with-systemdsystemunitdir was given. if test "${with_systemdsystemunitdir+set}" = set; then : withval=$with_systemdsystemunitdir; if test x"$with_systemdsystemunitdir" = xyes; then with_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd) fi fi if test "x$with_systemdsystemunitdir" != xno; then systemdsystemunitdir=$with_systemdsystemunitdir fi if test -n "$with_systemdsystemunitdir" -a "x$with_systemdsystemunitdir" != xno ; then HAVE_SYSTEMD_TRUE= HAVE_SYSTEMD_FALSE='#' else HAVE_SYSTEMD_TRUE='#' HAVE_SYSTEMD_FALSE= fi case "${host_os}" in freebsd*) # -D__GNU_LIBRARY__ makes this work on fbsd 4.11 appendCXX -I/usr/local/include -D__GNU_LIBRARY__ appendLib -L/usr/local/lib -lcompat appendMod -L/usr/local/lib ;; solaris*) appendLib -lsocket -lnsl -lresolv ISSUN=1 ;; cygwin) # We don't want to use -std=gnu++11 instead of -std=c++11, but among other things, -std=c++11 defines __STRICT_ANSI__ which makes cygwin not to compile: undefined references to strerror_r, to fdopen, to strcasecmp, etc (their declarations in system headers are between ifdef) appendCXX -U__STRICT_ANSI__ ISCYGWIN=1 ;; darwin*) ISDARWIN=1 # Extract the first word of "brew", so it can be a program name with args. set dummy brew; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_BREW+:} false; then : $as_echo_n "(cached) " >&6 else case $BREW in [\\/]* | ?:[\\/]*) ac_cv_path_BREW="$BREW" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_BREW="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi BREW=$ac_cv_path_BREW if test -n "$BREW"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BREW" >&5 $as_echo "$BREW" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -n "$BREW"; then # add default homebrew paths if test "x$HAVE_ICU" != "xno"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking icu4c via homebrew" >&5 $as_echo_n "checking icu4c via homebrew... " >&6; } icu4c_prefix=`$BREW --prefix icu4c` if test -n "$icu4c_prefix"; then export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$icu4c_prefix/lib/pkgconfig" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $icu4c_prefix" >&5 $as_echo "$icu4c_prefix" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test "x$PYTHON" != "xno"; then brew_python_pc="$PYTHON" # This is duplication of non-darwin python logic below... if test "x$brew_python_pc" = "xyes"; then brew_python_pc="python3" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking python3 via homebrew" >&5 $as_echo_n "checking python3 via homebrew... " >&6; } python3_prefix=`$BREW --prefix python3` if test -n "$python3_prefix"; then python3_prefix=`find "$python3_prefix/" -name $brew_python_pc.pc | head -n1` if test -n "$python3_prefix"; then python3_prefix=`dirname "$python3_prefix"` export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$python3_prefix" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $python3_prefix" >&5 $as_echo "$python3_prefix" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no $brew_python_pc.pc found" >&5 $as_echo "no $brew_python_pc.pc found" >&6; } fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test "x$SSL" != "xno"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking openssl via homebrew" >&5 $as_echo_n "checking openssl via homebrew... " >&6; } openssl_prefix=`$BREW --prefix openssl` if test -n "$openssl_prefix"; then export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$openssl_prefix/lib/pkgconfig" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $openssl_prefix" >&5 $as_echo "$openssl_prefix" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi ;; esac if test "$DEBUG" != "no"; then appendCXX -ggdb3 $as_echo "#define _DEBUG 1" >>confdefs.h if test "x$ISCYGWIN" != x1; then # These enable some debug options in g++'s STL, e.g. invalid use of iterators # But they cause crashes on cygwin while loading modules $as_echo "#define _GLIBCXX_DEBUG 1" >>confdefs.h $as_echo "#define _GLIBCXX_DEBUG_PEDANTIC 1" >>confdefs.h fi else if test "x$OPTIMIZE" = "xyes"; then appendCXX -O2 # In old times needed to define _FORTIFY_SOURCE to 2 ourself. # Then GCC started to define it itself to 2. It was ok. # But then GCC 4.7 started to define it to 0 or 2 depending on optimization level, and it started to conflict with our define. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler predefines _FORTIFY_SOURCE" >&5 $as_echo_n "checking whether compiler predefines _FORTIFY_SOURCE... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef _FORTIFY_SOURCE #error "Just checking, nothing fatal here" #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } appendCXX "-D_FORTIFY_SOURCE=2" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi fi if test "$IPV6" != "no"; then $as_echo "#define HAVE_IPV6 1" >>confdefs.h fi if test "x$GXX" = "xyes"; then appendCXX -Wall -W -Wno-unused-parameter -Woverloaded-virtual -Wshadow fi if test "$POLL" = "yes"; then # poll() is broken on Mac OS, it fails with POLLNVAL for pipe()s. if test -n "$ISDARWIN" then # Did they give us --enable-poll? if test -n "$enable_poll" then # Yes, they asked for this. { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: poll() is known to be broken on Mac OS X. You have been warned." >&5 $as_echo "$as_me: WARNING: poll() is known to be broken on Mac OS X. You have been warned." >&2;} else # No, our default value of "yes" got applied. { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: poll() is known to be broken on Mac OS X. Using select() instead." >&5 $as_echo "$as_me: WARNING: poll() is known to be broken on Mac OS X. Using select() instead." >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Use --enable-poll for forcing poll() to be used." >&5 $as_echo "$as_me: WARNING: Use --enable-poll for forcing poll() to be used." >&2;} POLL=no fi fi if test "$POLL" = "yes"; then $as_echo "#define CSOCK_USE_POLL 1" >>confdefs.h fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getopt_long in -lgnugetopt" >&5 $as_echo_n "checking for getopt_long in -lgnugetopt... " >&6; } if ${ac_cv_lib_gnugetopt_getopt_long+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lgnugetopt $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char getopt_long (); int main () { return getopt_long (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_gnugetopt_getopt_long=yes else ac_cv_lib_gnugetopt_getopt_long=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gnugetopt_getopt_long" >&5 $as_echo "$ac_cv_lib_gnugetopt_getopt_long" >&6; } if test "x$ac_cv_lib_gnugetopt_getopt_long" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBGNUGETOPT 1 _ACEOF LIBS="-lgnugetopt $LIBS" fi for ac_func in lstat getopt_long getpassphrase clock_gettime tcsetattr do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_cxx_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done # ----- Check for dlopen { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 $as_echo_n "checking for library containing dlopen... " >&6; } if ${ac_cv_search_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF for ac_lib in '' dl; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_dlopen=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_dlopen+:} false; then : break fi done if ${ac_cv_search_dlopen+:} false; then : else ac_cv_search_dlopen=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 $as_echo "$ac_cv_search_dlopen" >&6; } ac_res=$ac_cv_search_dlopen if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" else as_fn_error $? "Could not find dlopen. ZNC will not work on this box until you upgrade this ancient system or at least install the necessary system libraries." "$LINENO" 5 fi # ----- Check for pthreads ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ax_pthread_ok=no # We used to check for pthread.h first, but this fails if pthread.h # requires special compiler flags (e.g. on True64 or Sequent). # It gets checked for in the link test anyway. # First of all, check if the user has set any of the PTHREAD_LIBS, # etcetera environment variables, and if threads linking works using # them: if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS $PTHREAD_CFLAGS" save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_join in LIBS=$PTHREAD_LIBS with CXXFLAGS=$PTHREAD_CFLAGS" >&5 $as_echo_n "checking for pthread_join in LIBS=$PTHREAD_LIBS with CXXFLAGS=$PTHREAD_CFLAGS... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char pthread_join (); int main () { return pthread_join (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ax_pthread_ok=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5 $as_echo "$ax_pthread_ok" >&6; } if test x"$ax_pthread_ok" = xno; then PTHREAD_LIBS="" PTHREAD_CFLAGS="" fi LIBS="$save_LIBS" CXXFLAGS="$save_CXXFLAGS" fi # We must check for the threads library under a number of different # names; the ordering is very important because some systems # (e.g. DEC) have both -lpthread and -lpthreads, where one of the # libraries is broken (non-POSIX). # Create a list of thread flags to try. Items starting with a "-" are # C compiler flags, and other items are library names, except for "none" # which indicates that we try without any flags at all, and "pthread-config" # which is a program returning the flags for the Pth emulation library. ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" # The ordering *is* (sometimes) important. Some notes on the # individual items follow: # pthreads: AIX (must check this before -lpthread) # none: in case threads are in libc; should be tried before -Kthread and # other compiler flags to prevent continual compiler warnings # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) # -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) # -pthreads: Solaris/gcc # -mthreads: Mingw32/gcc, Lynx/gcc # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it # doesn't hurt to check since this sometimes defines pthreads too; # also defines -D_REENTRANT) # ... -mt is also the pthreads flag for HP/aCC # pthread: Linux, etcetera # --thread-safe: KAI C++ # pthread-config: use pthread-config program (for GNU Pth library) case "${host_cpu}-${host_os}" in *solaris*) # On Solaris (at least, for some versions), libc contains stubbed # (non-functional) versions of the pthreads routines, so link-based # tests will erroneously succeed. (We need to link with -pthreads/-mt/ # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather # a function called by this macro, so we could check for that, but # who knows whether they'll stub that too in a future libc.) So, # we'll just look for -pthreads and -lpthread first: ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags" ;; *-darwin*) ax_pthread_flags="-pthread $ax_pthread_flags" ;; esac if test x"$ax_pthread_ok" = xno; then for flag in $ax_pthread_flags; do case $flag in none) { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5 $as_echo_n "checking whether pthreads work without any flags... " >&6; } ;; -*) { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $flag" >&5 $as_echo_n "checking whether pthreads work with $flag... " >&6; } PTHREAD_CFLAGS="$flag" PTHREAD_LIBS="$flag" ;; pthread-config) # Extract the first word of "pthread-config", so it can be a program name with args. set dummy pthread-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ax_pthread_config+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ax_pthread_config"; then ac_cv_prog_ax_pthread_config="$ax_pthread_config" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ax_pthread_config="yes" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_ax_pthread_config" && ac_cv_prog_ax_pthread_config="no" fi fi ax_pthread_config=$ac_cv_prog_ax_pthread_config if test -n "$ax_pthread_config"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_config" >&5 $as_echo "$ax_pthread_config" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test x"$ax_pthread_config" = xno; then continue; fi PTHREAD_CFLAGS="`pthread-config --cflags`" PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$flag" >&5 $as_echo_n "checking for the pthreads library -l$flag... " >&6; } PTHREAD_LIBS="-l$flag" ;; esac save_LIBS="$LIBS" save_CXXFLAGS="$CXXFLAGS" LIBS="$PTHREAD_LIBS $LIBS" CXXFLAGS="$CXXFLAGS $PTHREAD_CFLAGS" # Check for various functions. We must include pthread.h, # since some functions may be macros. (On the Sequent, we # need a special flag -Kthread to make this header compile.) # We check for pthread_join because it is in -lpthread on IRIX # while pthread_create is in libc. We check for pthread_attr_init # due to DEC craziness with -lpthreads. We check for # pthread_cleanup_push because it is one of the few pthread # functions on Solaris that doesn't have a non-functional libc stub. # We try pthread_create on general principles. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include static void routine(void *a) { *((int*)a) = 42; } static void *start_routine(void *a) { return a; } int main () { pthread_t th; pthread_attr_t attr; pthread_create(&th, 0, start_routine, 0); pthread_join(th, 0); pthread_attr_init(&attr); pthread_cleanup_push(routine, 0); pthread_cleanup_pop(0) /* ; */ ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ax_pthread_ok=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$save_LIBS" CXXFLAGS="$save_CXXFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5 $as_echo "$ax_pthread_ok" >&6; } if test "x$ax_pthread_ok" = xyes; then break; fi PTHREAD_LIBS="" PTHREAD_CFLAGS="" done fi # Various other checks: if test "x$ax_pthread_ok" = xyes; then save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS $PTHREAD_CFLAGS" # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5 $as_echo_n "checking for joinable pthread attribute... " >&6; } attr_name=unknown for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int attr = $attr; return attr /* ; */ ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : attr_name=$attr; break fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext done { $as_echo "$as_me:${as_lineno-$LINENO}: result: $attr_name" >&5 $as_echo "$attr_name" >&6; } if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then cat >>confdefs.h <<_ACEOF #define PTHREAD_CREATE_JOINABLE $attr_name _ACEOF fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if more special flags are required for pthreads" >&5 $as_echo_n "checking if more special flags are required for pthreads... " >&6; } flag=no case "${host_cpu}-${host_os}" in *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";; *-osf* | *-hpux*) flag="-D_REENTRANT";; *solaris*) if test "$GXX" = "yes"; then flag="-D_REENTRANT" else flag="-mt -D_REENTRANT" fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${flag}" >&5 $as_echo "${flag}" >&6; } if test "x$flag" != xno; then PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_PRIO_INHERIT" >&5 $as_echo_n "checking for PTHREAD_PRIO_INHERIT... " >&6; } if ${ax_cv_PTHREAD_PRIO_INHERIT+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int i = PTHREAD_PRIO_INHERIT; (void) i; ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ax_cv_PTHREAD_PRIO_INHERIT=yes else ax_cv_PTHREAD_PRIO_INHERIT=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_PRIO_INHERIT" >&5 $as_echo "$ax_cv_PTHREAD_PRIO_INHERIT" >&6; } if test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"; then : $as_echo "#define HAVE_PTHREAD_PRIO_INHERIT 1" >>confdefs.h fi LIBS="$save_LIBS" CXXFLAGS="$save_CXXFLAGS" # More AIX lossage: must compile with xlc_r or cc_r if test x"$GXX" != xyes; then for ac_prog in xlc_r cc_r do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_PTHREAD_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$PTHREAD_CC"; then ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_PTHREAD_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi PTHREAD_CC=$ac_cv_prog_PTHREAD_CC if test -n "$PTHREAD_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5 $as_echo "$PTHREAD_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$PTHREAD_CC" && break done test -n "$PTHREAD_CC" || PTHREAD_CC="${CC}" else PTHREAD_CC=$CC fi else PTHREAD_CC="$CC" fi # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test x"$ax_pthread_ok" = xyes; then $as_echo "#define HAVE_PTHREAD 1" >>confdefs.h appendCXX "$PTHREAD_CFLAGS" appendLib "$PTHREAD_LIBS" : else ax_pthread_ok=no as_fn_error $? "This compiler/OS doesn't seem to support pthreads." "$LINENO" 5 fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu # Note that old broken systems, such as OpenBSD, NetBSD, which don't support AI_ADDRCONFIG, also have thread-unsafe getaddrinfo(). # Gladly, they fixed thread-safety before support of AI_ADDRCONFIG, so this can be abused to detect the thread-safe getaddrinfo(). # # TODO: drop support of blocking DNS at some point. OpenBSD supports AI_ADDRCONFIG since Nov 2014, and their getaddrinfo() is thread-safe since Nov 2013. NetBSD's one is thread-safe since ages ago. DNS_TEXT=blocking if test "x$TDNS" != "xno"; then old_TDNS=$TDNS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getaddrinfo() supports AI_ADDRCONFIG" >&5 $as_echo_n "checking whether getaddrinfo() supports AI_ADDRCONFIG... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { int x = AI_ADDRCONFIG; (void) x; ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } TDNS=yes else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } TDNS=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test "x$TDNS" = "xyes"; then DNS_TEXT=threads $as_echo "#define HAVE_THREADED_DNS 1" >>confdefs.h else # This looks better in the summary at the end TDNS="not found" if test "x$old_TDNS" != "xauto" ; then as_fn_error $? "support for threaded DNS not found. Try --disable-tdns. Disabling it may result in a slight performance decrease but will not have any other side-effects" "$LINENO" 5 else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: support for threaded DNS not found, so DNS resolving will be blocking" >&5 $as_echo "$as_me: WARNING: support for threaded DNS not found, so DNS resolving will be blocking" >&2;} fi fi fi # ----- Check for openssl SSL_TEXT="$SSL" if test "x$SSL" != "xno"; then old_SSL=$SSL pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for openssl" >&5 $as_echo_n "checking for openssl... " >&6; } if test -n "$openssl_CFLAGS"; then pkg_cv_openssl_CFLAGS="$openssl_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openssl\""; } >&5 ($PKG_CONFIG --exists --print-errors "openssl") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_openssl_CFLAGS=`$PKG_CONFIG --cflags "openssl" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$openssl_LIBS"; then pkg_cv_openssl_LIBS="$openssl_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openssl\""; } >&5 ($PKG_CONFIG --exists --print-errors "openssl") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_openssl_LIBS=`$PKG_CONFIG --libs "openssl" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then openssl_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "openssl" 2>&1` else openssl_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "openssl" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$openssl_PKG_ERRORS" >&5 # Don't reorder this! # On some arches libssl depends on libcrypto without linking to it :( { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BIO_new in -lcrypto" >&5 $as_echo_n "checking for BIO_new in -lcrypto... " >&6; } if ${ac_cv_lib_crypto_BIO_new+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lcrypto $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char BIO_new (); int main () { return BIO_new (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_crypto_BIO_new=yes else ac_cv_lib_crypto_BIO_new=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypto_BIO_new" >&5 $as_echo "$ac_cv_lib_crypto_BIO_new" >&6; } if test "x$ac_cv_lib_crypto_BIO_new" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBCRYPTO 1 _ACEOF LIBS="-lcrypto $LIBS" else SSL=no ; SSL_TEXT="no (libcrypt not found)" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SSL_shutdown in -lssl" >&5 $as_echo_n "checking for SSL_shutdown in -lssl... " >&6; } if ${ac_cv_lib_ssl_SSL_shutdown+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lssl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char SSL_shutdown (); int main () { return SSL_shutdown (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_ssl_SSL_shutdown=yes else ac_cv_lib_ssl_SSL_shutdown=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ssl_SSL_shutdown" >&5 $as_echo "$ac_cv_lib_ssl_SSL_shutdown" >&6; } if test "x$ac_cv_lib_ssl_SSL_shutdown" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBSSL 1 _ACEOF LIBS="-lssl $LIBS" else SSL=no ; SSL_TEXT="no (libssl not found)" fi elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } # Don't reorder this! # On some arches libssl depends on libcrypto without linking to it :( { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BIO_new in -lcrypto" >&5 $as_echo_n "checking for BIO_new in -lcrypto... " >&6; } if ${ac_cv_lib_crypto_BIO_new+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lcrypto $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char BIO_new (); int main () { return BIO_new (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_crypto_BIO_new=yes else ac_cv_lib_crypto_BIO_new=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypto_BIO_new" >&5 $as_echo "$ac_cv_lib_crypto_BIO_new" >&6; } if test "x$ac_cv_lib_crypto_BIO_new" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBCRYPTO 1 _ACEOF LIBS="-lcrypto $LIBS" else SSL=no ; SSL_TEXT="no (libcrypt not found)" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SSL_shutdown in -lssl" >&5 $as_echo_n "checking for SSL_shutdown in -lssl... " >&6; } if ${ac_cv_lib_ssl_SSL_shutdown+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lssl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char SSL_shutdown (); int main () { return SSL_shutdown (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_ssl_SSL_shutdown=yes else ac_cv_lib_ssl_SSL_shutdown=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ssl_SSL_shutdown" >&5 $as_echo "$ac_cv_lib_ssl_SSL_shutdown" >&6; } if test "x$ac_cv_lib_ssl_SSL_shutdown" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBSSL 1 _ACEOF LIBS="-lssl $LIBS" else SSL=no ; SSL_TEXT="no (libssl not found)" fi else openssl_CFLAGS=$pkg_cv_openssl_CFLAGS openssl_LIBS=$pkg_cv_openssl_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } appendLib "$openssl_LIBS" appendCXX "$openssl_CFLAGS" fi if test "x$SSL" != "xno"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether openssl is usable" >&5 $as_echo_n "checking whether openssl is usable... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { SSL_CTX* ctx = SSL_CTX_new(SSLv23_method()); SSL* ssl = SSL_new(ctx); DH* dh = DH_new(); DH_free(dh); SSL_free(ssl); SSL_CTX_free(ctx); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SSL=no SSL_TEXT="no (openssl not usable)" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi if test "x$SSL" = "xno" ; then # This looks better in the summary at the end SSL="not found" if test "x$old_SSL" != "xauto" ; then as_fn_error $? "OpenSSL not found. Try --disable-openssl." "$LINENO" 5 else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: OpenSSL was not found and thus disabled" >&5 $as_echo "$as_me: WARNING: OpenSSL was not found and thus disabled" >&2;} fi NOSSL=1 else $as_echo "#define HAVE_LIBSSL 1" >>confdefs.h SSL=yes SSL_TEXT=yes fi else NOSSL=1 SSL_TEXT="no (explicitly disabled)" fi # ----- Check for zlib old_ZLIB="$ZLIB" ZLIB_TEXT="$ZLIB" if test "x$ZLIB" != "xno"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether zlib is usable" >&5 $as_echo_n "checking whether zlib is usable... " >&6; } my_saved_LIBS="$LIBS" appendLib "-lz" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include "zlib.h" int main () { z_stream zs; (void) deflateInit2(&zs, 0, 0, 0, 0, 0); (void) deflate(&zs, 0); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } ZLIB=yes ZLIB_TEXT=yes else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } ZLIB=no ZLIB_TEXT="no (libz not found)" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "x$ZLIB" = "xno"; then # This looks better in the summary at the end ZLIB="not found" if test "x$old_ZLIB" != "xauto" ; then as_fn_error $? "zlib was not found. Try --disable-zlib" "$LINENO" 5 else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: zlib was not found and thus disabled" >&5 $as_echo "$as_me: WARNING: zlib was not found and thus disabled" >&2;} fi LIBS="$my_saved_LIBS" else $as_echo "#define HAVE_ZLIB 1" >>confdefs.h fi fi # Check whether --enable-charset was given. if test "${enable_charset+set}" = set; then : enableval=$enable_charset; HAVE_ICU="$enableval" else HAVE_ICU="auto" fi if test "x$HAVE_ICU" != "xno" then old_HAVE_ICU="$HAVE_ICU" pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for icu-uc" >&5 $as_echo_n "checking for icu-uc... " >&6; } if test -n "$icu_CFLAGS"; then pkg_cv_icu_CFLAGS="$icu_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"icu-uc\""; } >&5 ($PKG_CONFIG --exists --print-errors "icu-uc") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_icu_CFLAGS=`$PKG_CONFIG --cflags "icu-uc" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$icu_LIBS"; then pkg_cv_icu_LIBS="$icu_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"icu-uc\""; } >&5 ($PKG_CONFIG --exists --print-errors "icu-uc") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_icu_LIBS=`$PKG_CONFIG --libs "icu-uc" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then icu_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "icu-uc" 2>&1` else icu_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "icu-uc" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$icu_PKG_ERRORS" >&5 # This looks better in the summary at the end HAVE_ICU="not found" if test "x$old_HAVE_ICU" != "xauto" ; then as_fn_error $? "support for charset conversion not found. Try --disable-charset." "$LINENO" 5 else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: support for charset conversion not found and thus disabled" >&5 $as_echo "$as_me: WARNING: support for charset conversion not found and thus disabled" >&2;} fi HAVE_ICU="no (icu-uc not found via pkg-config)" elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } # This looks better in the summary at the end HAVE_ICU="not found" if test "x$old_HAVE_ICU" != "xauto" ; then as_fn_error $? "support for charset conversion not found. Try --disable-charset." "$LINENO" 5 else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: support for charset conversion not found and thus disabled" >&5 $as_echo "$as_me: WARNING: support for charset conversion not found and thus disabled" >&2;} fi HAVE_ICU="no (icu-uc not found via pkg-config)" else icu_CFLAGS=$pkg_cv_icu_CFLAGS icu_LIBS=$pkg_cv_icu_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } appendLib "$icu_LIBS" appendCXX "$icu_CFLAGS" HAVE_ICU=yes $as_echo "#define HAVE_ICU 1" >>confdefs.h $as_echo "#define U_USING_ICU_NAMESPACE 0" >>confdefs.h fi fi # For integration test only pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Qt5Network >= 5.4" >&5 $as_echo_n "checking for Qt5Network >= 5.4... " >&6; } if test -n "$qt_CFLAGS"; then pkg_cv_qt_CFLAGS="$qt_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"Qt5Network >= 5.4\""; } >&5 ($PKG_CONFIG --exists --print-errors "Qt5Network >= 5.4") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_qt_CFLAGS=`$PKG_CONFIG --cflags "Qt5Network >= 5.4" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$qt_LIBS"; then pkg_cv_qt_LIBS="$qt_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"Qt5Network >= 5.4\""; } >&5 ($PKG_CONFIG --exists --print-errors "Qt5Network >= 5.4") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_qt_LIBS=`$PKG_CONFIG --libs "Qt5Network >= 5.4" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then qt_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "Qt5Network >= 5.4" 2>&1` else qt_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "Qt5Network >= 5.4" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$qt_PKG_ERRORS" >&5 : elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } : else qt_CFLAGS=$pkg_cv_qt_CFLAGS qt_LIBS=$pkg_cv_qt_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi # Check whether --with-module-prefix was given. if test "${with_module_prefix+set}" = set; then : withval=$with_module_prefix; MODDIR=$withval else MODDIR="${libdir}/znc" fi # Check whether --with-module-data-prefix was given. if test "${with_module_data_prefix+set}" = set; then : withval=$with_module_data_prefix; DATADIR=$withval else DATADIR="${datadir}/znc" fi appendMod "$CXXFLAGS" appendMod "$CFLAG_VISIBILITY" if test -z "$ISSUN" -a -z "$ISDARWIN" -a -z "$ISCYGWIN"; then # This is an unknown compiler flag on some OS appendLD -Wl,--export-dynamic fi if test -z "$ISCYGWIN" ; then # cygwin doesn't need -fPIC, everything else does (for modules) # warning: -fPIC ignored for target (all code is position independent) appendMod -fPIC else # But cygwin does want most of ZNC in a shared lib # See https://cygwin.com/ml/cygwin-apps/2015-07/msg00108.html for the reasoning behind the name. LIBZNC="cygznc-${LIBZNC_VERSION}.dll" LIBZNCDIR="$bindir" # See above about __STRICT_ANSI__ qt_CFLAGS="$qt_CFLAGS -U__STRICT_ANSI__" fi if test -z "$ISDARWIN"; then MODLINK="-shared" else # Mac OS X differentiates between shared libs (-dynamiclib) # and loadable modules (-bundle). MODLINK="-bundle -flat_namespace -undefined suppress" # TODO test if -twolevel_namespace and/or # -undefined dynamic_lookup work # (dynamic_lookup might only work on 10.4 and later) fi if test "x$PERL" != xno -o "x$PYTHON" != xno; then old_USESWIG="$USESWIG" if test "x$USESWIG" != "xno"; then SWIG_ERROR="" if test -n "3.0.0"; then # Calculate the required version number components required=3.0.0 required_major=`echo $required | sed 's/[^0-9].*//'` if test -z "$required_major" ; then required_major=0 fi required=`echo $required | sed 's/[0-9]*[^0-9]//'` required_minor=`echo $required | sed 's/[^0-9].*//'` if test -z "$required_minor" ; then required_minor=0 fi required=`echo $required | sed 's/[0-9]*[^0-9]//'` required_patch=`echo $required | sed 's/[^0-9].*//'` if test -z "$required_patch" ; then required_patch=0 fi fi # for "python 3 abc set" and "PyInt_FromSize_t in python3" checks cat <<-END > conftest-python.i %module conftest; %include %include %template(SInt) std::set; END # check if perl has std::...::size_type defined. Don't add new tests to this .i; it'll break this test due to check for "NewPointerObj((" cat <<-END > conftest-perl.i %module conftest; %include %include %include %template() std::vector; %template() std::list; %template() std::deque; std::vector::size_type checkVector(); std::list::size_type checkList(); std::deque::size_type checkDeque(); END SWIG_installed_versions="" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SWIG >= 3.0.0" >&5 $as_echo_n "checking for SWIG >= 3.0.0... " >&6; } if ${znc_cv_path_SWIG+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$SWIG"; then ac_path_SWIG_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in swig swig2.0 swig3.0; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SWIG="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SWIG" || continue echo trying $ac_path_SWIG >&5 $ac_path_SWIG -version >&5 swig_version=`$ac_path_SWIG -version 2>&1 | grep 'SWIG Version' | sed 's/.*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*/\1/g'` if test -n "$swig_version"; then swig_right_version=1 SWIG_installed_versions="$SWIG_installed_versions $swig_version " if test -n "$required"; then # Calculate the available version number components available=$swig_version available_major=`echo $available | sed 's/[^0-9].*//'` if test -z "$available_major" ; then available_major=0 fi available=`echo $available | sed 's/[0-9]*[^0-9]//'` available_minor=`echo $available | sed 's/[^0-9].*//'` if test -z "$available_minor" ; then available_minor=0 fi available=`echo $available | sed 's/[0-9]*[^0-9]//'` available_patch=`echo $available | sed 's/[^0-9].*//'` if test -z "$available_patch" ; then available_patch=0 fi if test $available_major -lt $required_major; then swig_right_version=0 elif test $available_major -eq $required_major; then if test $available_minor -lt $required_minor; then swig_right_version=0 elif test $available_minor -eq $required_minor; then if test $available_patch -lt $required_patch; then swig_right_version=0 fi fi fi fi if test $swig_right_version -eq 1; then # "python 3 abc set", "PyInt_FromSize_t in python3" and "perl size_type" checks echo "checking behavior of this SWIG" >&5 $ac_path_SWIG -python -py3 -c++ -shadow conftest-python.i >&5 && \ echo "python wrapper created" >&5 && \ echo "testing std::set... ">&5 && \ grep SInt_discard conftest.py > /dev/null 2>&1 && \ echo "std::set works" >&5 && \ echo "testing PyInt_FromSize_t..." >&5 && \ grep '#define PyInt_FromSize_t' conftest-python_wrap.cxx > /dev/null 2>&1 && \ echo "PyInt_FromSize_t is defined" >&5 && \ $ac_path_SWIG -perl -c++ -shadow conftest-perl.i >&5 && \ echo "perl wrapper created" >&5 && \ echo "testing size_type..." >&5 && \ test 0 -eq `grep -c 'NewPointerObj((' conftest-perl_wrap.cxx` && \ echo "size_type work" >&5 && \ znc_cv_path_SWIG=$ac_path_SWIG \ ac_path_SWIG_found=: if test "x$ac_path_SWIG_found" != "x:"; then echo "fail" >&5 fi rm -f conftest-python_wrap.cxx conftest.py rm -f conftest-perl_wrap.cxx conftest.pm else echo "SWIG version >= 3.0.0 is required. You have '$swig_version'" >&5 fi fi echo end trying $ac_path_SWIG >&5 $ac_path_SWIG_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SWIG"; then : fi else ac_cv_path_SWIG=$SWIG fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $znc_cv_path_SWIG" >&5 $as_echo "$znc_cv_path_SWIG" >&6; } rm -f conftest-python.i conftest-perl.i if test -n "$SWIG_installed_versions"; then { $as_echo "$as_me:${as_lineno-$LINENO}: Following SWIG versions are found:$SWIG_installed_versions" >&5 $as_echo "$as_me: Following SWIG versions are found:$SWIG_installed_versions" >&6;} fi SWIG=$znc_cv_path_SWIG if test -n "$SWIG"; then SWIG_LIB=`$SWIG -swiglib` fi test -z "$SWIG" && USESWIG=no if test "x$USESWIG" = xno -a "x$old_USESWIG" = yes; then as_fn_error $? "Could not found appropriate SWIG installation. Check config.log for details." "$LINENO" 5 fi fi if test -r "$srcdir/modules/modperl/generated.tar.gz" -a -r "$srcdir/modules/modpython/generated.tar.gz"; then { $as_echo "$as_me:${as_lineno-$LINENO}: modperl/modpython files are found, disabling SWIG" >&5 $as_echo "$as_me: modperl/modpython files are found, disabling SWIG" >&6;} USESWIG=no fi if test "x$USESWIG" = xno; then if test ! -r "$srcdir/modules/modperl/generated.tar.gz" -o ! -r "$srcdir/modules/modpython/generated.tar.gz"; then as_fn_error $? "Can not build modperl/modpython. Either install SWIG, or build ZNC from a tarball, or disable modperl/modpython. Check config.log for details." "$LINENO" 5 else { $as_echo "$as_me:${as_lineno-$LINENO}: modperl/modpython files are found, no SWIG needed" >&5 $as_echo "$as_me: modperl/modpython files are found, no SWIG needed" >&6;} fi USESWIG="not needed" SWIG="" else USESWIG=yes fi else if test "x$USESWIG" = "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: swig is used only for perl and python, but both are disabled. Disabling swig." >&5 $as_echo "$as_me: WARNING: swig is used only for perl and python, but both are disabled. Disabling swig." >&2;} fi USESWIG='not needed' fi PERL_TEXT="$PERL" if test "x$PERL" != "xno"; then old_PERL="$PERL" # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PERL_BINARY+:} false; then : $as_echo_n "(cached) " >&6 else case $PERL_BINARY in [\\/]* | ?:[\\/]*) ac_cv_path_PERL_BINARY="$PERL_BINARY" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PERL_BINARY="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PERL_BINARY=$ac_cv_path_PERL_BINARY if test -n "$PERL_BINARY"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL_BINARY" >&5 $as_echo "$PERL_BINARY" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -n "$PERL_BINARY" && eval "$PERL_BINARY -e'use 5.010'"; then my_saved_LDFLAGS="$LDFLAGS" appendLD `$PERL_BINARY -MExtUtils::Embed -e ccopts -e ldopts` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for perl_alloc in -lperl" >&5 $as_echo_n "checking for perl_alloc in -lperl... " >&6; } if ${ac_cv_lib_perl_perl_alloc+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lperl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char perl_alloc (); int main () { return perl_alloc (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_perl_perl_alloc=yes else ac_cv_lib_perl_perl_alloc=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_perl_perl_alloc" >&5 $as_echo "$ac_cv_lib_perl_perl_alloc" >&6; } if test "x$ac_cv_lib_perl_perl_alloc" = xyes; then : : No, we do not want autoconf to do sth automatically else PERL="no" ; PERL_TEXT="no (libperl not found)" fi LDFLAGS="$my_saved_LDFLAGS" else PERL="no" PERL_TEXT="no (perl binary not found or too old)" fi if test "x$PERL" = "xno"; then # This looks better in the summary at the end PERL="not found" if test "x$old_PERL" != "xauto" ; then as_fn_error $? "perl not found. Try --disable-perl." "$LINENO" 5 else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: perl was not found and thus disabled" >&5 $as_echo "$as_me: WARNING: perl was not found and thus disabled" >&2;} fi PERL_BINARY="" else PERL="yes" PERL_TEXT="yes" fi fi PYTHON_TEXT="$PYTHON" if test "x$PYTHON" != "xno"; then # Default value for just --enable-python if test "x$PYTHON" = "xyes"; then PYTHON="python3" fi old_PYTHON="$PYTHON" if test -z "$PKG_CONFIG"; then as_fn_error $? "pkg-config is required for modpython." "$LINENO" 5 fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $PYTHON-embed >= 3.3" >&5 $as_echo_n "checking for $PYTHON-embed >= 3.3... " >&6; } if test -n "$python_CFLAGS"; then pkg_cv_python_CFLAGS="$python_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$PYTHON-embed >= 3.3\""; } >&5 ($PKG_CONFIG --exists --print-errors "$PYTHON-embed >= 3.3") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_python_CFLAGS=`$PKG_CONFIG --cflags "$PYTHON-embed >= 3.3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$python_LIBS"; then pkg_cv_python_LIBS="$python_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$PYTHON-embed >= 3.3\""; } >&5 ($PKG_CONFIG --exists --print-errors "$PYTHON-embed >= 3.3") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_python_LIBS=`$PKG_CONFIG --libs "$PYTHON-embed >= 3.3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then python_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$PYTHON-embed >= 3.3" 2>&1` else python_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$PYTHON-embed >= 3.3" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$python_PKG_ERRORS" >&5 pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $PYTHON >= 3.3" >&5 $as_echo_n "checking for $PYTHON >= 3.3... " >&6; } if test -n "$python_CFLAGS"; then pkg_cv_python_CFLAGS="$python_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$PYTHON >= 3.3\""; } >&5 ($PKG_CONFIG --exists --print-errors "$PYTHON >= 3.3") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_python_CFLAGS=`$PKG_CONFIG --cflags "$PYTHON >= 3.3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$python_LIBS"; then pkg_cv_python_LIBS="$python_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$PYTHON >= 3.3\""; } >&5 ($PKG_CONFIG --exists --print-errors "$PYTHON >= 3.3") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_python_LIBS=`$PKG_CONFIG --libs "$PYTHON >= 3.3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then python_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$PYTHON >= 3.3" 2>&1` else python_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$PYTHON >= 3.3" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$python_PKG_ERRORS" >&5 as_fn_error $? "$PYTHON.pc not found or is wrong. Try --disable-python or install python3." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } as_fn_error $? "$PYTHON.pc not found or is wrong. Try --disable-python or install python3." "$LINENO" 5 else python_CFLAGS=$pkg_cv_python_CFLAGS python_LIBS=$pkg_cv_python_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $PYTHON >= 3.3" >&5 $as_echo_n "checking for $PYTHON >= 3.3... " >&6; } if test -n "$python_CFLAGS"; then pkg_cv_python_CFLAGS="$python_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$PYTHON >= 3.3\""; } >&5 ($PKG_CONFIG --exists --print-errors "$PYTHON >= 3.3") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_python_CFLAGS=`$PKG_CONFIG --cflags "$PYTHON >= 3.3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$python_LIBS"; then pkg_cv_python_LIBS="$python_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$PYTHON >= 3.3\""; } >&5 ($PKG_CONFIG --exists --print-errors "$PYTHON >= 3.3") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_python_LIBS=`$PKG_CONFIG --libs "$PYTHON >= 3.3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then python_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$PYTHON >= 3.3" 2>&1` else python_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$PYTHON >= 3.3" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$python_PKG_ERRORS" >&5 as_fn_error $? "$PYTHON.pc not found or is wrong. Try --disable-python or install python3." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } as_fn_error $? "$PYTHON.pc not found or is wrong. Try --disable-python or install python3." "$LINENO" 5 else python_CFLAGS=$pkg_cv_python_CFLAGS python_LIBS=$pkg_cv_python_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi else python_CFLAGS=$pkg_cv_python_CFLAGS python_LIBS=$pkg_cv_python_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi my_saved_LIBS="$LIBS" my_saved_CXXFLAGS="$CXXFLAGS" appendLib $python_LIBS appendCXX $python_CFLAGS ac_fn_cxx_check_func "$LINENO" "Py_Initialize" "ac_cv_func_Py_Initialize" if test "x$ac_cv_func_Py_Initialize" = xyes; then : else PYTHON="no" ; PYTHON_TEXT="no (libpython not found)" fi if test "x$PYTHON" != "xno"; then # Yes, modpython depends on perl. # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PERL_BINARY+:} false; then : $as_echo_n "(cached) " >&6 else case $PERL_BINARY in [\\/]* | ?:[\\/]*) ac_cv_path_PERL_BINARY="$PERL_BINARY" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PERL_BINARY="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PERL_BINARY=$ac_cv_path_PERL_BINARY if test -n "$PERL_BINARY"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL_BINARY" >&5 $as_echo "$PERL_BINARY" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$PERL_BINARY"; then as_fn_error $? "To compile modpython you need to be able to execute perl scripts. Try --disable-python or install perl." "$LINENO" 5 fi LIBS="$my_saved_LIBS" CXXFLAGS="$my_saved_CXXFLAGS" fi if test "x$HAVE_ICU" != "xyes"; then as_fn_error $? "Modpython requires ZNC to be compiled with charset support, but ICU library not found. Try --disable-python or install libicu." "$LINENO" 5 fi if test "x$PYTHON" = "xno"; then # This looks better in the summary at the end PYTHON="not found" if test "x$old_PYTHON" != "xauto" ; then as_fn_error $? "python not found. Try --disable-python." "$LINENO" 5 else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: python was not found and thus disabled" >&5 $as_echo "$as_me: WARNING: python was not found and thus disabled" >&2;} fi PYTHONCFG_BINARY="" else PYTHON="yes" PYTHON_TEXT="yes" fi fi if test -n "$CYRUS"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sasl_server_init in -lsasl2" >&5 $as_echo_n "checking for sasl_server_init in -lsasl2... " >&6; } if ${ac_cv_lib_sasl2_sasl_server_init+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsasl2 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char sasl_server_init (); int main () { return sasl_server_init (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_sasl2_sasl_server_init=yes else ac_cv_lib_sasl2_sasl_server_init=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sasl2_sasl_server_init" >&5 $as_echo "$ac_cv_lib_sasl2_sasl_server_init" >&6; } if test "x$ac_cv_lib_sasl2_sasl_server_init" = xyes; then : : Dont let autoconf add -lsasl2, Makefile handles that else as_fn_error $? "could not find libsasl2. Try --disable-cyrus." "$LINENO" 5 fi fi # Check if we want modtcl # Check whether --enable-tcl was given. if test "${enable_tcl+set}" = set; then : enableval=$enable_tcl; TCL="$enableval" else TCL="no" fi # Check whether --with-tcl-flags was given. if test "${with_tcl_flags+set}" = set; then : withval=$with_tcl_flags; TCL_FLAGS="$withval" fi if test x"$TCL" = "xyes" then # Check whether --with-tcl was given. if test "${with_tcl+set}" = set; then : withval=$with_tcl; TCL_DIR="${withval}" fi # This will need to be extended in the future, but I don't think # it's a good idea to stuff a shitload of random stuff in here right now for path in $TCL_DIR /usr/lib /usr/lib/tcl8.4 /usr/lib/tcl8.5 /usr/lib/tcl8.6 do file="${path}/tclConfig.sh" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${file}" >&5 $as_echo_n "checking for ${file}... " >&6; } if test -r ${file} then TCL_CONF=${file} { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } break fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } done if test x"${TCL_CONF}" = x then # They --enable-tcl'd, so give them some sane default TCL_FLAGS="-I/usr/include/tcl -ltcl" { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Could not find tclConfig.sh, using some sane defaults." >&5 $as_echo "$as_me: WARNING: Could not find tclConfig.sh, using some sane defaults." >&2;} else { $as_echo "$as_me:${as_lineno-$LINENO}: checking modtcl flags" >&5 $as_echo_n "checking modtcl flags... " >&6; } . ${TCL_CONF} # eval because those vars depend on other vars in there eval "TCL_LIB_SPEC=\"${TCL_LIB_SPEC}\"" eval "TCL_INCLUDE_SPEC=\"${TCL_INCLUDE_SPEC}\"" TCL_FLAGS="$TCL_INCLUDE_SPEC $TCL_LIB_SPEC" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TCL_FLAGS" >&5 $as_echo "$TCL_FLAGS" >&6; } fi my_saved_LIBS="$LIBS" appendLib "$TCL_FLAGS" ac_fn_cxx_check_func "$LINENO" "Tcl_CreateInterp" "ac_cv_func_Tcl_CreateInterp" if test "x$ac_cv_func_Tcl_CreateInterp" = xyes; then : TCL_TEST=yes else TCL_TEST=no fi if test x"$TCL_TEST" = "xno"; then as_fn_error $? "tcl not found, try --disable-tcl, or install tcl properly. If tcl is installed to a non-standard path, use --enable-tcl --with-tcl=/path" "$LINENO" 5 fi LIBS="$my_saved_LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU make" >&5 $as_echo_n "checking for GNU make... " >&6; } if ${ac_cv_path_GNUMAKE+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GNUMAKE"; then ac_path_GNUMAKE_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in make gmake; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GNUMAKE="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GNUMAKE" || continue if $ac_path_GNUMAKE --version | $GREP GNU > /dev/null; then ac_cv_path_GNUMAKE=$ac_path_GNUMAKE ac_path_GNUMAKE_found=: fi $ac_path_GNUMAKE_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GNUMAKE"; then as_fn_error $? "could not find GNU make" "$LINENO" 5 fi else ac_cv_path_GNUMAKE=$GNUMAKE fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GNUMAKE" >&5 $as_echo "$ac_cv_path_GNUMAKE" >&6; } GNUMAKE=`echo $ac_cv_path_GNUMAKE | $SED "s%.*/%%"` # this is in the end, for not trying to include it when it doesn't exist yet appendCXX "-include znc/zncconfig.h" appendMod "-include znc/zncconfig.h" ac_config_files="$ac_config_files Makefile" ac_config_files="$ac_config_files znc-buildmod" ac_config_files="$ac_config_files man/Makefile" ac_config_files="$ac_config_files znc.pc" ac_config_files="$ac_config_files znc-uninstalled.pc" ac_config_files="$ac_config_files modules/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -z "${HAVE_SYSTEMD_TRUE}" && test -z "${HAVE_SYSTEMD_FALSE}"; then as_fn_error $? "conditional \"HAVE_SYSTEMD\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by znc $as_me 1.8.2, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ znc config.status 1.8.2 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "include/znc/zncconfig.h") CONFIG_HEADERS="$CONFIG_HEADERS include/znc/zncconfig.h" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "znc-buildmod") CONFIG_FILES="$CONFIG_FILES znc-buildmod" ;; "man/Makefile") CONFIG_FILES="$CONFIG_FILES man/Makefile" ;; "znc.pc") CONFIG_FILES="$CONFIG_FILES znc.pc" ;; "znc-uninstalled.pc") CONFIG_FILES="$CONFIG_FILES znc-uninstalled.pc" ;; "modules/Makefile") CONFIG_FILES="$CONFIG_FILES modules/Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS " shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi if test "x$ISCYGWIN" = x1; then # Side effect of undefining __STRICT_ANSI__ # http://llvm.org/bugs/show_bug.cgi?id=13530 echo >> include/znc/zncconfig.h echo '#ifndef ZNCCONFIG_H_ADDITIONS' >> include/znc/zncconfig.h echo '#define ZNCCONFIG_H_ADDITIONS' >> include/znc/zncconfig.h echo '#ifdef __clang__' >> include/znc/zncconfig.h echo 'struct __float128;' >> include/znc/zncconfig.h echo '#endif' >> include/znc/zncconfig.h echo '#endif' >> include/znc/zncconfig.h fi echo echo ZNC 1.8.2 configured echo echo "The configure script is deprecated and will be removed from ZNC" echo "in some future version. Use either CMake or the convenience wrapper" echo "configure.sh which takes the same parameters as configure." echo echo "prefix: $prefix" echo "debug: $DEBUG" echo "ipv6: $IPV6" echo "openssl: $SSL_TEXT" echo "dns: $DNS_TEXT" echo "perl: $PERL_TEXT" echo "python: $PYTHON_TEXT" echo "swig: $USESWIG" if test x"$CYRUS" = "x" ; then echo "cyrus: no" else echo "cyrus: yes" fi if test x"$TCL_FLAGS" = "x" ; then echo "tcl: no" else echo "tcl: yes" fi echo "charset: $HAVE_ICU" echo "zlib: $ZLIB_TEXT" echo "run from src: $RUNFROMSOURCE" echo echo "Now you can run \"$GNUMAKE\" to compile ZNC" znc-1.8.2/aclocal.m40000644000175000017500000003062513725535373014423 0ustar somebodysomebody# generated automatically by aclocal 1.16.1 -*- Autoconf -*- # Copyright (C) 1996-2018 Free Software Foundation, Inc. # This file 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. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) # pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- # serial 12 (pkg-config-0.29.2) dnl Copyright © 2004 Scott James Remnant . dnl Copyright © 2012-2015 Dan Nicholson dnl dnl This program is free software; you can redistribute it and/or modify dnl it under the terms of the GNU General Public License as published by dnl the Free Software Foundation; either version 2 of the License, or dnl (at your option) any later version. dnl dnl This program is distributed in the hope that it will be useful, but dnl WITHOUT ANY WARRANTY; without even the implied warranty of dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU dnl General Public License for more details. dnl dnl You should have received a copy of the GNU General Public License dnl along with this program; if not, write to the Free Software dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA dnl 02111-1307, USA. dnl dnl As a special exception to the GNU General Public License, if you dnl distribute this file as part of a program that contains a dnl configuration script generated by Autoconf, you may include it under dnl the same distribution terms that you use for the rest of that dnl program. dnl PKG_PREREQ(MIN-VERSION) dnl ----------------------- dnl Since: 0.29 dnl dnl Verify that the version of the pkg-config macros are at least dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's dnl installed version of pkg-config, this checks the developer's version dnl of pkg.m4 when generating configure. dnl dnl To ensure that this macro is defined, also add: dnl m4_ifndef([PKG_PREREQ], dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])]) dnl dnl See the "Since" comment for each macro you use to see what version dnl of the macros you require. m4_defun([PKG_PREREQ], [m4_define([PKG_MACROS_VERSION], [0.29.2]) m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) ])dnl PKG_PREREQ dnl PKG_PROG_PKG_CONFIG([MIN-VERSION]) dnl ---------------------------------- dnl Since: 0.16 dnl dnl Search for the pkg-config tool and set the PKG_CONFIG variable to dnl first found in the path. Checks that the version of pkg-config found dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is dnl used since that's the first version where most current features of dnl pkg-config existed. AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi if test -n "$PKG_CONFIG"; then _pkg_min_version=m4_default([$1], [0.9.0]) AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) PKG_CONFIG="" fi fi[]dnl ])dnl PKG_PROG_PKG_CONFIG dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) dnl ------------------------------------------------------------------- dnl Since: 0.18 dnl dnl Check to see whether a particular set of modules exists. Similar to dnl PKG_CHECK_MODULES(), but does not set variables or print errors. dnl dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) dnl only at the first occurence in configure.ac, so if the first place dnl it's called might be skipped (such as if it is within an "if", you dnl have to call PKG_CHECK_EXISTS manually AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then m4_default([$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) dnl --------------------------------------------- dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting dnl pkg_failed based on the result. m4_define([_PKG_CONFIG], [if test -n "$$1"; then pkg_cv_[]$1="$$1" elif test -n "$PKG_CONFIG"; then PKG_CHECK_EXISTS([$3], [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes ], [pkg_failed=yes]) else pkg_failed=untried fi[]dnl ])dnl _PKG_CONFIG dnl _PKG_SHORT_ERRORS_SUPPORTED dnl --------------------------- dnl Internal check to see if pkg-config supports short errors. AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi[]dnl ])dnl _PKG_SHORT_ERRORS_SUPPORTED dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], dnl [ACTION-IF-NOT-FOUND]) dnl -------------------------------------------------------------- dnl Since: 0.4.0 dnl dnl Note that if there is a possibility the first call to dnl PKG_CHECK_MODULES might not happen, you should be sure to include an dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no AC_MSG_CHECKING([for $2]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then AC_MSG_RESULT([no]) _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` else $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD m4_default([$4], [AC_MSG_ERROR( [Package requirements ($2) were not met: $$1_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. _PKG_TEXT])[]dnl ]) elif test $pkg_failed = untried; then AC_MSG_RESULT([no]) m4_default([$4], [AC_MSG_FAILURE( [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. _PKG_TEXT To get pkg-config, see .])[]dnl ]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) $3 fi[]dnl ])dnl PKG_CHECK_MODULES dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], dnl [ACTION-IF-NOT-FOUND]) dnl --------------------------------------------------------------------- dnl Since: 0.29 dnl dnl Checks for existence of MODULES and gathers its build flags with dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags dnl and VARIABLE-PREFIX_LIBS from --libs. dnl dnl Note that if there is a possibility the first call to dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to dnl include an explicit call to PKG_PROG_PKG_CONFIG in your dnl configure.ac. AC_DEFUN([PKG_CHECK_MODULES_STATIC], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl _save_PKG_CONFIG=$PKG_CONFIG PKG_CONFIG="$PKG_CONFIG --static" PKG_CHECK_MODULES($@) PKG_CONFIG=$_save_PKG_CONFIG[]dnl ])dnl PKG_CHECK_MODULES_STATIC dnl PKG_INSTALLDIR([DIRECTORY]) dnl ------------------------- dnl Since: 0.27 dnl dnl Substitutes the variable pkgconfigdir as the location where a module dnl should install pkg-config .pc files. By default the directory is dnl $libdir/pkgconfig, but the default can be changed by passing dnl DIRECTORY. The user can override through the --with-pkgconfigdir dnl parameter. AC_DEFUN([PKG_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) m4_pushdef([pkg_description], [pkg-config installation directory @<:@]pkg_default[@:>@]) AC_ARG_WITH([pkgconfigdir], [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, [with_pkgconfigdir=]pkg_default) AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) ])dnl PKG_INSTALLDIR dnl PKG_NOARCH_INSTALLDIR([DIRECTORY]) dnl -------------------------------- dnl Since: 0.27 dnl dnl Substitutes the variable noarch_pkgconfigdir as the location where a dnl module should install arch-independent pkg-config .pc files. By dnl default the directory is $datadir/pkgconfig, but the default can be dnl changed by passing DIRECTORY. The user can override through the dnl --with-noarch-pkgconfigdir parameter. AC_DEFUN([PKG_NOARCH_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) m4_pushdef([pkg_description], [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) AC_ARG_WITH([noarch-pkgconfigdir], [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, [with_noarch_pkgconfigdir=]pkg_default) AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) ])dnl PKG_NOARCH_INSTALLDIR dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) dnl ------------------------------------------- dnl Since: 0.28 dnl dnl Retrieves the value of the pkg-config variable for the given module. AC_DEFUN([PKG_CHECK_VAR], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl _PKG_CONFIG([$1], [variable="][$3]["], [$2]) AS_VAR_COPY([$1], [pkg_cv_][$1]) AS_VAR_IF([$1], [""], [$5], [$4])dnl ])dnl PKG_CHECK_VAR # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2018 Free Software Foundation, Inc. # # This file 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. # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 2006-2018 Free Software Foundation, Inc. # # This file 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. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) m4_include([m4/ac_pkg_swig.m4]) m4_include([m4/ax_cxx_compile_stdcxx_11.m4]) m4_include([m4/ax_pthread.m4]) m4_include([m4/znc_visibility.m4]) znc-1.8.2/zz_msg/0000755000175000017500000000000013725535356014067 5ustar somebodysomebodyznc-1.8.2/zz_msg/CMakeLists.txt0000644000175000017500000000204113725535356016624 0ustar somebodysomebody# # Copyright (C) 2004-2020 ZNC, see the NOTICE file for details. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # This is implementation detail of CMake, but this install() runs last. # Details are at https://cmake.org/pipermail/cmake/2011-July/045615.html install(CODE "message(\" ****************************************************************** ZNC was successfully installed. You can use '${CMAKE_INSTALL_FULL_BINDIR}/znc --makeconf' to generate a config file. If you need help with using ZNC, please visit our wiki at: http://znc.in\")") znc-1.8.2/znc.service.in0000644000175000017500000000025413725535356015340 0ustar somebodysomebody[Unit] Description=ZNC, an advanced IRC bouncer After=network.target [Service] ExecStart=@CMAKE_INSTALL_FULL_BINDIR@/znc -f User=znc [Install] WantedBy=multi-user.target znc-1.8.2/znc.pc.in0000644000175000017500000000076413725535356014310 0ustar somebodysomebody# You can access these with e.g. pkg-config --variable=moddir znc prefix=@prefix@ exec_prefix=@exec_prefix@ datarootdir=@datarootdir@ bindir=@bindir@ libdir=@libdir@ datadir=@datadir@ includedir=@includedir@ cxx=@CXX@ CPPFLAGS=@CPPFLAGS@ MODFLAGS=@MODFLAGS@ version=@PACKAGE_VERSION@ moddir=@MODDIR@ moddatadir=@DATADIR@ modlink=@MODLINK@ INC_PATH=-I${includedir}/znc Name: ZNC Description: An advanced IRC proxy Version: ${version} URL: https://znc.in Cflags: ${CPPFLAGS} ${MODFLAGS} ${INC_PATH} znc-1.8.2/znc.pc.cmake.in0000644000175000017500000000121413725535356015356 0ustar somebodysomebody# You can access these with e.g. pkg-config --variable=moddir znc prefix=@CMAKE_INSTALL_PREFIX@ exec_prefix=${prefix} datarootdir=${prefix}/@CMAKE_INSTALL_DATAROOTDIR@ bindir=${exec_prefix}/@CMAKE_INSTALL_BINDIR@ libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@ datadir=${prefix}/@CMAKE_INSTALL_DATADIR@ includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ cxx=@CMAKE_CXX_COMPILER@ version=@ZNC_VERSION@ moddir=${libdir}/znc moddatadir=${datadir}/znc Name: ZNC Description: An advanced IRC proxy Version: ${version} URL: https://znc.in Cflags: @CMAKE_CXX_FLAGS@ -I@CMAKE_INSTALL_FULL_INCLUDEDIR@ -include znc/zncconfig.h -Dznc_export_lib_EXPORTS Libs: @znclib_pc@ znc-1.8.2/znc-uninstalled.pc.in0000644000175000017500000000112013725535356016613 0ustar somebodysomebody# You can access these with e.g. pkg-config --variable=moddir znc prefix=@prefix@ exec_prefix=@exec_prefix@ datarootdir=@datarootdir@ bindir=@bindir@ libdir=@libdir@ datadir=@datadir@ includedir=@includedir@ cxx=@CXX@ CPPFLAGS=@CPPFLAGS@ MODFLAGS=@MODFLAGS@ version=@PACKAGE_VERSION@ moddir=@MODDIR@ moddatadir=@DATADIR@ modlink=@MODLINK@ # This and the following two lines should be the only differences to znc.pc.in srcdir=@abs_srcdir@ INC_PATH=-I${srcdir}/ Name: ZNC Description: An advanced IRC proxy Version: ${version} URL: https://znc.in Cflags: ${CPPFLAGS} ${MODFLAGS} ${INC_PATH} znc-1.8.2/znc-buildmod.in0000755000175000017500000000230313725535356015476 0ustar somebodysomebody#!/bin/sh ERROR="[ !! ]" WARNING="[ ** ]" OK="[ ok ]" # Check if we got everything we need check_binary() { which $1 > /dev/null 2>&1 if test $? = 1 ; then echo "${ERROR} Could not find $1. $2" exit 1 fi } if test "x$CXX" = "x" ; then CXX="@CXX@" fi if test "x$CXX" = "x" ; then CXX=g++ fi check_binary ${CXX} "What happened to your compiler?" if test -z "$1"; then echo "${WARNING} USAGE: $0 [file.cpp ... ]" exit 1 fi CXXFLAGS="@CPPFLAGS@ @MODFLAGS@ -I@prefix@/include $CXXFLAGS" LIBS="@LIBS@ $LIBS" MODLINK="@MODLINK@ $MODLINK" VERSION="@PACKAGE_VERSION@" # Ugly cygwin stuff :( if test -n "@LIBZNC@"; then prefix="@prefix@" exec_prefix="@exec_prefix@" LDFLAGS="-L@libdir@ $LDFLAGS" LIBS="-lznc $LIBS" fi while test -n "$1" do FILE=$1 shift MOD="${FILE%.cpp}" MOD="${MOD%.cc}" MOD="${MOD##*/}" if test ! -f "${FILE}"; then echo "${ERROR} Building \"${MOD}\" for ZNC $VERSION... File not found" exit 1 else printf "Building \"${MOD}.so\" for ZNC $VERSION... " if ${CXX} ${CXXFLAGS} ${INCLUDES} ${LDFLAGS} ${MODLINK} -o "${MOD}.so" "${FILE}" ${LIBS} ; then echo "${OK}" else echo "${ERROR} Error while building \"${MOD}.so\"" exit 1 fi fi done exit 0 znc-1.8.2/znc-buildmod.cmake.in0000755000175000017500000000720413725535356016562 0ustar somebodysomebody#!/bin/sh # # Copyright (C) 2004-2020 ZNC, see the NOTICE file for details. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # http://stackoverflow.com/questions/18993438/shebang-env-preferred-python-version # http://stackoverflow.com/questions/12070516/conditional-shebang-line-for-different-versions-of-python """:" which python3 >/dev/null 2>&1 && exec python3 "$0" "$@" which python >/dev/null 2>&1 && exec python "$0" "$@" which python2 >/dev/null 2>&1 && exec python2 "$0" "$@" echo "Error: znc-buildmod requires python" exec echo "Either install python, or use cmake directly" ":""" from __future__ import print_function import argparse import glob import os import shutil import subprocess import sys import tempfile if sys.version_info < (3, 0): class TemporaryDirectory(object): def __enter__(self): self.name = tempfile.mkdtemp() return self.name def __exit__(self, *a, **k): shutil.rmtree(self.name) tempfile.TemporaryDirectory = TemporaryDirectory parser = argparse.ArgumentParser( description='Build external ZNC modules and place the results to ' 'current directory. Several modules can be built at once.', epilog='Adjustable environment variables: CXXFLAGS, LDFLAGS, LIBS') parser.add_argument('-v', '--verbose', action='count', default=0, help='use -vvv for more verbosity') parser.add_argument('files', nargs='+', metavar='file.cpp', help="path to the module's source file") args = parser.parse_args() with tempfile.TemporaryDirectory() as cmdir: with open(os.path.join(cmdir, 'CMakeLists.txt'), 'w') as cm: print('cmake_minimum_required(VERSION 3.1)', file=cm) print('project(ExternalModules LANGUAGES CXX)', file=cm) print('find_package(ZNC @ZNC_VERSION_MAJOR@.@ZNC_VERSION_MINOR@ HINTS ' '@CMAKE_INSTALL_FULL_DATADIR@/znc REQUIRED)', file=cm) if args.verbose > 0: print('set(CMAKE_VERBOSE_MAKEFILE true)', file=cm) for mod_cpp in args.files: mod, _ = os.path.splitext(os.path.basename(mod_cpp)) print(file=cm) print('add_library(module_{} MODULE {})'.format( mod, os.path.abspath(mod_cpp)), file=cm) print('znc_setup_module(TARGET module_{} NAME {})'.format(mod, mod), file=cm) print('target_link_libraries(module_{} PRIVATE {})'.format( mod, os.environ.get('LIBS', '')), file=cm) if args.verbose > 0: with open(os.path.join(cmdir, 'CMakeLists.txt')) as cm: print(cm.read()) with tempfile.TemporaryDirectory() as build: command = ['cmake', cmdir] if args.verbose > 1: cmd.append('--debug-output') if args.verbose > 2: cmd.append('--trace') if args.verbose > 0: print(command) subprocess.check_call(command, cwd=build) subprocess.check_call(['cmake', '--build', '.'], cwd=build) for so in glob.iglob(os.path.join(build, '*.so')): try: os.remove(os.path.basename(so)) except OSError: pass shutil.copy(so, os.getcwd()) znc-1.8.2/webskins/0000755000175000017500000000000013725535356014403 5ustar somebodysomebodyznc-1.8.2/webskins/ice/0000755000175000017500000000000013725535356015143 5ustar somebodysomebodyznc-1.8.2/webskins/ice/tmpl/0000755000175000017500000000000013725535356016117 5ustar somebodysomebodyznc-1.8.2/webskins/ice/tmpl/Header.tmpl0000644000175000017500000000010113725535356020175 0ustar somebodysomebody znc-1.8.2/webskins/ice/tmpl/FooterTag.tmpl0000644000175000017500000000000013725535356020675 0ustar somebodysomebodyznc-1.8.2/webskins/ice/pub/0000755000175000017500000000000013725535356015731 5ustar somebodysomebodyznc-1.8.2/webskins/ice/pub/pagebg.gif0000644000175000017500000000175113725535356017651 0ustar somebodysomebodyGIF89ax(>] 2$8,Ef.FQ,B&;X *@(=##6P%:W!3 ,Fg+De 1J0)>)A`-*A`!2L#6,Dd)&:V-D(?^&\,*,Eg,(=\+-Gj0*Bc+Bc,Fi,Gh!3M$:U)@&=Z+Dc"3M&9$8T-Gi!,x3?@#/A([[ %..4uK~2ʾ2`2`!!! !5J JJ66Ѣ 9(䠆,dђe" n.dIsc{!B'S  \ʄ#@6q>ɳN <5JHpE+MJu ;Hzׯ^X@vAҪM< U](׃~L  ~˜q'1̬Ay„3k̢s ,2"{PYڊ+TP`6 cA܉}L3e9,`qС\GA ! $y$$U$9# h'a ! 680aBpQf؄M|hDB0!&0(.J@*Ȩ@IdFKхDAD|^ᅕG1`)dihFlp)tix|矀;znc-1.8.2/webskins/ice/pub/linkbg.jpg0000644000175000017500000000125313725535356017702 0ustar somebodysomebodyJFIFxxExifII*C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222<" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?਩vQ^Zph#ڊ=W4 znc-1.8.2/webskins/forest/tmpl/FooterTag.tmpl0000644000175000017500000000017113725535356021450 0ustar somebodysomebody ZNC "forest" Web Skin - based on "dark-clouds" by David Precious znc-1.8.2/webskins/forest/tmpl/Banner.tmpl0000644000175000017500000000007113725535356020762 0ustar somebodysomebody znc-1.8.2/webskins/forest/pub/0000755000175000017500000000000013725535356016473 5ustar somebodysomebodyznc-1.8.2/webskins/forest/pub/forest.css0000644000175000017500000000046413725535356020513 0ustar somebodysomebodyh3 { background-color: #049712; } table thead th { background-color: #007700; } #banner { background-image: url('forest-header.png'); } #menu .modtitle.active, #menu .topitem.active { background-color: #049712; font-weight: bold; } #footerbar { background-color: #049712; } a { color: #049712; } znc-1.8.2/webskins/forest/pub/forest-header.png0000644000175000017500000065510513725535356021745 0ustar somebodysomebodyPNG  IHDR d~QTsRGBbKGD pHYs--tIME +k$tEXtCommentLEAD Technologies Inc. V1.01~Ѓ IDATx\wdWy ]չ{r4AHB 0& m`k0\"PY49LO\uQVի{UsI="3GJ$mX6Ҁ)h%$- [ xb>/k;K},k`I0C(H?'@eXCxyt7d &9lScdx펢Vmc;>hcR H.q&RpplD^Ofa˗߰sS?vܿcStr$ϙt8]@_K/{9gY`+֭[Aբ:[ RmcK8 F!`Yep6iF!q@2-A;{T̓)mS*}$I4Mi|Ų,:s􍎒% vi[D(,n@mnSlűs`ۤX( *<"PHTF )mQ@&VZ}}??ŦK_U7_AIۻۈ˜ܜO%2yBD):1iT۶Њ8S`I,'KSz)H{)Pa@ w~B٫PvJ+tu7Tm`˲0ƜnqRӗsMӳl 1r"}Fh7&r* *#ضFa"bK\9?=CkM% CRb _"TF aC)ef4/%o=E_hKL%W^3>$!yϲH.q7$^y/>J?ٴy#<3=XO&W2'o: w&Yw/|c'WG|kl9{;vbdvuVU>p(<*? ?|sl/qDż?>g,9ͣcw篻W[͍?(bY%gmt=3N#~(_z}Sԍ?G_~hn⦅W{>#l\Ⱥ19 1lhsT yz07"E|xgZ{!]~,Mhݘo>7qc?׾7tW=xi>Pï=&,''CȪķ6nvz<~k⼷7d^7c{q/k//3EVcWw~Hʓ*fL⬶(#rݴ{U$DNg8ƶx=앗Ν?x$ekov|Nхó|<@؉Yj5ss(+hM/7>BR, D)ZKJN AƆ8. FuqId`$ e\hcB &ҷp䱅MF(24Tab8O.솖E+OخtF.?IE5I8b$IhNB a&C6(Qh7ÄDj"uN"2dl-4>8ͨZ*\iKJQI]\i#7غn$MQJ#4+;!dVEe`n'b y2Kʑs- (%Yi--= H.A8{lNɲ$H!Q*! V2\caJ6$1~*@Ze駑t8QL# Rb[Q &3! Fk֨,#IS,#35IBe,ItOIz$qR 4M$II8i6[Ԫ5 s}i4mZp=|HiN-,R6:(K$([`|P Gea!$ӈl"-ISb` `B X<1+磍a՚)Ć z(IͣڔC!gfgxh E681ԗ5YFޚ&{mo,ל'nx#}5֝t^`~>q5AWaӤIĖMSGѝ^qxZRvuhMә]d|f(b0׿u~#'f [CܜO\X\*icl?X*!p|4zw$`;aK FQLզ!tpN'Ƶ.&ː!6e @) d% h@(cPFi6e12 mtI#l!BZP[:w~3:Y<3WL_LRE!gd` ,i8e;Hi!ɂ)Zu( 0ҳ*j~wY!2m=ã T V'"6"RC J˜eB`!G.s1,a8SاݧiOTI) ZaT4aaa6aDS10O]O24/;j35bj8q8)8tڴ;242J1C֟Y4K O O͟ OL7nx[g>B}6mG ?tuN?^剹'uմ[6|XȰ=}i Ej`>i1z[^–s( 2t{| x`ǃ=ϡ1ɚ~.x;lgl< ) P+0w0괉[MLaZE)(z|k֯j4sǺիT- hmzXnH&I26qP,Ѥ6"53M\fhx\'Mξ|ڭv-2kh#P6Na)%IoEHhzf;g֠50e!-g,cRJBB(L]FRV !bVnF&>BeGQDQ6v\I Df)Q]F&ƨNR ) hCC*%gR'XR/; Jir\OS$(j R(;UZ'Ҍ,HҀ,-]gXF Ҙ\)O#R(IvI"Ili<<ݰ@V(vl! #62Zio}WiTb6 6mD)"p (zI`\gIC&#c1x 4aI:1ɒ,10'8 HR$)=l:^z)۶og .`pho? wVVH+>.5:\r| ]wvz /dAlҲpp3B`l%mJ?O}d2}"eԣ:9Tjw_~Th}^jًwdH8d\`LiԜ&⤉М7-9W_ɠEr<7pl8, 8:wkXwfN",tp$bߦ4CK{,O&34tB6X0u$ %%rj4qV)qMVgafsbE[w3dlVZ!%2q;&4aiBCj 8R"Yv@Hm(LNLD)I36(EV\a|t 3C3H(Z]n0+aI%$^aY {pp-e46hEB,^&)`Bg *KV &}~Z`)J82kTAY {ɇc**+gȴ! ( ^4Y_/搖X8`[ IC7l t&q2H!`9=wQkfˆ>d!ZX"ǒDA8 %h&!Rm , NB0D)Blq]sEٵpGl#ȹ9  +5Rg :X)A8bTT *0zܾa߫4ZmT~#m8apx2ÞI1II'A0:2J\&R:Q7|.Of!Bh!0R224CbL1*QoQS;KE[Ł4,#Kԫč*iT`[r R0^cN ~'}2{KŠ 8I|n lش sظn:8}zRLZy˸ҫ(2gԲ1J$1IX 50I${> IDATX=pqq8oեq~{yU<]A{GSqTm`uBX{.%7O8;,B {k4Fzj[a@|]o9>_WFg7Kun:mg`2;/}\`T৥&Z} q+Q/?/Գs-Z|`,Ϯc˯5MͶT봣6q3Ġ6m$ B4 L1+v+_Ggy1o8o_GuEu7?JE<>{!8c@8le,*/ffݽ'b|{|>x+8I_p~7>=s 6oĉ!IVI8{-SEor5`ݵQ;Dg>FWjEM<,k6no`\ |el:}-B^ܵ_K\8VC~6oVb;ÓGe *`Ʊ{9֝Rb!],Za}H:M9.Qulc[t-"0 5,Ҳ@4 r"0,C)iSTH$"*3SSdbzrYIIdU@ OaggY/}@B(J!sLoؽqN s|Nda[i3(*=Z&CCTE ^$b֤kM&$v>GO#ch(1;y1kS{YaV0<6AԍhV\d*uli#B/ @`-a,3RZ PiBbقfhQYAѡFdiʆm[Xe+YarA_ 99KH\@xyض8Zcق\G u{}ᬧ`ŲHe lX,KyKއ%z0SѺֺwVoA'$qL HǶIIb XH,$-Kٽj( R%5)#mmĩKWWW˒$d9[rvrDi,.RNߺϽD./1 DocMXYOebqEZlxdVqϲ(NߕRNcx(Ǐ'^8a 2Ʈ9Ʒ 3Eqʳ _(R 062JY[լb 7G?Y.:c=7.sb~/?Gln8|aӋl;6K/=φ㭯XiE|=C>xΕ{y<N~^y8A̞Nro[M`b-Gyqĺq?Wh972ZCTU@PN²鉎R*Y2x"#5k4 CHCW浜~,t֮YCT&M"[iMfXJ2H0A zi7ZJl!Tm)˲jI3AN4sX$EP!+YN{^Pqa ~*ȠaVdiDv1i 6%R@)liy`@yŐaow|0Da`]\Krb 37y<:BMI96m =Vgra"iQ*Q/.Z4!U4k L>HjqQ7~dů~;kvO-F3uj:%ITͳYO2ʢ#Di.~+_}?i˸]lT}{Q^q|W}%7^ɡ"[n/aYTe@:UT(x|[37w+gP3~.y7 Ni @ e,13^'<*'/;H*Rݐ-)^Ņֿ >u{N.+x~_ރp6_1:浟s>yˇ9Wr4 YXl1B1q()mSA sOJ7#9/<^~~#ˎ+ ǟ{&֮ai4C72>6AqM(ȾU\ӛ98C"{aՆZwit>ƉS73VD; ) |Q!Vju$Ä1cx.|׵z R`KR=TCXPc 4Ii..2ION% \sZsbf*8K #pv7R BCe!Zt 8er'Zq%|}kx5X}l RFVa^ii9$qBӡ(mDq() rbjB_kI֟C oW]Eb[,1jnB!WYk&́-ѡzbP M^o狸PY[΋:8Ojl!4s>+7sկ9V?g|; XZϸ_DgnKYjd1bA>l-Lkd)0f4%w,HT7 Rlw}n7< &KuoqI\|08Ip3A)t{DjaJev$ 4ʤQ6[Zd•,  ^`6`Y(u:ꕫya7 8aP,lꖦ*"_8[<} [Watzf.UugΡ'DyRhs+q=hJ58haKuVmx!A#흳Q8Dtc( T9|sm $Z ?IQD%$@z~/r`'*3Aj+aZ5>-W_K Z9m>?c{>ҽ^2~F'z|:aZ3Vr֫.IglH,2{(V'&QF8`;$ZnwucSr}$\>mۄaKBNEH҆$hwt8%`I~ACT-,K1Z!rX rV ۲(&ؖETabdJ϶]b1 NclacԲQ5 cA?,`z,#^^N1*IAufn[)"r6aø=zA,c,<@f,EvЌ۴M*I`e$Mv8N:᧐VB%@iQHLJe5i2Wh<2\)Ea/}tfZ$ Y##VQa@._s H[j,׿#@^j9QlAkC/UfYY;}r:gRl M3 #bGEqc@}0:QQTD &4S|gv5·XUWyZ^B[t&dI<;dQƧ2IK;M4֍-51b(9m[FӔ-HFJPPĪW!lN 1km'yl~͟* 'ؾb { ܋y?O}= `Ck0Zk] cl>4V付j̑*QV݇3Ua3`Rm _HujGen2ڵ Wsۛn`kGF7DjNnnBf!(*չ9g1NY.#lyAD%ae=8Kl6&Sffv|їYy_ EKxG?/fӶssa #w\vbWb1~`slZL&H Qy9=FpƋ+y3$9 zotBt|MFll""YwU*6bygf$)l'do36$;: J$ DfR_v/ɣNLsd|~CÛW,_15QVP.+07W)0|@lVPT^[}6 cJe<,A@gn 'D!ˆN0;L|"A"I#RoYuT5EHHr ^oz+;u;7q9c3LLL:톉%B:BT$tw]\W/ŮArzibaFQcY( (Hn"&&0kԏq*i/;Wy9[Y̒8gJwk cOmJœf1UV0}xEqqK<)ɋ̳= ]'Lj n(A&#* "!h18*#N⇠a az |_̇$!Aq<}s#anp740#2QGE]idz&&9|B&ݍZ.13>Nz`ϱ_})B2$H( kb|tsuzsŕK D|[lG?GPȑi,`#7mU$A`כs 1B 7\Tw+u-/ӯ/pwqɧჷ]{l/FXz&ۻ8Xyvl0㡧?%A$q v\}5 M"Mȫ;cǟC]䲋H vBt< cy!tmaǡC)t(v*he|{ YoJ5WN1M"ai*auϦ22 ],ȡ HO(D1.tC$d:Za;lH7g`d$b79͠23+z)L$xu"*_|t7<('L3}_9d= h]XU7\ş}#eɦҌRTҩT QB0I:NqCVw59#&u\!n7{HII@ @AcÓ"!j 1,1&DTAEYD"&i!s\" fЮUi*45foѵ By01~t@iHFDN8(!D4ETQ"!H BaZ!i2NC)E"`arl XfZ&mb @-\"Bڝ*u< " AdYEe0"C)rOR)Kow!-.eVkŝ$Ƙ @ I&dF|lgĄNҰU' |d%F<[F1n%ESFg"u R+""KҜ$E&IKHF U7[rbΝ 7SZG85OWzSh ?1t}I ?ě 拨4.?WfjnPMr$彨DiXh(gop31 o'_a@|&ʹkY>s3w+OמdKj7]~>&U\s oF F'9]ʐHiX&ɫ:d$"r$0㛨4rA(4UI`G:[ KHlZu+̕T rk#g~lvklǹ?ѿjl'lXt k37=CE&C>0%Ced_<+t5M\=t\}{ [ k-&0I5 ZKd2%$:/iLКfj1r tDNͤ=@HT<K[ WbhY]+7<se7g#OQq޶Ё=|DJ?%K062N E ׳j S9Ů2 Fy5$G@biϋP?l2I:F$L"pPE$cßx6À JxH^hNUE7 Qth7|r9Uq:.]š<"Aޮݿy;ݜr-7xgSϑIgP)L\FKpjq g7Y{芎"_z[608Qbt/hv(N9q?=CV27:EUctӌo§Y.z5y6]r3<(3.of3f$~_3v1b4BQk%N0׮њL$ IDATӕ9* = N]]EdէZ"<193mMiZCIy(J:AKHP.9>Vt8h qjyT}NJC aunqQ2IO Erg`mXGXw˿=Ʋ]ǹvi; YOq;onXtw|5ez˜$$|1NsjVA_O/BITI* nEб1B*I`j:A BzV,e햍YP˶}ISR DC%T$?BRUd]CԕE]^H" ȲDpTI$8M&u]tMh " m6,i*ZʠSg&{>7"1F@FL@D ] I'R,|d!BD\ {I.YB 3ӈG"1<_QplAtjt&k6)WAv BE$CC.dP=%zx={؎M3qxexXVj!h6yyd)r{,' i! LGW_PB"K2A8(Tq#EFUTD F࢓bdET6ATE3⠽ 0+d̷jOv=*)O-sBC) j~2,z.ىM2>BZ2p>a5zYh32Xn9բmV5+M…oʞ5xe'&w?Q&uMWk7~?>o8,y l\K}_rK-pP!qZ>x{x'>c8H]7wro0d{VL]Qbu7ĺQz;;gP]=ݴ%v݉QEشHKJ$Иf([:6INH 4Q`p 5r!K:r6TJ@/ ˿zmglsK໏?J5)Ho~'眂vl8w;R%T*5>g"2o53ӈ4Q.P7#uv(vuqTHeXpt<׎2nN!Bi:d>cV^i UfALgi8cT4vJCG%4,a[.5H̍@azl#G>Qa5,ٲط0$RL";,xأ#+ٲc/Hc>Ư~y?C+l VYJSCQ"~?]iU $B8E~1|Y_Fl!+!gұeRe~b >vn{n||ovhZf ?Pj*b$ATU %DEEG $U i.:Z2w;MY%ӱ;h񂓅DQD"kD'׳)(9^. A7:sB,vScbI"Ӎ`$tQ=0Y:!Eݥlm5RUG y4q+Bg o;ǿ#~_ߣx9lZ_{)oʸ<[3Ne_\.Jࡥ2OXf+%д}F*zɏt' $QDdzq|/ A$͒NPsB"ADP4TfH& $I I( sZ&+.:vOKduĝ16p֤xML(+؀N;rp?{WU9Wn_E1n"'Ȓ@D@^`Ye GTlO/!l1 Z L!B$I@D! T!|*,TQ&2]Ïxۨn-p#-2v]CVDLBNHAD DD 0pt8) i  DlH!dP:;IKIFnZ5gBR"E"I$0=\߃ .l_ؾJn\Qukzdd]:94CT= # 2O|s}LݠݜBd$ 1ZD,IB,!X ""ㅈ.AϬymDC5@Q$HOetIqŀeVv` /?2Ǟ~U7kS_Xs\ FD*(FF5fͦS9ހYFӛK *GZY6r}$|˱%֟K!ι-<{x=wyϽ"Jb*>_amrݵ,Qf>W[n{e{q ]~=+v $LWp[~Uʵ7_&) 6j%Ü MǢq f[DjHز($ t\h{I%R,R_ʳhsr ,{gTޯ?|Sa-l,MHSX^k|'ݾv\w?ja*~-8qz Ӎ잞b%#u1;7GōL! 'R5Z]y9 ucY ںLǀ̋PZGo v!Ef0u1ď|ryܹr$WMSӋƿ]'MX213%-V࢖Eh[sɱ: >EWG4sPl2?" CXUr}6 c C1t,vӱP IR즬(y*5ʂ<+BgdNgoDZ9D{H'(*diL>Q$V(G"2 vd6E*)xv@"-HQ Ii#R@&/A(FH$( (ȱ( !$Pp%ӍI9O1E2a<4tYw=̆Kw(^? MB*Emf8rOrMogaX2k$nL„nݢ3"-'iE>+``$@@O 9guD _P "l{( =1pFp-z$E#]s=Wf𫰴ȍS\𹩸~S|?ao!.#2Jt*OԍiZXG"r,f$"Jc>>Qe͖b%dIEE_~2JJ:Z1m"G :6zBݐDI@ 'ɲ H16(;H +hD$0 pQ=Qh6r%$M2M"$Q̳nz$RNRHJ r-k56m܄Lb91fcius]Ŋ+N 芆Qƻ**w?A]yXXzv> C*a]&~ \O0^l7jN4XuNّqH+1+MWlgs9kru{>^Fǹ_oMo}MV~.6,\yK>GիyWgs3?";܁z|KO3hp}Ѩ l2f_˩`1 x&Z)Ka>O"l.(u(2K!^K.3=5EzqeB&;>avL|?xx~/DK&?>G=<‘\m/Hn Wx#9X|Tq3 k"=Ϣ_Ky / 0STToy ^>4j6K\84Ñer4]=NptMCs&~9O60O&_(Gw̱CG.D-"]SJ:2Յy܃%XvxgD`u(tu!a`J(@Dzqm; * !0?;Xhq>#Ui-d9 E("/ #$ID DV4$Iƶ-D1@UYA$֬'*DaH؁J:6;HXȲUXv$i#ky(BPѨ1=z`NOG( kz"!྾Nھ\ myE9?>MO5bf1Uw? K1g7 Kȧia$3idvq=cG3ZYDTAOƶ0?YIQ31z+E}(㵉|X6 *q r=]h+OYO@5 jWODTu:<"U=ZVuA|.Gm >|vPW.!BYaYOzn\ɞ% })pޭp3ͅ}+c&,f㌿|cN0ݗ%;Ȇ`2LIJ(wƚ<8˿/⪫wp̧d9?Q>/·m`u.anv_KHt=s >|ӛyup{n{ijԤQgKq-P';@XZo`M2$Ɍٞi̐\v.S9?GmnM17}DOgǹ /~R='dEy)n+3sJ/?rUU ]vfz>_s4uWE~v;2,cop榷=?.ˮ8{+Oa}2Ǧm)zPzk99$JQD&$PDv'\.FcaZfff] *me1+rYը5xbH8 8Q4[&+ BN۲6̎25Ek R-TD"ii6k: d!dnNDuIDb|~h1B%C( _h[mۊ)EQcT?1ȪI0SoOW!K)#%ZL!)A$7>KLH&qdI֐E1 ]׶ N?@PX f(V D1Hbqh* vD3t0@bre_QeFC]6u\{?vݢ>7gNmv|#'#s<7*ì;c Ol^M1Pi51]y~nzP)JDB˨FPԈ"t:z6* $P!M$UG8G䚈.EA MYiy>Or9[:k& t]V>ٲE5dڤ53%K8~Ycjj( 5Vo 0BvHSDyqrg9d9I²0BQ5ҩ j]CײL !YQd EAxVlΒ].'5l/mQĴ8@ Dm HJ&"a$ufaҩ6v%\"K =]90v( SQfgѨ|ۙ[ ?W~e7h̼r'lH۠>2οOn.ȑu"d\k < aygʤԿt];pfҟ٘ƨ{ *A5Q->fh7RC"CBA:QHB3Dr 1}x+fCv+(B C֦Jس,U][\f[W}?`fF+K=Ư< L  #qx[o]%,٩g0<~Ajck&|!@M,TPD9fGgWId eTzLJV .| e3~tv$Jj:e-ۤ{hjn*N3m܎CuvmR(*"If;б;HTaYz5ӣ(F*==E@Sn8. n56/  /BQ-x3q\dM7K2"B "{<\Y)V G" >,ZY!fբ0GO|Yv-mfU:_3uF^xYǧp,$NuI<Ś y -˴H51bKR%|EXJ۶ÈN#Qb#+^$ IV%HZC$QEU"ICR>Poz\$.8dEDAE!]BG4P#Y -j t /S (dtdىQt]F&(˴:6V L@JeF AH3hLDDf&EsH {X7z:;2|Y+z'rrV&rޘ-g2 ?kc?zszW?3- <1v@é<-]׿}~P=~7̯^+9x虗7 /,rULEW=iy }/~Lrp \z>9ȴy䧿}ۮٕ_a9ژtMyD,{G_\&45d2@*n GiPBti6ۻ~8 +K4xO0hG?KϳV*:#j ={);%MsGn癙|ַ9bDikA-/_=Z\/t)z֑qDA 3rD͵hUhB6·]DghLO!2}2IUw!+Xi"!k2z&M*ǏlNZX*Չ'[dQK#x*j#vǦpɣGX~Յ8i YF5*B%BD"(vڋ$H"8""&|B",ApCFO$ĆI }!!qlv(@6AVdZf3?av^7DJ"a 22h*{h`ä$ A+W0y$(v0ϣc6 mIS$n>q-t ވXaZ}9sފ>7 3bz?4?g^yCȔ{@06a$/tqX]޴h'y#}LuD:G_p˦|5<|/f^pĦc<ч(Xqiz2n`ٗ3o]wsÕムwM;/a9:og8mx/eA7.aܨwWN׸7eNG8zJ5@nmoC_~W)l}|k_.6ll'ٶW-_j?%gN:#s3򱻸I]+UMrd3s%sK{W}Z,CPh\|u^Y־ mS|?O|> 6oU﹙ V|yV ᑔ$BF%If _/I$NCÇq;W$oo}|ɳΎ|tRk<0O?Omxo}'`כKl9LdEkZܺR6cyny fVh_`/!H1R =93jIg *l2Yq->C[62b9~qhAGwF"Anfǵٶs}9xfP-p2ڰL:4z #Gkd)1?,1dV'3S #߬ИNjk" iitE׈'^ɶAHf$S)&tutϢetwP=\B} S|uoֵw5kM'~o~<ڀz{j5lC24@|<#rihi٨Ȃ(EQ$CςP& wH&oA+fq_r AHH*ų\!:섥YHRH(D%:JBTA$" 5TUF}' =,(H@l cd:Id@AuoX.P,h6,P׍t[W]md&8 HRH26$Iv.˿kϰa9zp23|L.*gpHP}H~gA"ڇ(XKYA(U Ukd+? i| ;9c'?K}lr:67^ői }<&h'L9{v_'2:7^y%/ɶwt Cp;9vb}mB}cS6M_dz gf<+<ڛ1J9w\{ͤLJYy/ґ rϳ|r? Jgp K'7RJcvj AM0TTxNvUo͢omlX2Cٶa+#|?SLrtCX 3Ԡ697S'2?(H7(VJ C҈ђ."B3hc4m),ʔJ%y p'gI(лe R mZG@ @{[;}!"I$H |Lih7 5[n`FJ[=%-}kF"Xe)LC4i˴P婕MMOGĕEK%4Jqɶdbdl\HkW܉g;Kl$O!vv]UFu4IACj U*s C܈t\!]KI#7Q'N ۥx*1MRR A}΢]cwSi_4/x_rZ_+ս\b$s|sE @|a|pUOk \Gfdl`gm=={C3ՉdAӷPɦ[)-.&mԚ6^(c6fH%uϱ14" >H>"x>a !qlhLӪ@4iNQT?lJqӧ&u]y1X%@T2j`p X\<.|JVr#*A:ޒ]@TD$EBV%dIҡOz˯y7ϜF:;)hH K $ȢQS#/B$ H,$Z5" rs0TPw(x^ D|׉@*B ] CjVǵ$H!^D2hXC&Jy~FNwG}N~pM4chNZK"$0b: ! ˟%/a(׵2l?3 7z9z?q,b,7ɕF s5\A8H:xvx*Ԃ"w }}7=ر}\~Ga5l߄vtn5`MqՍ"b-ު{铇Q"{8m['qMJG88˷v_|vL1IR"K>(9d rn6nR(q]5u` l>FZFsly_ʱEV+0u6{gk?6L-żt V0:;ˏ ]{3[/))TIY39Z ץ%K AX[ "zى $EZYPp,|V{;Xy[/S4Uۺ=vHP_cZ̠ QUYgPCBD)l:ڨM¦HS'wa) xC*>1!*ٖ6AimKQ1EҖ*\!Aw=GT'D" @]F ¨ ؖ&H(8Ie3dRi," V|Ym4-ZNJ(zDR(j؎hdY&)ݲa-|"Gȕ,Fw@\zjyqFD% $aʴn*@; GOc)  ʑEQdD!L<ы!Y' dBQm @tEA$6lTJ/=WC|]]4M%RmqD[31Ҧit-"Jd?ymOBʏjL9UjӘ-0]S~׊$4c\D>/TmC' lvி4%v\{ ?~ |m̏9/=4m\pӎةS@ N r a( %dL9oOa2 ]⁇d˻npCv?X-=,g-t?̿wiȐge _d+)YU'u$G 3Qj& _:}>q ^~5_J#_+磟[Z8c54g`aa4oZy7^7Kfͥ۩Js_FHVF-4^*rb(VS,ZFX} ]gfdiCkK+(..">չ.֭[G~@2fM PDl0mqR"XLVtQ (7$R Sg"i2?5b.OoO7Rm - "bZDiq0O2:2BsrPIT&'GpK:ͺK2!ݒej|fSo"3z !* !TF$hF P 1.d5ՆA%CND } oGWtoZLg\9hǦh_ 'ϼ$wRw :ؽ0~ wq׾F{ww~N.~)9Gn AY[ϝ`q2[fkУŸrOBLJe"+qTQ2HJ@Q@KK&鄲N(X:1MBtT$&Mhl8KGwMǦo*܄/Z U8INV.zшQTa4 F<\u|󍌍Pŵ{zq\t&jDIb@$QI Bi,V]Kst2Ynk֮bdlx"" !j\GR#љd3i4M#D^r-0{/2šjK:ߦA =$ƬW <l!>gMFh HVj6~*V.ݶ ?j4s$;~3̜>CijZ9؊$J2$S,`M\ER8~^|Sp%rl-ݜ?+co7>ZJ>`xH}vP_l(o!I#F:Ǝyzl*% 6\O| ]ogmC~Vir|o?J>Gk\*Ύ8#xil=,ϝoO;TX69_|Kd9n|*<1c䋳lasޱ>XҰ]|⾳}0'Np}L)R+V;r}L\y`itfI&FLAmkX,$;D (_2XBySy/o,YEDWxKxm8/e0c_Bީ1eΔ)mGZ76 Js %(j ߶q]x< :V%T<'F۬CR{D"A4M,!f:r©[ N$ Ҷ a೟?Ý7Ƣ63=3φAcg5MD /ѹblg'Q5}%EJBx,CaaJL57x] /[oh6$ ڻHRGJGΐ/Qd.y T֮N:rX 'g|z_~Ju.lҞi#ea|$3v ԫE֮YNkkoB$z.) 8CnrF"cZ4U|C Z,c7`;*A-̝>X!h*A/-`:儈膔&gRF\F@᪂# KEqАU A q F \ CR E"v(-#HѻDsDKC %, i:Ɂ>O_ ޺K6~r}|#dhY?xn\r~jN6/%1SO$xaopk8Žz7nsE~o3MMU;l1lE@7fw  !m-H+8@VPD~0W/ P1|Pid ϥIzmplJe۬۸> Y.2VÐrBWwdYTUw J I pKMnԢb 8=:ʡtd*KcF"Qj%dE!N>":~H%q)g4JHETId8f,mcuvj$id]nՙ4zABj2CT&vI7peFFibXk񘜚DO{O.eG8[#pNne#_)J$s[6vcTM$YZFet] ¡]9bPd$YY"@'#,Fi",$oA1P`. 1,!I* ͺűG9ʋE><أ\|ջټa5xuڻdΎMxf p|x5Cߪ 9: ڌg<;{y)MTRNYW*,<W /L8y`/WO2Gxƿ?ЖOwp fx+{O<]8_"ml9rs(H2c0 RX:AӦ/,d,@1 3'6ȒBLF$RU!H;.il)#[nF@U4HtKdX$L4XMixcіDk*NG^B.j"SKEYʏ"(l@ۊ=|_Y \vXrNqA)dE E˶cfmv> |ow1ZsnQn&fdY+?s%־<96LR[}%#vF\jmV\X*KPkZkMTR&WX/ĐQaTy$#U2$с#TjMtDVP9E.XJ C¯V oViJbGLZ+gx}鬀5^4m$Yb)<~DX*yX+:ڳɮFIix. S3T&8SǩuX`*(IE"jdiZ&Tb E7Hj*D0 H6}IDUѐ.5| zIcM*hh]ރ  黸xg*$;!,7?JrM6\6 Dq\ry*}}{:;JBЕI"[cGۋ$@lw!š$1EPbrBɧ4[BUBGTbF MLPIRsb@FmѦG&eTuZI,$TI"бj C(7 ؕY!tfmI誄HDHECO2(ckH B waL:Iap-w9eQbnf>sFϝmٳg9o$Ya/k p<ˠIa|VlJh>céduuuj͆I qZVnFvlooaeOF;]j-\t\Oq+Σ׾מev3d>{3gqDd %$w׊% G5C"s̤y#Ç_ y~.~?.pnxj晹x<8]1{3/<*=x'!O?XU_ϫJz>oH۳G_Vpyc|ߓ#p];V1Gk ( 0b;]_~׼{[5xwto{3B(HVH7wY Ep=WzN`bxaz{iiMW-#e*9-v4 j:I }2cišKh$\9CC=jKm#W,p]dElXTJUҙ "( O0gpʠd|"H- \ƒD=}ȱ$ĭT0G1uҶafx*$*X"(jh8V[ x"4%,\|&iA ĵ0%nZGTHRly$] oRŵ$A&#Ь7 (2x.>AuI.=APP EH Kba M|'EP%%B% ΖQW/aX&F֭_E& WR\RD:M*-n޴>~㧘|Dى,VmLj^\ezbL 28orAC2.a."(-r:dw*n`x4f`2},jW VTSw!De|u\:*nD@Pj0A( a%ZH3BY!'4=BD#(@""G\,=D`{43%[ ?47bO5ye?fo fS IO T]ؑA U@\*`z>루*y5u-$+-?{/xWzE7GV;xn&gRxI6޽s1L3*L$0@ |QhqFՅ15ugōWr;?rO7r*5Yaaï" t|}8qw]yp7ח0{8|jN{Rh֏,?9v;y|'v=*cWj dTԻ;x38q4+i.<3mZ*ucgq)4Zԏ0!`Xu,ĨqI4M\ \oiIYA%lۦR,- `[6?o~+br<˿̩|yy+4글&~~h/Ű $6džG&˂1ʼn_u>g50p6 Iy=mxxi\_cÖkpb% X *WŸ1t5ov]T5Wmg gc177ETBtdExkHDO--1??m[sYUAIYTK Ms $l Lץj d =EB@ E|E[BPi)Iu46 -ɈDAd!l­ *$dd2844J& &J Uɡw5#+'<;4YA'hH#2u&HSulNwoi;R)j2o?8$ z$ *Uz@WaJ%eW;v~:zzJ^@ki@b~xo1'tM}d-H" At 4#b]bDruL#z^%CBݥjU2ܧx{^cn,oq;=H] ƧYaXWLgp jB9_X\dJ&97Ú^Ć$FTO 1`+Gxǿdy:șWOg>Ic͕6A:EXO+BG#31' Ý>Μn8mLPTI $MZoI Ra&O+"'s՜r57y77oeF<>s{˺[X |nx>JlL#)7C9ɫEĺ⋿xn8tx?ˮ̚?y ^~˨nꠔ3340Q!bݦ+94vGq֬HXC*ϕgZnM"jGjYcY6&Y?~carj"D~X TdXh[nd oU $vl窍sVb̓=\z:3#Vc$)$Qs}4U¥GHd2̑c|uN:-Atw=ϦkX9Im[sc|DG #\wZtv~wE7]ׇxРI\bP[-dٵ ó$zЂ8  IXcf,<],_rbY.)Tbx\G#{cvqϵLdžzB<GDjuֶnΝH.Wm 4U$Cd-(x`W;i.i! Q!A'+ -5G+QZ (\GVO@Jk˸U)2 "UZ\M VR:D3~6%E!Kt$=N1GQ SΗ#raK$YF #PLQK""Bn]y\9Bqv.9@i%Bx!Bc\w)\ŵ!*bX ,KF%v=P]E$D%TgAW9woS% ŲΣ?Fhp-7157˹QTV X5(4 Ubzf!U!ih :XgœO0+Yv&ԆƐ _CT"N617esp+H\gF8Cg,#:JExdfHeCgP&5rU!7+L͏}-[e-=VCVjg?I_<Ɠ 7E:~ozq2ȯo&OrɝZ*Vևq~cWbd5uwE_g, Q-Ds~ݿ _CGaZmgN.߿3j&twqMkxm4?+ã$ذi%šӴpI>?`8dO@ni|nr W5uF6u, LjRq*$2\u MMMr9I?p*u]\MwmzuEs<MH" #HR  K5o4!bEM990J%Ir 7ۿiՃoϿ9yo|{lVVn^Ń]_NWF۳8SbO©a 06:ɏ(m8u byզj|=O1rX|eѪDIZ5tS0虝S;b6& 4m'J, (8ZV ?n*ڠ4^3"a$F1z="؎C$  YF&G l (^AA'$RbS ޱsg)b/}I[qoX%Scn 95H_>WBҭ5<az9VcF=S̼<;R[ngilo{%ϢJXmz P,V i=N:1©(Q03vX~9R,ihgW` R*6Sc1, ij5j\4߰'If U!dߙyu2\`셃P |}Yl =;jA.^A(#S%>%w@Ffp L;5^8ZRo !%sW>\W` SqX7w3qr7&{3ϱpy,Uˮ!o+p~3?dHɮΰx+^ũزi#}twuDKw7_1@g?$rr*9JfOlȮU֒tC a-e*z!("ܹ1Os0o>nx~_r'8;-+瓟4/|Qccߝ`Ex re 0$u{*CGygXӺ^9u︝ܗO|S^Z*r͕WR[DWQ[·it ǿWp!e#{oaŪ9q7Ć?_XYjCGOE*ܱWtPRebrLP};qÐ8 nlA,:z/Znz8 JDî $0-X"Aww7͘Een5>)/TAIuD)yUEؑ46|Voby[ZM(Ó|?FHxuk[$9Bq=27Dqkd2ct'DN~S@.g>$fz)&ϝ)T]NSe!Y C?ok-=Es-g-aBsgS*UH2vkqm$ \REcnW E$EI($r d"M\*, E]qurs3 3Ab*jCx*C2( =EK :=ϏRe EU/%|Q.xB!.CQ!@ȊL(8g9~ʁGZXj{Uϕb:YTEs#E0Ӵc1TEBǗpQs.B(m҈{(\J6B" ?B047vK2v`{bid /eQT.(S^A@R5$5N JVOu]%:a(bƒHEAmDᲒٳ g'c)*)䦧۶~iR-y$B,uIAAV0:Pef$L5ZⲆvΝ8mL3,V]d)b't:A`zq˵4iNÊ.r~?~}vӳGwU^a}T(희VVıIҨt q7tҝiV%fb+W22|>,Nh% #Ƚpm֤?H3l||׻&BL^52._צF83t!J 5LmC7-׬ca2 :11W1g#{|S>LSSY9;r9S #8ϖ&aA"=2{qO}{ZY<{eڄKP1L-rIMN=i*E9NA$E”$Q{^-KOK">砧4v"K@\E,/b0@X%#P8We,y9jeZ]EBQ5Bë$UTq^XI=e8$iAF #bexjti7E@GC|/zyAD|袋& 3xGcqauUT4qJλoa[nu1(M)*uLקX)ST L 1Q E0%T 9z$1՘TB4ojG>9O2 6uQ, HKPQ#i}|ϖڜؾ2EP5y{9  Bnrz~mɃGyg9q,89ţ?|vQ0Ξee}EbJݬzG<,eipӦ~|_G;|cݷmZKPZ JAg_/<\T5ݝ$ZTTDJ7!(jw\aGf"8.F:W,E5MIBּ6όgHuׇ)KyU8 S,ӬOQu ۳ABq==W$X(cɞª1Hv.N(N\0jXHrt.FH KVpIHhVe%.K  ,X>Ql{JՅJPfhGQU4]AK;_Y߼dQA/YmzN Ojgi.KrQ 9R ܲgx;d[_R ɓX+|Bd0xnA:T.Da2D,ZhqL$HśV*tӬzbds$[[IAT&3A~ ~w3#mJcyF8SfnDR=l\}Z6K2" 7C!\JOuTXk7NQTIv'1+!ZqϧZbh( 8 FʼntATѴŋ³TUA,x^Hݨ96.!!2碪 a8R\ē10A,ij trpt 9xX(4BC kaA  dϳ1èW\}1[MTsY*ȞH G06Kc2EQЗ BPdQA I.(zx[lDKUaEv 3@(MC5 "_ǟk|[[8R2l+Gm '~]Wc|OM3ís;ٳWO"|HdmTcV]~O_?{;+~-_8p![U xa4u5cxhY4Fz ۰HS^"EَmS-ȊBScFԶh Z8F}v3c0S&,=w$q)x|5H5tLryc9'ۚ8̩3{vIK:N{GGt1n~ٲE=orM硽Y -Tѷ<ɱ&3h&Mæ[v5#u&?o=W_j.8a)Ԗf‸O2m|0==s/?Oʹ$M7a*ӣ|?`sjSsm7`) 9Iw}FetjH3ټ*gfW]ͮn`ÖuLOMsv~ǝ s(F)ZQ64ꢂ, ۃ@B:Z'Rܱ[}'"x3ED^B*USnRk"pG gcv4:5K ,l*Hд;=x'K3D@0]ij(Ȳx-\if fd%2\< JWIe[QZID_ɇ|5R"b Q"*:U@-@ՐV-‘kQvs|"VU{P~rkG`ݾXh,2y bt2 㳌 &@J$rfCP e i{." qK4$qr&QT%Uh6jD*DqH^868-$&?@tuq ٰy3#KÈ^LцDi1m{G.M …/ }YO !=}-(! 1 mMҝi")љoSTTz W/# ;,/,P[^$ "I2F1f B`&x$IζMa IX2 /2ѣ(BJYزkݽ\|(2iiF4^OΚ.^ZehvfNn5뮹udLW_7,(*2ky y6BܭП1 TRMA<3˒GΜ!}P`&NY6h;Q"gzY(mw79Ã3I.Q451]]=~;Q m~u*| g#ѷu'8oȆy#8HM~b歜y\NoK|{9:C[ة16IM60KR;w)m^[5Zme69HAPM=g.W)$@V#FYRXZX(%bHҌ(Hxe ;:>a"#P5rIJӋ~)Niv~ܴu'_6 7Zn2aLء4RR ,t:W*Q] K#6뮧 h"o!k E#GA5(db,M:M6 Hq)T QRS(#01u2\Nmov:XAmvtUh7xv ^̮.PYUaU%Kxn܉xv@PdhT < rez%$Q&B&LAtUCJ#b?-qg̨.#Hj&CBC* HِM/F7 BgXl 5(BUO!#DT%OGEMOOj5C342#p |W$ZHbݥnZU=8nOW6֗ӕ%KE_PC8=J1g"D.n&aah )i ~!>"2q*ٖuJWQX؅hI@$NcRDY"d0YiLQY;L:O}v wiJ!G{z6݈ -M;o`!^ƩyrJqI쀙 h@hh< L GϳV[gY.h?C7>|L~oc*(cK,a;Gۛy\ EZ,2^) Vo۶º̉@Zj0AVA ʒ%̜)P< heBrZoaɗ9VcO&#FC'Jz65Aw?ZF92|=T!%KʛO$k=¼ij_'~w_Džf?|ۻQ#jng`M?nI~?ĹitHnΚ3gx;QQt!Gm>BO|]8ٴ*܍'>ɹ72w"_?D|S†-׿3@-x7C}Nh]=6/`Wk\xXEX*hvW`*N>c*iMnY-XhJ#LӤ|>uKL}Y^'Ý7|fO_~~a^ۏ fjf+oe&ڵ /nf"r_Aah7m%-щ#SSCsZk`b#AVu0q\j,;KK(rCdQCzT4,@2o(dؒ( Q) #%*+WLI+vRCIE[J i^|lsVn{+*ɗ#_ꗩ^{L>Y%24GyO!%NJvh;Mff.Q/Pg r&.aavE"n{" )Q*PYk0;M\D4\Dz(ip/Ӻ `%%k-Fw4eڡ)DؚDx~U,+!2-2gX u%&S:NDWW͖M7"`AZ,! %ZMdwI$`尸"D1B"#M4"RXBPe:&-?)v(/ڲn}kY8;:i9 aff즍na$ TAI6%$MamY| zҘjJώP=Nߙ#fp?< of )S^bϮlBT>y#uC|Fb?sG:G>W>[=p;4}jGP RQh#8;N-ч7¥]O!8Ep<%$d(MľM[ X>~|;']΋G'fp@kGYh5Yh {xWƛQ6?X{Wx_?w ~8~}'Cl~v~RX_2/տr/k6z kO>gcxz5j:KSs|C_XxlVms hY8"ܶ 6AQ {8&CAR/3ȝwΖvz?ދx™xg8c`:4&cM7,.zo`"J]x,A#r$h'ϰqÆm[x䖷qg͆ofzC$)РޞcK6 ܳ {j<[nYzRO/2pٗ/sKjԡƭ**R 4QOD0VC×M\ETȹ&IA%AR $$MdEE3L!%]%i,IKp88K2 b*!&,1yMbYQ 707?`曯{eۜ=wn?~>!~/r+%%OkFvEz+HbJ,vcoa1?5RER4UBVC( $IBH+ rD%HIĞrE'B>o*ͺDCvHg :qQ-PTԖ[D\,S!TŷTiu\%$!I2b$ ry4U%B8Au$dMVc6P5!i5 YCNf5H@K%[m^{e^yY*v&fgQ q( eHdYFx$ K$"eiQxq' 1ix$0 )vĢϺ ɗ{zMP[L~|)~pϚ-^3ðj̷3/.2 }iz# t$B/@-P%jKYMka6zĶ[/U$KxgO{̮ Zޠ~Z4'*tx m" <;+ hC97rٗ;2K%*9 <_{eFx7yh{K>3˦kw"%!92o ]wn;vqӘ*P4sDL# ~ꯨV$(LL>A d'gizf$銏$F5 J"HA@q>lBt4!壏~z|ϞkЍK&KK瘯*<7Rcd.Mh" K~}"@Yw܍nX,/5p;"4E€8! R#GFHXa*$ai3j, &>rQ j& YQ:6YVk_N!J7Z[{|*3Kഃ4#ki,2XC, (97XZ݅U[n@^ŝ#E##B/cAG|+ fY mcہ8Uopy]5]³/c&.$q(9\>"4*("H"+q$`:Q -n|;pB0:;<_d91xfVp |?=]]tZ=EDQ0 rny(f|٧! pC\OwZ4tb(J'NIw88̹P{y#I`tx5jڲυKUj3gǘZtP~S.8=Ì?hܲ^7ec_=C$,$NFް8 =YBm#$>9+ l-(!HD\2n.]|0U0R,GaFIH,cGYMJ, a&G"mţ [{}%/axEfȧ" y(_ z6n3#Y,^|wl=81z+Ts# [zRFId߯8I5C+d "DQB` R(n"+2wJ*d#Аsi&~R4-je,Efw1 q?]CβkP㲁RH+8UV82,g["+WWD)kXT b(GZGST ]ڝQѨMM# j!'!G cYe$ \Ѓ$"#8ALDV$\׽", \3Gc0AuA:Y4BAUױUVΨX?_ \#~p0՚$*-$J)C3rtI51@ѱ]`q4 =uUR]3>FzW|ha)R%N,+/d0Iq! D A"b|!hwuo[ C5M4E'ctd(Mmfui >4ä69MGݹ03=CҪϻ?yyo_9s/W}|?t4޾׍>P9_c۷<ȗ~r+&y_}'>k<-[=&_g^zM&J:z2a 6ͷ݆BGqt3˻܅4)7y'[`AYzr?ٳ?³9!|u[˿gqr_:I7m7Fpڴ:֯bÆ>%kl`;3B*iU ]e/^d뵛YwGx1FW]"-ؿ-_$<{;t'*:ͳ'I8~`sb9uT䷱9ڊEV6)u?1Pؔj=ƎGmt'đ2=Xd(<ΞtPwh"S'dkɓtk},D!f`F_Ag.@TeieBkp$ Yy6]ٔ$JV@#"Q#ٹ[I6]E]?dVղ/;Y'Ouq=ĜIa6L+OZsq,[]T=$z]BÈ$QRI'pWPNDӘ(@SB%ꠥ'5|ط3z*D*bX=HyGX5U놸]w(p0 {in*P\ضg'Ab֭lذfIDlٲ -nӶYj$]7%U1\i:.7b9S\GA>Ѧ n֬^COw/8_\b߾s} koS0"ib˔vHEN$ t I7Hi۸viaF#IJiYcDwHGנ Ȧٸ/ 9N?FN/;N䶨-  CPqiO>$3ǎ~v({&+(L]IҔX ѭ2;u{n:D9"Dkyu3;wcvveV8m;D~@BnXH(FΚFsOKSrz%T=[XV ("E-0 $;2ah&3x+Ŀ|yzl3,M7Ҍi~_vM usɓ_W?@ĖIʨEW !4EWsn`ZR:KB&8vǦѬ. 4EFȂА Yg4EJ9+:bL vn(p(sc0rnenTv/PPt\Xs;NčcADW|LyJ%|ϧn##ۄ$a(r Db"R(+m3g!*`t(aw=W6a඗tj$˴urR1"pĔ@bO|F8~ BZ H4CFDÀm70R5$E2ܬ[} 2&J4󎭄bV*I(IȐMS1MMqmB/@HBǧSk" Yn^9(q]|'\AW2BrYzde"g F$%L|D4#ImG$AHR8Fc(EUT LKKn]UÄ$LD({ HUY <$ ,tΕ#IV2yt ||? L$?Zct,/܎MgyfznkSXLA$daH0ij2Rq`IS0rfޠ2"!k*ס=7O$r,N1?;C b6rBzDqhAXv:O*fybdY4 dE$"Arq̑7߀A$KcT74u[n$ii<]AzAyt i-)&X\B5JV>~f? 87;&?w?@wG_#4^;х3˼kfyz;>^C̹%&ΎQ+z5U^.6슋 G''png^D,ExU;7,z^}9?qr ϔ*o~=R{)ꓳX]}Mk_JW[ڷA(D U|lSwZ^kamg+<| paj #J\Ŷ \eHC:ܸg=My.M˯3X^%C!\}(Dk;Y&u Eq︆N^y`@ p bȑY:Og]b O0.//pmZ6AQ;6_ [o[sbps/U/xs?~w~!~Th1ܾ-n9YQJeQĕIgP@QY!(JOe~IH,YW $3 H$3Q&Y&gF&D?p7yo"}=^InBJ#y;Tq oDȅ sc͈ޛ*fJ}~"q"ӱ=VMSQ ?2bjʁ#KPow4s鴛aWҐ$tIkz C;ajZU?8P0e$1836jO]rq6$&yf&'-GgرK_ak.G'`Jde6c3>6eشy2a2v4aZ94 2ifEͰe $]y( ma;m8K|ndAfa N#gY=ȚԫXDW(*MR|" ǖ&aH+ 4W|YKd87QD4"N|tSÿz N&u\'GH/vh1w`3wi/~s"GU+V躝9T)uҾ`#[V],L^W?0]L,QϠ l,JDqP%%+%'J$:I#LMKFYP$ E1ȕU 7_iB!MHRỴ*"p,NOƙڂs=Cgb 7UW_+/Gt6g0}qM .\!%CdUG &cZn#2"9H"R6nYU,|2WJE:BEQZ<$IPePϼ(!bj`sD:mI@?NHUR( %:=j, T:.I P%r}DG*L,&Jxnmwv躁z2,ĊJwvMs NVUU|nш l(x"eq:$["]h^\9^ ~(;˒` M,o;~{8y_~LݝEݒ,ɲd˶,q$8zB1^%ْeծN3qFy}xu $|HJa»_$( q;GS8DqNOBOi6 ifIFbšFE3cۄqʋ~i2i躎e%ÈÈ;$ VSϱ$M9:Vuq{ocpM\#gOuԛqs\rt_YwFt;%(b^AORD>/ĖӪ#1zDBfm1#x-~6׮kcXChrMW14pTȢ׆?SFT$<;Kt iI2ح&#+2T1~$ve[F:;LצM3'JBCH#-4):Cl l|vnoҨ371Nҝx*$~*tx>B:㳓>N8T|{C{%^0v2^9=6J~ѰDO{{IP՘+}~C8&t0_qqVtX:`z׿,sl۾7)|K_]3/},p>j0x>|ukӮ(@,n1ʙi96FPƪ މ_HUz9w[ bz: 2P{?dar9|nbɪ D|޺KY]/γeV._郇Iwʖm+W?\su[Yf<\U[oD*m DyQϐ6dFCaYB5,*:.b(ctIedR1;z)SevfzvQw3%Ýt/[O gO4Β IDAT =qe|};ȁcyaCI G9:(Q8n gU1(#i:n"k:&N$QL=QL!0FEi$IĄzXvwБ{/ۺ9H)L]ɩqff& 87r)2 ~1=?E;Gkx^d+w 1:C6# ]2!ʴjAx6Q &tj6R6 DxADdMA҈QU#՞c㖭=:ܟs2J'qvv eR+{6mz};0,a5ۨ0~rZO:,DVnv- $z6,eHץ|Cm$fI<3<_HL.,=HN8wf:Eu6v{Ɇ6qjx Xd 0He2RtMK6JqLXV% ߷H rDefd\ E\\㢫#s>Ɉg~F2MIբXJ˲$% ESdpҔΕװo9}QͽY')-0wvS^<=;Ԣ2KF Tr \4]K8L@D˶14 jI1LESQT%ҲB7Tf(U(v#1 K"iӠR^@Tv USfEyF&k9ڭyf/x90ѩ&lwz BҳDc& 8X6JNJAqm'Da`"f*dUڰ䡲e5i6UG0 o*]^~E{}xx:Z*moYLr =jH-s)7'>uX\Bwgg0s' !> CX`u,~!K2n{u)ÉCUBGE!  w}0 eQq]Up- U =h86r T/Ui"XCGq*K1sL:ާ,vtt Y.F9g횥qQ9aDjbGvEX-Et(_Et ^K^Kr8~LK~0D 7A0!}Qrz>-n6I&aa`)0ƲZȒK"$9jAA"$fEDb8I^CFqL8H.'"  ? $HQBEa1nHz%JucddӠ>{E׈US( c0T\LFEAz4QUfAI\F$<QP8lQJѲ*ld#NQm?NX@"=͆Mirb.u-+/m=U+WU@I3)m[ QS$Ӣڨz.^QVYzoG~]LRɧ:s٢ 5WG1T`D_[තWg>;OrDZ' i߳7޺5KtA<]\k7 m ^x-\TC?c58pkWaY:of 5$0ղ]}Iv:ѳM/M^f_{)mUB@ }6N"/sN2{%CͷI , lA%T=EE5uN "BIObA" (yIz2ؐ,Gs/u=KAY|9RۊKLUl ( 3MN"S[T WFRT2j5@L{dUqANb%z%(|O?3‰I)^Hsd#vI;϶˷%ՔBL^PBD$\Y4,vOfffgvHRHb2kHXJA)dU |LMGZ5d EU/ (h)4"A%Rrq5 uDU% ĪU^uYCLZn#p;'Wpqgߋ|D34c90MYCdDvWvybMDp?8l%bT]#AO G D1!bZ56pUeoڐ@eжUT:WܾYvoߩL4knUv-&.L":#q{>(qB$)vf}AW($#"?)۫Ba"8t 4@@Bґ2&*&JF.6q<(fBbB!& H]KDIBRbbcE (Dd! OIi*sKSwĄa 3!".&(!FtD~߽b71;+t޺a;S}&k{p_0X,kk~a>Eͷza^}+ģoۯHg=q6._ŪgM2Ј{?ˉ'U9Qy/7-w|ƀH@)v,c4?ՃxǹٶRx=|߿sh.m^ӳz8$'8oڱ _?/3?QcLՖe0>^c|Ic֭ZM1q7m#o/ЩnjL`QA|_]t`>Ej5+Ӽ/a??e9< ٹ>Ym\}q en(zZa~ǸYjc6F}2+h@J#g*T??I5 I@T!wQ@+A#$b!&端}/B}ŤE╏<;0@_OŎ"RuZ &1?3M{bO/ SGk+My9J'L7\}%켍&o|~O>dbL3]44U* t A͐J ]hYU2Uj MCWfpZU\yȒD$ (zx*A !k)D-HcUC.\_bŖuz4'+dF\Goᥣ/~ͯ ?|j >(Q.i5-*Ie0SY\E0ZCN MbuUT_/qvet@dʵ } USh,j*a՚}o,1*cfMڻ L'eXsyʳsD]# Hb%@ t Aw  2H) Be*^dΧI>OT*siRfپdIGpdȹ<#Qzg '#Vfnn$/2o:,FMiY͌ro5_?qZ~_}:b9ʱMF R9}϶D)aeK1!Ŏd3`C`5l&"tDt Y48s()v1Q)!h)TEQTks&16|kf@o_q9Z"GV͑cx~ʑ21r3cb;9>g45BCL rm2""n"211CO VLp=yP@VDzDQ$DCbDat@DAB(FUuB-L@D(b;f-E̥,Huh,A[o7>iP&FGx`#8Il% "/1''$!+JY<_^Š,2+HK1i"1/ ʕ зRTň(I0LnD!"$'t]K^"F!"hz0ZL #yȵm]1Mq1"1A DGi+199óOߔ}൝G[ÁM& 7|x#QsE]Cس%|]K<"$0BT4THP7mt$Q  !x>JaH2ASnT)S[>yt"b2qlh8iLN":.a!,c{F03u+8N@HQo&ɵwunOߢa z.%]VUR4s <<:BMGn.P!~U">q&>ĥ;|Yp06]Ba.2Tҵ$犡UM7p|ȋ%[7]ʕoMR\K_=҃,9nP/5.pݕ+9ɰY2:5|FcY'76ӍU_~v?Ae9ғ: $::ih!Q@ƔBaw%d%~QDQa2HD(D,CZZ 1RtH?q%-:SY.?\3HlZVDU\0E )<+2쓴`DQ`޾m3ݚ^ׯֿ˓0DL:@Y'r;pP1tT+3n(eQBjyt6K 9PiˤhM㢓(;-) nNF NFRF m{xcn[owbҵO x=\]6vfZ %Хa\Ty٤k`VfUWlj5i H'Hhy-DIDQd$Q@" BףOqoc\fZGL!Jh^L3 a&fKDDdIQ.^B$+!rU-:2.F>VEL:ݎ˘ f=!ʬZ3=7PIpbb;d_2T\KDY,*N #yk@>n:HHi{>ՅNsgwW`px/ۿ{NY3ubd}rqM ~NٹQ\!xRM|/"@F!0D)#"CZ(#Lc..jl BJ:rJ{KV-gHk:8®5XO>>6_$o?!_{ mj'1i>v@ 5;P9u$VFi"XFq} t 1ӘL٧ک1^>Md98:RJ%pl* ˖u$!bhRKm"*sy)$C:-koccHt0~">bZL,ҵlNwJ&r M+v09D9gy3wVIbS@ $n!y3t,CYI ubǩgo8zy|wd͛ۋb9i=[L_yqR]a3\1dO?$WgOSY *:K'OwEIc|/P%ETJQG^RdY-\=9eH:9| 人PWxVդ>5l ;.&""ЦUmOgPAHR!!DZv UQZ6Q0 ~ IDATu@B0(YHHؒ囜9ac[:{hMF5RDDG)#" JϏv(!ڰmUSAhVkض;5NCUeTE#E$T@!\a+ǎg Vn\ʹ]'DB౹})/@fYq3L@;u̮< *vI&jD:8aa{E"UjM]k4U"!2nK2'B"Yr"nUL7GTZ% QGCjv?qE6%W6K#t.g8f`%<7)k\3T ,k{,,2O<Ve1/̌DOSy/e\*4r_Nqht>mLZ,{Jٳ-֐g"~qbCW}/#u9=sOp{?~5i5[HJx|,ESve\+YC9BJ]'B.E;4d!""&!i A b>]"!!" M|ڋ]4*]=W4?I!~BZv{ ]LLNifrCb@4&gύr0-O%Hj!Ki.]7݀K3::A:XV QUQ@R19:;4ChDKXC&bTFOZQS O`,v"-/j&!(y58 Jn0nY߿gv~ קkX_9s(f,`e8pzoMɘEJHNOi"Z0LxYQ7 D"MWQ^%!aCiluWT&Xvr j]"c?7293MñZ>==$J6! Չ1Twr(@VMRԫ{?9z &MB/l06]&s \wtvv319G{?\B $h$)-gUS(-#d5Iӳ#_) BCWTbgnjo!:!" bdÐ}{s<(:6]ȚI>I_\Iec#3,,D;{\QU&ӳ4[<$/]G7zB"\!x9Zyux]waML1PqĐsDT (qDqEXCD+I;"mJ I1s 2v**vFVU2;vA]oaw./-e6r5v ￙ʉ=8͕K?JGIwM+~֣xi!dU,n`fay gbz6mjaL}4d璭~;06 d.Ύ` LzgIk+8|(B,g2[b|/Ջ)DlW /k;v/~aV>?5Ns(.#9g82s3Q|ic;j7|mܳN~}d7|~rՃt}h]}n2iZ0ˬ|Cfknϲ$e0;ie 9/~33}޿gEbcr%Oc5|얛j=w˯ځT8i\.>v{Yw|u7:%f7eߏB4P5VajzC>ロ:G*~''yp ,XAճlܵ^y7^]̶5,(SK1Ss& lf1uхAf ֐CQ$ 5_U$$D@ @W5K:Z*j&WkPHeI3lx)Y o݌C jMmE(&_,`d \I@}frO=.g~DT+ĩضCauP4j" SA$C8O*cPH /YF T5$IЅ' Ă >o#5DID4l/$24F~Oad {6t_x^5.2;>|brSAZjh40sl4M0eD1Hl΢cHNbDEQb\O7w?} "t]f'' bjlGBUAE̱,+bb  I&H<7 l(1!hOj6DQDHHmlY<{/̣<;Ł3kyiNNΒ/v -סZ󳳴;WkPW"Pnwsse܅904DY QȤ3 tB*Gf5 |wmqYVi2:De=;snJWK%ۘnl"! d$L@7[-[f{9^vyf̋s^%iIK_~s'H2@(MADdD| 0(.P"rKƶ\$Q!>Պ: 5!JI@um|lj[2O=+&Ƨlp:SYA QVcȪc[xwٯ\fzGsTG(7&2ǞWտva`iJ]"tJZ貄"GM0Z' AJ$Q 3X2J.#|M,FJ&B *u^ʭ+M#BzC|Dҙ&Q0GL_7B1?58J_?[N]sjbM̍wg7}l۵ *'ƩGuLMN1KX\!܂J6ZYWG?J[O㳳KukA6<§s 퉀퀅z| ص܋FAq4 <XɅ ضU02I@VB|w $Av wUuE&2 YDlCޅcȲD*@WU%V$L!"ӓ㈾ݨ%Μ~u+tea7X~z"x@\"X~N#ZCBt&4d2Imn$S@ ,{>Dks Pn H*|1$KZbYK#7ը8Nx4*c,, lYď:/Ƣ Q=C%?$m]} %AkM*4*K"C#3$PQ%. jDžx21?7,EDx"}DhEDxJ+8~h W *' D֮+wη8\>ԓžj#z(v4751;5E9'Z ڛZ<R:(aD|`;ncHRqm+D;!1m08Bnv "L L HRniD)(=hYV\~+" baX^8E$QMu3,KDXJ|d 4$m"-"琼f'-j;B]g/ Քb8;BX}D5rK4ې%$DţRq({0Ut]u]F\-<YEqBYTQ }$Qdi), Ԫ%G6rt.  K!- \otNTej U@FAhx !ʡҶd)Ie A/1-iJ0"nTѬrՕ|\j=LCQZI2,Q qRm_v<\ mی^$7:I$ٰ4Xͮobq4ϣ9b*z}SXZ57Pp 2Cc.|VZ-[HqIĖ4%aZWӶ:Ρ//|ӿzQg%/RӴM,.-оg- Q]W6#7'*QN8˅I:WjF> Yr_8 _;Dd >3}߾5V ~S8Ę)R@Scњi/b7L5j&-:&RD_@"a^D)6DPU qruM$Nž"Z8X.|bxFT2E15,c~~bײIS F@J4[)!$Hmxlô|^dUEDjH2ԋ/'ȸ+DEԈFTDSKg}Tp|!pk$ZZ Dz$E׳׫PYķmFS5EŶ-TEa]e oP ym ;*$xaݮLc͏)^E(Uʅ<9 YBjmbpVȪGp<YPT"MAQPelZ>,YҙVbuc +(",e'I˝$1$QΗx$9 * (UCŶȢΫG_E6[Q|b~ CW}^.,3| R%{nrrahCi]A6W`no9wo<3+AӠ9~޾ v\3hXg'a&ScU|m]~ _og~k&8> J#]|{#OÿC/#Sbs Wg+|UbCX\F0z[vloFư.g;9"J"Aq Ob&14RKt r󮷳krĶ:7ݰk 3xQutޞ6Z)cnjW@K5|)Jݑy*-+(5"(SDA&TıTUöl\#%PLRYяcP(Si$#+a>ыjZd M} 3ڂiBL*RϠe&//vm_"Ԫ3[5*tD0AU!XVr5Mfd]CҲWtUAU5\/y%PDYQ%T\vtbI 橎ejl_a@5}ڂ-"2"S^f5xhanS IDATʲ pqd7% Qe`Z&$.cET"Q*u.^"H የD#1U|YIIo_bI x*٠ZS10LXB:Z5y6H"B2dx"CTLΪիF2qmzqYXu q,hX(ۉ[[ii&=zL4p]FA8 ?`wվ443;51$UF?u\:X%tIFd$D4IFA'\AA%45$'~z6Npz" B%ek(ep"#(:kO*b- i*r,lY I8n2qwfEO,ax[ !Dhd|f5BLWAp2z_+MVQPz1Ο! ̢<" KKFˡeiI]<b*; E7@lE^/'UoӶfDzG+n'7@_ 0}Qr  k^@5` w!1Qe.[⎫o_?E^${.vY4/_?0WHql } >Ɗ-j*u ۳ w-l_Sq_Ժ lyul_[| })ϼD͌8ˁA'ΞpϪ}yG?ϱi6J傤2gcuB>"xF(O?LkUSgX&w>J`{?={Ao?O)c]^t( ,_v9rE_vK|3H.rU?w.4+7`W Sct#agL HhH|y&$DQa0LӨ.ACedIA|_gB xJx$)k&OI%b5k՛wQ7Hf2 ]"rprL6H"!^R(LMiQ@frr(찈h|>OTDY% +QM!|f9YDTb$H&U+Tr9"8d۰Qhx;/JmYNxHϱC(!ad Q@C|)8ײGך>U ;yK PcQ4Mô,t]ȍ4 "(y.gQw,$]́>Pdę˝!MJiE6oLWO$0tvۍeh|&Ak]riv͟mOLHD4n+ג@è38~HH2S)18C`$gN,dt|Hi48Uj+0q<6^Q=B8䐈,ḄdPjHe`Y(2 ~@q 5zXc!,< |쪏Og7u/ꥣ)#gM۶ ~lFd، 䗲TjedI³\,#SDA AHoql5k:t/Pu鹸4)V-I]2˲CA¨z>e-:A"p QVD HUA$lqŸ4Q sAUQ(>&j"gϜѳJϮҜLЕHеz U=ub|UR'.EFQT*P-M[4EK/?4 ӋL^ 'JԍbvVVGBX~=wEJzxw/8xmٵo' +"W]^ب2Жs`5]}4Ty?Nk7l6uL|L\aוе== M#gZ[In5O~kZϖW#RY,S}j;3DUID-D[,/> =<ǟ~{lC">E&" ( LӤaV02kѓٸzX۬b*S(D1b SZ.H""k֠3)k<ƅ ڳs?_HJ>.r8N^j+/?l5MõPJدx aTe՟J4MCVD{&gNt& {$7ok_QIkEbu1:H$\l;""JnD|FYQ*x($\ih4Hd"I2@DLuMUʫDEظu=ͭ)~ihL,iLON251EX'zi.e/m%Eڈ:k?k>bMAOT]"ABga\x#8Iɰp_Dy""+",kA>rz^z D7@W5ƇE"**|\Am $ZڐcV`cd9T(bH%gaaφRض˅3p fZ#qF"T^ T'Cy0ZܯEOK_G^>s1$Sosv<}SCDT.̨ȺzLVG+py_!)ؙ^΍.Qm+Y Й릶x7 ;2Tg_:>E[['ժԚ ֌Q//+J ]/DynE +ҲgG@Qddyh;G75!b KM=i_Wn{:<'ȟH~J_70ı?2~ 탼>;SK1wUYOş̱3G)Me ^eY戮y&1γkn|ѵu#Eg'? )*i_??=9L]SD2$fuQm~R 2Ͻzw<Յ,@[KO?m;޿ij<)  FSg&q䅣]~;]Ei35]Oc lG?M}b|kӻ~/ ˝fݭ{9:7kKtǏ!:ƭ{7@ɊЕ>y39_zW»wCƔl7I'"Ns?9DwiK*p{r lGxiL ͱT?8zy\.Ww3Tuzbmj!W܅S\܌kC!:Xvd%ە tD",naՊ-ra__bƄ2%A38%D{`; d9n9Xf $M%UlBǐgYCze"Kiߧdx gM&~=x~4ھd ILObd7%X YWTZ;ϏcC\9MSSbaVj,J2cQ 4E\Nŏ҆(4 YB&T@UlL'xA^BPk brHss+XZaFimuD]Q"N O >C]/wгG59}k|ߢ97Nҙh %PˤAh4,,[ˋ8EDDAv\2_NNLВIqc|sB]670czz0J%M$EB6iafyxI$IX>J!ɬ y)IfۆUzo3|zo;n<XKTb/ПƊTFAMbUZZ 2 \e \gzlD2ID)*,,,ߗp=V\rXDr")fQ@Pq @IQF&bq$AZ,:TEAE\AdXA D $/dĆgh+`xIr󋘕I= Kvf\%Kпo'jK@9As'rSDg I pM `- *BZFIx dtdL74HI )XȤZlh  ø<NJD"hFeB,4V41!KqC(:gfN&NR0>MP|*|x>RL] K$8'kx[L<R؛n@-_"iڰ:VQ1<5P4ʔ2=$Z{(4jb+ hmO5ܜX-u`k*C#CT\o淼>s SI֐޽ڌ==Iљ擟35JHSNLn" }pڤIS['vNk<?x?GS".صW )naS}63.{;vy#vZJNk_ 1FI41:7AwV_2|m5ڹ!LO|{5N?̾yFFx&~pۉaU5޺8X#H^<^S|5~]+yryч48v]s߆$k 8 IDAT215՛صv3{o:s$qA:[[@euܼf5}-[%>uܹ{#|sÏyucG^h:sq|r &<{|X G ~FO|zf6&yz-;0K&lp~J-+'֫i۽u~{ouy|ܱ3< 4|.^86ƙSlbut&(;w?wH|?"˹W^~/soeWA}||oݚRCRG2!APE}Vm۹V۶EEd02'U֝3SoZjԹuO=g<|t$B=:3K\ !#`YN`IV,{ ibFt%j$'(T.h!ɠ^Bc|dj.! g*ML\EUUBiR+f󴵵qyb|qwZ<$ңC*tyXHJ@T jY є$?>khl:rYr%FU,_SJWu2Y<ƒ.Ȱ]4¬ & s-\R.Q%R(  ˸>h//""kcu8FυBC&'t`E9T 5k) $;6x-[0<1B`= dx{/< iQ/a,-FEB,YĎ'h^-Qzi1{+)l_@w&9Vk`ƙy#)*b )n4u_r$E'Q)e=p%h3ydE#[(EssQlӠz(Ʊ=J, Ep]QFeBU0j5PUWt*~a,jfK<ݬ"Gw@߼L=2W &r*r-G| +Hurb -[5zȉ ;0m,v >M<"sy8q`2jh?WNU޽qT'3=R&Q¶&L1-e{&<.n||[Fd,[d\p|2/~sN!Zo~^F4S4Zl:Z$S/ R7kw*xՍ|_MV&1MLsO4_ϡGS2ܱ,j8Ukur6\/? |n:_7^X]&$'pNLapT'xhJw~%u5,dgvxdJ%2oY?~†p?|g~'D-8Ag* 8~JdΜbݢ6nl\yPy)â^OyD y4q;صyjU}xq$ՃpeLOfkD.cRƢ[:n,0Zi4Ln])YKVg^`||1pOa55u0sV_c`]L mVroA;Uء'* _2|mm|od7~aϘC7񣟿>u0Tt!QC[!,)?LJڠ4)#8yL]nm ]Q # HRXR< I8sK -'sr$18ɲ}p'>Lf%2 n v=_"ͅv֤~ͷHtͣ8vLuƊ>F¤Ri$blӶp|$YRjvDZ @QrLM ,D1y2x\~#C'85;'hu$˲prNҰHbBj >:@5|2bppkPĮVDjRqJ ^RzvM7]IFӽ#^utRZA}PDzt<$d5H24j${i( F{su|EH?FYVp\'){-nbK{XKL?4 ("Sijup^`$UEFuj# 4uv`)]KEc(2Y \y(}ۯӶ~"n8Z˷pMlede._8;mjf\}[Hhj%oeѢV֟{)D+^E""c1iB?ΫΧv*k3d1f*P*8n*dž&2۵'vFt:r۹;wl,93Y\y~}mMeQ>8*C^Ȱv*NN=0@Y E$Z0%u9}V^4\w$ŷ@ò=wz)F7XdI ~j 4 7h~C(cѲ$g{˂@eHRI>?6#Ps3-paxl]cG k6xDÌODzj6gyUrpb C3纷^O;vj!wN712|ə,DBHhH0eh؁(g<4$I?xX7} x{Oϳdf #s#,_^Ͳp",4Q |'7ʭ$(R4%n#x_~"brHG4M}H&F *edY EpmIR->G4Lzݠ׵hnn/aA$1 tTTM@}?tWJXӐ /B6X],œp9,!(2JXn"ѹqIeZrYpI4&0&v"kQIz:||>CݨHS z0Eqͥ+Hz7E8݀" 3|uDQqp-EUQFfdxAH8(*Q+șg΂8p ;?W,[wM} 2% Q%rh4LSS3X*R8/ XK4NAé+OPXGb8JDQJQ3(c fNRfXDP,@=J*Hp$A)_)ٌm9DBR 3<;Kj`kS9B(DQH:' (UQоc2<ױ_B%\LzDhh4мh9F'V|^| r2ӤM$qJ@MVHD #,*sg`|=|ӼvڰMR8 cCcqYIL4+baʹBUsM|Z-cClijngü5%Waxe/7#[:B.fǯԿ^=2U,)7~q_P&%u9~8$~:^>q~3??̯p Jgd`LfHBj#пx֬ ^=!&)xl"ݖfC1b4\ӗYx5<*5Z]BU=R*믻bgCUdPe骵B\;_$]i-2G3L$EB>wrZcCwEQ+Q My2${Xw5c5Ǧ"/fJufl.Z90L3>Zzs\ˏ rl\"^Jʡce $_|t#k3Vf3gc8Ԙe)]1@e^ӯƳvqū90ĞC5+'99:@( 8#Hj(IAgdfͳSS}FSeFgL$7U] ,HO}/|ns.2#ֆm4[e :h84 $E!  ᇢ(K/db2 ̪F\C5eX,FVEDin93ɜ@T\ <=t(0jV$ҨשHa2A2LDlDaer} 0==%7,6-K#/Z|_glX35J·Ɇ[8SLX Oqd_ɍ7_r!W6!$l/uF!qCW;y,man[A3-゙BYɳпMy/V"mR?$'K<7}̎WP.pKa ?Gy_wUsGa~hZE,bY,̔ٿ`=[-#aq?y)y3lik6Įml]M7t8K/ϰ2֎UiGgs'>y'[y26G^٭I g92xD '05"0!#'9n@s]<szA "(~] ʨ Q4l>˸u/ߊ/lW4w2"_U&X}.uK X5N)\`.U<_ͩSq5طݯbthחgՀw0Q\k0==:zO5Unxm8/aU DD7'h}\g֬K? MGG=x$ DcIǣj94yڋ/?~GXؒ`ztd ͝2y:[=xTSrݢ|z{(Tb IpKH;/G igQM: 089D B.lAB!2dN,q/uJ0|ET.E%"HP(m43${ 9X(dyb9<M!Y||Ŷ\N(*"c *hѨ2e"i~5 p85Wv>]7K { G7vRij j2'y O\avj: ՆaēqN"%3=(tutU%r RPs޲<|}{yI_C>١&}=Fc$b:d(M-IN75b5S5FXrh˝˯eȷ;7qQ f^?ď?؞W.ٍo!nڮK&cIJ/\_UѢ\(wj]Ͼ(lݴٟn0?²%*SmgI|lKü/QkQ7!kU}#yk:.| l0Ρu6q֪;l$֡\m6u>gaAsǦW W zl?>'bfj" %t`keYHD2Ĩ74 v@FeP0Tb.=\ ΂yQpc (Dmv~Hn! wض́u/O=W/},jD^bj0PBJ`p9'R@GfLץp}Z::IQ)\=wnr{e;U&*2 Aȗe8Xm4G>~̖vM)WEpLL(W+,[|۬YyLڋk:dg l&O4EEbz<,FFB"&R()s4tR(0MիWK&q\::: (m; 1;7 +A'3i+YEz WYu,@]lD<QDDXddxs(IĢ)T]#LEEQpuT2ȲBtH&ض(Ju 'oUG@9e`n< ӻ/HApq Dg3JWR& \w'bzzc3˼SeB)AQds8^;) ] #C>衈 "6!M %Uű\$Aƶu] V=Gtʘvâ\,6pH4F-Sq<P$yt-#3viY~FRM\xEET>>ї^dv|4bilWxAE"O|39Efo%&Ѣ'L6oX񱣐UPeM2c(, _A r%V(* >,"~`r]QETT$ECq,]DGP$jS9Lɧ)& w(Uc8Vcᢩ gC X۵EFJE9ofZ:.9`Hug4b E8QLa|A@KB$5xfk[C $ШVp, 2CgѠK cg ,h+/?nzn<:_dye|穇yWpbzw[;{+~1{2ֶ64=!ϵIve3DZԓdNCzqCО 90,{꼰'sҫ#~ uT*;DZSCȪL[{ ?'?x'GE]D#38Bpho!ɢĢ,^z+FNa]y EV 1[u+_oeF:!\+sB|~A.zx-al+g]u9>J"=ll ba4ā(t?ӹu%;rwٺv,N5 >K^Ec'8fDq8VE Yѱ,3!jnh2BOo&=+RqtQ9pz_3t(,^{6OL! iH;4Mo};'|XHpy=3ӿ.T[803H x["[o4>J ݽ&4>?ܓ㶍K鎶o}?,KC=t /3obQ%!9t\eepusxgMc9/>BUbWO}1s ]M/nm'ή_߼Rg3nٺ~$Ζ9wZc4>*{y]}>?ycQ8Con]˥g//aIfM.^C#:6Iwg_`L3OkXg-˂^ZCED\q,|G5ĚeBc~UEKW`sV* 0r(6>x?:$Gb<+ZZ;iN$huHa?=ca4ⴤ)a)@TEj"zQo3_;nmgdr\@C䧧Кbd&GgltlfPX˲D**222 XF\abbL&C(FL47p.:52Ȓ Y(^PK$oUE]QUeT*Eт(Qb68iX蚆)9HMәDl T?v5B|C0]7O-yB`` . &cb+WX63Sw =T)̜"h6Dt$d+ŋsrtP(L\]\l :o3+-؍:mH Bp-o&IpM hnkCVUꖁ' J(Es[+rX8k-dDݣ(mb ?*3w|9dW lTd_GSS WQjKQ ߩpђfq"Cl2uŧ\/ 2HlFMGۃE$)@X{,+bg;$ {8 *r86(GuBے¯?H5js8]-vwRpq%_(z4'jg夓Q9RSSbI :vD<ꔲYdE/_(QCs=>r3_2Ky=g)+HpQQq}qeU"k#Eul$E|L&n7$YlQ4_PM ,X&F;Ahm c&\rC{ /K01ƪ8 .F>EѨx"1=9!I8L@0#axlJ@y(5xu_4Lv)HCW$~=I]7sav`ATvEeIV,rwo\b'qN\دcݖز%N);  @Db{>~{qns|<9GY۹3fr5qFbKͽDrDP CH}q?Myʙ).od[K;_{(%tbҦFA4:,_}_PQ=g&9ٗζ#&{?Zÿ|?u/sQC'}R}+jU̩Yn7c[H q={D#u]|8oÃCxA(ݼ}+~ю4 8jDYiK2A=FS{ s38_sSsH͖\E[cZsH<O;T5#J= 7_8a~$g G|[n`&^H|޶Fqf̍E9v/Ou\ic';y8wO}WMgim^}bVѷSvN2(VT\35kMܴs xOt519m=<~h^xyS3u>jYw5 ?>;C dԍ |S7J)(|e]'ε[/+pŚ>y۬cO7};n)2+<Yw<ӬV);u붲-G" >.14]6,jx^(g2IYAE"JXȈey(Xt`&J6py؋H2fFX"D40|ᏰKyK4ౘ{AHETR*W EaXQNsg8R'I"A M ,Fl_~CRHO"HC3fuuQ*dȘ.bD5@URoqF5Rp<YVo`bjx"!_ˮ" Щ&MOcX2zk L&Rz~{ikjgnn-*p-\sUzq$׼M<|W~fDcO/Moc|;Aox_ИiNMdt'SGmU+(@ I(5ԐDѴ/`VMED0D _Tam"a(.VW i#u& (NyYdBD"UOR&d#n8ADXDPNa.G$Ԉ(ɼ7Ll=^=ts y)tE4+/o%P!kyRtL,#2T PVu0&Wm=kFM;KfZ70 @V &Ց|QHt$|ۤV)a/db:EbMdRR@~&hjU9?!S5o_= ϾNb4C#s|ijU6Ptrkg8uo}r_ 8'f&O׎Pmq;;YöjC967b&.U=O]DbeF!$\t0Rk<8OdQdo6+FT^ٵq3/3;4yͷR䷿  ֮PX| IDATfջ6sU{<ƭw-7̇?qobHz|U}[_\˩X=$FӇNšT 58D'=l͠5rd$b*dl66-_q9t(GBmLGZ.^{-~!R$AuE7 _7QM5>LbD4c-",(m 5tmkaſ?K߅1O(?Ŷ+/7#>?ݧNP^qrɲjZ#~2295'X1fm%sv(zw=j׮S<|̚Ȯf?7Wm/ɞq th]R=-M h4DۡWc󮾾\@,AEZ~Ɖbh5= Q$Q BZ\&kR.5"JHv?hlFMj}+B-`"ɿz'gy瘙aT qZD )N-XcGS,maʳ풙{j$ 76s/H66K I0%D544j4FZX'hoauk'$?~x?}̔ r QGSj (,܀0oG S`;&xA(,<ö]|FEtu5\_O:/a֭Z [Jjc/f2,r=y؎)$4"P I貂"yl\7\q#^t1]?7ma긥N3E&,|6Ϛ80FƘMsS b#HXm+.z*={h۸+W!L""S)"D(O Y‡ FZ9(D1oDI S-U eLyrh!,dEYb8XܴkZW#Bd`J弩_UU =ګ'K[Qq/8>8> &?j7'ziO0=I5rhvǗ"q\6r, _=ƧP*cA$H0&#ղBhR.+h1A4_pmϴQ*SeACd]cY*2.mԺYDU%kTfhk]g _W/_L [{WNp+?:U"uCG'ف!&yۛ7@$Ӧξ ~ijsx =,RO|**{N01-p)o +.ėǬ龜IJnan${NLO T t ֧1q\ffff腈G0g!2vLCFDQ/LԅqT#KŢTqqLPp&"qb7a,Z24E]Q% 4mU9SʰtѳClڴh[? oU#0J*\ȬaaY6{"8 *fD#-V%+ZG_ũ!yg(L>3:3 *Zs]VSS-'^fŝtZE O8 L`%hk`OO6: 2j4F9n0 $7Ή'`4nױ'QR|W6c핻7O<2W \TSvnMɶ/a*35ۯWM\\[~e>OoujyY.ϡk+f=+IJSJ/kO0LnVX;>]ࡧ>WFTky>r$Wo).j~O+QEw09&+N+I40WcdžMtIfr4m~ Nq'X 3[s=؞>dk5,ǡ.݂hT*%]%H) mk#d4O:5 r1=Yoř%VI+ mᗰ" 3'?3Ϸ5714:ʩ3#9:,5M| s37wO:u1]g/ˇV=4-N>(SJ|X4:C>s⹋ !a(K>( O xGx;ߍ+JܴEQ} o㧎11yNgljPax,(B ۰Pq<%˱s:rٙim܀LU+ɗ*c[.V$D|/_}KuL1jͅ$KH,!Fq|;4ߺJ2"u=LFX92e#.mTpduUqlӄEb]"?S~1燲 @B 3$Il돌Kl Aa"](8*--M5A1~Țd!5X-⦨j(8ц:t =]O.k 8OhT5ZejaDt-&{ء3KDg+\T&/MXwo=9VmYs$['(l^W?_; H)7"ԯࢭ;hN727Yj#'C<,;|~^%r仨z AV,õT Đ($ArTŬUr44bU`d,N&uuEl#/dJ1CVtfDv|"s J ؅<__$F,21=AV"kWqvv=;oC'Cӎs5!?'8uo⅓nb:v#=tvwC(Q&-t lټn%7"S/Dj22?R.ߏc.EVخD%ZKKyS\NK:18;:+?H+1Ow._:x-2TE>O?z'!ݲ~.jcS'jJ0bڤVof99TMg0ժGsK'b|DD5.o!뿡T "!n( xd;xmNS)~;WrKO❜=C}C+{DY׉Y-:FǙ'EYP5+W075L63.KaT (i=TL1WR!ֳ\\ eqE⹋`òv >l ؜8MV%s>$j JR1 4Mȋ#q{k0Dz5GִhW71Z |p lQ%dt#S$&׬gǞ+1 (TTRHDT3|% ϶QdBjL>R1=!|Dc(U|kCmX؆g9ʘ ~FT*RmO(֮daٲcy`JeIKS+1=A9A!_ݿ~aϺ_~#^|%NFo̜gp F^8Lan^}C60&';)'1tt'շL|;qjدfYVn-o-[Wn992èUРw77Op*Ng.g~>1.eW\rU,I%|FIȹ>:`4x"uDcs;~fxYBѡ3([0ge%r%=o9pv#^Co-Óstjif .⭰N9W=+TeCQӲ|zK=Qif&d +^K^'l0 ?%ZqKeS>n1{E,<;P$k8zvL{\ahl!E&a ѡ/0{x|߹OrqocCCln涿 ǟG}1Y[bصf+Jg#B@rs X%D]e~>b EI&K!"!1j@ms] ͋5G0Q-c5| I$+J/󨗐GKvEV0OcE^=E}k7瑌g}W2?7AO}cɚM[D$>Gf\}Ӄ9rA"i U( 2 t]LFVuF8ՌFi*5"H IpmjqVW+IǞ5D lǦum9;@%XFp\4ly7%[ׯ㾇G4U%%l$,Zto>r/9X,;ܪyk_:seaYV]5pm<?UөevPu 6+Yr~2p$AzZzfHqyFǨ+TUyjiCAj*3==54t2=Eֱ,#P'!Ka&aqbf&AHb䇾#D1D9V..n,l   J;/3΍ R1߳g&O1AưAi],S[&"(XnD# KD- *TdD!QK ^`zNFȈ%- %B"$u/jh" Mz#B\x^ήz>krE X-81x's,s84QYcv|:ZM,S4-}bz|cHiĂP&b1zX?:9¾cNb nX2 L> ,T qFO#*JjBDc:L&욁je߰U*9eugyL2jR#+ђ+8}l#87ej҆HE>y$IN ejұv5U' hogcL8e"&rZVfS,6`%hlafRc2/}lXT"+ӏMwI*0~v5vqy5 %|gٓS&oborR'ZXۺ&`f>;84 Fr}^u/gvrIJ=,'ѧ-*5njfaKG cecfJ$]S㇙'TT }l?W]w3+&OOһn%XnP D-Jlާ'FǞ(q9WVn"eyݕwr[96ӜKW~q^Mxg7- tNݚkKsM{Vsrxt7-V:oa:_s2v͗^ھ ?EP]-VrH4Jc2DS b.*aKjah*A@ *E<EE"HBy $J!i2?gg{WZyQn[Yl9all&8&`0ƌ3900Á16 YV$R+UG{ku]}]kUWpn3ݡ* m ?%G $ ||?$|܀|X$i%Qj/o;FEdQ"+2`!,$ j\2LL{p1j \[7J\GFhTʤF<*~I%yZQH%K!30j0$A@4yɘ&+HbPR@Dp)G$dUE5T]C5 dM^Z?Y]j\μ?o 9pV1bTjdL?R@DBB[M,4_JD< YD}|óL,DEB!wپ'[5+$pτQHv&,Mɍh2E%nĘcq~ yA(@\lqQj:t-'N'vlX)"aQR;(N[-kꊴ. Tz(i!* 6Dq=? QT_&lϣ07GTD#j\dC0?I0*E?M9h0s,%{41 ! i< dO]J'JI?UU%IzBeTEYj8K:s)9nLf _oxTB@=Px$G" e6RZŶLEw'q{pWq=A#-3=R9|r$ 2* 1]EF>;=k>3r]CҗTqGH~ZZ UQ#B!* c'0bq&$lV,ӗΒ"͙Y䖅_*3g<]FPP3=Rk E#1N>`4Ӈ98>w?5\;^q1"'bOhWcIVdO1YDI7%M-V%*8aBf hWs QU Rؾ21hK>O#0D ]lfP0a @9A&Gh&8H@Joǩ (Aۏ"\V.Zrrav=<#fI1VI%4&vȥR8F[O'ud&gd%ì7 75:P, ^v ǟZbqn?#BfA3i>VB0^>#xp}z=݀z/}kx zyՉ)NMtkkc\ $xQWp5wFi%il-HH́]%^J*en@ < Fɡuj!R,Rp"2?1շʅ} ۃ$Vb1_TyZפ'G֫#wf@Um,O%V$Z{Kk$#Q($,M $0_ u Cy菏P,fۓϲg%b#->xRJVYf]t-CЈu11ݠO;rTTNj,fdE$Y' 2,cQ/H0U30 c {{? ixj3SnH+ 1O]\9F:ڸ_᪷DG]:{Aέ9w".!b_֌Ff0X*XH;N|aLffv*"T0W\to{ްU*|_VB(,}膊vEb.tPTPE K(nKT!*R@լ41x`45p=\zL,y$CǴ Qu׍xqld6 + 묧C\D9,+"Q  ((i"Ⱥ eIr2ͷBjI*U+f,>[ddJd&(`M,!P$䘆|J"mzYTj@<1x%UʡMoz+֎2>9zJ B2B7 #( ᘑ|1"zkhD=ub"L8O=exEuN f]ʪJ!1FuN ox}V213Qfx5WTAGZhsU%ڙsGoRmUa<ޝeUgow*B'J>غoGHbZEl IDAT%j\L! E@#>k6j<Pf1dU<C4]}RaXg1o߁iI 6+XJI=EЄP/.}f& AoqNM}o|s5M!&GhnI:F (v ST9x@8w|柾ExF(("qJdUưB!֓C@T#hiKx H&ؾo;53Z\FRu$sqd5xDP<"Lr]c[N#$pحJO2YhYd(jW3p @\AWP1mYmYtS9qb\#Mb\|Cglnz( U`!O.J\Ig4M!DmZdj"q 2%k$TFF:a5[8-ϼLWg;ʲrujF“ԩ,\9s:ϖj|涝T&O h3d~Ә-l=-txEs,ǷO5&SuAMS-v&q#A1_2]45&ȴ_\ QUo7^cqO!!V4i' n-`T,?wOH{8k?c4эNQ/UJ6=ɗv3_rl8m9>"(#2й5 SX9N 0YTxk_e[?kcH~x"Qn("zBETkR٩zz+iV즼8E-$O`Wں[}\fŚQbmi9ep]EWeRQ>bēX()W $Osx0@iZuvsPuMVL%0@,UCgFB"D@sT5꠨Hb5ZE:DPc^*Gح裿aM$Ws\\U}F\v`Om0V.eb`;x}ӄ4^+ĮBӓJbP$g[UD'M}0~*AOb wɵ6 Z hD u9]EBߣI"*`3k9&~{^ bC:ӄiS`8D Ⱥki^@ ZHi%-R^("}I4HO'37FZ@c0y4)_ :'O *ݝEp|%$qE%pLdPV$U!2"!ġf.l1LN=m\/v:wlc`ZƷgoM.sSm 1gVʪKֱ+?McDuRAW92qXu ɀؔC5.bthH*̜@޼IoK_yK~`OѮp+"SN2wA4%D@dAATPQOq]'ȪFQ< cRL24rVAe;GH ^-KVЉ8̄ kd[.x>?絇Tx0r3O?"V4[ڡs=  HU\7qGo~s2ٷ0O=l\&. Mϗdb4,֊ttu3}j]ڱBtQQPU]TU–I\Q#$'HDɫ!J]zi$T*M`KyrB?J'Z"ֈFJ5tUFLɜկ'cP q`$q]lc.fm65I.|-$ST %̠IRnZhNآ0hfJQc:B7 q|P5 Pj t=2ͥKxzѓ* "z#X.ImH_Ͼ)\~%JS{q:_u^;77Gs0f8ح1MO it-˶^͏>cFnoĄIn8X@~mTZljF# DrA|N5h[1'*ET 2ll嫹pJN}{a&v.Xҡ< TgN&ցQZ:h4BMxTL%o=Cezg6OQ3*݇HwJ{ G |DwV!Xr `k):V3='.~8:ľ,B$|^&+If15`Ǿ9vvY/ ⚑nzHQy#\5Ts+[5s*{Yw kǶryx'.5Fi[9ƶ/lyLp0S==ۖ"}ygY%a %# e]lviFQb1O@c4PDNI"|IAь !R9v闣IĒId%ɗO kˬ* @$ϧi71*N< a'FW9fc;vejYxLqZ6RzF@R5DUcznJAR&""b|]#1 G%2۵Z-t-JV!I_yGǯ?|(e6dM" JVRa`a$ йVG#9@p?8LZ"=s~ߡ21-Ap&>Wz9_{-/݇$)ga +* *" "zxlB˧UR5z !p6008D\$24 \!O&qlAQC#(6xL*H * "E JE%BDH^) =BY$%dCC8a:b>A˩d2Ct.QB :(*@໔Jypq*u.diqdοT$ehMdU4MBE:W!D#vwI_: Jš|I.YnIg5#c߾}{>w9ZMs\V0і^c-ںۘxi?z{nzz?|Y*ӱrVqjqơӤMٞ$V3q8*Qm6+yl6NLw}mPYtlT#hh8Mia*$ftEZ7Hqz,yυ[/%A<^9NnJAR^a@ژJ(zL ;ٹm8) WT)P/i,jaHKn2>n]v昞+fs{jncn9ge^=$)4M,DSGEBQ0@ HhȒ 6#oX:"$jX2Aӷ44##4zri:*J=Vy?,ۧ}b,Sr̽4#TXK֚R2_%IGmo*A_>ƒwFӴpCQp!|ǡZ+$ G4uj:.œB!Sb H*6c1|QAuG GT9@>8D^ЏOLʕÈ*\+FYeC9c[^Oq$;v^\v&:͗^_MoYu+}!G<-V|`zn,Ǟ~F(ȤAײ4P(WvdajCgg%f*kn敯#KItQ 0dٙ?Htũcpbej sϝ}/w?-s8c+֠yal(JDBDG!R̗9pC"eE(yǹ..z9"'݋כNdQgR,6f[^wHcvRIgh 33S(1O>ɓ m6~c˅ӔBoqn#ۙwz[.#{\;.~035{0Md[V MY(J$b[v*K~U 2+>o "k !z "1 ~|8CHew5ku8AѨhMW@AAǑrم<c:f 1cYH*ÈhHR àQWQaF!$ z~部|E3_l`7a$ct p<EWQdT2u$SЕLT4>zH/=?$#{e2+v?/"  7l IEE.z:}߾I9ʩ?yD1vF XulՃiَH!- M0 TQT "bh.zЋ #~8.{HdYFdtCGWudI$R^ YAH$*+Q9n=cv>#]2QPd$MG50 }dM!K.Gb8fgHRF `L X'G7·jy70s%dg͋ڈr #pӺ1~w5b9qng8WÝ׳ q&Nb,R4m,BU%sDQC"mLTdckf:d7rŶYnл􎟳O<9FbqIn>K%9vWY>@W,|~Xo$o=p:{փt .D! ^o6=|IspQ3p@#1r $jfIe2r9fǏ.*"'P1;Hpk6>/;L!tJs8y|t;AXjpWRyMO~McRI 9ΉlBiԋ6Z\;V_ 㙅9FVt&u#OLlY覍_X0☦, 8M<òLDQ%$0ZtGm%Pw6oCX=hO-0X]$U+C#˪ 60a57gGͼד QzŴeF\TضIcrIih8(N @vȵu`{`:Z YUh4*<'t#FpF@YSȃ*(]%z)^@OVBBR &Z lVpLsVE vm{xIN)Fc6 y=<{/&ݯwkWŽag}X5o|Θo EeZ4uj `910@\ĩ6Q#(6řYTJ2VLN18 P5Y3H["oJEdU'P2*%jdl0TX_ O.^9ƿ|YU<3OrhI^w#^+z 8}ޱB%o.jB%2p{z]ÌOMS ht_侗QeClRt]gqj_ DV'"6< %9Us5[Vo~ 'D">a=IIܳkcK>y[M4ٲjS[6ͺEgGޞ=})LVYz z1$l?<_p-od`ܰRNj6ppM,G&}ť.)Ƽ _}~UȖO~nml| <ǧٺCUSPU e)/,-#xgg|.F]:,Gy\O|y9}#|o?ƁH^"{z@RCtP?$CDDTIEU4Ia9$bi$Acvjn:ۻH%4j qK>w0|DP*"$ "H"߼??wTT#JZ B/0 B'A´B\ABǡZ.4M bc؞}0IJ1?({0:>NŮaz0a$$Aw `g]] nUfpQf{BOT9|i}y~oSu7|uΙPP퍌o·_/#M!I2HQ\sMQJ,A$PsYs$3Kd_ʷ]Ή: HMâ\mP)Wd۲&Gţ8^@(勸&tm|!@EţB2=cXAV:>zL"]Ʒ| ؅*<GNThٙa4%az&Np*wy{ Cr- O>Uz#Ͼz4gXo}QKj ?CVeժ54]p.Ӟ"YG_x|\`p:o-O0<-ۅD!W NRC4Uö-z-t~H "~!.z$B:a>.yі8kx>>]9btn c#a;6l+LA:;|x;yJrA;26'8u?pѹ:Ud1ĩ.zGC("7m,a -TRp{oy&۾emYgQhFz4# Ⱥ>6^KT#D@ _"ZIS3D*kD>k>ix>bT."(2Nlp A85 |2Gt0 G4fjsE `*VP( EuLC"sh1R` !`Z&uhgOH ! * ;>S-1ebɮ'I S-L2svnjvB"Ļ:ҭ8#*Ԇf܇:zT1>GYx© {:yu0-20,^KuRe9[eWsk9.^Yoo=1/ƹm{)-pޭW32^$p<#wbӴ#(ѵҒm]j*rRMϑ:ˣ+riI5a6tde24 hjs&8 oy~Yx?l<'(BK9"7 xat]V-sՕ9qHY֬>OQ<+׮E^ɥҨYyեx9V .{ hMh4cbZ -X '&茶Y~O;Hnbln?>b!Q7Ȧ;r+RN:Mv<c-CQ9rVd=8)jFb\r=)%˧vMmDkqpQ-y|?}bm?G:exx x$sSht #]~f4a&x;y??w> C6ʣTRD%"Laf5E5<←(*,z!_Ey9^Te?'oX6x>4[r]B{OǾu(?H IFðeCV4 ,(Eô(ϕenX-CkxA1-EF@B#e躎8|Abҁ7}x{85&o5 I  7;ӣDtF/tvwڊvQ*Vhv9{~Nz[sxjvz$iێ7n<M]hM>>">wk?9(K,χC ]*ChX y BXJ*5*{$[?۲A!iKj47z8OQpDzwަ-SE D4l>Ʃ7BS BB_ D$Ap=!"IG-(i)U+ֳ.Ԟ<Ӈ:Fm|Ciky DKDM Z9k1-"<]k];u~ ’K8T?<ӿ,^[$eE;L!7x#F\L^J{xk~% ¢ex:;>N YdQN~_!J֯T0J5-]w{v%P,[b8\^K039ͫ{vҞ̲.Sq5ӷn 3G'ɦ39~FJ2lX,cBNLI@>IdpR@Vn4d1JeIJRY6mmtuwHaZ`" cd3x8g3tG33tL6'r,V2 .;1F&X5޻Bn1^W&HE-/ӭ44j(V63~G˒4IK{4En:<⺷]?*/Ibvu.ڳ %/_؎E,SBTX,9{>̯بR8uj[Fh"<. rY&!HسK-'~?aɏHfzOLSLZ&HQQiR,hԪT*:MLѰb--@ZEV#JƢ؎ԛMtE"<,φ7M$E&pmYy.ejP,:"3B!ppR%=$Sm=+;|OR #xgf&qe6u!b;`[gBROa,љ ,":q]!h]T'':53=2J5<Yl%ld2FGAxyvCfoK\eg}eKd)&FRmHm锂6Y{BR'ϰK9M=yfNE̞9gtntwнl!@bQJE+HLri אP)xܶm⒫Y:H˚N2-Hvy&FNx?K˅_H[;= igIˏK8w#v (VRjO̧> f|>SnJU;'M-1{ 1E 3(]1g9u'+TglY<^΁ebըe#pB:ߨ0 +`^ ebYA0?M xd׋׷TUn4yoX 1EC-Jd<]M!-|D^ " ˠXPnԨM&m"*. ===[J0 E\"J\mzavE7bvBiW4E uȬ28!taxp>B~lb&͌FYaV"_s&?#:#*SGt}<%̆KDO0s0])64421:A+ƵPjGN49*{!>{]!syZ< _0=GZ[bxrC;ȏK;9|0fGӐ10g /fpW3̰43pun曏>qysd 7\ȱAf:(K(2GK2T'?ޗذn1xz.0gGO3'۰dZ#Ø<[&~+.cҥ¶]xB#/mcq[o`6_R`Y$JnfEl;xߴi0,##Rq!K"ރ{:W*&qTRz ֒SfRj3Gg1 F?'O#PC,E-|Ώ_??l>d `嬻h5фJBJeZ+V 0=1k;n&>`'xGqlq,^NcQ?f݇ZNPB$$1r%fG%@PޘY8bMUCB(*,66zaP=3[  kȩ ,[¢KspJ{zD%zB+dU;vsqr5Fx2+ d;Q[S0$*VmHx'&P]TupdZbt-䜍9{ Csj‰aR W]3hQK$)\Oaœ<[Sכ}gwp/@6^yQ]W]/y Cfqe0ubQI٬`ְ`zLVcZ&; 57?Re|wI/$IDMAȺ}w9!2* | /? \Q YBH%Lvi `ڸF  4_Cܡ4FDl¨5`ލaXf8u0 Xh]D,mna~=:Tu}p=B^%EF4|qp B H2¼[Qr AQpCўڈ  цIUO5}b/V6XgdlRѡ7Xߤ^b-ԏeC{?1,!,Y~ Qb^+zimglb ')|"ݛe|kvZZ%3#؎=7FOBU:{._}˺:Vr>" _`y"`cy"cyOg%]E4Rz5nr\}9gu`sj ^"f %JIq`NE궃12F5X4\Yʣ#IJ,K.V)Og  A<ǴEz3+yλ`SGa**NGd2h$l'l!ߨ"/&+GY&%)O1qᲕ|"cҀWnb?"#}~1flktd;v*XurեW~ktZgr7a7M<ľ|7]Z_G7,/ErShz E QFAT!ʯg@ RD= +(ES*(# 2D+Ҵ\yV?H>EQ5AVG%+ &>=FE`v "Y޹>t3W&>K#Odg>.f>->珩 Eu-aD%ZRt>;9D:==}r+eZ)$BDlǦ(AGKnjJRE̦E4?Dps3ȮM+Ȃ;ܚEUu,rl}D d)~^I+GImרhQs17[bdx\IvXzJ*H&nI332ڵk)ss3tdR禨 Ȳ}2;θ&)m a(q Za~HFh:tIƱ DRBedt ӓi'[#Il""+SI:Xp!,ZΡ-%3KU+V$\w#2{pgZ /%jLaȶ(]s٥7pUwq쵝>%=7ߎok (\d:ś I12~}Ys\y|a9+XÆy~b9vZE}\ hgnH- *Eɦ( ؞Y U1{_USd) \~嵼6AZ3rv6Lt)hEappB ޷x^N3~(N#DlB_ƚR))+۹9ULb:.b3}=l8of,XOa28z,aMj*݃emaj$Qqtf>-lg*.i?%¿"glݾS9?D08y<[:Ͻ[K5e7wU vɫUfqPO ӧ1~W;}wЈ\k8St1k:͎bNpύP ~Y~Sr` @&<(z){Hb4I ɂ}EFCS(jX|]?Ǯ,Kaw=Th U*3KEZ/YȂeӝB IDATuok0l/gQ?Z2FYekVaPӏ$+RHPj4M\ǴmTUR-øȒ~տ3o U67\eYGdRu o$qBKx^HS/@q]7 Vh;a.Ar#<1@- jUh6 ߥڸ1SSeϫ;8p~w[ghVxs$ sDfEbO |~ﻘƜ}G9[ˏ\*~//?6f:wW(7M38d9앋pךxNk]9Yw(NhjLL:v l{z/{B<|B<8/mR,_. Fb\ܚa{XE㨲JDV7 "JhB}9',(}P4հhX 6fJW]trbt1^MP NS;}=br%ȝK6ʏ%9{|%JYx'z ɪW$QM!  lwnel_i`Q$G5Buj>; GK*]I >]c\wl{AkK;FkZd2;^#aff]7,z3!"/`%r34*E9]ĖVtY5 lV >3UFDl5-3(6,[x;8s5h|?+`M a&s_>f'm'^ :>r5,xճ_|N~QNGu2] ._KYcI.YE}LΎӧȖug~?o6<[1**BDG#Axpuu1c *D4&E7m+${}ua,x"Aٸʼ r00Xk/EDJ-\tkJQr\EB.X ɴpe:"Q"t-—oafdkSgPRY\QŒV ֈ#zim_l͇MݿSqDzR;@FP1 NkfS:KJNqSWJMd]TIBТ-Ȟ]6> zzFRtDEGT&~TE̎'h8.DQZ#?͊Nnru ǻTz Aq:ݭD:j 0У14I^*!1ݝؕeB4#$cH\iX*Zډi2@WP^^U!c1kŲD2 ITflDYDRkI+(F;z&s9DeK: yxmJ1ޖsVߴR{_چ;?=,g+.8kϼj2(VKh3r 8 뙘"%pORKC[kŹ'ߑ=?|хˋ6 g^-cGVP?JGKd7w.yz' v)ryz] 1! ea+i95;{>'VMt#Dc ~;ӧ.1ĪLly+.fx N:lz>-̪2" 3t`?df%BPSDF<ӂ4Nn H3t!bʌPĵAIƨaW В:3NgJ -,Q$ xZ%9>zu̾m/di;6ft]5׬㥭O"&`5E?rOLq$Vr).BΌAvLZ4L1d!dzC\8w.YZUiI$qq&R&+8 ~( \UQ(zEU":DBB<$ј)8Xx2iJ I`Eo5 :xUsZ3d=t| eP`Ч;ɖl~ M9I)h ? egY{H@Ɯa/F$JLB0Jgx{4F_zEbm(LHy ghSLJ F "AB]&0eh-չ1/#|j#$ZY E4 zg1F'ߢ^4Ͱ(>?7R.VG^xAv"qf޽/3saTc J#*N;2VӨ#~ G$-8MMfa4 K=}s]䨀vݑ-KYݻv߿ )EA@dt=ʊ NgGF4Z{d['iE)M$1@7O@5@_B۷Й2j4ɏ5{ի;vQl6 dSgȤb s m1>sû/犿'^ŝ~\"yGe`bgXț#R}[X%ނX2Ӳ,7]>+exlC'7uͯ'H4jjjT? 2:;+!8MR\4Q"g'dKH$ JrH xj,KR"c6 |Ih4 FFǰ}1=TU|? ѩȖSq߀iZL̑LJ`Y!S#Su|ö˨]i*K{F[V:sNg*00 e]@P,nLH$Kb45&cl(M0 ӘzNo)|ޟ+Cw_'z5ְzs33ضm HȲ J, )tg\rw F%R5.k,aS+SDQz(T+Ut]"5}k5^գ˼x@z^}=b jKKl\5g?um n/È=w'8;[m]ϧ>a^zf6"QUJo٬djb^eՖA4MRccL@U\æs]mc;ȢH$|4Uk E*:miED1]Geht#^tdMu5g@ř-9a.FGow=}.{1@KgGs]2RŪ #D#qr" Jtu߬)> :vˊ4%Qd EQ#:^R dvFNg|aS'OMfx} ZnpNI F[G;&]\GE.DQ0M;CJl  ~(E fY;x8k8﹨mI$ƪ7`7[MajjF%1QDs7ݶRL1z2(b>eS- Ӧ4Q413[ƒD4, |h p\$"RL\])W|4 }$5Hq(Xtuw"D"vvP V5%M%br Os@nHnd? dj w#rs?!?+.{-|G?=ˇڶt&jgUGo iFC?7&_{/?˽{nXU0 r,9Mez E G\z1ʼoHc w1&( D ?XZ^frjQ۶׎,0ZTGZ53q,F0:DVLLLp): >Iv.#d[Z0M4( 6š3aNM1*S^q`7 sx޻qW2TeUo'#mx<*1P4_r.ӌMLey $(}Rk^x7N#Ih׮'ȴbTǏӾdr׻>JֽQ3yOqw"E+MI`6h`:@4K*4u!$^^ ތ_&W XerHT z"d[:]eÖȋl`;ehD*CR\mmak}Ă8t-4Eh-;9y$XJHD|K 1>H*xm~8E Q&6DCN8O&R, }[ 9B믹unl7QȰ^.Oyh*U!@7d箷@K&7m_8_[Bǟۓq\Rnz})ߺCerWCP|YB pA@|Ų(z!vB?I@4Q = #ކp_u\YQQuI~nr$LabĎ;Œ+ya˸+®emmTE܈ (,"eܼZPbpzJcaw $ӖnGp<b8S*U 4sezSlZl?G7{nJ9wc]f?IwV2j4 Bwȴ1-Y{i(2P%T>reH,K1Wζ%-xh$X1/${QL~mun`FT&Qs^u9'ȋ*H+@TEPhW6LN2خW`F2o/1n[G47\ Յ <{|an_ʟ(HBR?}2ॉ9 w*t1i??~!2'\wˬ5MckioCKc x'ܰjt*+ZIEJ..D΅T?Y%JVݤT:'O"biZ@efq<,oZZt]ѱ-&2;\4`z\i2>vYOeUODz'R Ƈn|M}[Ońg/`[nP(Q,V(.Fb4 h@qmsC$% }u%%! |Q!pY1mDO T=Ӡ+x3c3hZH$Rڻ%Gf9r 'ޏ}~<'a>U[} /=(q x6TC$?.lZd@'9Z&W!'xH(~X4p^?QNU):.e Z xiۈ ci_;3I4?y  /ƝG\"x [.:D'ub1W!+ӒbT4ez$+`KjGOa.8ˣn}} R)5P#6('ȢF\/|硨қ<.F " J01fFIQUa`јΙӌhyJԢHndUoPx<͉7N'wU1%j(7\wKGQ^ĬPQ)Q"6Q/21"M%瑟 .m[pi{?\-]͹gzl,r2B1 م%d2~ޛZ&-e㖷u~aO3|xa,AC;A\fX=#79C q:() --E#U.l07?˦ؼe+=3ԗsEY%ՅY26B}GN;\sɤX\'Ѩ > F2D%$bPq?xn>{;.KQHm< M`;MƫO Ә:Z+>KӨmp&-eKxJ)ƗUZۡlg [/[O@'lvf-q.2{q|`?BBc5DPl@:sXL#K/ϟ'߸121MQcZt /}޶k{170w 5l`sw'ޏObѻp'AEdQAǀ(²klm_Ke(OZbOf+BRE<*SKOu) m6}?8Ҽǚ]4\6f7υS<䯹30dX߼"bIJe]rFJam\K pVQFT5dE מM J$iJ2 W\}MA"HM$R֖vJr^H@qU=<Ԩ*%^mD:86tGP#+EPsDD"@J"FaSc4ubNľ,9k6{9 ͍ }7@BADFBv < /V"M\CWw7MBRBY)K,/.b6jw$c14]Dz,ǰ4%N4G4TMv]\ömFUɕKDIXHD*^)\|4Gtm/šKeV\BV66׸}_}|TK|w]y ױ!Uxiۿ%zq)*|d G\/=NI^=~3/ pjja3vẙ̎>:ϾK֜5kȑ#c1g8!zQTE. &D"q2Ei! 0uR8(= ?+{zCU,Ζ"fvmI"-1" bM>MUPk6@$X, \F w5e{j@Kq$GȘ!iݲM>{/4U~/~]lWA|4&|fʲ^T^?uCg0k Z >D%ɹªIZJIDiQ'QUصtfU~ 1d;YN7܃z5s&JV&hP h( PEm"@RP$׶pL+!"ˡg]. @$E\q!AOXtQGjtN;%_RB9۷Q7jlXw6GGϧt {e58[26= X>K[, $,rΚ~ן@I^s'( $;q%JKX$˴vcVFK{7r$:*k3 Җ{v, j\o,I.`8˙ ^p>z~w7b'mMG*M{:IG\|7c}['S?%@DBDB:$Ȳ/++hEmBRPȄW@AQdqٸCyN2 ;khE#I1ti2kQ[2QD?%rKhNbQT]#5{.#UU%|FieQ3t4L.5 ޖ*4Z*YX\0@ivufiN"**W_=-̳Ģ) ~qq=_g&bD2I@@"4JHr-0ݰX!l! AQL dEFQ$"# *G`4LMP %l03{j?_9pr|*1RRװ(x;w~}nNgquLQTH4>&Q܁ ,"k4}+P::\DTx!!*2J@|A \5[7k|'xJe]Zum+ѻ>dòcqEk!V\AH%Bp@_) I( 9<ĄNӳg "2MkhfcB2B3p 6'1qvkH.hH^[|R 7& %EFV8t EUh4cQH\!GsWd[;Mo`d`yDioB*V@4(WX"Z<V֛4p(LXBU=3t wXvr_w.vWͫeŗY&7|7zdv퟾{?_7NŸ悭[ͮw Y[fy|dG7`[(?hI%ٴo3v8шJR@"ӿ5a$(%HQFLRTyopybuye^L=*CqIT9­(X*5AlI$~C>TE׽GdA%%Ǩ8r dӣy(ި34> Bx 4"ȒȨV@ 'D2T]GUpkxibM(ohE?@tt-B:"N"ٰ]!IiR'tmqqbe4pŲ\:;q-|RiPTC_([؎\\JI(oO E.!z^׬!&8y{.J bkrvbYT.J@IQFH%R=KluCkkgxY)7E;ڃ֣q#kzoD?\{ŹyQ2rldJO- Ms-l[Q%^{ 6cN|n; ̳\wхMLky?tI (BLkYҶmrd4"JQhTWX0JS4,NU-*1|riQimZ d2Qlkaux ID"b؛X,FKK F_!ܧh!vl7L EA,%m6iOk\pN;CV}Z=͂9͈kCR cf~t;?^y[w܈4l\#_G ,y;og17K4qobM:Awu>~{xZ{ߍ"O q`|FU}eX]# ;;mޤ`h(Xm" xC}dADRXZ =svg(Rfimos3_gl0ć04f+/sj|K- /FHe^l}Z!Mcҧٲv*zٯ?kgqrXI %ZѣibߨQCLjR |A&ݛ?kbeU!4K5FΓzj֘-.oJ#H--XK4@TX*I2`˚:WѢ:M DUf<)Hm6V~ˈa _'IH)sn (4UDIB%ű,lDA$$(c[jnDut]ӸCuvϓhkm ױ)MX4J2%p}Իwj\s, 9VTbq$-bH0Q"1exE"|BROd6R/q+_gl*"3Q_}nԡt 3*,%ݞaԙb839d̸4q$(f,HNtӳUjn'bo}3bkoMT+y/觜݇.ʕ/~Ɵ~Xөz&ɮNebb/}2^I}uǿW1 G~5sֻxgqM~SwZ1χY/Vy$GXu {96#- /p#tAڶsfn};۷04oc U܋ǹG :oh{71^)=|oH3)NNc7 "[6lfA„Odso(sEl!ɮrp}J7g(GdU|T=lk@$v<Q$TQDC'PRf߱@m]ȲDut634Z=gZ`z:vd _4e''֩TdYBQT@4?)I8VE jGu,̌bՋ"m+x@8x %Q>h(*~ǝM hֱ QM\!2HcZ&zA$8vU#ʬ ~ov>AXA:CLTL+ ӵ:Fh4FhKWjB4)O|vBM($I]\]T%CîRpdpx_q "8.@fip}3EZӠwlN abnja)m$R):0 dIƶl&igM=ZJZl:tS]c~)G gD 9UyCs1N6[)nwNUvl7F,q*bT3Д,Sl?hZc N;Eqf̯xųt#PD:::zmۤi,KKK2D%-xcۡ8vmB֣YJET pLl.Wޜ;U5aHx~;5EBD9,:Xfl,M*FGIvӿi-^~ '&W`p!ZkSx?ikMssmUYz(fx#j=jYWvΌ ֿzlʩ< =B=_7M.l#;zh?Ao͒ IjSKL?ÉaZ8e#[HP5\/<|HvQ (Hq0 DB1JDXocWt9½^ H+" bRDQH/ul\FUe l۾J0W^u =,͏ԓ.814i"LՙsHsG^:1ZӝD#i4ˋy'+v~\6Mi'Kp";@6#*z*YlPr9W]Κ} \9C-` o'ӽ|魉8#X`KJ6.l;8˫Nr7N[=||AqA0k%V,XʝaCֆEx3:s|x%<+n^LJ]~T/斫oᓟG*a(LRP,2 g13|;qy۷_Sv˷8Sws{8q й8pԶ^GavD(ڸ^-gs;}p]Cb7躋Y4!veb1=Fj8z^}֮-f0hU9q=xm]O]Bxmp;-U/\~-ۺxzۓwQ !1;:U`|x%nDa ȪF*!lF2c14iOIXtr Q8vyAOѱ$smq ιLL drt / R-Y,~~{fψmdH*34Jز"|fVFb8|4 1Y1.#lʂ'ߵL&o]ҩQ/QEl/Pl:8 yٿpŞ/ҚHڴ s'ٛ;¶#1=R ihXM"Ϣ*P"#,+xx(tpb.;E~ZЭ԰̨ xQ !mRj~pQ*(O@0PdǶÀT*(5\Ɛ3xCZ%NSבE˴IXBa@d ވj.DEE Q.R+)J :JnRR`40=E(e //K)5mT@#j><'(1 +MeÐ cc$HbضEhU)癵d uD&''=yKcdN{%ڈ&3G #"eqۗ]Qu}s%xWNYb{g^|e)n\V7?Ʒ~ ]k۹/-'0T{?7]u'I.[ WȽt:K->:7{{׌e׸qߴ8մå\3QL fS-]\k9>1LmqbiY5&_,2kB';&'ɤ2RթTu݈gf0mZ <$Y0 4=z%QZ ~Heڲ EfӒz>dEVȴ013-mĚu$f *Z@,\BE4M0 $ NöCiIP L8JtwV]y| UyNz/\—1xǥ\ދfZ PD_ x>/[>D_ ǡ_zŐ??$ڠx|WvӺv9q9~lןy0XwM<~(h1)9ȖHm%MUUQ4hԱJ%\;Rd0HB-4Ca7$Sj6zx`[!޷51:2B2gq(b`vU |iy_sXzIGw"@AA}#'SneIxk.h@<]5/]~ /HhUs;x^ޠp1;w/tE%̮yr;4]i1p77\eȿ'r|ľiSoXAKW+zҬ_T150"H ! Z("P$w_>Ǒ!\Χhe[re7p=LLoEネǟM[f9)0[.bki<=Ouq͇c}1R3RS#yIpQeGlv+AR(L.)QE g|۸S{xlrOf-aъ՜j-W!VHN=j/ǐ2~^nı%־.]k/&G+Edd!ZzYY-6HĒTRϚ3gc4 v>sg ɱN=ewr[۫'~b߾v=8G*%zãMK#PmYb†Ha簿PX ط{}dMt.ނd2ujsd1&NBnZm031֎w se,9cVt,`3̕$HIT`>?KFKq5:4_=_:go܄HX-\]C`-}Maˊn+~]l ţ w!/<2gA"x8]Kt0u@K[b5G<luN6 oorppa҂J8IK6 q3plQDŷ0TޠT :grYgB5)r|`#yB%bdASQeѱInD(E ˑzäT,S.Wy.o7 QH[t:!m)+2,PnqdXUּ -lxORJGW(xxIQ BID EVHc||UK{~m[͂00$JMqqmlabhW, sanH IDATC4j6y¢6◯!C=vsfhȍ7jD2H1Z1fRB ,9Lc39bO`e]v)[Su6Ztq'z(8~mi 6 n_:49q2m `ĬY60&$8q@Euľ\K/~@HfNb&[%Qq]Z.Hkl^ok_˒,t̜ 2 sӵ|n*6.ES/_fdj#3n'|sOfr!ok]dC\~-K,1BGy.d,e*4* r@ÞaA>fe)e7wh5996X EX_}PJ+g++u:l&g2;X]ȝ";UQ(ΐQ= fF5(x8 ׋,bv7jLDx,(5c2i2RD솅oacڔ E̺I"M1-ٖ-f5%-r*No$ qP"r+I,Ju&~ޛo<0cK)N&HȩCGN0 F"w"%(}ddDHjų\ˢZʫYa  ɡ{A_wyp;iCDQe&'s< p|Ko?>ML5@³$-fqI:j S"Է,Cţ71O{n@<hDz(26 o~nEyۖdewjռ .؏ڨ?C?Ū̱i~}8kszX8k9۞{Tdx|9TkU,?T`w (6'nβR)i(F;25GdA }"--Hʕ˹w_#Ҋ؎ (JP}5 wMlX@TT$Ww.mmdqλzQELX;PdRI| l!_(QԸKo˦6-dV:Cnjzc85u v3Y@(?RR<0a{k-Gɴ#dlHxud]Cc3ނSg5X:?͍]k1rIWĩ1.>|lvxx:H1yRYVQQ ,סP)S*%vZ;H{nDTn iCñX:BӜl넂 ԪըhNDQl[T$4G:MD8aB}V5E"Se1) jR3W)ѱ hKvMRY 5<%"{&TuQO $xru%Յ b1dUlpFLoU=ǶAp|E=,bFXxfZ#=Z !4 ( &aKzofhJ,r]ap~~Sr:M9lfuQQ̋ [P.ʹ3J)ݠW(bt2Se CLak #n :yd_'pwfzJɠ.hDeq&q'xQVO>+drǿs块ȦKeסcǘӧJ1=k gqlB=8ZsitRN=Aev}4L6cTQ_`!rB?6yb^a6^γ/m=$egoA'9̵ !J!DR$lCQ5t#x*b)e<;t]u"[Ҩ[VTx"IL3PDE ]˴m꧷jIܝs Clˊ<v3;Na6= ͠D2I8zu^_?HgBZOQm==i&&B1_FD\pޅȑt4zqjŐ#yU8pQVXIuFЮ*RÁQ~/K.clc0Z%j#nȪ/ L}B 6 !#(iADZ$@Ѝ : DL&y?z,\ FےWvtt`kJ%f|d'333c\|ҩQBAcq2 *%YbޒU]Ky* Kd<6?i>έu0]L+yr*IXmKǒ-#Nކ1B.G>G!HB=?9wJ{ ?dy߇YXt߿v{v/=8&xX_?=>*:ϼ^S՘) Lܠ r֚ni_ڒJ2$x.zQI&D"||7JOhiig)jt %ϰϾY~oĒaM3wR K//Ohәnsov *VPD|qV+: ' گ\(kop NC-fkR_é`iO2_6f^k&}ZNyĆ_}Sm^ƛ71ӌ%z/ngu%1Y%AmJcS0Yp֧^)аXIe흠H4:Gu#f<37np楟},JΡOt5FXW>䧏=|cV~|=ȊF(ʈ"cY$M|n|S]ρ#Tu )S!XNiw|1gbb^*^tKsz{Sd6N9H[O+C$.2zQS\2ˡ 137!ӭ"h.390)T}cNٗGNd<C#øC[G'y@UUZjk;Qʺؔ4ѥo0$Մ\%47lzX6h*~(%8G#Cnsè( !N$)6q@,s}ↁBZG=%( M]eY`H*ض$ITU\.2ɥ=ـ92u t&U)2аL\/*iwDYBӲN j "#H"4@HM%o6 ~uiMe "*̸I:=Rs^DJT*(˲H$JfFA$IȢD |2 U!K[KQ(pIC%l tEErB9$1rj 5{X Ӵ,#CMeuPD ZSo +*X,[m*n%ADޔE@xsr7sk=(Y!)2cT*PՠZ#NK6KR,HNٜ%\rλfϿ4ƶȻ笣O>ŏ13q9H>]t-VI 63cH\2~x׿0<0/?ofKiQBj8V@N}&dZ˿<{Iʟ`A_ ʁ*?t/yV.< ;o^:t'^-0o6^|}[1;CwO7 x5Z''G l@ 4M\FTDb1͈S5iq(ȲJ,SN'i4Te$I i!ZJVDH,`ʳ4uw .T᜵Y6'Ŝ9x^ o& /ffjKu֝7,ß8nNrdfsw1 "v#:ɖv l|^܄S$RY䵍F#'TЇ_{A"Y!Koz= >G;5Mul2g Hqlw_}-G9Vhۑ+c]i$M,] :sHc;zG&/~}䎿c=y& }eS*wOp˲ LT&phC# rDVΛǢ9{_ɧelࡇ+Q1}l+'x]R&\~&:Z˯*KqWv =by^l $iR19acض88K( ȚJئLCPhj""3CSSd&S;DC= |dBS_?s'f ps|Oywk;]C\׉<")^v&?`vo?~#G 6xft'a\e|zT6Frbq:e>w>Sj0Y,saE%mhO3V*WIjHXWY0j:KL@~jJaQFEn$W <$^ZDA2kLG"ڄbMRyČXh C06xQ·ڶFTItnQ$I͔\IBRу0lRC) % YQf$Riu=I;D3t?4e~th[GFd? DM&2nǦ≦7!"@$P$ ߋD)A@؅2dUϏs87A(VFXuzj8驡zMU3̯)B"GCuL׎/Ϩ t+ GP c=:˻߳mьzl˖lnm ؀ ` `-MjHByC @(N mlK6j3i2am x0k_Kk=}BOguQ@ؖ[{.:q%U׈Pף0hH F2PT9}@lTECUT45i)")%n&$edg0bEmAt.J:M@/籲8Ϛk"[JѵaD]&~u7x+csv-7w]Ɓw3@sq:MT4JB2ӏ2^hB2LDOuC#ߕB%dXiPvDr!qYǗ!,}=XY 7pqedoSޣ$FNVO TCǴ- B-hX 6IpKnK\\;J99=MJFttwvӑP(X-tKyK(QH2!uVm[8iŒ |l/[0Hi6_Lp?8i})4_=Lbҭa ]8WjJaR(?˯| ]/ko&Q#óZQUOfJj7-#ec dYr(hSH+V,z q,Y&OqΗؼB>uC|+_fx`-?t/鍛)d3]s]IrC$ UC8g;ֲF9G IDAT|+a^hQ ߺ -u78o=Ud!.U:"k .ln^4"dO ^=5Ïw |7И~j)+s| r tEjDCPE:O*! V2ΓNMN?/)؇껬34RdVmz;:)[қyKpl_vyARi4 q~"ϘץCiU$1MiS--Qic>2”YUx$TWF(,MG8 N5t2,: 8w)HpIG[XJTUlt{$74#6hvuRc/H+y,s 5E%ܷ1rj}K$EG*ƩVXn#+^FlbWj{<O慕C#[9NV?5G}dK>c*>ȥ}]9w&׿yx;8O7]==\NU c0ThF+=Ez\|E\},֗㎷2;saCr˫^wfN5}zpU:r (1+aR&mI) LEF דHi)#Ű C٬U m̑9gl|F=kb9 D7tTUK" B *HJ0\EJfHB jIf+L'pt1u A8j裏0s8~S-vh Tze%@LOJkWS..s޹[)--ı#3JE;]9SgXeYؽiJOB OgteްT$n T4);jnriTlz{X|K@uLUxx잙vII(69!U4&~NDf bWf#ǓBt1ʿifh$'p?{#98QኋH^d(] nggv׬c|4LVE&'Kß f ֨Ѩ Z~ vvP=$˧g8o?'eQDiRڨ"tPAUq2N4ᠷ2pHX "\#ܦCQ-Wd3$MMH-aYhN$c(BBSPuAQ)B$$ae߉\'El[6LqQbȘ6olnC+UEQ5PԶ!Z` ʛS3+EycK5R@zR)2#oK!P</7)v۶)*G:CUt<=ט` ΏOsg?@+/}9.8ok<1^w?CUtmgv+Cb 䑧 RVާ9o%-8s'Xsy?G5¾'qc 9zhu( zԆG\Y{.\='蜘Cŋoz)G (}{Yx Hu |P!2b.%T9S'"CV`gs(^ 98x !;7٩c2LGU\qdJ(}@HHbAGQH,T5IL 4 6Jl'o6NMpۥ/|ٓ3 s_$)bR'zs՗p5WȽB6ϟC8+ z8#kF9y).>J_gAluL}Z Z'X3np5&~yc#8&BŲE9IԔ^O:Dg|ayBL$(J $ 1JS ZCSľ"RXFKYĦFK#L?pB7dLFm#yr=[V6n (VQTfa3B-Bq'9"cy(kRD<2ICM"t1R45I bA PJ/zf 2(2Fj>j;&0Rd'ZrESʟaYiԙ0 <  /g I\$mX( CEXv`iRv],Nӱt!vK3'Y5HeG avvEHfu9,;CW-b;B.iKR*bQCJ #T6CkF6XDk؊JBǣZ+fF5- IFh6,,OdiS,`3`BR'REF abhzr.Ad:;)4T47$X.ahL*b ehbXV 3#Toh(/-y*F@Xn م#W~{u-;._h`sŪ5L[>sO|D\੟~e#CCoGF[(\8NW] y~2krf Y}E{X=cbYe T,qΪm,8IAA~`:Q^):aa*v6Kt34Hs4|s-.̡i:aJ4l6dHFx-UQ F8^$&BQ]IjlFQM"6nL.I !hNҐT+J2:pDd$?:{pg ݗiPjf>3;5 y3OL;`tS1,&Nc|!^|/?wlRY*3s(Dj z>MQ;g*Hf0h%8ƶmT52iĚ+M\5&H\&G+$Z⩳LbUKB,"d1^iĕ`\(ΠT* ,-/us5RB6c4,-X%3]HH LE TDEw,S-q&OV5vuNDԜ:,-AhB&I0RiΎ{4hJ^]lEC n #l"".Ozxr\V]5[#KKt<} 7s8Ycpn?\ϼy? 2n8RNJ%L&%M)HU<(kn>_>{Cj-OIکqo>ķ8g`:DK9O 7]G8ph?}. \yٍ&G_!|?ჟ*u82.6PQ-U8bq),ӕD"Ll:w 캐y^xj JYT^ K˨nȺ}z2cer==X:IapuuD  C?HiВq\zeu(5ZĨXMmPG'jUJLk34D@Q4WqP@T=DS'pMB#ڌuvVȤ;YCZS#r'>JrG_c .siX;72y?UfCnYGts~UenLdYPwtàR+Gocǎ1ط Y^,O|FG`q4 E'IwuӹxgAN9pz'*IwueVVu݃CGP4?CBxؖI"KQ_<A@^'"3юm bȥ3RRVhfP{P$/E@h6 C04a$-,bC2 ( BtW 4%A$p.kFЪ;*u",#,-1?BGc6񈈱t4ij1i%Hwhtgi5=yԜ$\p4Cٶl0 GN@ݥ`"F.I5m1 dR>FHE{T޴, -bIlh) .Pv"b9NjI`DGUUuP͢{чkfX.@& Uiaڨ+cZaH\sxenğ_(BPt0uF}m!?$e܅r]\u{=}-:rDj:j{%ʾCGx ѕUD܎l RDŽ İ E9.T 8t8_6ZlY gayOy3{0e6[q*z^QVyA%: ^pd8vEC.DIStHoQ[XZSp'vZ8{/G9Pd1hC73u-!is,j@h`jt1rl'jPXYd9CvuomWk6g+pV}9cB_%sb/G&~7\`q=(˷qGѼ>v.a8v?z>|_fppuk=~BIqa٩fuvV 3:1CH=aĵ*"[ xqlڵWuN]oGKla?FF^_z~ abxVFٹr>rsަZBPuFS).Wx_{x J]yozxݫG`l'ÏOc,9.ӁK͔c|b@ IDATyqWsk*֭d.)*%*nF&fQL'y@i0N1Q4:r J1\\)KaKTlНULn4 @Ī0 tF5 U#TCE8PFALU T!=6W~|4_n$23yLramR51\(Zy MCm"1((n3vtp2)t@FA|2ġG:ľ{v" E =4$bm&(`Zr-RljQM,+yšxk*Ex '9+ O9?ǤN R]Ãbh F3FbKDAxEg+!@t$.NBA:m!NLg(mHQq'qRhFq}=I5lsY$G.*IgRd(}DJ"k ("B!;.%QgR ä@b|aPU!mJY0Tzs6:-f  HG w|#|g v2[3`fL1IeY#>s2[ė0{|8(d{f@ V-(%"#ǰWU&4UGb^︑tZa m\G9sCؚ8 S/iflۢjf|r a&q*T"ӧ26mb(Ic&hi[Rj C#F"M%7B; a칸++J⦳]Y̴ @Q$TCÍBrJPsn_kpv M0Г<;2&BFn6D1)DBFO6| 5ѣ3T'Tj*x=LA]<٣uwQ\\DL% % vE JUв~~<(Jʲl).j(? ڞו$ yZr=W7@driPniF1 'ZEѨ{.N60-nlU>5q(xߛ_ФAEt{dRYTap{q@>:;G ֎sjzIij3!'2-,qˮ/]G> 1(B$#($k;Y)Si")2N&s%g柾u/}^B|/~I Dt#Y8~߿%r%ؽ*<5|VEd3}/Ns0Ì}]|gbFY%!桏?2ЛSs:j*c Nq27‚crx4a( 'P{rDMjPe'}\wU ؽHҖN0Q s/Ϳw#߻^w1hb֗v av;gqV 2!/󲭗P8ĉCkm]LƹEQD۠,? x>^(M3:ϋy+=z8g +2ab:Lb/Elzj?;.??'X(8eÏ9cDh4j-K;pFL%> >== IK!]F +T:Eq[u"MC(B3IbӯN qr \z"5 tU((&t}"G!#P n$!M K$_(m慢AH> "$+>1{v3}%:D|"TXɐXdy"KeT >Zl%a&AmKش$qUS8yAE&YH$ ǰWE$+*V:*۸^N./8qZ$$ Z^uHyzaLAB Rv $`@1ȥ2ؖH>?&#=Q4 ja)q,(ة4H0ghm Gh0Yo&j#)hR5({0x(@QQB$EA*2aI|Ma0T:;\/VQ4hi՚ 4l,# C HCQHRtd Fƈ)aZMݙ \rlgfq~ޞJz*twK(5JFweW9av>?,^tx"oR5)=5GȮY4 ǰYlԵKB@owbPTS 7_"52H(/R5d Q;9@?'Io'VJpUPo9>yS#aiʭl:{X<4ɛ^F:GgO3]_A"L&C,4 ٨˥Ѩ!Y 5K /c-\sَz^\% CR4ilhe(aοirۓf]אH2,l UOxHȤMV]OP_Zgi5*${Ie!aRQDl|g>j*N@M(2,j ? ME}\2 l#IB 2&Rs%sO?7Ǖwrm /Yɿ?0\!&'9!aaY)L3McZi(D2D44~#$϶mV;ЋЂO($& 3 IuM`f5/}C@Da" hdGWM:J!BID2~a:t7X]"q+;{Ie͗Y/Q@lZ~nZvw…!Z|JB6%1=sMQ5*%~N= &8ۑA!#KU|' 6@sva0jЏR&ZJC sty"2)Bbd-zzz(, u$kڏ$%3ab4T MQg +.h6tUJ;yڇ0L>/q]sf_>Co#JETa/yfnʉ#X%Jq֍l۰bU/Yl4tZGޠlX(ogSOSTB)ϡ!" Yr3Ѩ0V+wɋR/ap^FQB@%js Ǿ?~Oď<} tiͶm24TVgw?3[ l^aX,n-Dp81$L YP.7ގ90|߸w,0=w8 ;<8?=ʕ 2//pWЎ3+gX>6 lt0i G s:/F**%U<sart*Uw{i"d|-+`٠S*G궫o~_^weqUg9j_$wߺws=o{﹏p}²jJf^^==ZY/|-7ɟ>M9\RcT0fY9?=u.w^|+_r:&ǩW.208Nׂ"Q:k-$%Y^0n7cfnpml۹C bTi$n"p0w.,ae֧8I4!D3_FAa$-`}z/B ˱iw;R6ERCzMR$E:R&q4`2%%|^G-Z&\˵0I](L _F]gر/)T2_z-ϡ.߃`E0-gşO>(}4FQZAhKMEBC 2#00L5-5z.*ئNmʊ+d3M8M|4-S,ϱq5-gOѢZE[ 2<< JJ4ٺmy;+O>4' _|㣟5n3|ㇹvf>V{g9oZχw\W<̷WrZS~-x<+}/Ɇ+6XB5Om`x8i^lR UT̝kw,zm2BIڽ6.p蕗)]Pٴuh+K4k%M hQ{Ł#}%-[v?Ik1}%(J^4Ӱ)Gn@\211*v XW_wgΞg cJ5Ief޽{9~xfۊC칆ZKLLL*OGNgw]M؍Z="bUkKaHXZRgYRyNK êe 0X;{Iӓ!>=& i\˲0;dϠmzeIa[Rz\F)85E+@ _TѥI`KnRAƄ - K>0:$Iu=VrȎةDWDא@M~@>=]dJpA nv+[w~RRCd5I4nfU]BhHٰJ vJ@vh\\ZcldM,/D AuhYX*v.J!4ڭqJ MIC'CJ ͡~)>X4;8[kb hVQ:$2Dk ||?<~JdJ"S! t&7#"X^aYP2 #L3+]%]CBC ta0\V=k9s.P)eaf&:A@S([a t:mR/ >o>Ru,CG)eZ,/7]oųNQ3e5k_$hJD!abY: uª ;>ioєoglr= km āWYb)ЩnfxpNNDJl+6䱐QBoqUo"[f' # νtUcsjI/r2jX뱰QE[f>'˞w||C07=»V&v&޳m XIu +,8jYhX̆g;C|߽xᇨRw֒:>O9ta珜b!P\{ۍみ֖f6Bd9Uu^<~ 17n&(Q*7_Ms.Dϙlw5 4DWȵE6髶;SgmٴJ7KT9Z6gΝeqF$A"]NDҿ@Ymض}yv1RH'c[ <4#h_Iyppe"If=}&6\JuR}˃)|BCɔ$0-o2 EdRӈH1|v1LD} ad)z$I򚠑 H^v| F) Y4SV2EFeCm2{OnYEpia\V+T_jkQ*$pL h7BtQK W3}F(ہ0&bb)[XtIUvuiTGu..2Q>N>`990ca$Q1Btv 0 RQFLn"S@O#T`n%/ Ʋ?l:A. fh@MjCf,)%gܟG\.& dI4Th,FR r*Q$if*F&ց(M>f΢<\-%-z^|R1f9XZYv=SM*4=~U8Wレ\q|ޡ*4G'9G gb)6)iZLֺI-3n2咅z':;jg .|nfkX9zuҧ;W#"/<Ok\s/ ?-s8\ _sΝС L:y74 8Fpr6O!"GՖ/9bX$ #[,2d{]"\H:$Ձ2Uz-˲ ;L M%m[)(B+kI(WKnSHMP04mP{א*E WTV@iSS(M#A1%I` i$(c %:Qt?! '1I>IO Hsɲq*l(M2TXM;o瑟#,.ZksT2~*\){HI \cx\;R~X c8 bDBL'È4 IzkKL`;|5(^QoYϚs-yž}Xc$);]0mLäVf]DTd&S&BmI0@XYF*㸕 px~:}AfH#, UDtTrJeA4$%/RX8ad c;# l!M 4lqCo4^["bOreG=o|ۿSGe?M3 yo1ƳDZoaZe;QDy, ʼSaeDJ(swïcXFWH49Fcd| >gOgifG(46[ozz,<֭W IDAT2yE5e1y qҤݛgrd [Dy=*\sլ șCo릮_OΞ#oe{=mnz^x&{ zXKhuhTFnˣ'YjBA37cepzֳɉo)9nڽMp]sN2Pb"2Y;K`]8+4E!Akk`8\Cj:ga~Ã;r%jΝ;Kwm$m8M=nf14Qs<J*\3Yx)z '7Zk8.[jNXBIE#S7iQl߼-1a`^jm%ˋ%31IS4O$E%1fnEID'$&RKH-e5W1<9vؾ}3o{uw~\'92[nƴ^q]R n!ЕN3??K%XE9_dǖ͘ 2֒--e,?CjhضEMl, \(r2&EII26Z"S,])kDJRa"g똆ü#.]8OJ N(V%5lNhS'OdVí[&.yI-H2f(K#ҾJr:@l^4l3>6>qu"L,I4(Gkk&S E Z +-F&MNs 8ciyFe\Bzmc)\t$RM~dLDaDD7 kn&zbKKH$Wr;gbS= la;w񳧸p#ǹ+T|BrLmNapOᙧ/>Kp?[84>ƹC(q'%0 ^Kr+*q̍ 8y.$>K{q͈_9̎ \3n93@\^C]\D|zv1PRƵ~c^{ak,זI%g5rf ض}GȝT*lvWXW|-*jul76ʓ,YA|r%ɓ\VnA4[w_I\䑟<+<ۮU6n¹3 ^H冤AZ&DIp%ow/)8wnT]yB;Żm]m֞~9ST!O/,:d۴6׿fx k dWs9腗;oF[|d"ob=~ ~^NbxJ;'q+2~C=xU<%8qGdǶ0EghQ4H< $i5Ā0̂-mF&GZfpb ,/Y@r2FnDdh!"J Ib՗ J,L.m";0Ltʚ6aN")<2B&aG v1=I3( *#|'1d;HR?ieSĥM} 3X]Ť}EIsG2 j]!,0 v$ SdFh!Y5T)a1>{ŏfW(Tp, Hq^9WϲR,R n(0 4u{[>x(s\("*N!}Gޢe+GEF JٳarԿ>D-Qg:ܲwϟ&߶kk,3Wt =#l(K]=/ SLaiP*:G4ugtdVyEץ|?F)9ץn.Xn=y"},+4 n|} `í~c<n{y?̟=M@_Sg6s#~] O39_c`vnHaxPƙCU142C,go;ɝwX<%(ԓwX># cG\AFY:M;0atj={.sqarb)Oط:<,'_|{n+'9t"v߈a#'冱rYZĖQx^ ) EȩN sǸ M"H`z'80>9 k4"/wK38V StiZN l6,pe2P $8Z}nJ!\A6zBƊ r6 6[MPH*W*bĹ̯+Ef_S*JA(L#k'4 H%RDwq]D =,?hHaJ"-B.ҴBҭūKlaЈa9:r VPkt[ .ƴuB Ub2UdC)D"d غB & 3?uB*ۙYҰ(W"귈)M#I`mq{ $gA,e,- 0$fCE(V$iAiFp6 AwE0 ) QRb6`%.Iom`) C&q' A'TGi.1 q"5LSX$j<"lc\D$ eF4HCZ88-`,Lǡ[oa%PP&QlEhA r{8<,7}GVX:|V'Cw/U;t)-v]=ϽAμ\#gT8v9. 4pz_r>G+Qr\g1 }Un_cp[89qaڭ%>O|Uu{;\n)Nec۸gffkȃ5ÄikKϲ(aU^S {,-iRk Vj#Z8x'_8M'hM!5`[%4,RP& &fX.zyf "_*>5ʃ#m,@եTF Ye|t ߏjLoX|ˮp.\Ef&drm{)L@!I8. A]'N|TIBa5)DIJ4JR^dP=k IR(8XE jv.N5?& |ßG'yӏyϧo)'og5a`F̞`pb\sG[id[e#,Kffh;g~i^>q\#4O)jc4*8~ ]fMed8$%:ĪT7fNxY޻_1wkuSGX u;pK-]?zc3~|/bH]qˍlxJ&}"NR0"YX*|v{q]G-rκ1&n0TeǞ]\x|u]2%5 ֲuϚɔHJ6U.?хyֺ=ziR^}I+Mjcf:GcE`&I*xg v{,9m1fxjlx _ lwAi5_"I0;1PU.n/b~e(Z):h60JVы#*c#2N%C&hhwL1WbU'N)2M-f`a*\âhء$]i4K3%iFcti`:i}Uwz$1Y Y,A,1E\Ә(IѲ$aYc7\KRYQ̵#119/+|RPʳqLˤt}rYk0,bAq֭P)>J VXKP`dh J80LDa^2kJ0LuSf=RQ*UAMJBCG])뚘oƘ _ވC8[gs\S'CxGͮX IDAT^k-np,Onb=3l0{sk'O.bf#}+1`W(%|e4BhW:!Q#@vcH- e]4$纙 4,!V>l&} ĩB($T^L޶C̥KM8J]jy']IJyem8IM:ZpcM+8Ͼۯ`3Gx7=xao9/F|;yṐt#S*O~=}ӍԗiԖy;>|Sp"2Ia˫ob!rx,O697L}p׾v>JNm݈y2SppH)Ɏ9u[0Put]i䝐;o,?cVE}{m>^Y̓8ItCqn"6ײk8~,zѡxtN=r 6̜?ĕS+<{%=:s{v/G3UXd˖"wi6 tN !H(N$_H'p7lnݲF޳ޫX#\.sߜ>~#r= &^.owtF4=ԡ&'_5KXc7߹nGA[#lv>Ee ț$Nԙ;9)gѰxH"fσ1<q P% ^GSDw]xَ{((&vkl|]]Tk%dܺIVT, w}֛gffoWz m]H4Tbiޭ;BfcK4pUQ6%GM0=VKﰦnjM"`xaHi6M u}ZeǾ(>)( c ; y՟]1B4$>f?D2Ik&a !A`Z6~Kl=Osb3,,Zn} _r]S_Cc, :$#">}CUi.>}+9ˠ2\+.v`A@ddEB94$\6GѓxJSgT X&dT&Ha(j 1-*H誎&}x{>=,~-\(yDtd- w!N#[o2¶Aب֏rOM ]};<8{J-d*"|XBWΒf;|\*cO/P\*#) :zNlG.ϻT_eY<4@Ĩ~x.*afiu׶1l\w7.l6G:85C:w||Q|fOo2T7ixcǶY_B"i,.4VyY_/4&ϞebrQYfl[;z"_b|f6>1N6Hr]:Sd5Jm*f^O~oo?|oFfM/^>uZzkW_Da_}|}\{/=nA*IƳ|SfM9ŭ}szYi l Fض"j2ys<+Zdlcӝ72N>oCGߠa]9}w Fi"RJtcfQPu -QyZRd *c[VĵM|ω๨@4 \]"|>cR=Ew3cǘ]!*n3,IrKP5)+(HO,CdEM< ӳk#n_ k9_M[y+_|gWJtysS/K!Ns'70B@,"/15SҜa0FY\) p%/|FQԤݗȗcyfinnZlĨ4 !xM TUJ iZ*m]=dyLE=dS(I$q|!* !^B7/PLR""˫hcuRGtKs(nB DEUo"ɘ)%I1IBk BJ҅- ~ WetF:X.N6J:&A2~6 rn @%C6up#if-(Jg?+ e,EH`.[ zYQp\UUt::;h5Z YCE"(g;AOʤrHJ wd! ](GrM!2)_Qu$$\!|T-Ie$ĸDîiJ$kT і*OLWu8Dײ&|j˶$USd sm."042]]l"N7 2FW}5,,2;xZm QQt =GOĨժYKL58ȣԚ&3ANr< 2={4;yj=ٵYVpc3qJw-oPamOܵKms5+5~u9ԛMrxV3_ ]je}Fe76m$yl1JWYce4v0F"8ə< p˭Cطi3Vz<4O5z<ͪɡ,K&\}'i-%bϽJ(k?za_y\oq?NMN;/ބ<C]wwɳXDo,MV#myXBQJK xFn[&"#*4lJRx$qL jcWd&,"qm?E\eyoL_ ܤMߊ{_!XӗfhCeWB0Br )8CLYx)ea룺R@\BN$Kn`-F\tw7m׳nFZd+xO(xCR6ip(Ӫ mPZPV-i@!ƮDq-%aDd*Է4es)ݷ9G>fnb"TcG`6[΋ژ`䪫/G"o:L;rZ(8G*L H I 4Uj5R2EdD1 =A1QVPuAF=\TC%>Be,ޑ$Б7cP=XyCrۇ>SXj3(eק4~'!ϿE?5 y$D$4BG=G9FBH-21:0uIv jer#h)zǵ&Vbyn YPH%SثO$wk=AvÁfRp}ya8E3Cmq+yX_&?TṳDMdYX^&T$j*˳1q0AQkmm?;fv1x0i}~a}u9}z M+)V}.OGNddYՐTwaK" zW1S)Pjnfx^]+RgixCeyD.r7r+tWblqܩIƎ"PE|"ft>gY<ӟ`nt1 {GGH%ڲ&^0|b|u̞845Cid1@U]ըW+ȒB:tؖU$^/rz)nݰɋ<@ޫs˘<\&Ѿ1&\0jzAHRi.ǿA:Օ͈_G};6AfF:sG(ktu9Nz2 3lL&EIULN!1b?x;]\c\뇸q[8OI/,eI/.V',?0bȲJDz$vꅅM(pwGn A*! ~(!ųXFبi!Tu\CA},BdIB?۵F a2 \\_b4y%?CQ aL0҄K 8Colۺ,*88UW̮+qQL︁3'+v֬q]FvK@/>Y Qq˭7sɍWCx/Qe@'/p| IDAT&CG_KeN4O_.6b릍\~Z^~O<թןwwx_7cL:/.2LKS6܄$ 4rY7 O 'CϿeQTFiWG p !^t ]RK~E|:)2i)="6r`f~5Ē9nb=F09=KieZBi~2m"L;jM׈5:E,,.!t0plt !PCMXUY@bщ\u,At<0k5p auC/QY2d'ޟgpz@T%K ,ϐ L:FX ]v}/8E &_mG^˴9R)# @3mDƪU wFj_u}j)ťɄ"م疨/Q*VjXnT#4hFP5#"iڅ pa¤au;~$ #ܮx{j\gxpم*3*Od5W1u 3g-=~Wco8rOHV/>?>x17|;`o% %V1#KhO(&G^|cut~ ~CD:_;_MCzqJMppw/HqaRyM[T8ZϮbgu^ʼB+݌46wcK;KoN4gI7mze .Mj>Z9+ӽ=zYIv{0rp wzMͷ+g3:\鷎171'\9Cqy%z{I*Uzix٢0:*rd7_9Ƀ?COIWM23O=ņvRm.oZc~ܭS<~۴"|(XJT ʚ#M1<{}4o@Ha❙|_{`Qv\Oҕ_Ypm9<%@";ػg;]VRA6݅x8Ó\a%{47\dP%}v? 8Swby_mFQejocN'ϱqxkYT(b96lOIti"LsF{}%LE **Rm,+zwDfjE[C|4#9U߆}y"&;yE ?i % QQ@Z$T+Q^YbW ^GdB\ v\ lfrn@U z\FU|l+|gVّO8z7'iL48w|>AsRăj$B!n6Y?Bo!`Y- Ɋ ?m[Ȳ@躆8hJC %|*K&ƲlC_2=Ϻ#x'GNĜ_%ҩ fd.G>paSTuu*`(2bT󘙟giv9&gfmUI: r,'ױRbdSY,l6u*#j*Dj8Unf`{f4C誄_(a{~@^ORCznRw3?-4NefevM4_W~Wos}mKig3 6~Scm墑&wڛ5^elqXO}حzSiÇ/|{YJKc|?W7V(YZb^ѿoD{Z埿5Rx $غ}өoOӿdʹo]w}G}k15q3UM2:~N88ӘG020y2==YBUA2 JLځTNюo4fg0q~?Oѓu6^z)/A*Ge4I5]3̝b`kQk)epxGI( 391AK.zUiJEZM ylt1z,N(!HɦsMlበt<ѧQQ ivMg1MEr=}S1Gdml۽K3a3-%TZ E&)O#-zbi$Q%l9KDLYn-(z{ma8Nb8NdZGB] llƳKثcqD"ԗYԜؾjص: E3'54"}ĩ GOOҧوb㊽W!/-2_!n(Hm$9Jssx@.Ѩҙ2vKӴu Jtϱ\ |UQ^^ZQ);&,bd=NDcخKBp i.E|0JrOm˒̜X#O?Xu 'f!3˗24m۱FF[f=L )JBM5-2J\%@[# V$mEӖٸNGs $̀gQS ײD"IggPVqk2F"DjfM/HМ<Ķ6G(UU"Yb#OˉA6!OtS$/E[7>Ś\qF6?w||I~yH197>= *}7{[whk|=1}g^S|[4 . :US~~_a9Ȳc9Mv`yv YC$N#:A&ũ3ZUr;Y ܱ#U.yoCz6~IUۮe HJ&I؏c$.CdϦ!~|8놈7KshnǕx-z G9d! At UǐOM7HTu rŦDT9@cѿ<DX%). :"QlI} YSDd"Ri d}@wDZE#d VAHDTUn zoW68`I&J +h<3 󈺎E]~z 2g?mY9w_/Ri>q?|ܶ|_bp}/k'?}?I[9~Ϝx08eUٽO|(P;͵l;>O8M rrdiR+/` 60{䅇ϰ2t,뮡$78X$-CsL/T'E컊5G5X[t>(Hhw? >IenC#tu,>I[e2I|UfcL5TZU&ϕh6`ia #cyb[ Ov\v;NaFUS+rA]Cd_ZoQ\Zm6)AgR ݬ=HuXY߹Ͽ@a7He,;Gs%>;ΉC,ʹ g^m tѵy`z:(J8-J ܢ^`6ค Iв(-ѨIISiT݈`Ox<8.V0 %\:v#z"Hb4ԬvEF`Jw~Wutf+:4X4|_1EYiKu3v7޶ZsĜ3#+J{SxuBQ\L׎@qEӘ#H癚@B4Lt IFD-i,YwrAiY6 $ .c$e6+qzvIM)>qJ~ ޿k6OE Y0`)C3)azqw婇)|Wmp!*|X7B4UBGIT[&JLY5 Бi&6NTa\CXGdK:"հ-$)@EdAAW P6Ac9Hࡂc:5$!Dv}f D"qu;5#=yM&gs5|'WXg^!YX"(Y^TUH//ok=?uwv >lX'=uޭn@rYmܻOWҢ'BN5)Υ(/#!BEOiZ!j#Yv4ݭ1>noɇk\y-o lK}'̢]$Zil[>NvfXqΏl{jH/eoҽf-#r'x?]7o' F&8w,l4ARk ~G\xO֫YX@LM#/pDIE"&77L Z2pt?-LnqP*"P3r]W3)窵̝yҳ| (p1$F4e -:ؤ1'fxg囟}75cϲEk^P ʧǟ7?[L6Ov \߅;[%qNoMlܽ_<,X|aZ#md&QH4OSJXGGw:fghv].Hn]f V'w1W/2PuF22׮eY3EbY?5'ϰ|fFdϓ]X0.qcM mXb>eװ+hW7*e9O5@qe>$ѨDIr-,@ ^$M*c5d!PT 6mA KpiyƢ,HآDcZx Y\eajK8 HU(XĪ ^cCŹ~},#/3/]⤟&&p8Y93z lXŇmhJp$pЏYdT' EQȕ(QDڲr~ C". hAѲL1G6R*)rHXyęTXKskqK|{e*9jco`M<-_s 1:ct50i߹+\ȫOoѽ*ګ'ŒYme7M x h )(2a9H)<>~X!fkL]qX, {n׵!'QbZ5n4sE/CLCPĢ*I\D )*>ݦ4)DAD[ DUZ⤳sc 3[JIW+M85Oq"PCEgq.Zky;M>v2v+rsآu|QL\{e Y#JԢ 8AY7d?8RU]\]#AIBDv$o# 8e!^ҨbKvmįrMP8Uou6J:anf33*>502D5)u/ˋ!J:1l]$ziCT$]SG4 5L!Њ"" 8>_`0iV.Z(P_Ls 9r$&8qãi_87hQc47ٸe#kn7s=妫JH+z0_϶6W)zx7m#D&GV%:WU˨~m "xyL\e1_$Φs| kzz\r3'_>@k0[IOИHuUMJdc#dR6"=1,nضjub16u*z466,Q5,* ?meTw2Z2{n~S;ٹY<̣Uv;hoD9F"l[IP%$g>#/ӃXXFOӦ$tLz{?͝Mٱm eZۜfΜMcvzHGR*"[7#6 2-M BHC{;\0K'F]Mj!Eê(28DŲH D 5AT9w B͍L;=wN1`B\s̨:7er]#wgۖyg_#Q?~^<9KA i6272IŨsnW8pnO#IEY}F~}evlʵ/jǾ }t$Oe8|]>.ruc3 LTMDF'O?GKk`_}s'rݪul[M\9kMMIϟ2^ 37mo1E(Ǐa1F-ж %5_zap367m:9O~p !WƵL a!4hUnlF/T?t;>7Sfi kXϥ^(rdDž9>SΡ6P.0bG{@*lz PiJMZQі,.PWɕ5ˠpq aV,L͡ X Oe:&#%+$5m<=?mZZ;`ha];0`fz(pYC_Q0ݶm/ar|o Q U" .X"ڎXK˱++,u%IKQ-Mih`FXT. hm]T*J, Q#3c)145 $0(Z$5 DI{S.Y\ T: [Xbz? hE"5$oBwB")T1,5}a(gOq妭n،Ԉn&XGTF:N8B,JU$uv6s$ZQ^|O{_DTffeՋ}9^Q@DeKmnQZ[XsM4??y(##9rP$!d3Xn' $ljLjǓԌ:m།NTTEQQUp2cQpfؖDuC6; !pu퍤/LP*ո/=G:}G,ZnQr6˴e^ּv?n;ǿ&O0'8<ƫ<pIl(u7O3Af&ihJ 4 ,,RYdse&.MI~]yv*@R?5}VhoѨSA&fsNijcob%063'cO\SU2 yB~?Vz֬cR!ZQԱ ?L^Ǭ[DBQ"03ck9QkWMf.I66es~TM!ԀjdsE,=()hE!2+, xҒ]zyuq\/v#KރxBCQ@,QDTWkTtçx\\xS;U%Ы8AݰqI&]L}&ț:"F*,[/F Ä0:IHYQpk+ (g5?l۲.F@! kLBT:fso-RF\< !P DY4޸|/HlvBOmo#w:EVA:w"&l}U/^x'SD_#WtyײF|ܤs߇>O޿3lXN(ie9,K|Vy |y:Ns5٧r>ٹj HZUyת`diFjY #3Z rd`߼߻]gs\uģܺ=^oz'W8"[7TRMor )pUήe$5&\N.;nriHfrYout޸تN}+nN5366.Lc{z#=Ev>͆ص: EH6еc56QSR yMMk:jvtä^өUkX@0!#i*㐈54 f@ZR^AQ$E^-b`A8'uF&/11&(9Udc6GYL)3|\NҶ m8H)S ).jpQTpMU*HH(&/ \܌a8J8܈刘 a x#`C7)+}Q%V%"0ڬߺl%Lz7CGGSShH,_c8zj1̓Z{¬zO e~2U+ÿs#;1^O=7nXRU۴q] u'\6^_bd>@8.T(K:3h୸nKL^A b펫)6 Se=۶! 9$>r͍-`:r,YƧyxdKc[: >MFEUE\¤*BA3Y "Z̾سE <8{|S ]~ٹ~څIvTd闙Gr/.@j.auc^UYo$Cժu\A@i5\{.Vx>v,oR_VĊf2u6"zB1?RpUuTRm+Y&C#ħ?e<~3{lm[o`S&ξk72ulߝKݳۖ9w>ܵyw6/?=W]@umuw^E'[{i/<(_OXc̰,R%@!?/) C! )]8bBF<܌OP(f 1Ffur+[v)C!^G=*pYjXI0Z 2V{5x|ck97K+Qi_&1} <ױQ0Ivחy9YNS\s;+zWq-'Q]ۺhfHBL8b[GE"s|,CCu䠏Zqw#ȶۨzz;q\FF0uR@g{;~M#N!"!vJ-^,Pc MHDf+띻(-330+ |-! R( B^Qsz`4"j -2u$S8S$qq Ѷ "bJUGq#DVrE,,* R ɸK.Fl29fF'(u!F[Zy{rXizzF[a~n;iRPEƨ/n1?4Q*(/, Kkؾ6o?93߱t"toq"7>Ė|;bUiۀѳo-F7kHfyw/>xC[N=~WG}:~cu;sCS"s' J琦xчYAl05>ˮz@/17ښqm]ETkyTTMcٮ /bQ\XYXm]FcɊ'4mdYAV\AD%D #(ʒ)Dq%-,˲v<]>O7 FbQ7k?i3IENDB`znc-1.8.2/webskins/forest/pub/favicon.ico0000644000175000017500000000206613725535356020620 0ustar somebodysomebody &(( @"""""""""""""""""""""""""""""""""" """"""" """""""" """"""" """"""""""""""" """"""""""""""""""""" """"""""""""""""""""" """"""""""""""""""""" """"""""""""""""""""" """"" """"""" """""""" """"""" """"""""""""""""""""""""""""""""""( """"""!!!!1 """!331 !33333 !3"""!!!""""""!znc-1.8.2/webskins/dark-clouds/0000755000175000017500000000000013725535356016613 5ustar somebodysomebodyznc-1.8.2/webskins/dark-clouds/tmpl/0000755000175000017500000000000013725535356017567 5ustar somebodysomebodyznc-1.8.2/webskins/dark-clouds/tmpl/LowerBanner.tmpl0000644000175000017500000000000013725535356022671 0ustar somebodysomebodyznc-1.8.2/webskins/dark-clouds/tmpl/Header.tmpl0000644000175000017500000000011113725535356021646 0ustar somebodysomebody znc-1.8.2/webskins/dark-clouds/tmpl/FooterTag.tmpl0000644000175000017500000000014513725535356022357 0ustar somebodysomebody ZNC Web Skin "dark-clouds" by David Precious znc-1.8.2/webskins/dark-clouds/tmpl/Banner.tmpl0000644000175000017500000000007113725535356021670 0ustar somebodysomebody znc-1.8.2/webskins/dark-clouds/pub/0000755000175000017500000000000013725535356017401 5ustar somebodysomebodyznc-1.8.2/webskins/dark-clouds/pub/favicon.ico0000644000175000017500000000206613725535356021526 0ustar somebodysomebody &(( @"""""""""""""""""""""""""""""""""" """"""" """""""" """"""" """"""""""""""" """"""""""""""""""""" """"""""""""""""""""" """"""""""""""""""""" """"""""""""""""""""" """"" """"""" """""""" """"""" """"""""""""""""""""""""""""""""""( """"""!!!!1 """!331 !33333 !3"""!!!""""""!znc-1.8.2/webskins/dark-clouds/pub/dark-clouds.css0000644000175000017500000001257513725535356022335 0ustar somebodysomebody@charset "UTF-8"; html { margin: 0; padding: 0; } body { padding: 0; margin: 10px 0; background-color: #444; font-family: verdana; font-size: 12px; color: #fff; } img { border: 0; padding: 0; margin: 0; } /* TABLES */ table { font-size: 12px; border-collapse: collapse; width: 100%; } .section table { /* we can't selectively remove the border from left,right and bottom so we make it look consistent at least */ border-top: 2px solid black; } .subsection table { margin-bottom: 15px; border-top: 1px solid black; } table thead th { background-color: #EC8E00; color: #000; font-weight: bold; padding: 6px; text-align: left; } table td, table th { padding: 4px; border: 1px solid #000; } td.mod_name { white-space: nowrap; } .evenrow { background-color: #555; } .oddrow { background-color: #444; } /* !TABLES */ /* SECTIONS */ .section { border: 1px solid #000; padding: 0; margin: 0 0 2em 0; } h3 { margin: 0; padding: 5px; background-color: #D49712; color: #000; font-weight: bold; } .sectionbody { padding: 0; margin: 0; } .subsection { clear: both; border-top: 1px solid #000; margin: 0; padding: 8px 10px 5px 8px; } .subsection div { display: inline-block; padding-bottom: 3px; } .subsection .inputlabel { width: 150px; vertical-align: top; } .section .info { display: block; padding: 5px 8px; font-style: italic; background-color: #777; border-top: 1px solid #000; color: #000; } .subsection .info { margin: 2px 0 2px 0; padding: 0; font-style: normal; font-size: 80%; background: transparent; border: none; color: #fff; } /* !SECTIONS */ /* FORMS */ input, select, textarea { font-family: verdana; font-size: 12px; color: #000000; border: 1px solid #000000; background-color: #999; padding: 2px; } textarea { height: 90px; } .submitline input { width: 180px; } input.full, textarea.full, .full input, .full textarea { width: 430px; } input.twothird, textarea.twothird, .twothird input, .twothird textarea { width: 370px; } input.half, textarea.half, .half input, .half textarea { width: 280px; } input.third, textarea.third, .third input, .third textarea { width: 100px; } input.sixth, textarea.sixth, .sixth input, .sixth textarea { width: 50px; } .checkboxandlabel { white-space: nowrap; } .section .lotsofcheckboxes { margin: 0.5em 5px 1em 10px; overflow: hidden; } .lotsofcheckboxes .checkboxandlabel { display: block; float: left; width: 100%; margin-top: 0.5em; } /* !FORMS */ .nowrap { white-space: nowrap; } /* LINKS */ a { color: #EC8E00; text-decoration: none; } a:hover { text-decoration: underline; } table thead th a { color: #000; text-decoration: underline; } table thead th a:hover { color: #000; text-decoration: none; } #menu a, #logoutbox a { color: #000; } /* !LINKS */ #wrapper { width: 800px; border: 1px solid #000; background-color: #333; /* for the menu column */ margin: 0 auto; } #banner { background-image: url('clouds-header.jpg'); padding: 0; border-bottom: 1px solid #000000; height: 100px; width: 800px; text-align: right; font-weight: bold; font-size: 13px; position: relative; } #banner p { position: absolute; bottom: 0; right: 20px; } #infobar { width: 800px; height: 24px; line-height: 24px; border-bottom: 1px solid #000; border-right: 1px solid #000; } #infobar_ident { float: left; padding-left: 5px; } #infobar .loginbox, #infobar .logoutbox { text-align: right; padding-right: 5px; border-left: 1px solid #000000; width: 270px; float: right; } #infobar .logoutbox { text-align: center; width: 100px; } #infobar .loginbox input { width: 60px; } #infobar .loginbox input.submit { width: 50px; padding: 1px; } #infobar_ident .user_name { font-style: italic; } .successbar, .errorbar { width: 790px; height: 24px; line-height: 24px; border-bottom: 1px solid #000; border-right: 1px solid #000; background-color: #900; padding: 2px 5px; font-weight: bold; } .successbar { background-color: #070; } #subpage { padding: 10px; } #content { float: left; width: 640px; padding: 0 0 1.5em 0; background-color: #444; } /* MENU */ #menu { float: left; background-color: #333; width: 160px; padding-bottom: 1px; } #menu ul, #menu li { list-style: none; display: block; margin: 0; padding: 0; } #menu li.parent span.title { display: block; text-align: left; padding-left: 10px; background-color: #333; font-weight: bold; } #menu .title, #menu .topitem, #menu .modtitle, #menu .subitem { text-align: center; padding: 8px 5px; background-color: #777; border-bottom: 1px solid #000; border-right: 1px solid #000; } #menu .parent { padding: 0; border: none; } #menu .modtitle.active, #menu .topitem.active { background-color: #D49712; font-weight: bold; } #menu .subitem { text-align: left; padding: 3px 5px 3px 10px; background-color: #999; } #menu .subitem.active { font-weight: bold; } #menu .subitem.active a:before { content: "» "; } #menu .subitem.active a:after { content: " «"; } #menu .subitem.active a:hover { color: #000; text-decoration: none; } /* !MENU */ #footerbar { clear: both; background-color: #D49712; border-top: 1px solid #000000; height: 20px; line-height: 20px; text-align: right; padding-right: 5px; font-size: 80%; color: #000; } #footerbar a { color: #000; } #breadcrumb { margin: 5px 10px; padding: 5px 1px; border-bottom: 1px solid #000; } .textsection p { margin-bottom: 0.7em; } znc-1.8.2/webskins/dark-clouds/pub/clouds-header.jpg0000644000175000017500000007446513725535356022642 0ustar somebodysomebodyJFIFHHExifII* z(2iVCanonCanon PowerShot A80HH2008:09:09 22:21:592:0220BVj rz   |f0100 d 8 2004:04:07 05:37:572004:04:07 05:37:57I   .`"$\ d  4 "\@ DeII &fff)))IMG:PowerShot A80 JPEGFirmware Version 1.00D @ 2!V"@R980100(CC   d !  S !1"AQaq 2 #B3$Rb(5C%'46DVgw2!1AQ"aq2#BR ?Փ2TFZ' W>3K wvbnvgT߹*/YgKrH6툕,q&io5pMElǰEJs $8`785ha( ž71+oTu ԈM6|&$R 6O刼miV͔*AK^'o MAG2q]T-WTث 7f-!WװC`q"Nd;dW=ٮTUoISMQ)idapK8rsYKbJs-.& ZzU`uǓIzTf099cNcӘ:t1Acssg-zkjM55i|y\_{ĝ5݃T5(Ox45-Ğ!ɥ멪 0-L~UG$M(K77ƅ;^geATخs)$-T%a53cPlL>Zz"Mr{aQLZFum`5\+t:M݃7 u]EͬvQ+e#c Zb.u/Sq~ ;j p ҅P%D~xT/Eɵ4،My@{Ԩ˨2Q>XeWq+bu /0Za` *oɤP-ō AWY s젓ac3]@*N ,9%ePVۀ:YW&t[|].0d9%N,fE^V'|(A6ɲ),K/@ mSm*N+SkaS/zM`oc0|X̲T0 $1$#ʟVKz #;ٺ]B}& p;Nvۦ.ٖ-$vk60X0 @xJgU_#ȗ5i1G'Ao@n`n8m,gԵKXvK7ᯒ꺅ٵ(>9VY F)c#H _f-j,ʟ1Dﲖle[ z4m2tT$v]$[y%tco KQAaF8)Ym8[JWoZ۝5$*F8a=ڂ{X^x{0m|+8Al1FNURFך!$ Ȭr]稃+RǸx]U,zi=,3݆1OVyh1?I^Zf9 ' O*PҰe`;|CWr61HWNHB[+#J|C[8A-*6zg[޸DK)[_sj0<en " :o,6A؞f_ݕ]SEk ;4jI(ւ@TQlH E,1 ||߮ R$o6)6Rq&F*<`xYnڐ_ eNo:;C`ēKN46h@)o~8m*g<SQK"@cv$6xkkcxZIg*UI9aufx&Y2bt6#PVU y}˩P1]>x6x~*{c&>qNTg5W SXj@hfӅC};vAIP[B1ً%Z)9b_tm{oa_a8rki#>x:jT2QqlcMkstV:e?_ VYt-T8  $$7C|Pc @281T8e4cm#Ul81/5*qu 61,Xo R,Wz^'Sq9ccӘ:t9:il/fl 'Vn23"UQ犋XeRN~vF$Oax`,w[z`mb ʐoQ)c{?,!6-!`[ A3J =sabX\}u$X3'Rծ01,IRM'ۅ(Enǭߝlof(qF{Ϳ8#mMm 狡 1! &7n-ͳ\1.T]d ]۸7%vb$?`PA 1YBP JF݌ӈd#׶l`i1&Gt%o !Is!T(J,c+8p,EvSN̝vn\7b]Moٟ0CVI-k[P)S;,<})q{X6 K) j*-p؆rXe4HmV8<`kvC`3QD1a=a#Qˬ.9x _+98u Pr54o3h}qiEF+A&qpXQC3m4=~~uw6#ۇ(9Y$)nSJg,dq!EʑߨFfmN gS|l,R.)ᘡDuC=>൛O~&}MMr,~Đlm{|,ϖH-:* Do1Ո?Im`#1=MfV{O. ጋ/%| 'QZ Z*{eGFUuILAeWE#\-Jh@5=N'"](6$ f063e_c.OM"6wy\f`)8; MY OTFn̾eeѱ|bNgjR+hT+Fso]8hưu'l]T*ժ-7~2b\gǞۉs:sN1ӧ1t eE,MmZ߻kԶ@3A*Z>t7cbVs{}HK[FFDGmr-4)iP/ÝS,U59X iӾSpSS3*":EG ԯxsJl-x^!PaUyY|tY bQ$"A~{醤}zў]DG*M2FMO zUP!zb 1x 5#9Fnvw*NzIsY%R^M]~F9VE4,1% ;!)WTm;`Ӆ(w7J4,ZB`";XZںRH!f+?8P\c䙗Rߺl1 oA7HrH &_gwH&mTZh,5@l r` l2kSeE~d6bD{X0\ aw܀m? eѨդnv Z'Jd5242&m_*jbEJ _'ͶlIT1 @X-Ea$F~ CB7171eH"ĽJd H-jqS XfC~ؒ$Xu"&uZIg/uXjEql1 fbSq # Nˁ3Uf9TnXzZKd0e!#˯۾N|V-X9TDMٮ -3?5 PX[m8Ҩ60Ml^Cynn׷h}1!HkIfc}~J-[ @Au)4xXbjʂ?$8+i֡gN[4|[Q bYM'OTUcvI,MxMs>GKG!8_sx>b{[ShPI锖בW5pM%DrI], fc6"Me4#3gȌ>zXB\i53-6}V d6NA]&uLUP0GA\IZFҌw.zZޠ1zh,,jp%lfdTҬ]Ci4ߥ}J&8 n.l2v_N.of!*`O1zX`cې1Ԭ F$7X[WDž*p)XQmcy{gIiIdz|JwNV״$`A|^D]]@86aI ̀0: h*vX8"ĕ$86ھHR`d\%Iyr:%bXT[-fI kA>+|?-ܧ3^(YV9v`]g XV#`5u8ͧMfrY`'bͳr $Ɲ$[PҺY&݊1X[ R j\W5D@ ^fÞy̱?UZ)&/remVPJ: PRxJwKyW&[GQd̨E{t?̪U.VDspp60BlXjd9:Is2+C*5 /b);j!G<1 sϪnwp8uiG3m PUBB#oI(u8sK{Ԣ1: !B{,I =|/dsO`ɖv]b'n|F Thmk0ZLq(s0DۦxlN@Z OPJg.c#nYT(فKX ְfZe + D >8THt7*3*M)ia!tܒL !C0Rq/!iHT4koAo4m4!ީR\kjvs)ON*{4EU@]S`x-E0;CYi%=I;)hf7F7C3s3ajq\4-Ru~S)ju;ű|kMs ^!.~*%|XkY :fT\d _] /vkB[w+]uq\i OFPX=ꘊA*;GQz0!͵t'ԵU-0l(;j:c;ub[8 $3K+XFǠWA [Y+4_bN@>8gA cD*v9MC ׶Go*yNf{Lp'/!O9NcRvЙ);H]$MwGVtE$Scc+t 43IOPxDfvO/̟??'oRNeR5AKSE31)) evWϙ'Ws8r>mFcAG_!yϯgc<ʾ+)㼯,֎. ?ĺ=M٘z!'QJ }|}9Fniq矿v\UUv_kե43y}$2 yKr@{IS)CO{l:*$BtC{H4=rnN(9b;|wl-jdRGw@'#M3?La&6b/%%MOe 1}_E*G~>\W$Pl3}\Eg.q/_Ui('$]Q̤\c_GRRE,Smo.lzn K`(2bnbȆEqO2.}J{oa)ӰrfrocPœ-~8˩k /pGo*ڝHmѥdF zMUTM>*“N`f xaZlTʲ-E Ze+;[i925f_$jZEض%袪`X2$f2]Dl0d#KLE Q1EgEAIቭBiߣ2^SmQ )Oacmꌆ,|xߏ$Z?N-h23xI ,H8z˳2u2]oǟJ?̱ m-4"8 φwnZy^mƢDpIE{[)ljWIֹ11ISSxR[S-ǡFXO6nneדg䢩T XH-|6:,3q0Ԕ&ܣ \ :""\]zQgzHHJc'N:qy݇WmǦliHfXYX% \{p0 kU$d_<5JQc3UO42$5ǶFcwȥ_(C $.1s3xL2~&˵'7 f-R0K!kY xjzaqp! szf)MU/n3Wk̍(u_uzT99&Iù 벉%i%gP/\Vy*ĵGMOP5R[-fjE̲WN?{%\UM Ci@O< EhJ#@X/Nv}?kiR'$m<ǖ3LUZj9״xCU2/wˮ3TU+*ZuL 6[zrE"8Xxuo\?SkCJjbKŘ)sñM~o?NsPg37Wk&CT|$grPlkѪAsG@bRDٻQahE)q jV6N&sH2=' >twJ(Xa AOQMfm>c0(H%TBUZs87 }ŏƢTfNV \܅ةS}bӲ N:G_׮ p?*sÍ`N!MBTŕ.m1Sui2H#$  rTYFv@}Z~?'xl6?AIP3xؑ{cpr_E{@t;W }_˃׍xG=ے~lk?_6a{9}߶akIٽYVu&3#--K{ҍk-ouߣZG{Ck_Ĝq)Gvw|SYYGC5eNwW+(a#"I; %armgg6/19e=y3 s9a8qd=LLiSX%FVTN*sc|_/|Jß|_ܼ4J$Y)v7&Y iؒPI麯= Դ\r'jnQԱiأxy}?~Mă*0xkΫfX!lf|nOz(?ggKF>}<_gٳc./WWs,$RKLt gTz YNC9؊?H/ғ~œ]96x8ckQ'Ed[TMK R`gIb\\^Q>JľG#5УJ1DoU+HSw?%4k&H=g>ynDc8Xsg.~{_K-7~ϴ굵< {JSjk):}7斐)]׼gżMq Ǡ1`onʡhi*@pP6[I/lG,밆qe&x$ XuSlBYP 2=<~WKJÐ@ZkC35í٪DE#P>  )se*`BxP68 Q -ن;zl-L_g:ij4.vk|l<4 (㊚ E0m\#^Lx҆ªŗs|"q5!4x* M";ERʳK8ߪ|a9Ru,,<\WJ&62S)뇺T,fR7ٿD+(]s H cE>YjXmR܏{2[PyNP1 G3Wjn'УCbꚍy=KNj,/y0iԹFZ_ 2iƴ{̢mo@COLF+ Iq6, x1.Y!b7ǽ1+21 :~ ]MY0?1Zl1@I+0`"q3h楮FY2-cT w~qJM 3T,F ^_p]F]Bgx+:u_Sx޸W\E 6kAO$u W49dB-27m^[qt絳EE"o X oaw6jK#gP g,Q _ پhƱ%(AsSaLTəxl}v?K*=Oz4PcĺH]2&KF*De`F[emU m AyaSCmyʱ,I :Xå@LmRk;e #0mph[`իK~"Th{oi24 dtuw[Q JS+'ka=>aΙV>~92i@bjWp͸7zm8PnfN/:~) x=D0 to>=u+L︛]PKs}Q^]pQH m:GF Q9pE;|LpACu܀/厹|LuqbIͭ2zMN \ގ$D) sH $n7Hor$/Ęwo,gdc/B<{Hչ,:۹٭8iJsRw.ҧ2_FI~8{VnmOC D@đkewSruh#`.S{ʼnCYmb:x8j.BXlE XҁjP[*|F Lڎ͘3(Q )4QIOaI@7;t:GN Xȷ\s*"͢\8珶72rU/'lnΧ;'OAtEc[UbЮo$I!T>~WGCMĐSQs/4}߉媧)W[Ie>p՜<&GѢu^ OȯbN[MrY\|r\}XvRW\ ˩dVy'9Vl.~IywSnV2Uu2ưD@Z3?[_HOhSDDH;o?6;^Bz{Gͧ}&1nfU\8%'g72}DuZT^fA&31L߅x,ȸ뗜}ïmWgWKĹmL~ +ck'b;_pn ~_};߉}y',U$278ZP1I LI-&/L?@L7´]48K5I@cCUQjry(*?I}.a7lu@iToC S{!p{/1"O-1;<똵ޖ"J;" ]6iN$C"9u#alȼ _S4:Dln^TLn21RI\.Ԗr Uf 83F -د^,+#H7#1Q,*-,Џ$䫈F0E99)x'bPHpB*o|rI3P\evLxYh b-xJ\$Tb{qJJ&m{5RL5 $Q9KC[qH잎z:a"h%DomP$7YpbeΥr0Hy zj1Tn5ϡʋ D_*c~Si{"Ӥ_6M$XkhQjuCċm"QeI)Ylfi h#Y:l@pq9UcqE6D +6ْq92LF7•ų{F(#mtX(|F1xcPqT ^3)idbFmĊLh$@ws-};V UZpEΠN[u}ݢHT$gRN/cRʄ(Sr{1Z}@[S7{`{PRۏ0PÎbzILdM!} ei%ҳIH ۦ~DžRy3>qUBt!1u]8;a@J.1̨jaߖWng9qĭ/{{ځFCkfu:ڶZ c:BS ٧s>yUȾ >QV5gi ٍeQ{}fFƪIalxwo33I⒳T$[Řfru@!֕HpVݔmۯ{w ߴ\/f\mƹ@")c_MN=MݙѴ=A(s4Zy'ǭZ$צꑌRp+x*6jvrAЈEAupLzOUkUHN,mM#v$! fMA^z$yk-6vAezIl2X'@G*:q{&Gg$8Ñ|ERq6]s<t *7!Dᄱ@1B͜T& >/WLLǙ[}9#.r&* pzE%1zN f3[5/_,#XUٛ'9#<JKW1\ּfb5 T%ʟ3T; ..l鉍F\Hpv0@}4A%j'1;Jdz0j4SF%5}>6#y-)gIKN~c̵*??n VUrBJtv>\3V]=n182d|Jih6@bOJ}F> }qq@TeSQv`M7@LN\0Vy⢏jux9f¤ 9e{xou?2gk0ʀZ"@r!R+s+AW k*A= #'.DC!fx.\12Ǒ⚢X%IF]oS)Lί].{ne|e QK<2VP'1&%B\axzR[ 3n?HL34#XWIT2SȻ]dE@fv lTD5ƚY!TSajcޞ&G*֦Gy*ZMWUVޘ8vT11I }vLw˛ziƱ'Dъ 7|JDp^OгgΤ8W3(*c`#.,]GEq.!)RTzi>*U^냽S$es/N]YቔW=Y%70`?H opKr{Yz X8{"/U;E*G=2I̻I|8*2H>wouIXl#Mwav#p؟Q8yI,]<1aG R:M)[1Ūw[_PD%u'ǧV}Rp$}TJ-y[UզVE4ĆB3k׌:tXX mCzUZ+xҵfh+7ո_sҙZGk׸l(sԩs,=IB[~+͡QQ۬'N@1gʼ"4갓g!{0RCHyCsئݔvUj2KUO5Vȃe?\lB3_u)ݝo^knv" ]$š K%o[mҎz5zjOr LyS[n &OO<1ƀ| Vv*n~",c&ֵ1654nYOWC}KV'>=ǵifI,~F"s7FXF<Ll5Z`'W dkd&f,K\鋄z ["U5R1 l+L[~2LRT^ ች+$2&h*:! ,sp gX mܵr(jUPUx_pp0A6 0$6c MT;vGxmnM\S(QwjE|e,KxSk_ '[O#7q*Kfj C!EQuT=½7H#]Mƅ5޿X?)aYTHMUL KZ ="$`R\@]^71Rʌ,@Bn[o,/8 @H'VkJvleqdBOۧ/Nn%ul_p1=y%/OKpqkX󬪷;}0Y`D:H6cb? yG pK t9FE] %6KI(" F '%|MCPrFi@3L0 e~^3 )h~WRa:c\{ I}G9q/,xx<5γ\[UQUJ婖g,Y$ImC5ZߺrՄ[g2n{NoquXH~RW%'7̠SO??Mg"~,8K98;xAQORj̧Үѕaok]A&s&=y"NspXbf#W4IhDH\9]azP =żIy<X,+ٴU%uCEwZdgrM&q.oVLŖYC uHŷPQ#ضl!Rv]BP[, ; ͿL4)$:C{CМ m6J[v1wo;ϒL"$/701k0}V$kl8k)M%\٥InXjr>IWIK\8dz)8=HI8Gyx``jTf6IΞ Z`୵$m{u@Jey{ex#gvb~C6ak086hR ɤi6P6UH(PwϮ6#ȩSk<¤J$+a3JY]|ywI[Ht+Ƭ@{}j`-5<0yK kK!C]x=*kHM4@X@!@į*rFuE"v(sXW #Q.׿ۆ]Y2$ƲZYag@[1OdUNM^6 sg02*mʕ 00ߺ\]qԊ}\Kd1e53uPgxL諣h>[a~sr݀s,\`I4n>?~+Әqh= w\(^c QK,DH(xZT*!7Z=%8c5Ge&R銷3VGL&Qb Qo,}fq5SUQI.kIR fIm4ZCZP:w>$`6~V2p{iKSiHssxZ0RIJCc|0Rlҧ[N>n5#73桬V4MlhS%58\~f ^W ana*&Ѡk|~Emu59TTTUK1Gv{w}7ƥWԓjcyb VM#E@ը-;d~%AWAKNc=Gͱ\,/}Icp-b1olHm3=Lɥ5c VHC0:;錒6)>(.c,F*K$'~Ю6,sInf|AžՂ2bTBv)lPm TMI%GLj&Fz^؜ zJO8B 7RQ$\0c9 |L -PE1n!H*Kx)I;.l:o^lM눵e <˯&%XwEYP}̾1xA r%AR4#?yĬ9*x92<.`du-cO΍K3h6a+H!q`9I>vXi{9U< yB_ ftHut6Š2 T6 }X0|'!263cȀֺ!)} ٳqL% b0VԾС#Kc_ZV6+h w(9uk^\ӂW?~t|{ݱ &[P돎Y^mV@*6k6 ͩ]Q#d>o{FĭW/;CXeGlc0KF\)>8 VF .E* {T0I`m~qFcGvX_8u{f*j{pd\y6Y4RM+ܰs τD:,iAS\X~8TIxꅳ Ԝ!UK#%aÅ6kJ:(3yi);9nt0P{40לceɁZC% ~U,)Rc0;L'&(Yj?ŗ}kJ}K|q{:/"$;:Z d_oLK{]13TfՓZ6ijI'`~mDVahJ2X*%h?xI Ele릙\hɸ=/勹RӍ<_8s:ڸr梡CRH27iXJ2҆vqK U6 Y|MMG2b^In *]wCmE3|(f=O ;]/ i(i*6@H{ڄ dR=pyMSiXii&K+^3Q{yx"P<>]$TJPi H-&o?j9o-YT,'cƽq\9 rÔi w4fINgBR8 _ 4Qeӫfc R׋r4ӈ!ħxzan4mVl.hЫc]Mlf`RapRSI](vY܀F8`)OhŞ'&ij֚Ue3>^rRapCil5.,f︚,(d+ +&kk6>{g|W]U<󰹿fv=Wrf+Slqm̷iZq>/g%V H9erq6lI"퓵fK^5(:x|1 O\&sÓuD~o=ѫ%PB};Ǩ<ߩ]TMp:/auq=Lol#cf$s8 2i :$q?/^Vnvq$p&"p/qeV+;PIu;x/$R񒫪&q,n9E/gC56ߩÍ]t]o/MʜiewmOv^# (o;mĘĂ[}kr5nHX4Pm$- _㔅9ɒ=E*0Qx|~8}GM=O3$oAΤg1];ΎX' HE[_vq]bI(ɴl }l2V|he5}=ǜTMLp8%)+.a\QOz\V1&PDYm# |G˾%GM Y:FYލ{3CX Eus\zNj*b4 I{_ ܪ$nAZ u 8'e\**%x< g|L)I.@ ]?J0!PO= , IViS+o8j8y(yh{8o/ isRL)SUUh[o㏜|sLʨc$ ;zbZNz7[+J|.t;F*l=Gl@1"UFPDp"iuO. SF$ze]'P~8^MSbG(5}6cHi6^ُxLť.mz46ĿNkkO[#mLoq7zĬ?vcHE@ 2_YR4SeUQm\owx4/xb^HAT%M>fgtSKHao| JJ]pT_qY7;E P upHJyu]ڄ;84F eKLeԨ}ϏpREN6)حoKz4h2D'vV'ṿUYm'bdؑjZyb&B[7Ɲv!Dˌ3̄f۞AWJCqN~%'&gOh+= 'fU5tםaH@X S):Վ|fd83*|'`XGk<=\7eX)\70 5?߉eˠX왉&m0CEۨyW<4,IRǧWγ4hj2G{m#l+ѣ(6ѯzWљgv!a755f)`Ǯ])ss+ʹ,G\H!lޱxe0tHMߖ؝mro8u"7&$b$PB:_,rdI %ְ;zcpA 'ĵt.]-aTV%CC97!\u錦Ğ$/2qs1 m;\_\NA,`1i%.E7/c-!Ir_Q/(0ݢfX pɒ冡%K)[qErPߘJ)}؜C:/ǘȤ,TјYCv_S2EI=-n6WޢXy"Ka! ۓ?enTk˛:0[ϙWC#k:Bۼul>|$}P7ո~s 04p& \iSf%i ^ V3E"U2Q۝1re֌Hm;bOr3h2" :׹8>j[ pTu?"ud LbK0<|m8kJpCj|d>o&qc$F)FFWWwg"/RADbCޢ0[t(PtW˪,`w|8 rKUK${;1P:x}}'˦UbZa.>W34㴌bz*}R3t,|t :/5"I*섆d 7uoGR9Vt_7:rSq}>c3w$z`G ' w[=o"͒ԋ,-~Wp}0×dK_TTm%CS?|<E%B8GlIBjjD 0iS1i&VxREOqv_SWs$, cm~RRf3A&c**GDOm`u^-|sM]4SQٍWKG=\YPnæ,+ R^pì ( $bUM ?d蒸;pD[a Q0fF тUĚ_9S:F=&Cl^44K $oL8,"6VPOtRD#_ǁ&3O} ;鿖)~*G稱ZQ~LVt 6‚s$ZjXS-ɣe]o 6v {(UoSB=,@ ͇ =*rJ] { L"_z12&u9\o(XgJ @$'LmWƩP:(٣Hi1S\x7vIT.ٛ}}G4Y|V`'}o1 T9{38RUنy&yAC\IКblv5ڤΨU9M7SW$uV'#c0ղL@n-5v.c_ T4i4{***i*`o3߅%͸36;EeV6np̒!SI3H!mNCnI71)TVbljlyS?y+kMϖi2VHjdb #~ǡDZ`-EjkHY=OO ¨;w0P1/\)&壼Q̉m` ^*fUAKzX]ZVV_,@1Ťvai&a|_w*9W5S%s^Uڙj :Xy?iz?#^`EBĩ%-cׯ.L LFosf|~[ $Y/r@ WK~"Ͱ#S _~XU9u`6]#/6,@ŅALZ$.pK^qY(n0,JHqF[Q6WFd|uJ9`*ok~c[1$*w# (ɢb`-=hTBP;|鎬 4#M؞7z( !Kj*H? .*IB-lj(Bw-m6 9ssISCy!Њn]U]ظ[ ./cJ.T3rXBCĐ/F,2"xXH(wiXTȊ QqvD)`tۦRۚI3*Ev3 T(r, >$l,}V7lJ?/ҪU~eC9;%1&u<-z/r;?LWwBOjV`AaD=?fJhD]XN]7%[p4­S\:wv ;|41HHLjMŭLY.9"LM6 Pg`5#*v6XrG`Z!v[oޡٻ IEC!DQ{yA]T)1s$+*>V\?$CTZe aĘs'U2& *xr7c4|YE( ]%ͽn VVe*zXJTv]Ĝfz5] ~d|*g+i!k_~5tD-5WW&:ǝTSAR\\؜Ls1+RWk87ceR-З+ߊ)j ڪ8fu2cvxK4/唲JC3ݛZGˡJWe,;-pbG /ć52 i4L/$=7^fm,.6jX*ca.\[–}_Qm-$NY뎡!kH4dmF0mx7/i] iUUBXu6ֶqbIV#" }VyaJF Z=Lqq {N˩I0aV*Nًn8q \ͿzjoQcpRWfqK.+[èǟ#zzt8fG=%diV@t7q{0q-i2hsz]%z1qs>dumEQ0 m{k8|h̒35_H k5F %mTL EоQ YQm;ݙTP0dP)Bmaf͑PĨ®adZJwcQT( Ɣ,qc ,Y֬6!SQ[43%b5n:Ʀ[Il\6-Wʂ{{R^.jiK?VK<K~8xߦLyal?1rۈM$,;6*w&I7c{x6 bF{uv(] C1[: L4WQ빰S!Ze`%A\q+@>"]|ui=/6U׽ͮ#,8s3)+{^$B b˅x c7JI*K MX|be  QYjf$':&B<xF(Eɒ tjn dP[i_1*%MBBj5`a6* Y_A т 

/msg *status help” and “/msg *status loadmod <module>”). Once you have loaded some Web-enabled modules, the menu will expand." ?>

znc-1.8.2/webskins/_default_/tmpl/_csrf_check.tmpl0000644000175000017500000000011513725535356022425 0ustar somebodysomebody znc-1.8.2/webskins/_default_/tmpl/Options.tmpl0000644000175000017500000000003113725535356021624 0ustar somebodysomebody znc-1.8.2/webskins/_default_/tmpl/MessageBar.tmpl0000644000175000017500000000031313725535356022205 0ustar somebodysomebody
znc-1.8.2/webskins/_default_/tmpl/Menu.tmpl0000644000175000017500000000411613725535356021105 0ustar somebodysomebody znc-1.8.2/webskins/_default_/tmpl/LowerBanner.tmpl0000644000175000017500000000006613725535356022417 0ustar somebodysomebody

znc-1.8.2/webskins/_default_/tmpl/LoginBar.tmpl0000644000175000017500000000122413725535356021673 0ustar somebodysomebody  
znc-1.8.2/webskins/_default_/tmpl/InfoBar.tmpl0000644000175000017500000000064013725535356021517 0ustar somebodysomebody
znc-1.8.2/webskins/_default_/tmpl/Header.tmpl0000644000175000017500000000124113725535356021365 0ustar somebodysomebody This is a wrapper file which simply includes BaseHeader.tmpl so that new skins can make a Header.tmpl similar to... ...this way a skin can base itself off of the same html as the default skin but still add custom css/js @todo In the future I'd like to support something like or even just do a current file vs inc'd file comparison to make sure they aren't the same. This way we can from the "derived" Header.tmpl and not cause an recursive loop. znc-1.8.2/webskins/_default_/tmpl/FooterTag.tmpl0000644000175000017500000000000013725535356022057 0ustar somebodysomebodyznc-1.8.2/webskins/_default_/tmpl/Footer.tmpl0000644000175000017500000000051013725535356021431 0ustar somebodysomebody
znc-1.8.2/webskins/_default_/tmpl/ExtraHeader.tmpl0000644000175000017500000000023013725535356022366 0ustar somebodysomebodyznc-1.8.2/webskins/_default_/tmpl/Error.tmpl0000644000175000017500000000011113725535356021261 0ustar somebodysomebody

znc-1.8.2/webskins/_default_/tmpl/DocType.tmpl0000644000175000017500000000007513725535356021550 0ustar somebodysomebodyxml version="1.0" encoding="UTF-8"?> znc-1.8.2/webskins/_default_/tmpl/BreadCrumbs.tmpl0000644000175000017500000000046413725535356022374 0ustar somebodysomebody znc-1.8.2/webskins/_default_/tmpl/BaseHeader.tmpl0000644000175000017500000000375713725535356022176 0ustar somebodysomebody ZNC - <? VAR Title DEFAULT="Web Frontend" ?>
In your subpage (module page or static page) you'll probably want to do something like this... This is my super cool sub page! If you'd like to add your own local css file to be included after the global main.css, you can make your own Header.tmpl like so... znc-1.8.2/webskins/_default_/tmpl/Banner.tmpl0000644000175000017500000000011613725535356021402 0ustar somebodysomebodyznc-1.8.2/webskins/_default_/pub/0000755000175000017500000000000013725535356017113 5ustar somebodysomebodyznc-1.8.2/webskins/_default_/pub/selectize-standalone-0.12.1.min.js0000644000175000017500000012252313725535356025072 0ustar somebodysomebody/*! selectize.js - v0.12.1 | https://github.com/brianreavis/selectize.js | Apache License (v2) */ !function(a,b){"function"==typeof define&&define.amd?define("sifter",b):"object"==typeof exports?module.exports=b():a.Sifter=b()}(this,function(){var a=function(a,b){this.items=a,this.settings=b||{diacritics:!0}};a.prototype.tokenize=function(a){if(a=d(String(a||"").toLowerCase()),!a||!a.length)return[];var b,c,f,h,i=[],j=a.split(/ +/);for(b=0,c=j.length;c>b;b++){if(f=e(j[b]),this.settings.diacritics)for(h in g)g.hasOwnProperty(h)&&(f=f.replace(new RegExp(h,"g"),g[h]));i.push({string:j[b],regex:new RegExp(f,"i")})}return i},a.prototype.iterator=function(a,b){var c;c=f(a)?Array.prototype.forEach||function(a){for(var b=0,c=this.length;c>b;b++)a(this[b],b,this)}:function(a){for(var b in this)this.hasOwnProperty(b)&&a(this[b],b,this)},c.apply(a,[b])},a.prototype.getScoreFunction=function(a,b){var c,d,e,f;c=this,a=c.prepareSearch(a,b),e=a.tokens,d=a.options.fields,f=e.length;var g=function(a,b){var c,d;return a?(a=String(a||""),d=a.search(b.regex),-1===d?0:(c=b.string.length/a.length,0===d&&(c+=.5),c)):0},h=function(){var a=d.length;return a?1===a?function(a,b){return g(b[d[0]],a)}:function(b,c){for(var e=0,f=0;a>e;e++)f+=g(c[d[e]],b);return f/a}:function(){return 0}}();return f?1===f?function(a){return h(e[0],a)}:"and"===a.options.conjunction?function(a){for(var b,c=0,d=0;f>c;c++){if(b=h(e[c],a),0>=b)return 0;d+=b}return d/f}:function(a){for(var b=0,c=0;f>b;b++)c+=h(e[b],a);return c/f}:function(){return 0}},a.prototype.getSortFunction=function(a,c){var d,e,f,g,h,i,j,k,l,m,n;if(f=this,a=f.prepareSearch(a,c),n=!a.query&&c.sort_empty||c.sort,l=function(a,b){return"$score"===a?b.score:f.items[b.id][a]},h=[],n)for(d=0,e=n.length;e>d;d++)(a.query||"$score"!==n[d].field)&&h.push(n[d]);if(a.query){for(m=!0,d=0,e=h.length;e>d;d++)if("$score"===h[d].field){m=!1;break}m&&h.unshift({field:"$score",direction:"desc"})}else for(d=0,e=h.length;e>d;d++)if("$score"===h[d].field){h.splice(d,1);break}for(k=[],d=0,e=h.length;e>d;d++)k.push("desc"===h[d].direction?-1:1);return i=h.length,i?1===i?(g=h[0].field,j=k[0],function(a,c){return j*b(l(g,a),l(g,c))}):function(a,c){var d,e,f;for(d=0;i>d;d++)if(f=h[d].field,e=k[d]*b(l(f,a),l(f,c)))return e;return 0}:null},a.prototype.prepareSearch=function(a,b){if("object"==typeof a)return a;b=c({},b);var d=b.fields,e=b.sort,g=b.sort_empty;return d&&!f(d)&&(b.fields=[d]),e&&!f(e)&&(b.sort=[e]),g&&!f(g)&&(b.sort_empty=[g]),{options:b,query:String(a||"").toLowerCase(),tokens:this.tokenize(a),total:0,items:[]}},a.prototype.search=function(a,b){var c,d,e,f,g=this;return d=this.prepareSearch(a,b),b=d.options,a=d.query,f=b.score||g.getScoreFunction(d),a.length?g.iterator(g.items,function(a,e){c=f(a),(b.filter===!1||c>0)&&d.items.push({score:c,id:e})}):g.iterator(g.items,function(a,b){d.items.push({score:1,id:b})}),e=g.getSortFunction(d,b),e&&d.items.sort(e),d.total=d.items.length,"number"==typeof b.limit&&(d.items=d.items.slice(0,b.limit)),d};var b=function(a,b){return"number"==typeof a&&"number"==typeof b?a>b?1:b>a?-1:0:(a=h(String(a||"")),b=h(String(b||"")),a>b?1:b>a?-1:0)},c=function(a){var b,c,d,e;for(b=1,c=arguments.length;c>b;b++)if(e=arguments[b])for(d in e)e.hasOwnProperty(d)&&(a[d]=e[d]);return a},d=function(a){return(a+"").replace(/^\s+|\s+$|/g,"")},e=function(a){return(a+"").replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")},f=Array.isArray||$&&$.isArray||function(a){return"[object Array]"===Object.prototype.toString.call(a)},g={a:"[aÀÁÂÃÄÅàáâãäåĀāąĄ]",c:"[cÇçćĆčČ]",d:"[dđĐďĎ]",e:"[eÈÉÊËèéêëěĚĒēęĘ]",i:"[iÌÍÎÏìíîïĪī]",l:"[lłŁ]",n:"[nÑñňŇńŃ]",o:"[oÒÓÔÕÕÖØòóôõöøŌō]",r:"[rřŘ]",s:"[sŠšśŚ]",t:"[tťŤ]",u:"[uÙÚÛÜùúûüůŮŪū]",y:"[yŸÿýÝ]",z:"[zŽžżŻźŹ]"},h=function(){var a,b,c,d,e="",f={};for(c in g)if(g.hasOwnProperty(c))for(d=g[c].substring(2,g[c].length-1),e+=d,a=0,b=d.length;b>a;a++)f[d.charAt(a)]=c;var h=new RegExp("["+e+"]","g");return function(a){return a.replace(h,function(a){return f[a]}).toLowerCase()}}();return a}),function(a,b){"function"==typeof define&&define.amd?define("microplugin",b):"object"==typeof exports?module.exports=b():a.MicroPlugin=b()}(this,function(){var a={};a.mixin=function(a){a.plugins={},a.prototype.initializePlugins=function(a){var c,d,e,f=this,g=[];if(f.plugins={names:[],settings:{},requested:{},loaded:{}},b.isArray(a))for(c=0,d=a.length;d>c;c++)"string"==typeof a[c]?g.push(a[c]):(f.plugins.settings[a[c].name]=a[c].options,g.push(a[c].name));else if(a)for(e in a)a.hasOwnProperty(e)&&(f.plugins.settings[e]=a[e],g.push(e));for(;g.length;)f.require(g.shift())},a.prototype.loadPlugin=function(b){var c=this,d=c.plugins,e=a.plugins[b];if(!a.plugins.hasOwnProperty(b))throw new Error('Unable to find "'+b+'" plugin');d.requested[b]=!0,d.loaded[b]=e.fn.apply(c,[c.plugins.settings[b]||{}]),d.names.push(b)},a.prototype.require=function(a){var b=this,c=b.plugins;if(!b.plugins.loaded.hasOwnProperty(a)){if(c.requested[a])throw new Error('Plugin has circular dependency ("'+a+'")');b.loadPlugin(a)}return c.loaded[a]},a.define=function(b,c){a.plugins[b]={name:b,fn:c}}};var b={isArray:Array.isArray||function(a){return"[object Array]"===Object.prototype.toString.call(a)}};return a}),function(a,b){"function"==typeof define&&define.amd?define("selectize",["jquery","sifter","microplugin"],b):"object"==typeof exports?module.exports=b(require("jquery"),require("sifter"),require("microplugin")):a.Selectize=b(a.jQuery,a.Sifter,a.MicroPlugin)}(this,function(a,b,c){"use strict";var d=function(a,b){if("string"!=typeof b||b.length){var c="string"==typeof b?new RegExp(b,"i"):b,d=function(a){var b=0;if(3===a.nodeType){var e=a.data.search(c);if(e>=0&&a.data.length>0){var f=a.data.match(c),g=document.createElement("span");g.className="highlight";var h=a.splitText(e),i=(h.splitText(f[0].length),h.cloneNode(!0));g.appendChild(i),h.parentNode.replaceChild(g,h),b=1}}else if(1===a.nodeType&&a.childNodes&&!/(script|style)/i.test(a.tagName))for(var j=0;j/g,">").replace(/"/g,""")},B=function(a){return(a+"").replace(/\$/g,"$$$$")},C={};C.before=function(a,b,c){var d=a[b];a[b]=function(){return c.apply(a,arguments),d.apply(a,arguments)}},C.after=function(a,b,c){var d=a[b];a[b]=function(){var b=d.apply(a,arguments);return c.apply(a,arguments),b}};var D=function(a){var b=!1;return function(){b||(b=!0,a.apply(this,arguments))}},E=function(a,b){var c;return function(){var d=this,e=arguments;window.clearTimeout(c),c=window.setTimeout(function(){a.apply(d,e)},b)}},F=function(a,b,c){var d,e=a.trigger,f={};a.trigger=function(){var c=arguments[0];return-1===b.indexOf(c)?e.apply(a,arguments):void(f[c]=arguments)},c.apply(a,[]),a.trigger=e;for(d in f)f.hasOwnProperty(d)&&e.apply(a,f[d])},G=function(a,b,c,d){a.on(b,c,function(b){for(var c=b.target;c&&c.parentNode!==a[0];)c=c.parentNode;return b.currentTarget=c,d.apply(this,[b])})},H=function(a){var b={};if("selectionStart"in a)b.start=a.selectionStart,b.length=a.selectionEnd-b.start;else if(document.selection){a.focus();var c=document.selection.createRange(),d=document.selection.createRange().text.length;c.moveStart("character",-a.value.length),b.start=c.text.length-d,b.length=d}return b},I=function(a,b,c){var d,e,f={};if(c)for(d=0,e=c.length;e>d;d++)f[c[d]]=a.css(c[d]);else f=a.css();b.css(f)},J=function(b,c){if(!b)return 0;var d=a("").css({position:"absolute",top:-99999,left:-99999,width:"auto",padding:0,whiteSpace:"pre"}).text(b).appendTo("body");I(c,d,["letterSpacing","fontSize","fontFamily","fontWeight","textTransform"]);var e=d.width();return d.remove(),e},K=function(a){var b=null,c=function(c,d){var e,f,g,h,i,j,k,l;c=c||window.event||{},d=d||{},c.metaKey||c.altKey||(d.force||a.data("grow")!==!1)&&(e=a.val(),c.type&&"keydown"===c.type.toLowerCase()&&(f=c.keyCode,g=f>=97&&122>=f||f>=65&&90>=f||f>=48&&57>=f||32===f,f===q||f===p?(l=H(a[0]),l.length?e=e.substring(0,l.start)+e.substring(l.start+l.length):f===p&&l.start?e=e.substring(0,l.start-1)+e.substring(l.start+1):f===q&&"undefined"!=typeof l.start&&(e=e.substring(0,l.start)+e.substring(l.start+1))):g&&(j=c.shiftKey,k=String.fromCharCode(c.keyCode),k=j?k.toUpperCase():k.toLowerCase(),e+=k)),h=a.attr("placeholder"),!e&&h&&(e=h),i=J(e,a)+4,i!==b&&(b=i,a.width(i),a.triggerHandler("resize")))};a.on("keydown keyup update blur",c),c()},L=function(c,d){var e,f,g,h,i=this;h=c[0],h.selectize=i;var j=window.getComputedStyle&&window.getComputedStyle(h,null);if(g=j?j.getPropertyValue("direction"):h.currentStyle&&h.currentStyle.direction,g=g||c.parents("[dir]:first").attr("dir")||"",a.extend(i,{order:0,settings:d,$input:c,tabIndex:c.attr("tabindex")||"",tagType:"select"===h.tagName.toLowerCase()?v:w,rtl:/rtl/i.test(g),eventNS:".selectize"+ ++L.count,highlightedValue:null,isOpen:!1,isDisabled:!1,isRequired:c.is("[required]"),isInvalid:!1,isLocked:!1,isFocused:!1,isInputHidden:!1,isSetup:!1,isShiftDown:!1,isCmdDown:!1,isCtrlDown:!1,ignoreFocus:!1,ignoreBlur:!1,ignoreHover:!1,hasOptions:!1,currentResults:null,lastValue:"",caretPos:0,loading:0,loadedSearches:{},$activeOption:null,$activeItems:[],optgroups:{},options:{},userOptions:{},items:[],renderCache:{},onSearchChange:null===d.loadThrottle?i.onSearchChange:E(i.onSearchChange,d.loadThrottle)}),i.sifter=new b(this.options,{diacritics:d.diacritics}),i.settings.options){for(e=0,f=i.settings.options.length;f>e;e++)i.registerOption(i.settings.options[e]);delete i.settings.options}if(i.settings.optgroups){for(e=0,f=i.settings.optgroups.length;f>e;e++)i.registerOptionGroup(i.settings.optgroups[e]);delete i.settings.optgroups}i.settings.mode=i.settings.mode||(1===i.settings.maxItems?"single":"multi"),"boolean"!=typeof i.settings.hideSelected&&(i.settings.hideSelected="multi"===i.settings.mode),i.initializePlugins(i.settings.plugins),i.setupCallbacks(),i.setupTemplates(),i.setup()};return e.mixin(L),c.mixin(L),a.extend(L.prototype,{setup:function(){var b,c,d,e,g,h,i,j,k,l=this,m=l.settings,n=l.eventNS,o=a(window),p=a(document),q=l.$input;if(i=l.settings.mode,j=q.attr("class")||"",b=a("
").addClass(m.wrapperClass).addClass(j).addClass(i),c=a("
").addClass(m.inputClass).addClass("items").appendTo(b),d=a('').appendTo(c).attr("tabindex",q.is(":disabled")?"-1":l.tabIndex),h=a(m.dropdownParent||b),e=a("
").addClass(m.dropdownClass).addClass(i).hide().appendTo(h),g=a("
").addClass(m.dropdownContentClass).appendTo(e),l.settings.copyClassesToDropdown&&e.addClass(j),b.css({width:q[0].style.width}),l.plugins.names.length&&(k="plugin-"+l.plugins.names.join(" plugin-"),b.addClass(k),e.addClass(k)),(null===m.maxItems||m.maxItems>1)&&l.tagType===v&&q.attr("multiple","multiple"),l.settings.placeholder&&d.attr("placeholder",m.placeholder),!l.settings.splitOn&&l.settings.delimiter){var u=l.settings.delimiter.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&");l.settings.splitOn=new RegExp("\\s*"+u+"+\\s*")}q.attr("autocorrect")&&d.attr("autocorrect",q.attr("autocorrect")),q.attr("autocapitalize")&&d.attr("autocapitalize",q.attr("autocapitalize")),l.$wrapper=b,l.$control=c,l.$control_input=d,l.$dropdown=e,l.$dropdown_content=g,e.on("mouseenter","[data-selectable]",function(){return l.onOptionHover.apply(l,arguments)}),e.on("mousedown click","[data-selectable]",function(){return l.onOptionSelect.apply(l,arguments)}),G(c,"mousedown","*:not(input)",function(){return l.onItemSelect.apply(l,arguments)}),K(d),c.on({mousedown:function(){return l.onMouseDown.apply(l,arguments)},click:function(){return l.onClick.apply(l,arguments)}}),d.on({mousedown:function(a){a.stopPropagation()},keydown:function(){return l.onKeyDown.apply(l,arguments)},keyup:function(){return l.onKeyUp.apply(l,arguments)},keypress:function(){return l.onKeyPress.apply(l,arguments)},resize:function(){l.positionDropdown.apply(l,[])},blur:function(){return l.onBlur.apply(l,arguments)},focus:function(){return l.ignoreBlur=!1,l.onFocus.apply(l,arguments)},paste:function(){return l.onPaste.apply(l,arguments)}}),p.on("keydown"+n,function(a){l.isCmdDown=a[f?"metaKey":"ctrlKey"],l.isCtrlDown=a[f?"altKey":"ctrlKey"],l.isShiftDown=a.shiftKey}),p.on("keyup"+n,function(a){a.keyCode===t&&(l.isCtrlDown=!1),a.keyCode===r&&(l.isShiftDown=!1),a.keyCode===s&&(l.isCmdDown=!1)}),p.on("mousedown"+n,function(a){if(l.isFocused){if(a.target===l.$dropdown[0]||a.target.parentNode===l.$dropdown[0])return!1;l.$control.has(a.target).length||a.target===l.$control[0]||l.blur(a.target)}}),o.on(["scroll"+n,"resize"+n].join(" "),function(){l.isOpen&&l.positionDropdown.apply(l,arguments)}),o.on("mousemove"+n,function(){l.ignoreHover=!1}),this.revertSettings={$children:q.children().detach(),tabindex:q.attr("tabindex")},q.attr("tabindex",-1).hide().after(l.$wrapper),a.isArray(m.items)&&(l.setValue(m.items),delete m.items),x&&q.on("invalid"+n,function(a){a.preventDefault(),l.isInvalid=!0,l.refreshState()}),l.updateOriginalInput(),l.refreshItems(),l.refreshState(),l.updatePlaceholder(),l.isSetup=!0,q.is(":disabled")&&l.disable(),l.on("change",this.onChange),q.data("selectize",l),q.addClass("selectized"),l.trigger("initialize"),m.preload===!0&&l.onSearchChange("")},setupTemplates:function(){var b=this,c=b.settings.labelField,d=b.settings.optgroupLabelField,e={optgroup:function(a){return'
'+a.html+"
"},optgroup_header:function(a,b){return'
'+b(a[d])+"
"},option:function(a,b){return'
'+b(a[c])+"
"},item:function(a,b){return'
'+b(a[c])+"
"},option_create:function(a,b){return'
Add '+b(a.input)+"
"}};b.settings.render=a.extend({},e,b.settings.render)},setupCallbacks:function(){var a,b,c={initialize:"onInitialize",change:"onChange",item_add:"onItemAdd",item_remove:"onItemRemove",clear:"onClear",option_add:"onOptionAdd",option_remove:"onOptionRemove",option_clear:"onOptionClear",optgroup_add:"onOptionGroupAdd",optgroup_remove:"onOptionGroupRemove",optgroup_clear:"onOptionGroupClear",dropdown_open:"onDropdownOpen",dropdown_close:"onDropdownClose",type:"onType",load:"onLoad",focus:"onFocus",blur:"onBlur"};for(a in c)c.hasOwnProperty(a)&&(b=this.settings[c[a]],b&&this.on(a,b))},onClick:function(a){var b=this;b.isFocused||(b.focus(),a.preventDefault())},onMouseDown:function(b){{var c=this,d=b.isDefaultPrevented();a(b.target)}if(c.isFocused){if(b.target!==c.$control_input[0])return"single"===c.settings.mode?c.isOpen?c.close():c.open():d||c.setActiveItem(null),!1}else d||window.setTimeout(function(){c.focus()},0)},onChange:function(){this.$input.trigger("change")},onPaste:function(b){var c=this;c.isFull()||c.isInputHidden||c.isLocked?b.preventDefault():c.settings.splitOn&&setTimeout(function(){for(var b=a.trim(c.$control_input.val()||"").split(c.settings.splitOn),d=0,e=b.length;e>d;d++)c.createItem(b[d])},0)},onKeyPress:function(a){if(this.isLocked)return a&&a.preventDefault();var b=String.fromCharCode(a.keyCode||a.which);return this.settings.create&&"multi"===this.settings.mode&&b===this.settings.delimiter?(this.createItem(),a.preventDefault(),!1):void 0},onKeyDown:function(a){var b=(a.target===this.$control_input[0],this);if(b.isLocked)return void(a.keyCode!==u&&a.preventDefault());switch(a.keyCode){case g:if(b.isCmdDown)return void b.selectAll();break;case i:return void(b.isOpen&&(a.preventDefault(),a.stopPropagation(),b.close()));case o:if(!a.ctrlKey||a.altKey)break;case n:if(!b.isOpen&&b.hasOptions)b.open();else if(b.$activeOption){b.ignoreHover=!0;var c=b.getAdjacentOption(b.$activeOption,1);c.length&&b.setActiveOption(c,!0,!0)}return void a.preventDefault();case l:if(!a.ctrlKey||a.altKey)break;case k:if(b.$activeOption){b.ignoreHover=!0;var d=b.getAdjacentOption(b.$activeOption,-1);d.length&&b.setActiveOption(d,!0,!0)}return void a.preventDefault();case h:return void(b.isOpen&&b.$activeOption&&(b.onOptionSelect({currentTarget:b.$activeOption}),a.preventDefault()));case j:return void b.advanceSelection(-1,a);case m:return void b.advanceSelection(1,a);case u:return b.settings.selectOnTab&&b.isOpen&&b.$activeOption&&(b.onOptionSelect({currentTarget:b.$activeOption}),b.isFull()||a.preventDefault()),void(b.settings.create&&b.createItem()&&a.preventDefault());case p:case q:return void b.deleteSelection(a)}return!b.isFull()&&!b.isInputHidden||(f?a.metaKey:a.ctrlKey)?void 0:void a.preventDefault()},onKeyUp:function(a){var b=this;if(b.isLocked)return a&&a.preventDefault();var c=b.$control_input.val()||"";b.lastValue!==c&&(b.lastValue=c,b.onSearchChange(c),b.refreshOptions(),b.trigger("type",c))},onSearchChange:function(a){var b=this,c=b.settings.load;c&&(b.loadedSearches.hasOwnProperty(a)||(b.loadedSearches[a]=!0,b.load(function(d){c.apply(b,[a,d])})))},onFocus:function(a){var b=this,c=b.isFocused;return b.isDisabled?(b.blur(),a&&a.preventDefault(),!1):void(b.ignoreFocus||(b.isFocused=!0,"focus"===b.settings.preload&&b.onSearchChange(""),c||b.trigger("focus"),b.$activeItems.length||(b.showInput(),b.setActiveItem(null),b.refreshOptions(!!b.settings.openOnFocus)),b.refreshState()))},onBlur:function(a,b){var c=this;if(c.isFocused&&(c.isFocused=!1,!c.ignoreFocus)){if(!c.ignoreBlur&&document.activeElement===c.$dropdown_content[0])return c.ignoreBlur=!0,void c.onFocus(a);var d=function(){c.close(),c.setTextboxValue(""),c.setActiveItem(null),c.setActiveOption(null),c.setCaret(c.items.length),c.refreshState(),(b||document.body).focus(),c.ignoreFocus=!1,c.trigger("blur")};c.ignoreFocus=!0,c.settings.create&&c.settings.createOnBlur?c.createItem(null,!1,d):d()}},onOptionHover:function(a){this.ignoreHover||this.setActiveOption(a.currentTarget,!1)},onOptionSelect:function(b){var c,d,e=this;b.preventDefault&&(b.preventDefault(),b.stopPropagation()),d=a(b.currentTarget),d.hasClass("create")?e.createItem(null,function(){e.settings.closeAfterSelect&&e.close()}):(c=d.attr("data-value"),"undefined"!=typeof c&&(e.lastQuery=null,e.setTextboxValue(""),e.addItem(c),e.settings.closeAfterSelect?e.close():!e.settings.hideSelected&&b.type&&/mouse/.test(b.type)&&e.setActiveOption(e.getOption(c))))},onItemSelect:function(a){var b=this;b.isLocked||"multi"===b.settings.mode&&(a.preventDefault(),b.setActiveItem(a.currentTarget,a))},load:function(a){var b=this,c=b.$wrapper.addClass(b.settings.loadingClass);b.loading++,a.apply(b,[function(a){b.loading=Math.max(b.loading-1,0),a&&a.length&&(b.addOption(a),b.refreshOptions(b.isFocused&&!b.isInputHidden)),b.loading||c.removeClass(b.settings.loadingClass),b.trigger("load",a)}])},setTextboxValue:function(a){var b=this.$control_input,c=b.val()!==a;c&&(b.val(a).triggerHandler("update"),this.lastValue=a)},getValue:function(){return this.tagType===v&&this.$input.attr("multiple")?this.items:this.items.join(this.settings.delimiter)},setValue:function(a,b){var c=b?[]:["change"];F(this,c,function(){this.clear(b),this.addItems(a,b)})},setActiveItem:function(b,c){var d,e,f,g,h,i,j,k,l=this;if("single"!==l.settings.mode){if(b=a(b),!b.length)return a(l.$activeItems).removeClass("active"),l.$activeItems=[],void(l.isFocused&&l.showInput());if(d=c&&c.type.toLowerCase(),"mousedown"===d&&l.isShiftDown&&l.$activeItems.length){for(k=l.$control.children(".active:last"),g=Array.prototype.indexOf.apply(l.$control[0].childNodes,[k[0]]),h=Array.prototype.indexOf.apply(l.$control[0].childNodes,[b[0]]),g>h&&(j=g,g=h,h=j),e=g;h>=e;e++)i=l.$control[0].childNodes[e],-1===l.$activeItems.indexOf(i)&&(a(i).addClass("active"),l.$activeItems.push(i));c.preventDefault()}else"mousedown"===d&&l.isCtrlDown||"keydown"===d&&this.isShiftDown?b.hasClass("active")?(f=l.$activeItems.indexOf(b[0]),l.$activeItems.splice(f,1),b.removeClass("active")):l.$activeItems.push(b.addClass("active")[0]):(a(l.$activeItems).removeClass("active"),l.$activeItems=[b.addClass("active")[0]]);l.hideInput(),this.isFocused||l.focus()}},setActiveOption:function(b,c,d){var e,f,g,h,i,j=this;j.$activeOption&&j.$activeOption.removeClass("active"),j.$activeOption=null,b=a(b),b.length&&(j.$activeOption=b.addClass("active"),(c||!y(c))&&(e=j.$dropdown_content.height(),f=j.$activeOption.outerHeight(!0),c=j.$dropdown_content.scrollTop()||0,g=j.$activeOption.offset().top-j.$dropdown_content.offset().top+c,h=g,i=g-e+f,g+f>e+c?j.$dropdown_content.stop().animate({scrollTop:i},d?j.settings.scrollDuration:0):c>g&&j.$dropdown_content.stop().animate({scrollTop:h},d?j.settings.scrollDuration:0)))},selectAll:function(){var a=this;"single"!==a.settings.mode&&(a.$activeItems=Array.prototype.slice.apply(a.$control.children(":not(input)").addClass("active")),a.$activeItems.length&&(a.hideInput(),a.close()),a.focus())},hideInput:function(){var a=this;a.setTextboxValue(""),a.$control_input.css({opacity:0,position:"absolute",left:a.rtl?1e4:-1e4}),a.isInputHidden=!0},showInput:function(){this.$control_input.css({opacity:1,position:"relative",left:0}),this.isInputHidden=!1},focus:function(){var a=this;a.isDisabled||(a.ignoreFocus=!0,a.$control_input[0].focus(),window.setTimeout(function(){a.ignoreFocus=!1,a.onFocus()},0))},blur:function(a){this.$control_input[0].blur(),this.onBlur(null,a)},getScoreFunction:function(a){return this.sifter.getScoreFunction(a,this.getSearchOptions())},getSearchOptions:function(){var a=this.settings,b=a.sortField;return"string"==typeof b&&(b=[{field:b}]),{fields:a.searchField,conjunction:a.searchConjunction,sort:b}},search:function(b){var c,d,e,f=this,g=f.settings,h=this.getSearchOptions();if(g.score&&(e=f.settings.score.apply(this,[b]),"function"!=typeof e))throw new Error('Selectize "score" setting must be a function that returns a function');if(b!==f.lastQuery?(f.lastQuery=b,d=f.sifter.search(b,a.extend(h,{score:e})),f.currentResults=d):d=a.extend(!0,{},f.currentResults),g.hideSelected)for(c=d.items.length-1;c>=0;c--)-1!==f.items.indexOf(z(d.items[c].id))&&d.items.splice(c,1);return d},refreshOptions:function(b){var c,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s;"undefined"==typeof b&&(b=!0);var t=this,u=a.trim(t.$control_input.val()),v=t.search(u),w=t.$dropdown_content,x=t.$activeOption&&z(t.$activeOption.attr("data-value"));for(g=v.items.length,"number"==typeof t.settings.maxOptions&&(g=Math.min(g,t.settings.maxOptions)),h={},i=[],c=0;g>c;c++)for(j=t.options[v.items[c].id],k=t.render("option",j),l=j[t.settings.optgroupField]||"",m=a.isArray(l)?l:[l],e=0,f=m&&m.length;f>e;e++)l=m[e],t.optgroups.hasOwnProperty(l)||(l=""),h.hasOwnProperty(l)||(h[l]=[],i.push(l)),h[l].push(k);for(this.settings.lockOptgroupOrder&&i.sort(function(a,b){var c=t.optgroups[a].$order||0,d=t.optgroups[b].$order||0;return c-d}),n=[],c=0,g=i.length;g>c;c++)l=i[c],t.optgroups.hasOwnProperty(l)&&h[l].length?(o=t.render("optgroup_header",t.optgroups[l])||"",o+=h[l].join(""),n.push(t.render("optgroup",a.extend({},t.optgroups[l],{html:o})))):n.push(h[l].join(""));if(w.html(n.join("")),t.settings.highlight&&v.query.length&&v.tokens.length)for(c=0,g=v.tokens.length;g>c;c++)d(w,v.tokens[c].regex);if(!t.settings.hideSelected)for(c=0,g=t.items.length;g>c;c++)t.getOption(t.items[c]).addClass("selected");p=t.canCreate(u),p&&(w.prepend(t.render("option_create",{input:u})),s=a(w[0].childNodes[0])),t.hasOptions=v.items.length>0||p,t.hasOptions?(v.items.length>0?(r=x&&t.getOption(x),r&&r.length?q=r:"single"===t.settings.mode&&t.items.length&&(q=t.getOption(t.items[0])),q&&q.length||(q=s&&!t.settings.addPrecedence?t.getAdjacentOption(s,1):w.find("[data-selectable]:first"))):q=s,t.setActiveOption(q),b&&!t.isOpen&&t.open()):(t.setActiveOption(null),b&&t.isOpen&&t.close())},addOption:function(b){var c,d,e,f=this;if(a.isArray(b))for(c=0,d=b.length;d>c;c++)f.addOption(b[c]);else(e=f.registerOption(b))&&(f.userOptions[e]=!0,f.lastQuery=null,f.trigger("option_add",e,b))},registerOption:function(a){var b=z(a[this.settings.valueField]);return!b||this.options.hasOwnProperty(b)?!1:(a.$order=a.$order||++this.order,this.options[b]=a,b)},registerOptionGroup:function(a){var b=z(a[this.settings.optgroupValueField]);return b?(a.$order=a.$order||++this.order,this.optgroups[b]=a,b):!1},addOptionGroup:function(a,b){b[this.settings.optgroupValueField]=a,(a=this.registerOptionGroup(b))&&this.trigger("optgroup_add",a,b)},removeOptionGroup:function(a){this.optgroups.hasOwnProperty(a)&&(delete this.optgroups[a],this.renderCache={},this.trigger("optgroup_remove",a))},clearOptionGroups:function(){this.optgroups={},this.renderCache={},this.trigger("optgroup_clear")},updateOption:function(b,c){var d,e,f,g,h,i,j,k=this;if(b=z(b),f=z(c[k.settings.valueField]),null!==b&&k.options.hasOwnProperty(b)){if("string"!=typeof f)throw new Error("Value must be set in option data");j=k.options[b].$order,f!==b&&(delete k.options[b],g=k.items.indexOf(b),-1!==g&&k.items.splice(g,1,f)),c.$order=c.$order||j,k.options[f]=c,h=k.renderCache.item,i=k.renderCache.option,h&&(delete h[b],delete h[f]),i&&(delete i[b],delete i[f]),-1!==k.items.indexOf(f)&&(d=k.getItem(b),e=a(k.render("item",c)),d.hasClass("active")&&e.addClass("active"),d.replaceWith(e)),k.lastQuery=null,k.isOpen&&k.refreshOptions(!1)}},removeOption:function(a,b){var c=this;a=z(a);var d=c.renderCache.item,e=c.renderCache.option;d&&delete d[a],e&&delete e[a],delete c.userOptions[a],delete c.options[a],c.lastQuery=null,c.trigger("option_remove",a),c.removeItem(a,b)},clearOptions:function(){var a=this;a.loadedSearches={},a.userOptions={},a.renderCache={},a.options=a.sifter.items={},a.lastQuery=null,a.trigger("option_clear"),a.clear()},getOption:function(a){return this.getElementWithValue(a,this.$dropdown_content.find("[data-selectable]"))},getAdjacentOption:function(b,c){var d=this.$dropdown.find("[data-selectable]"),e=d.index(b)+c;return e>=0&&ed;d++)if(c[d].getAttribute("data-value")===b)return a(c[d]);return a()},getItem:function(a){return this.getElementWithValue(a,this.$control.children())},addItems:function(b,c){for(var d=a.isArray(b)?b:[b],e=0,f=d.length;f>e;e++)this.isPending=f-1>e,this.addItem(d[e],c)},addItem:function(b,c){var d=c?[]:["change"];F(this,d,function(){var d,e,f,g,h,i=this,j=i.settings.mode;return b=z(b),-1!==i.items.indexOf(b)?void("single"===j&&i.close()):void(i.options.hasOwnProperty(b)&&("single"===j&&i.clear(c),"multi"===j&&i.isFull()||(d=a(i.render("item",i.options[b])),h=i.isFull(),i.items.splice(i.caretPos,0,b),i.insertAtCaret(d),(!i.isPending||!h&&i.isFull())&&i.refreshState(),i.isSetup&&(f=i.$dropdown_content.find("[data-selectable]"),i.isPending||(e=i.getOption(b),g=i.getAdjacentOption(e,1).attr("data-value"),i.refreshOptions(i.isFocused&&"single"!==j),g&&i.setActiveOption(i.getOption(g))),!f.length||i.isFull()?i.close():i.positionDropdown(),i.updatePlaceholder(),i.trigger("item_add",b,d),i.updateOriginalInput({silent:c})))))})},removeItem:function(a,b){var c,d,e,f=this;c="object"==typeof a?a:f.getItem(a),a=z(c.attr("data-value")),d=f.items.indexOf(a),-1!==d&&(c.remove(),c.hasClass("active")&&(e=f.$activeItems.indexOf(c[0]),f.$activeItems.splice(e,1)),f.items.splice(d,1),f.lastQuery=null,!f.settings.persist&&f.userOptions.hasOwnProperty(a)&&f.removeOption(a,b),d0),b.$control_input.data("grow",!c&&!d)},isFull:function(){return null!==this.settings.maxItems&&this.items.length>=this.settings.maxItems},updateOriginalInput:function(a){var b,c,d,e,f=this;if(a=a||{},f.tagType===v){for(d=[],b=0,c=f.items.length;c>b;b++)e=f.options[f.items[b]][f.settings.labelField]||"",d.push('");d.length||this.$input.attr("multiple")||d.push(''),f.$input.html(d.join(""))}else f.$input.val(f.getValue()),f.$input.attr("value",f.$input.val());f.isSetup&&(a.silent||f.trigger("change",f.$input.val()))},updatePlaceholder:function(){if(this.settings.placeholder){var a=this.$control_input;this.items.length?a.removeAttr("placeholder"):a.attr("placeholder",this.settings.placeholder),a.triggerHandler("update",{force:!0})}},open:function(){var a=this;a.isLocked||a.isOpen||"multi"===a.settings.mode&&a.isFull()||(a.focus(),a.isOpen=!0,a.refreshState(),a.$dropdown.css({visibility:"hidden",display:"block"}),a.positionDropdown(),a.$dropdown.css({visibility:"visible"}),a.trigger("dropdown_open",a.$dropdown))},close:function(){var a=this,b=a.isOpen;"single"===a.settings.mode&&a.items.length&&a.hideInput(),a.isOpen=!1,a.$dropdown.hide(),a.setActiveOption(null),a.refreshState(),b&&a.trigger("dropdown_close",a.$dropdown)},positionDropdown:function(){var a=this.$control,b="body"===this.settings.dropdownParent?a.offset():a.position();b.top+=a.outerHeight(!0),this.$dropdown.css({width:a.outerWidth(),top:b.top,left:b.left})},clear:function(a){var b=this;b.items.length&&(b.$control.children(":not(input)").remove(),b.items=[],b.lastQuery=null,b.setCaret(0),b.setActiveItem(null),b.updatePlaceholder(),b.updateOriginalInput({silent:a}),b.refreshState(),b.showInput(),b.trigger("clear"))},insertAtCaret:function(b){var c=Math.min(this.caretPos,this.items.length);0===c?this.$control.prepend(b):a(this.$control[0].childNodes[c]).before(b),this.setCaret(c+1)},deleteSelection:function(b){var c,d,e,f,g,h,i,j,k,l=this;if(e=b&&b.keyCode===p?-1:1,f=H(l.$control_input[0]),l.$activeOption&&!l.settings.hideSelected&&(i=l.getAdjacentOption(l.$activeOption,-1).attr("data-value")),g=[],l.$activeItems.length){for(k=l.$control.children(".active:"+(e>0?"last":"first")),h=l.$control.children(":not(input)").index(k),e>0&&h++,c=0,d=l.$activeItems.length;d>c;c++)g.push(a(l.$activeItems[c]).attr("data-value")); b&&(b.preventDefault(),b.stopPropagation())}else(l.isFocused||"single"===l.settings.mode)&&l.items.length&&(0>e&&0===f.start&&0===f.length?g.push(l.items[l.caretPos-1]):e>0&&f.start===l.$control_input.val().length&&g.push(l.items[l.caretPos]));if(!g.length||"function"==typeof l.settings.onDelete&&l.settings.onDelete.apply(l,[g])===!1)return!1;for("undefined"!=typeof h&&l.setCaret(h);g.length;)l.removeItem(g.pop());return l.showInput(),l.positionDropdown(),l.refreshOptions(!0),i&&(j=l.getOption(i),j.length&&l.setActiveOption(j)),!0},advanceSelection:function(a,b){var c,d,e,f,g,h,i=this;0!==a&&(i.rtl&&(a*=-1),c=a>0?"last":"first",d=H(i.$control_input[0]),i.isFocused&&!i.isInputHidden?(f=i.$control_input.val().length,g=0>a?0===d.start&&0===d.length:d.start===f,g&&!f&&i.advanceCaret(a,b)):(h=i.$control.children(".active:"+c),h.length&&(e=i.$control.children(":not(input)").index(h),i.setActiveItem(null),i.setCaret(a>0?e+1:e))))},advanceCaret:function(a,b){var c,d,e=this;0!==a&&(c=a>0?"next":"prev",e.isShiftDown?(d=e.$control_input[c](),d.length&&(e.hideInput(),e.setActiveItem(d),b&&b.preventDefault())):e.setCaret(e.caretPos+a))},setCaret:function(b){var c=this;if(b="single"===c.settings.mode?c.items.length:Math.max(0,Math.min(c.items.length,b)),!c.isPending){var d,e,f,g;for(f=c.$control.children(":not(input)"),d=0,e=f.length;e>d;d++)g=a(f[d]).detach(),b>d?c.$control_input.before(g):c.$control.append(g)}c.caretPos=b},lock:function(){this.close(),this.isLocked=!0,this.refreshState()},unlock:function(){this.isLocked=!1,this.refreshState()},disable:function(){var a=this;a.$input.prop("disabled",!0),a.$control_input.prop("disabled",!0).prop("tabindex",-1),a.isDisabled=!0,a.lock()},enable:function(){var a=this;a.$input.prop("disabled",!1),a.$control_input.prop("disabled",!1).prop("tabindex",a.tabIndex),a.isDisabled=!1,a.unlock()},destroy:function(){var b=this,c=b.eventNS,d=b.revertSettings;b.trigger("destroy"),b.off(),b.$wrapper.remove(),b.$dropdown.remove(),b.$input.html("").append(d.$children).removeAttr("tabindex").removeClass("selectized").attr({tabindex:d.tabindex}).show(),b.$control_input.removeData("grow"),b.$input.removeData("selectize"),a(window).off(c),a(document).off(c),a(document.body).off(c),delete b.$input[0].selectize},render:function(a,b){var c,d,e="",f=!1,g=this,h=/^[\t \r\n]*<([a-z][a-z0-9\-_]*(?:\:[a-z][a-z0-9\-_]*)?)/i;return("option"===a||"item"===a)&&(c=z(b[g.settings.valueField]),f=!!c),f&&(y(g.renderCache[a])||(g.renderCache[a]={}),g.renderCache[a].hasOwnProperty(c))?g.renderCache[a][c]:(e=g.settings.render[a].apply(this,[b,A]),("option"===a||"option_create"===a)&&(e=e.replace(h,"<$1 data-selectable")),"optgroup"===a&&(d=b[g.settings.optgroupValueField]||"",e=e.replace(h,'<$1 data-group="'+B(A(d))+'"')),("option"===a||"item"===a)&&(e=e.replace(h,'<$1 data-value="'+B(A(c||""))+'"')),f&&(g.renderCache[a][c]=e),e)},clearCache:function(a){var b=this;"undefined"==typeof a?b.renderCache={}:delete b.renderCache[a]},canCreate:function(a){var b=this;if(!b.settings.create)return!1;var c=b.settings.createFilter;return!(!a.length||"function"==typeof c&&!c.apply(b,[a])||"string"==typeof c&&!new RegExp(c).test(a)||c instanceof RegExp&&!c.test(a))}}),L.count=0,L.defaults={options:[],optgroups:[],plugins:[],delimiter:",",splitOn:null,persist:!0,diacritics:!0,create:!1,createOnBlur:!1,createFilter:null,highlight:!0,openOnFocus:!0,maxOptions:1e3,maxItems:null,hideSelected:null,addPrecedence:!1,selectOnTab:!1,preload:!1,allowEmptyOption:!1,closeAfterSelect:!1,scrollDuration:60,loadThrottle:300,loadingClass:"loading",dataAttr:"data-data",optgroupField:"optgroup",valueField:"value",labelField:"text",optgroupLabelField:"label",optgroupValueField:"value",lockOptgroupOrder:!1,sortField:"$order",searchField:["text"],searchConjunction:"and",mode:null,wrapperClass:"selectize-control",inputClass:"selectize-input",dropdownClass:"selectize-dropdown",dropdownContentClass:"selectize-dropdown-content",dropdownParent:null,copyClassesToDropdown:!0,render:{}},a.fn.selectize=function(b){var c=a.fn.selectize.defaults,d=a.extend({},c,b),e=d.dataAttr,f=d.labelField,g=d.valueField,h=d.optgroupField,i=d.optgroupLabelField,j=d.optgroupValueField,k=function(b,c){var h,i,j,k,l=b.attr(e);if(l)for(c.options=JSON.parse(l),h=0,i=c.options.length;i>h;h++)c.items.push(c.options[h][g]);else{var m=a.trim(b.val()||"");if(!d.allowEmptyOption&&!m.length)return;for(j=m.split(d.delimiter),h=0,i=j.length;i>h;h++)k={},k[f]=j[h],k[g]=j[h],c.options.push(k);c.items=j}},l=function(b,c){var k,l,m,n,o=c.options,p={},q=function(a){var b=e&&a.attr(e);return"string"==typeof b&&b.length?JSON.parse(b):null},r=function(b,e){b=a(b);var i=z(b.attr("value"));if(i||d.allowEmptyOption)if(p.hasOwnProperty(i)){if(e){var j=p[i][h];j?a.isArray(j)?j.push(e):p[i][h]=[j,e]:p[i][h]=e}}else{var k=q(b)||{};k[f]=k[f]||b.text(),k[g]=k[g]||i,k[h]=k[h]||e,p[i]=k,o.push(k),b.is(":selected")&&c.items.push(i)}},s=function(b){var d,e,f,g,h;for(b=a(b),f=b.attr("label"),f&&(g=q(b)||{},g[i]=f,g[j]=f,c.optgroups.push(g)),h=a("option",b),d=0,e=h.length;e>d;d++)r(h[d],f)};for(c.maxItems=b.attr("multiple")?null:1,n=b.children(),k=0,l=n.length;l>k;k++)m=n[k].tagName.toLowerCase(),"optgroup"===m?s(n[k]):"option"===m&&r(n[k])};return this.each(function(){if(!this.selectize){var e,f=a(this),g=this.tagName.toLowerCase(),h=f.attr("placeholder")||f.attr("data-placeholder");h||d.allowEmptyOption||(h=f.children('option[value=""]').text());var i={placeholder:h,options:[],optgroups:[],items:[]};"select"===g?l(f,i):k(f,i),e=new L(f,a.extend(!0,{},c,i,b))}})},a.fn.selectize.defaults=L.defaults,a.fn.selectize.support={validity:x},L.define("drag_drop",function(){if(!a.fn.sortable)throw new Error('The "drag_drop" plugin requires jQuery UI "sortable".');if("multi"===this.settings.mode){var b=this;b.lock=function(){var a=b.lock;return function(){var c=b.$control.data("sortable");return c&&c.disable(),a.apply(b,arguments)}}(),b.unlock=function(){var a=b.unlock;return function(){var c=b.$control.data("sortable");return c&&c.enable(),a.apply(b,arguments)}}(),b.setup=function(){var c=b.setup;return function(){c.apply(this,arguments);var d=b.$control.sortable({items:"[data-value]",forcePlaceholderSize:!0,disabled:b.isLocked,start:function(a,b){b.placeholder.css("width",b.helper.css("width")),d.css({overflow:"visible"})},stop:function(){d.css({overflow:"hidden"});var c=b.$activeItems?b.$activeItems.slice():null,e=[];d.children("[data-value]").each(function(){e.push(a(this).attr("data-value"))}),b.setValue(e),b.setActiveItem(c)}})}}()}}),L.define("dropdown_header",function(b){var c=this;b=a.extend({title:"Untitled",headerClass:"selectize-dropdown-header",titleRowClass:"selectize-dropdown-header-title",labelClass:"selectize-dropdown-header-label",closeClass:"selectize-dropdown-header-close",html:function(a){return'
'+a.title+'×
'}},b),c.setup=function(){var d=c.setup;return function(){d.apply(c,arguments),c.$dropdown_header=a(b.html(b)),c.$dropdown.prepend(c.$dropdown_header)}}()}),L.define("optgroup_columns",function(b){var c=this;b=a.extend({equalizeWidth:!0,equalizeHeight:!0},b),this.getAdjacentOption=function(b,c){var d=b.closest("[data-group]").find("[data-selectable]"),e=d.index(b)+c;return e>=0&&e
',a=a.firstChild,c.body.appendChild(a),b=d.width=a.offsetWidth-a.clientWidth,c.body.removeChild(a)),b},e=function(){var e,f,g,h,i,j,k;if(k=a("[data-group]",c.$dropdown_content),f=k.length,f&&c.$dropdown_content.width()){if(b.equalizeHeight){for(g=0,e=0;f>e;e++)g=Math.max(g,k.eq(e).height());k.css({height:g})}b.equalizeWidth&&(j=c.$dropdown_content.innerWidth()-d(),h=Math.round(j/f),k.css({width:h}),f>1&&(i=j-h*(f-1),k.eq(f-1).css({width:i})))}};(b.equalizeHeight||b.equalizeWidth)&&(C.after(this,"positionDropdown",e),C.after(this,"refreshOptions",e))}),L.define("remove_button",function(b){if("single"!==this.settings.mode){b=a.extend({label:"×",title:"Remove",className:"remove",append:!0},b);var c=this,d=''+b.label+"",e=function(a,b){var c=a.search(/(<\/[^>]+>\s*)$/);return a.substring(0,c)+b+a.substring(c)};this.setup=function(){var f=c.setup;return function(){if(b.append){var g=c.settings.render.item;c.settings.render.item=function(){return e(g.apply(this,arguments),d)}}f.apply(this,arguments),this.$control.on("click","."+b.className,function(b){if(b.preventDefault(),!c.isLocked){var d=a(b.currentTarget).parent();c.setActiveItem(d),c.deleteSelection()&&c.setCaret(c.items.length)}})}}()}}),L.define("restore_on_backspace",function(a){var b=this;a.text=a.text||function(a){return a[this.settings.labelField]},this.onKeyDown=function(){var c=b.onKeyDown;return function(b){var d,e;return b.keyCode===p&&""===this.$control_input.val()&&!this.$activeItems.length&&(d=this.caretPos-1,d>=0&&d */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define('sifter', factory); } else if (typeof exports === 'object') { module.exports = factory(); } else { root.Sifter = factory(); } }(this, function() { /** * Textually searches arrays and hashes of objects * by property (or multiple properties). Designed * specifically for autocomplete. * * @constructor * @param {array|object} items * @param {object} items */ var Sifter = function(items, settings) { this.items = items; this.settings = settings || {diacritics: true}; }; /** * Splits a search string into an array of individual * regexps to be used to match results. * * @param {string} query * @returns {array} */ Sifter.prototype.tokenize = function(query) { query = trim(String(query || '').toLowerCase()); if (!query || !query.length) return []; var i, n, regex, letter; var tokens = []; var words = query.split(/ +/); for (i = 0, n = words.length; i < n; i++) { regex = escape_regex(words[i]); if (this.settings.diacritics) { for (letter in DIACRITICS) { if (DIACRITICS.hasOwnProperty(letter)) { regex = regex.replace(new RegExp(letter, 'g'), DIACRITICS[letter]); } } } tokens.push({ string : words[i], regex : new RegExp(regex, 'i') }); } return tokens; }; /** * Iterates over arrays and hashes. * * ``` * this.iterator(this.items, function(item, id) { * // invoked for each item * }); * ``` * * @param {array|object} object */ Sifter.prototype.iterator = function(object, callback) { var iterator; if (is_array(object)) { iterator = Array.prototype.forEach || function(callback) { for (var i = 0, n = this.length; i < n; i++) { callback(this[i], i, this); } }; } else { iterator = function(callback) { for (var key in this) { if (this.hasOwnProperty(key)) { callback(this[key], key, this); } } }; } iterator.apply(object, [callback]); }; /** * Returns a function to be used to score individual results. * * Good matches will have a higher score than poor matches. * If an item is not a match, 0 will be returned by the function. * * @param {object|string} search * @param {object} options (optional) * @returns {function} */ Sifter.prototype.getScoreFunction = function(search, options) { var self, fields, tokens, token_count; self = this; search = self.prepareSearch(search, options); tokens = search.tokens; fields = search.options.fields; token_count = tokens.length; /** * Calculates how close of a match the * given value is against a search token. * * @param {mixed} value * @param {object} token * @return {number} */ var scoreValue = function(value, token) { var score, pos; if (!value) return 0; value = String(value || ''); pos = value.search(token.regex); if (pos === -1) return 0; score = token.string.length / value.length; if (pos === 0) score += 0.5; return score; }; /** * Calculates the score of an object * against the search query. * * @param {object} token * @param {object} data * @return {number} */ var scoreObject = (function() { var field_count = fields.length; if (!field_count) { return function() { return 0; }; } if (field_count === 1) { return function(token, data) { return scoreValue(data[fields[0]], token); }; } return function(token, data) { for (var i = 0, sum = 0; i < field_count; i++) { sum += scoreValue(data[fields[i]], token); } return sum / field_count; }; })(); if (!token_count) { return function() { return 0; }; } if (token_count === 1) { return function(data) { return scoreObject(tokens[0], data); }; } if (search.options.conjunction === 'and') { return function(data) { var score; for (var i = 0, sum = 0; i < token_count; i++) { score = scoreObject(tokens[i], data); if (score <= 0) return 0; sum += score; } return sum / token_count; }; } else { return function(data) { for (var i = 0, sum = 0; i < token_count; i++) { sum += scoreObject(tokens[i], data); } return sum / token_count; }; } }; /** * Returns a function that can be used to compare two * results, for sorting purposes. If no sorting should * be performed, `null` will be returned. * * @param {string|object} search * @param {object} options * @return function(a,b) */ Sifter.prototype.getSortFunction = function(search, options) { var i, n, self, field, fields, fields_count, multiplier, multipliers, get_field, implicit_score, sort; self = this; search = self.prepareSearch(search, options); sort = (!search.query && options.sort_empty) || options.sort; /** * Fetches the specified sort field value * from a search result item. * * @param {string} name * @param {object} result * @return {mixed} */ get_field = function(name, result) { if (name === '$score') return result.score; return self.items[result.id][name]; }; // parse options fields = []; if (sort) { for (i = 0, n = sort.length; i < n; i++) { if (search.query || sort[i].field !== '$score') { fields.push(sort[i]); } } } // the "$score" field is implied to be the primary // sort field, unless it's manually specified if (search.query) { implicit_score = true; for (i = 0, n = fields.length; i < n; i++) { if (fields[i].field === '$score') { implicit_score = false; break; } } if (implicit_score) { fields.unshift({field: '$score', direction: 'desc'}); } } else { for (i = 0, n = fields.length; i < n; i++) { if (fields[i].field === '$score') { fields.splice(i, 1); break; } } } multipliers = []; for (i = 0, n = fields.length; i < n; i++) { multipliers.push(fields[i].direction === 'desc' ? -1 : 1); } // build function fields_count = fields.length; if (!fields_count) { return null; } else if (fields_count === 1) { field = fields[0].field; multiplier = multipliers[0]; return function(a, b) { return multiplier * cmp( get_field(field, a), get_field(field, b) ); }; } else { return function(a, b) { var i, result, a_value, b_value, field; for (i = 0; i < fields_count; i++) { field = fields[i].field; result = multipliers[i] * cmp( get_field(field, a), get_field(field, b) ); if (result) return result; } return 0; }; } }; /** * Parses a search query and returns an object * with tokens and fields ready to be populated * with results. * * @param {string} query * @param {object} options * @returns {object} */ Sifter.prototype.prepareSearch = function(query, options) { if (typeof query === 'object') return query; options = extend({}, options); var option_fields = options.fields; var option_sort = options.sort; var option_sort_empty = options.sort_empty; if (option_fields && !is_array(option_fields)) options.fields = [option_fields]; if (option_sort && !is_array(option_sort)) options.sort = [option_sort]; if (option_sort_empty && !is_array(option_sort_empty)) options.sort_empty = [option_sort_empty]; return { options : options, query : String(query || '').toLowerCase(), tokens : this.tokenize(query), total : 0, items : [] }; }; /** * Searches through all items and returns a sorted array of matches. * * The `options` parameter can contain: * * - fields {string|array} * - sort {array} * - score {function} * - filter {bool} * - limit {integer} * * Returns an object containing: * * - options {object} * - query {string} * - tokens {array} * - total {int} * - items {array} * * @param {string} query * @param {object} options * @returns {object} */ Sifter.prototype.search = function(query, options) { var self = this, value, score, search, calculateScore; var fn_sort; var fn_score; search = this.prepareSearch(query, options); options = search.options; query = search.query; // generate result scoring function fn_score = options.score || self.getScoreFunction(search); // perform search and sort if (query.length) { self.iterator(self.items, function(item, id) { score = fn_score(item); if (options.filter === false || score > 0) { search.items.push({'score': score, 'id': id}); } }); } else { self.iterator(self.items, function(item, id) { search.items.push({'score': 1, 'id': id}); }); } fn_sort = self.getSortFunction(search, options); if (fn_sort) search.items.sort(fn_sort); // apply limits search.total = search.items.length; if (typeof options.limit === 'number') { search.items = search.items.slice(0, options.limit); } return search; }; // utilities // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - var cmp = function(a, b) { if (typeof a === 'number' && typeof b === 'number') { return a > b ? 1 : (a < b ? -1 : 0); } a = asciifold(String(a || '')); b = asciifold(String(b || '')); if (a > b) return 1; if (b > a) return -1; return 0; }; var extend = function(a, b) { var i, n, k, object; for (i = 1, n = arguments.length; i < n; i++) { object = arguments[i]; if (!object) continue; for (k in object) { if (object.hasOwnProperty(k)) { a[k] = object[k]; } } } return a; }; var trim = function(str) { return (str + '').replace(/^\s+|\s+$|/g, ''); }; var escape_regex = function(str) { return (str + '').replace(/([.?*+^$[\]\\(){}|-])/g, '\\$1'); }; var is_array = Array.isArray || ($ && $.isArray) || function(object) { return Object.prototype.toString.call(object) === '[object Array]'; }; var DIACRITICS = { 'a': '[aÀÁÂÃÄÅàáâãäåĀāąĄ]', 'c': '[cÇçćĆčČ]', 'd': '[dđĐďĎ]', 'e': '[eÈÉÊËèéêëěĚĒēęĘ]', 'i': '[iÌÍÎÏìíîïĪī]', 'l': '[lłŁ]', 'n': '[nÑñňŇńŃ]', 'o': '[oÒÓÔÕÕÖØòóôõöøŌō]', 'r': '[rřŘ]', 's': '[sŠšśŚ]', 't': '[tťŤ]', 'u': '[uÙÚÛÜùúûüůŮŪū]', 'y': '[yŸÿýÝ]', 'z': '[zŽžżŻźŹ]' }; var asciifold = (function() { var i, n, k, chunk; var foreignletters = ''; var lookup = {}; for (k in DIACRITICS) { if (DIACRITICS.hasOwnProperty(k)) { chunk = DIACRITICS[k].substring(2, DIACRITICS[k].length - 1); foreignletters += chunk; for (i = 0, n = chunk.length; i < n; i++) { lookup[chunk.charAt(i)] = k; } } } var regexp = new RegExp('[' + foreignletters + ']', 'g'); return function(str) { return str.replace(regexp, function(foreignletter) { return lookup[foreignletter]; }).toLowerCase(); }; })(); // export // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - return Sifter; })); /** * microplugin.js * Copyright (c) 2013 Brian Reavis & contributors * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this * file except in compliance with the License. You may obtain a copy of the License at: * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF * ANY KIND, either express or implied. See the License for the specific language * governing permissions and limitations under the License. * * @author Brian Reavis */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define('microplugin', factory); } else if (typeof exports === 'object') { module.exports = factory(); } else { root.MicroPlugin = factory(); } }(this, function() { var MicroPlugin = {}; MicroPlugin.mixin = function(Interface) { Interface.plugins = {}; /** * Initializes the listed plugins (with options). * Acceptable formats: * * List (without options): * ['a', 'b', 'c'] * * List (with options): * [{'name': 'a', options: {}}, {'name': 'b', options: {}}] * * Hash (with options): * {'a': { ... }, 'b': { ... }, 'c': { ... }} * * @param {mixed} plugins */ Interface.prototype.initializePlugins = function(plugins) { var i, n, key; var self = this; var queue = []; self.plugins = { names : [], settings : {}, requested : {}, loaded : {} }; if (utils.isArray(plugins)) { for (i = 0, n = plugins.length; i < n; i++) { if (typeof plugins[i] === 'string') { queue.push(plugins[i]); } else { self.plugins.settings[plugins[i].name] = plugins[i].options; queue.push(plugins[i].name); } } } else if (plugins) { for (key in plugins) { if (plugins.hasOwnProperty(key)) { self.plugins.settings[key] = plugins[key]; queue.push(key); } } } while (queue.length) { self.require(queue.shift()); } }; Interface.prototype.loadPlugin = function(name) { var self = this; var plugins = self.plugins; var plugin = Interface.plugins[name]; if (!Interface.plugins.hasOwnProperty(name)) { throw new Error('Unable to find "' + name + '" plugin'); } plugins.requested[name] = true; plugins.loaded[name] = plugin.fn.apply(self, [self.plugins.settings[name] || {}]); plugins.names.push(name); }; /** * Initializes a plugin. * * @param {string} name */ Interface.prototype.require = function(name) { var self = this; var plugins = self.plugins; if (!self.plugins.loaded.hasOwnProperty(name)) { if (plugins.requested[name]) { throw new Error('Plugin has circular dependency ("' + name + '")'); } self.loadPlugin(name); } return plugins.loaded[name]; }; /** * Registers a plugin. * * @param {string} name * @param {function} fn */ Interface.define = function(name, fn) { Interface.plugins[name] = { 'name' : name, 'fn' : fn }; }; }; var utils = { isArray: Array.isArray || function(vArg) { return Object.prototype.toString.call(vArg) === '[object Array]'; } }; return MicroPlugin; })); /** * selectize.js (v0.12.1) * Copyright (c) 2013–2015 Brian Reavis & contributors * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this * file except in compliance with the License. You may obtain a copy of the License at: * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF * ANY KIND, either express or implied. See the License for the specific language * governing permissions and limitations under the License. * * @author Brian Reavis */ /*jshint curly:false */ /*jshint browser:true */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define('selectize', ['jquery','sifter','microplugin'], factory); } else if (typeof exports === 'object') { module.exports = factory(require('jquery'), require('sifter'), require('microplugin')); } else { root.Selectize = factory(root.jQuery, root.Sifter, root.MicroPlugin); } }(this, function($, Sifter, MicroPlugin) { 'use strict'; var highlight = function($element, pattern) { if (typeof pattern === 'string' && !pattern.length) return; var regex = (typeof pattern === 'string') ? new RegExp(pattern, 'i') : pattern; var highlight = function(node) { var skip = 0; if (node.nodeType === 3) { var pos = node.data.search(regex); if (pos >= 0 && node.data.length > 0) { var match = node.data.match(regex); var spannode = document.createElement('span'); spannode.className = 'highlight'; var middlebit = node.splitText(pos); var endbit = middlebit.splitText(match[0].length); var middleclone = middlebit.cloneNode(true); spannode.appendChild(middleclone); middlebit.parentNode.replaceChild(spannode, middlebit); skip = 1; } } else if (node.nodeType === 1 && node.childNodes && !/(script|style)/i.test(node.tagName)) { for (var i = 0; i < node.childNodes.length; ++i) { i += highlight(node.childNodes[i]); } } return skip; }; return $element.each(function() { highlight(this); }); }; var MicroEvent = function() {}; MicroEvent.prototype = { on: function(event, fct){ this._events = this._events || {}; this._events[event] = this._events[event] || []; this._events[event].push(fct); }, off: function(event, fct){ var n = arguments.length; if (n === 0) return delete this._events; if (n === 1) return delete this._events[event]; this._events = this._events || {}; if (event in this._events === false) return; this._events[event].splice(this._events[event].indexOf(fct), 1); }, trigger: function(event /* , args... */){ this._events = this._events || {}; if (event in this._events === false) return; for (var i = 0; i < this._events[event].length; i++){ this._events[event][i].apply(this, Array.prototype.slice.call(arguments, 1)); } } }; /** * Mixin will delegate all MicroEvent.js function in the destination object. * * - MicroEvent.mixin(Foobar) will make Foobar able to use MicroEvent * * @param {object} the object which will support MicroEvent */ MicroEvent.mixin = function(destObject){ var props = ['on', 'off', 'trigger']; for (var i = 0; i < props.length; i++){ destObject.prototype[props[i]] = MicroEvent.prototype[props[i]]; } }; var IS_MAC = /Mac/.test(navigator.userAgent); var KEY_A = 65; var KEY_COMMA = 188; var KEY_RETURN = 13; var KEY_ESC = 27; var KEY_LEFT = 37; var KEY_UP = 38; var KEY_P = 80; var KEY_RIGHT = 39; var KEY_DOWN = 40; var KEY_N = 78; var KEY_BACKSPACE = 8; var KEY_DELETE = 46; var KEY_SHIFT = 16; var KEY_CMD = IS_MAC ? 91 : 17; var KEY_CTRL = IS_MAC ? 18 : 17; var KEY_TAB = 9; var TAG_SELECT = 1; var TAG_INPUT = 2; // for now, android support in general is too spotty to support validity var SUPPORTS_VALIDITY_API = !/android/i.test(window.navigator.userAgent) && !!document.createElement('form').validity; var isset = function(object) { return typeof object !== 'undefined'; }; /** * Converts a scalar to its best string representation * for hash keys and HTML attribute values. * * Transformations: * 'str' -> 'str' * null -> '' * undefined -> '' * true -> '1' * false -> '0' * 0 -> '0' * 1 -> '1' * * @param {string} value * @returns {string|null} */ var hash_key = function(value) { if (typeof value === 'undefined' || value === null) return null; if (typeof value === 'boolean') return value ? '1' : '0'; return value + ''; }; /** * Escapes a string for use within HTML. * * @param {string} str * @returns {string} */ var escape_html = function(str) { return (str + '') .replace(/&/g, '&') .replace(//g, '>') .replace(/"/g, '"'); }; /** * Escapes "$" characters in replacement strings. * * @param {string} str * @returns {string} */ var escape_replace = function(str) { return (str + '').replace(/\$/g, '$$$$'); }; var hook = {}; /** * Wraps `method` on `self` so that `fn` * is invoked before the original method. * * @param {object} self * @param {string} method * @param {function} fn */ hook.before = function(self, method, fn) { var original = self[method]; self[method] = function() { fn.apply(self, arguments); return original.apply(self, arguments); }; }; /** * Wraps `method` on `self` so that `fn` * is invoked after the original method. * * @param {object} self * @param {string} method * @param {function} fn */ hook.after = function(self, method, fn) { var original = self[method]; self[method] = function() { var result = original.apply(self, arguments); fn.apply(self, arguments); return result; }; }; /** * Wraps `fn` so that it can only be invoked once. * * @param {function} fn * @returns {function} */ var once = function(fn) { var called = false; return function() { if (called) return; called = true; fn.apply(this, arguments); }; }; /** * Wraps `fn` so that it can only be called once * every `delay` milliseconds (invoked on the falling edge). * * @param {function} fn * @param {int} delay * @returns {function} */ var debounce = function(fn, delay) { var timeout; return function() { var self = this; var args = arguments; window.clearTimeout(timeout); timeout = window.setTimeout(function() { fn.apply(self, args); }, delay); }; }; /** * Debounce all fired events types listed in `types` * while executing the provided `fn`. * * @param {object} self * @param {array} types * @param {function} fn */ var debounce_events = function(self, types, fn) { var type; var trigger = self.trigger; var event_args = {}; // override trigger method self.trigger = function() { var type = arguments[0]; if (types.indexOf(type) !== -1) { event_args[type] = arguments; } else { return trigger.apply(self, arguments); } }; // invoke provided function fn.apply(self, []); self.trigger = trigger; // trigger queued events for (type in event_args) { if (event_args.hasOwnProperty(type)) { trigger.apply(self, event_args[type]); } } }; /** * A workaround for http://bugs.jquery.com/ticket/6696 * * @param {object} $parent - Parent element to listen on. * @param {string} event - Event name. * @param {string} selector - Descendant selector to filter by. * @param {function} fn - Event handler. */ var watchChildEvent = function($parent, event, selector, fn) { $parent.on(event, selector, function(e) { var child = e.target; while (child && child.parentNode !== $parent[0]) { child = child.parentNode; } e.currentTarget = child; return fn.apply(this, [e]); }); }; /** * Determines the current selection within a text input control. * Returns an object containing: * - start * - length * * @param {object} input * @returns {object} */ var getSelection = function(input) { var result = {}; if ('selectionStart' in input) { result.start = input.selectionStart; result.length = input.selectionEnd - result.start; } else if (document.selection) { input.focus(); var sel = document.selection.createRange(); var selLen = document.selection.createRange().text.length; sel.moveStart('character', -input.value.length); result.start = sel.text.length - selLen; result.length = selLen; } return result; }; /** * Copies CSS properties from one element to another. * * @param {object} $from * @param {object} $to * @param {array} properties */ var transferStyles = function($from, $to, properties) { var i, n, styles = {}; if (properties) { for (i = 0, n = properties.length; i < n; i++) { styles[properties[i]] = $from.css(properties[i]); } } else { styles = $from.css(); } $to.css(styles); }; /** * Measures the width of a string within a * parent element (in pixels). * * @param {string} str * @param {object} $parent * @returns {int} */ var measureString = function(str, $parent) { if (!str) { return 0; } var $test = $('').css({ position: 'absolute', top: -99999, left: -99999, width: 'auto', padding: 0, whiteSpace: 'pre' }).text(str).appendTo('body'); transferStyles($parent, $test, [ 'letterSpacing', 'fontSize', 'fontFamily', 'fontWeight', 'textTransform' ]); var width = $test.width(); $test.remove(); return width; }; /** * Sets up an input to grow horizontally as the user * types. If the value is changed manually, you can * trigger the "update" handler to resize: * * $input.trigger('update'); * * @param {object} $input */ var autoGrow = function($input) { var currentWidth = null; var update = function(e, options) { var value, keyCode, printable, placeholder, width; var shift, character, selection; e = e || window.event || {}; options = options || {}; if (e.metaKey || e.altKey) return; if (!options.force && $input.data('grow') === false) return; value = $input.val(); if (e.type && e.type.toLowerCase() === 'keydown') { keyCode = e.keyCode; printable = ( (keyCode >= 97 && keyCode <= 122) || // a-z (keyCode >= 65 && keyCode <= 90) || // A-Z (keyCode >= 48 && keyCode <= 57) || // 0-9 keyCode === 32 // space ); if (keyCode === KEY_DELETE || keyCode === KEY_BACKSPACE) { selection = getSelection($input[0]); if (selection.length) { value = value.substring(0, selection.start) + value.substring(selection.start + selection.length); } else if (keyCode === KEY_BACKSPACE && selection.start) { value = value.substring(0, selection.start - 1) + value.substring(selection.start + 1); } else if (keyCode === KEY_DELETE && typeof selection.start !== 'undefined') { value = value.substring(0, selection.start) + value.substring(selection.start + 1); } } else if (printable) { shift = e.shiftKey; character = String.fromCharCode(e.keyCode); if (shift) character = character.toUpperCase(); else character = character.toLowerCase(); value += character; } } placeholder = $input.attr('placeholder'); if (!value && placeholder) { value = placeholder; } width = measureString(value, $input) + 4; if (width !== currentWidth) { currentWidth = width; $input.width(width); $input.triggerHandler('resize'); } }; $input.on('keydown keyup update blur', update); update(); }; var Selectize = function($input, settings) { var key, i, n, dir, input, self = this; input = $input[0]; input.selectize = self; // detect rtl environment var computedStyle = window.getComputedStyle && window.getComputedStyle(input, null); dir = computedStyle ? computedStyle.getPropertyValue('direction') : input.currentStyle && input.currentStyle.direction; dir = dir || $input.parents('[dir]:first').attr('dir') || ''; // setup default state $.extend(self, { order : 0, settings : settings, $input : $input, tabIndex : $input.attr('tabindex') || '', tagType : input.tagName.toLowerCase() === 'select' ? TAG_SELECT : TAG_INPUT, rtl : /rtl/i.test(dir), eventNS : '.selectize' + (++Selectize.count), highlightedValue : null, isOpen : false, isDisabled : false, isRequired : $input.is('[required]'), isInvalid : false, isLocked : false, isFocused : false, isInputHidden : false, isSetup : false, isShiftDown : false, isCmdDown : false, isCtrlDown : false, ignoreFocus : false, ignoreBlur : false, ignoreHover : false, hasOptions : false, currentResults : null, lastValue : '', caretPos : 0, loading : 0, loadedSearches : {}, $activeOption : null, $activeItems : [], optgroups : {}, options : {}, userOptions : {}, items : [], renderCache : {}, onSearchChange : settings.loadThrottle === null ? self.onSearchChange : debounce(self.onSearchChange, settings.loadThrottle) }); // search system self.sifter = new Sifter(this.options, {diacritics: settings.diacritics}); // build options table if (self.settings.options) { for (i = 0, n = self.settings.options.length; i < n; i++) { self.registerOption(self.settings.options[i]); } delete self.settings.options; } // build optgroup table if (self.settings.optgroups) { for (i = 0, n = self.settings.optgroups.length; i < n; i++) { self.registerOptionGroup(self.settings.optgroups[i]); } delete self.settings.optgroups; } // option-dependent defaults self.settings.mode = self.settings.mode || (self.settings.maxItems === 1 ? 'single' : 'multi'); if (typeof self.settings.hideSelected !== 'boolean') { self.settings.hideSelected = self.settings.mode === 'multi'; } self.initializePlugins(self.settings.plugins); self.setupCallbacks(); self.setupTemplates(); self.setup(); }; // mixins // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - MicroEvent.mixin(Selectize); MicroPlugin.mixin(Selectize); // methods // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $.extend(Selectize.prototype, { /** * Creates all elements and sets up event bindings. */ setup: function() { var self = this; var settings = self.settings; var eventNS = self.eventNS; var $window = $(window); var $document = $(document); var $input = self.$input; var $wrapper; var $control; var $control_input; var $dropdown; var $dropdown_content; var $dropdown_parent; var inputMode; var timeout_blur; var timeout_focus; var classes; var classes_plugins; inputMode = self.settings.mode; classes = $input.attr('class') || ''; $wrapper = $('
').addClass(settings.wrapperClass).addClass(classes).addClass(inputMode); $control = $('
').addClass(settings.inputClass).addClass('items').appendTo($wrapper); $control_input = $('').appendTo($control).attr('tabindex', $input.is(':disabled') ? '-1' : self.tabIndex); $dropdown_parent = $(settings.dropdownParent || $wrapper); $dropdown = $('
').addClass(settings.dropdownClass).addClass(inputMode).hide().appendTo($dropdown_parent); $dropdown_content = $('
').addClass(settings.dropdownContentClass).appendTo($dropdown); if(self.settings.copyClassesToDropdown) { $dropdown.addClass(classes); } $wrapper.css({ width: $input[0].style.width }); if (self.plugins.names.length) { classes_plugins = 'plugin-' + self.plugins.names.join(' plugin-'); $wrapper.addClass(classes_plugins); $dropdown.addClass(classes_plugins); } if ((settings.maxItems === null || settings.maxItems > 1) && self.tagType === TAG_SELECT) { $input.attr('multiple', 'multiple'); } if (self.settings.placeholder) { $control_input.attr('placeholder', settings.placeholder); } // if splitOn was not passed in, construct it from the delimiter to allow pasting universally if (!self.settings.splitOn && self.settings.delimiter) { var delimiterEscaped = self.settings.delimiter.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); self.settings.splitOn = new RegExp('\\s*' + delimiterEscaped + '+\\s*'); } if ($input.attr('autocorrect')) { $control_input.attr('autocorrect', $input.attr('autocorrect')); } if ($input.attr('autocapitalize')) { $control_input.attr('autocapitalize', $input.attr('autocapitalize')); } self.$wrapper = $wrapper; self.$control = $control; self.$control_input = $control_input; self.$dropdown = $dropdown; self.$dropdown_content = $dropdown_content; $dropdown.on('mouseenter', '[data-selectable]', function() { return self.onOptionHover.apply(self, arguments); }); $dropdown.on('mousedown click', '[data-selectable]', function() { return self.onOptionSelect.apply(self, arguments); }); watchChildEvent($control, 'mousedown', '*:not(input)', function() { return self.onItemSelect.apply(self, arguments); }); autoGrow($control_input); $control.on({ mousedown : function() { return self.onMouseDown.apply(self, arguments); }, click : function() { return self.onClick.apply(self, arguments); } }); $control_input.on({ mousedown : function(e) { e.stopPropagation(); }, keydown : function() { return self.onKeyDown.apply(self, arguments); }, keyup : function() { return self.onKeyUp.apply(self, arguments); }, keypress : function() { return self.onKeyPress.apply(self, arguments); }, resize : function() { self.positionDropdown.apply(self, []); }, blur : function() { return self.onBlur.apply(self, arguments); }, focus : function() { self.ignoreBlur = false; return self.onFocus.apply(self, arguments); }, paste : function() { return self.onPaste.apply(self, arguments); } }); $document.on('keydown' + eventNS, function(e) { self.isCmdDown = e[IS_MAC ? 'metaKey' : 'ctrlKey']; self.isCtrlDown = e[IS_MAC ? 'altKey' : 'ctrlKey']; self.isShiftDown = e.shiftKey; }); $document.on('keyup' + eventNS, function(e) { if (e.keyCode === KEY_CTRL) self.isCtrlDown = false; if (e.keyCode === KEY_SHIFT) self.isShiftDown = false; if (e.keyCode === KEY_CMD) self.isCmdDown = false; }); $document.on('mousedown' + eventNS, function(e) { if (self.isFocused) { // prevent events on the dropdown scrollbar from causing the control to blur if (e.target === self.$dropdown[0] || e.target.parentNode === self.$dropdown[0]) { return false; } // blur on click outside if (!self.$control.has(e.target).length && e.target !== self.$control[0]) { self.blur(e.target); } } }); $window.on(['scroll' + eventNS, 'resize' + eventNS].join(' '), function() { if (self.isOpen) { self.positionDropdown.apply(self, arguments); } }); $window.on('mousemove' + eventNS, function() { self.ignoreHover = false; }); // store original children and tab index so that they can be // restored when the destroy() method is called. this.revertSettings = { $children : $input.children().detach(), tabindex : $input.attr('tabindex') }; $input.attr('tabindex', -1).hide().after(self.$wrapper); if ($.isArray(settings.items)) { self.setValue(settings.items); delete settings.items; } // feature detect for the validation API if (SUPPORTS_VALIDITY_API) { $input.on('invalid' + eventNS, function(e) { e.preventDefault(); self.isInvalid = true; self.refreshState(); }); } self.updateOriginalInput(); self.refreshItems(); self.refreshState(); self.updatePlaceholder(); self.isSetup = true; if ($input.is(':disabled')) { self.disable(); } self.on('change', this.onChange); $input.data('selectize', self); $input.addClass('selectized'); self.trigger('initialize'); // preload options if (settings.preload === true) { self.onSearchChange(''); } }, /** * Sets up default rendering functions. */ setupTemplates: function() { var self = this; var field_label = self.settings.labelField; var field_optgroup = self.settings.optgroupLabelField; var templates = { 'optgroup': function(data) { return '
' + data.html + '
'; }, 'optgroup_header': function(data, escape) { return '
' + escape(data[field_optgroup]) + '
'; }, 'option': function(data, escape) { return '
' + escape(data[field_label]) + '
'; }, 'item': function(data, escape) { return '
' + escape(data[field_label]) + '
'; }, 'option_create': function(data, escape) { return '
Add ' + escape(data.input) + '
'; } }; self.settings.render = $.extend({}, templates, self.settings.render); }, /** * Maps fired events to callbacks provided * in the settings used when creating the control. */ setupCallbacks: function() { var key, fn, callbacks = { 'initialize' : 'onInitialize', 'change' : 'onChange', 'item_add' : 'onItemAdd', 'item_remove' : 'onItemRemove', 'clear' : 'onClear', 'option_add' : 'onOptionAdd', 'option_remove' : 'onOptionRemove', 'option_clear' : 'onOptionClear', 'optgroup_add' : 'onOptionGroupAdd', 'optgroup_remove' : 'onOptionGroupRemove', 'optgroup_clear' : 'onOptionGroupClear', 'dropdown_open' : 'onDropdownOpen', 'dropdown_close' : 'onDropdownClose', 'type' : 'onType', 'load' : 'onLoad', 'focus' : 'onFocus', 'blur' : 'onBlur' }; for (key in callbacks) { if (callbacks.hasOwnProperty(key)) { fn = this.settings[callbacks[key]]; if (fn) this.on(key, fn); } } }, /** * Triggered when the main control element * has a click event. * * @param {object} e * @return {boolean} */ onClick: function(e) { var self = this; // necessary for mobile webkit devices (manual focus triggering // is ignored unless invoked within a click event) if (!self.isFocused) { self.focus(); e.preventDefault(); } }, /** * Triggered when the main control element * has a mouse down event. * * @param {object} e * @return {boolean} */ onMouseDown: function(e) { var self = this; var defaultPrevented = e.isDefaultPrevented(); var $target = $(e.target); if (self.isFocused) { // retain focus by preventing native handling. if the // event target is the input it should not be modified. // otherwise, text selection within the input won't work. if (e.target !== self.$control_input[0]) { if (self.settings.mode === 'single') { // toggle dropdown self.isOpen ? self.close() : self.open(); } else if (!defaultPrevented) { self.setActiveItem(null); } return false; } } else { // give control focus if (!defaultPrevented) { window.setTimeout(function() { self.focus(); }, 0); } } }, /** * Triggered when the value of the control has been changed. * This should propagate the event to the original DOM * input / select element. */ onChange: function() { this.$input.trigger('change'); }, /** * Triggered on paste. * * @param {object} e * @returns {boolean} */ onPaste: function(e) { var self = this; if (self.isFull() || self.isInputHidden || self.isLocked) { e.preventDefault(); } else { // If a regex or string is included, this will split the pasted // input and create Items for each separate value if (self.settings.splitOn) { setTimeout(function() { var splitInput = $.trim(self.$control_input.val() || '').split(self.settings.splitOn); for (var i = 0, n = splitInput.length; i < n; i++) { self.createItem(splitInput[i]); } }, 0); } } }, /** * Triggered on keypress. * * @param {object} e * @returns {boolean} */ onKeyPress: function(e) { if (this.isLocked) return e && e.preventDefault(); var character = String.fromCharCode(e.keyCode || e.which); if (this.settings.create && this.settings.mode === 'multi' && character === this.settings.delimiter) { this.createItem(); e.preventDefault(); return false; } }, /** * Triggered on keydown. * * @param {object} e * @returns {boolean} */ onKeyDown: function(e) { var isInput = e.target === this.$control_input[0]; var self = this; if (self.isLocked) { if (e.keyCode !== KEY_TAB) { e.preventDefault(); } return; } switch (e.keyCode) { case KEY_A: if (self.isCmdDown) { self.selectAll(); return; } break; case KEY_ESC: if (self.isOpen) { e.preventDefault(); e.stopPropagation(); self.close(); } return; case KEY_N: if (!e.ctrlKey || e.altKey) break; case KEY_DOWN: if (!self.isOpen && self.hasOptions) { self.open(); } else if (self.$activeOption) { self.ignoreHover = true; var $next = self.getAdjacentOption(self.$activeOption, 1); if ($next.length) self.setActiveOption($next, true, true); } e.preventDefault(); return; case KEY_P: if (!e.ctrlKey || e.altKey) break; case KEY_UP: if (self.$activeOption) { self.ignoreHover = true; var $prev = self.getAdjacentOption(self.$activeOption, -1); if ($prev.length) self.setActiveOption($prev, true, true); } e.preventDefault(); return; case KEY_RETURN: if (self.isOpen && self.$activeOption) { self.onOptionSelect({currentTarget: self.$activeOption}); e.preventDefault(); } return; case KEY_LEFT: self.advanceSelection(-1, e); return; case KEY_RIGHT: self.advanceSelection(1, e); return; case KEY_TAB: if (self.settings.selectOnTab && self.isOpen && self.$activeOption) { self.onOptionSelect({currentTarget: self.$activeOption}); // Default behaviour is to jump to the next field, we only want this // if the current field doesn't accept any more entries if (!self.isFull()) { e.preventDefault(); } } if (self.settings.create && self.createItem()) { e.preventDefault(); } return; case KEY_BACKSPACE: case KEY_DELETE: self.deleteSelection(e); return; } if ((self.isFull() || self.isInputHidden) && !(IS_MAC ? e.metaKey : e.ctrlKey)) { e.preventDefault(); return; } }, /** * Triggered on keyup. * * @param {object} e * @returns {boolean} */ onKeyUp: function(e) { var self = this; if (self.isLocked) return e && e.preventDefault(); var value = self.$control_input.val() || ''; if (self.lastValue !== value) { self.lastValue = value; self.onSearchChange(value); self.refreshOptions(); self.trigger('type', value); } }, /** * Invokes the user-provide option provider / loader. * * Note: this function is debounced in the Selectize * constructor (by `settings.loadDelay` milliseconds) * * @param {string} value */ onSearchChange: function(value) { var self = this; var fn = self.settings.load; if (!fn) return; if (self.loadedSearches.hasOwnProperty(value)) return; self.loadedSearches[value] = true; self.load(function(callback) { fn.apply(self, [value, callback]); }); }, /** * Triggered on focus. * * @param {object} e (optional) * @returns {boolean} */ onFocus: function(e) { var self = this; var wasFocused = self.isFocused; if (self.isDisabled) { self.blur(); e && e.preventDefault(); return false; } if (self.ignoreFocus) return; self.isFocused = true; if (self.settings.preload === 'focus') self.onSearchChange(''); if (!wasFocused) self.trigger('focus'); if (!self.$activeItems.length) { self.showInput(); self.setActiveItem(null); self.refreshOptions(!!self.settings.openOnFocus); } self.refreshState(); }, /** * Triggered on blur. * * @param {object} e * @param {Element} dest */ onBlur: function(e, dest) { var self = this; if (!self.isFocused) return; self.isFocused = false; if (self.ignoreFocus) { return; } else if (!self.ignoreBlur && document.activeElement === self.$dropdown_content[0]) { // necessary to prevent IE closing the dropdown when the scrollbar is clicked self.ignoreBlur = true; self.onFocus(e); return; } var deactivate = function() { self.close(); self.setTextboxValue(''); self.setActiveItem(null); self.setActiveOption(null); self.setCaret(self.items.length); self.refreshState(); // IE11 bug: element still marked as active (dest || document.body).focus(); self.ignoreFocus = false; self.trigger('blur'); }; self.ignoreFocus = true; if (self.settings.create && self.settings.createOnBlur) { self.createItem(null, false, deactivate); } else { deactivate(); } }, /** * Triggered when the user rolls over * an option in the autocomplete dropdown menu. * * @param {object} e * @returns {boolean} */ onOptionHover: function(e) { if (this.ignoreHover) return; this.setActiveOption(e.currentTarget, false); }, /** * Triggered when the user clicks on an option * in the autocomplete dropdown menu. * * @param {object} e * @returns {boolean} */ onOptionSelect: function(e) { var value, $target, $option, self = this; if (e.preventDefault) { e.preventDefault(); e.stopPropagation(); } $target = $(e.currentTarget); if ($target.hasClass('create')) { self.createItem(null, function() { if (self.settings.closeAfterSelect) { self.close(); } }); } else { value = $target.attr('data-value'); if (typeof value !== 'undefined') { self.lastQuery = null; self.setTextboxValue(''); self.addItem(value); if (self.settings.closeAfterSelect) { self.close(); } else if (!self.settings.hideSelected && e.type && /mouse/.test(e.type)) { self.setActiveOption(self.getOption(value)); } } } }, /** * Triggered when the user clicks on an item * that has been selected. * * @param {object} e * @returns {boolean} */ onItemSelect: function(e) { var self = this; if (self.isLocked) return; if (self.settings.mode === 'multi') { e.preventDefault(); self.setActiveItem(e.currentTarget, e); } }, /** * Invokes the provided method that provides * results to a callback---which are then added * as options to the control. * * @param {function} fn */ load: function(fn) { var self = this; var $wrapper = self.$wrapper.addClass(self.settings.loadingClass); self.loading++; fn.apply(self, [function(results) { self.loading = Math.max(self.loading - 1, 0); if (results && results.length) { self.addOption(results); self.refreshOptions(self.isFocused && !self.isInputHidden); } if (!self.loading) { $wrapper.removeClass(self.settings.loadingClass); } self.trigger('load', results); }]); }, /** * Sets the input field of the control to the specified value. * * @param {string} value */ setTextboxValue: function(value) { var $input = this.$control_input; var changed = $input.val() !== value; if (changed) { $input.val(value).triggerHandler('update'); this.lastValue = value; } }, /** * Returns the value of the control. If multiple items * can be selected (e.g. or * element to reflect the current state. */ updateOriginalInput: function(opts) { var i, n, options, label, self = this; opts = opts || {}; if (self.tagType === TAG_SELECT) { options = []; for (i = 0, n = self.items.length; i < n; i++) { label = self.options[self.items[i]][self.settings.labelField] || ''; options.push(''); } if (!options.length && !this.$input.attr('multiple')) { options.push(''); } self.$input.html(options.join('')); } else { self.$input.val(self.getValue()); self.$input.attr('value',self.$input.val()); } if (self.isSetup) { if (!opts.silent) { self.trigger('change', self.$input.val()); } } }, /** * Shows/hide the input placeholder depending * on if there items in the list already. */ updatePlaceholder: function() { if (!this.settings.placeholder) return; var $input = this.$control_input; if (this.items.length) { $input.removeAttr('placeholder'); } else { $input.attr('placeholder', this.settings.placeholder); } $input.triggerHandler('update', {force: true}); }, /** * Shows the autocomplete dropdown containing * the available options. */ open: function() { var self = this; if (self.isLocked || self.isOpen || (self.settings.mode === 'multi' && self.isFull())) return; self.focus(); self.isOpen = true; self.refreshState(); self.$dropdown.css({visibility: 'hidden', display: 'block'}); self.positionDropdown(); self.$dropdown.css({visibility: 'visible'}); self.trigger('dropdown_open', self.$dropdown); }, /** * Closes the autocomplete dropdown menu. */ close: function() { var self = this; var trigger = self.isOpen; if (self.settings.mode === 'single' && self.items.length) { self.hideInput(); } self.isOpen = false; self.$dropdown.hide(); self.setActiveOption(null); self.refreshState(); if (trigger) self.trigger('dropdown_close', self.$dropdown); }, /** * Calculates and applies the appropriate * position of the dropdown. */ positionDropdown: function() { var $control = this.$control; var offset = this.settings.dropdownParent === 'body' ? $control.offset() : $control.position(); offset.top += $control.outerHeight(true); this.$dropdown.css({ width : $control.outerWidth(), top : offset.top, left : offset.left }); }, /** * Resets / clears all selected items * from the control. * * @param {boolean} silent */ clear: function(silent) { var self = this; if (!self.items.length) return; self.$control.children(':not(input)').remove(); self.items = []; self.lastQuery = null; self.setCaret(0); self.setActiveItem(null); self.updatePlaceholder(); self.updateOriginalInput({silent: silent}); self.refreshState(); self.showInput(); self.trigger('clear'); }, /** * A helper method for inserting an element * at the current caret position. * * @param {object} $el */ insertAtCaret: function($el) { var caret = Math.min(this.caretPos, this.items.length); if (caret === 0) { this.$control.prepend($el); } else { $(this.$control[0].childNodes[caret]).before($el); } this.setCaret(caret + 1); }, /** * Removes the current selected item(s). * * @param {object} e (optional) * @returns {boolean} */ deleteSelection: function(e) { var i, n, direction, selection, values, caret, option_select, $option_select, $tail; var self = this; direction = (e && e.keyCode === KEY_BACKSPACE) ? -1 : 1; selection = getSelection(self.$control_input[0]); if (self.$activeOption && !self.settings.hideSelected) { option_select = self.getAdjacentOption(self.$activeOption, -1).attr('data-value'); } // determine items that will be removed values = []; if (self.$activeItems.length) { $tail = self.$control.children('.active:' + (direction > 0 ? 'last' : 'first')); caret = self.$control.children(':not(input)').index($tail); if (direction > 0) { caret++; } for (i = 0, n = self.$activeItems.length; i < n; i++) { values.push($(self.$activeItems[i]).attr('data-value')); } if (e) { e.preventDefault(); e.stopPropagation(); } } else if ((self.isFocused || self.settings.mode === 'single') && self.items.length) { if (direction < 0 && selection.start === 0 && selection.length === 0) { values.push(self.items[self.caretPos - 1]); } else if (direction > 0 && selection.start === self.$control_input.val().length) { values.push(self.items[self.caretPos]); } } // allow the callback to abort if (!values.length || (typeof self.settings.onDelete === 'function' && self.settings.onDelete.apply(self, [values]) === false)) { return false; } // perform removal if (typeof caret !== 'undefined') { self.setCaret(caret); } while (values.length) { self.removeItem(values.pop()); } self.showInput(); self.positionDropdown(); self.refreshOptions(true); // select previous option if (option_select) { $option_select = self.getOption(option_select); if ($option_select.length) { self.setActiveOption($option_select); } } return true; }, /** * Selects the previous / next item (depending * on the `direction` argument). * * > 0 - right * < 0 - left * * @param {int} direction * @param {object} e (optional) */ advanceSelection: function(direction, e) { var tail, selection, idx, valueLength, cursorAtEdge, $tail; var self = this; if (direction === 0) return; if (self.rtl) direction *= -1; tail = direction > 0 ? 'last' : 'first'; selection = getSelection(self.$control_input[0]); if (self.isFocused && !self.isInputHidden) { valueLength = self.$control_input.val().length; cursorAtEdge = direction < 0 ? selection.start === 0 && selection.length === 0 : selection.start === valueLength; if (cursorAtEdge && !valueLength) { self.advanceCaret(direction, e); } } else { $tail = self.$control.children('.active:' + tail); if ($tail.length) { idx = self.$control.children(':not(input)').index($tail); self.setActiveItem(null); self.setCaret(direction > 0 ? idx + 1 : idx); } } }, /** * Moves the caret left / right. * * @param {int} direction * @param {object} e (optional) */ advanceCaret: function(direction, e) { var self = this, fn, $adj; if (direction === 0) return; fn = direction > 0 ? 'next' : 'prev'; if (self.isShiftDown) { $adj = self.$control_input[fn](); if ($adj.length) { self.hideInput(); self.setActiveItem($adj); e && e.preventDefault(); } } else { self.setCaret(self.caretPos + direction); } }, /** * Moves the caret to the specified index. * * @param {int} i */ setCaret: function(i) { var self = this; if (self.settings.mode === 'single') { i = self.items.length; } else { i = Math.max(0, Math.min(self.items.length, i)); } if(!self.isPending) { // the input must be moved by leaving it in place and moving the // siblings, due to the fact that focus cannot be restored once lost // on mobile webkit devices var j, n, fn, $children, $child; $children = self.$control.children(':not(input)'); for (j = 0, n = $children.length; j < n; j++) { $child = $($children[j]).detach(); if (j < i) { self.$control_input.before($child); } else { self.$control.append($child); } } } self.caretPos = i; }, /** * Disables user input on the control. Used while * items are being asynchronously created. */ lock: function() { this.close(); this.isLocked = true; this.refreshState(); }, /** * Re-enables user input on the control. */ unlock: function() { this.isLocked = false; this.refreshState(); }, /** * Disables user input on the control completely. * While disabled, it cannot receive focus. */ disable: function() { var self = this; self.$input.prop('disabled', true); self.$control_input.prop('disabled', true).prop('tabindex', -1); self.isDisabled = true; self.lock(); }, /** * Enables the control so that it can respond * to focus and user input. */ enable: function() { var self = this; self.$input.prop('disabled', false); self.$control_input.prop('disabled', false).prop('tabindex', self.tabIndex); self.isDisabled = false; self.unlock(); }, /** * Completely destroys the control and * unbinds all event listeners so that it can * be garbage collected. */ destroy: function() { var self = this; var eventNS = self.eventNS; var revertSettings = self.revertSettings; self.trigger('destroy'); self.off(); self.$wrapper.remove(); self.$dropdown.remove(); self.$input .html('') .append(revertSettings.$children) .removeAttr('tabindex') .removeClass('selectized') .attr({tabindex: revertSettings.tabindex}) .show(); self.$control_input.removeData('grow'); self.$input.removeData('selectize'); $(window).off(eventNS); $(document).off(eventNS); $(document.body).off(eventNS); delete self.$input[0].selectize; }, /** * A helper method for rendering "item" and * "option" templates, given the data. * * @param {string} templateName * @param {object} data * @returns {string} */ render: function(templateName, data) { var value, id, label; var html = ''; var cache = false; var self = this; var regex_tag = /^[\t \r\n]*<([a-z][a-z0-9\-_]*(?:\:[a-z][a-z0-9\-_]*)?)/i; if (templateName === 'option' || templateName === 'item') { value = hash_key(data[self.settings.valueField]); cache = !!value; } // pull markup from cache if it exists if (cache) { if (!isset(self.renderCache[templateName])) { self.renderCache[templateName] = {}; } if (self.renderCache[templateName].hasOwnProperty(value)) { return self.renderCache[templateName][value]; } } // render markup html = self.settings.render[templateName].apply(this, [data, escape_html]); // add mandatory attributes if (templateName === 'option' || templateName === 'option_create') { html = html.replace(regex_tag, '<$1 data-selectable'); } if (templateName === 'optgroup') { id = data[self.settings.optgroupValueField] || ''; html = html.replace(regex_tag, '<$1 data-group="' + escape_replace(escape_html(id)) + '"'); } if (templateName === 'option' || templateName === 'item') { html = html.replace(regex_tag, '<$1 data-value="' + escape_replace(escape_html(value || '')) + '"'); } // update cache if (cache) { self.renderCache[templateName][value] = html; } return html; }, /** * Clears the render cache for a template. If * no template is given, clears all render * caches. * * @param {string} templateName */ clearCache: function(templateName) { var self = this; if (typeof templateName === 'undefined') { self.renderCache = {}; } else { delete self.renderCache[templateName]; } }, /** * Determines whether or not to display the * create item prompt, given a user input. * * @param {string} input * @return {boolean} */ canCreate: function(input) { var self = this; if (!self.settings.create) return false; var filter = self.settings.createFilter; return input.length && (typeof filter !== 'function' || filter.apply(self, [input])) && (typeof filter !== 'string' || new RegExp(filter).test(input)) && (!(filter instanceof RegExp) || filter.test(input)); } }); Selectize.count = 0; Selectize.defaults = { options: [], optgroups: [], plugins: [], delimiter: ',', splitOn: null, // regexp or string for splitting up values from a paste command persist: true, diacritics: true, create: false, createOnBlur: false, createFilter: null, highlight: true, openOnFocus: true, maxOptions: 1000, maxItems: null, hideSelected: null, addPrecedence: false, selectOnTab: false, preload: false, allowEmptyOption: false, closeAfterSelect: false, scrollDuration: 60, loadThrottle: 300, loadingClass: 'loading', dataAttr: 'data-data', optgroupField: 'optgroup', valueField: 'value', labelField: 'text', optgroupLabelField: 'label', optgroupValueField: 'value', lockOptgroupOrder: false, sortField: '$order', searchField: ['text'], searchConjunction: 'and', mode: null, wrapperClass: 'selectize-control', inputClass: 'selectize-input', dropdownClass: 'selectize-dropdown', dropdownContentClass: 'selectize-dropdown-content', dropdownParent: null, copyClassesToDropdown: true, /* load : null, // function(query, callback) { ... } score : null, // function(search) { ... } onInitialize : null, // function() { ... } onChange : null, // function(value) { ... } onItemAdd : null, // function(value, $item) { ... } onItemRemove : null, // function(value) { ... } onClear : null, // function() { ... } onOptionAdd : null, // function(value, data) { ... } onOptionRemove : null, // function(value) { ... } onOptionClear : null, // function() { ... } onOptionGroupAdd : null, // function(id, data) { ... } onOptionGroupRemove : null, // function(id) { ... } onOptionGroupClear : null, // function() { ... } onDropdownOpen : null, // function($dropdown) { ... } onDropdownClose : null, // function($dropdown) { ... } onType : null, // function(str) { ... } onDelete : null, // function(values) { ... } */ render: { /* item: null, optgroup: null, optgroup_header: null, option: null, option_create: null */ } }; $.fn.selectize = function(settings_user) { var defaults = $.fn.selectize.defaults; var settings = $.extend({}, defaults, settings_user); var attr_data = settings.dataAttr; var field_label = settings.labelField; var field_value = settings.valueField; var field_optgroup = settings.optgroupField; var field_optgroup_label = settings.optgroupLabelField; var field_optgroup_value = settings.optgroupValueField; /** * Initializes selectize from a element. * * @param {object} $input * @param {object} settings_element */ var init_textbox = function($input, settings_element) { var i, n, values, option; var data_raw = $input.attr(attr_data); if (!data_raw) { var value = $.trim($input.val() || ''); if (!settings.allowEmptyOption && !value.length) return; values = value.split(settings.delimiter); for (i = 0, n = values.length; i < n; i++) { option = {}; option[field_label] = values[i]; option[field_value] = values[i]; settings_element.options.push(option); } settings_element.items = values; } else { settings_element.options = JSON.parse(data_raw); for (i = 0, n = settings_element.options.length; i < n; i++) { settings_element.items.push(settings_element.options[i][field_value]); } } }; /** * Initializes selectize from a ",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),jb(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&jb(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return lb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?lb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},gb.matches=function(a,b){return gb(a,null,null,b)},gb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return gb(b,n,null,[a]).length>0},gb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},gb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},gb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},gb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=gb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=gb.selectors={cacheLength:50,createPseudo:ib,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||gb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&gb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=gb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||gb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ib(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ib(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ib(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ib(function(a){return function(b){return gb(a,b).length>0}}),contains:ib(function(a){return a=a.replace(cb,db),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ib(function(a){return W.test(a||"")||gb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:ob(function(){return[0]}),last:ob(function(a,b){return[b-1]}),eq:ob(function(a,b,c){return[0>c?c+b:c]}),even:ob(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:ob(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:ob(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:ob(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function tb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ub(a,b,c){for(var d=0,e=b.length;e>d;d++)gb(a,b[d],c);return c}function vb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wb(a,b,c,d,e,f){return d&&!d[u]&&(d=wb(d)),e&&!e[u]&&(e=wb(e,f)),ib(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ub(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:vb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=vb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=vb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sb(function(a){return a===b},h,!0),l=sb(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sb(tb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wb(i>1&&tb(m),i>1&&rb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xb(a.slice(i,e)),f>e&&xb(a=a.slice(e)),f>e&&rb(a))}m.push(c)}return tb(m)}function yb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=vb(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&gb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ib(f):f}return h=gb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,yb(e,d)),f.selector=a}return f},i=gb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&pb(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&rb(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&pb(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=jb(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),jb(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||kb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&jb(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||kb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),jb(function(a){return null==a.getAttribute("disabled")})||kb(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),gb}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1; return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML="
a",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function ab(){return!0}function bb(){return!1}function cb(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h]","i"),hb=/^\s+/,ib=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,jb=/<([\w:]+)/,kb=/\s*$/g,rb={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:k.htmlSerialize?[0,"",""]:[1,"X
","
"]},sb=db(y),tb=sb.appendChild(y.createElement("div"));rb.optgroup=rb.option,rb.tbody=rb.tfoot=rb.colgroup=rb.caption=rb.thead,rb.th=rb.td;function ub(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ub(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function vb(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wb(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xb(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function yb(a){var b=pb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function zb(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Ab(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Bb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xb(b).text=a.text,yb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!gb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(tb.innerHTML=a.outerHTML,tb.removeChild(f=tb.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ub(f),h=ub(a),g=0;null!=(e=h[g]);++g)d[g]&&Bb(e,d[g]);if(b)if(c)for(h=h||ub(a),d=d||ub(f),g=0;null!=(e=h[g]);g++)Ab(e,d[g]);else Ab(a,f);return d=ub(f,"script"),d.length>0&&zb(d,!i&&ub(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=db(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(lb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(jb.exec(f)||["",""])[1].toLowerCase(),l=rb[i]||rb._default,h.innerHTML=l[1]+f.replace(ib,"<$1>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&hb.test(f)&&p.push(b.createTextNode(hb.exec(f)[0])),!k.tbody){f="table"!==i||kb.test(f)?""!==l[1]||kb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ub(p,"input"),vb),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ub(o.appendChild(f),"script"),g&&zb(h),c)){e=0;while(f=h[e++])ob.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ub(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&zb(ub(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ub(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fb,""):void 0;if(!("string"!=typeof a||mb.test(a)||!k.htmlSerialize&&gb.test(a)||!k.leadingWhitespace&&hb.test(a)||rb[(jb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ib,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ub(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ub(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&nb.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ub(i,"script"),xb),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ub(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,yb),j=0;f>j;j++)d=g[j],ob.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qb,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Cb,Db={};function Eb(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fb(a){var b=y,c=Db[a];return c||(c=Eb(a,b),"none"!==c&&c||(Cb=(Cb||m("